<?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>154278</bug_id>
          
          <creation_ts>2016-02-15 21:33:22 -0800</creation_ts>
          <short_desc>[WK2] Gather resource load statistics</short_desc>
          <delta_ts>2016-03-04 15:38:23 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=154998</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>153575</dependson>
          <blocked>154642</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</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>1165044</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-15 21:33:22 -0800</bug_when>
    <thetext>Second step of capturing resource load statistics, this time targeting WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168024</commentid>
    <comment_count>1</comment_count>
      <attachid>272172</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-24 22:06:32 -0800</bug_when>
    <thetext>Created attachment 272172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168026</commentid>
    <comment_count>2</comment_count>
      <attachid>272173</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-24 22:13:42 -0800</bug_when>
    <thetext>Created attachment 272173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168033</commentid>
    <comment_count>3</comment_count>
      <attachid>272177</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-24 22:44:49 -0800</bug_when>
    <thetext>Created attachment 272177
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168036</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-24 22:45:53 -0800</bug_when>
    <thetext>This patch allows me to run the statistics load code in WK2 Minibrowser. I need help with a few things:

1. I&apos;m probably not handling the preferences stuff properly for WK2 since I had to hack a couple of methods on to ProcessPool. How do you get to the WKContextRef in something like MiniBrowser?

2. Note that proper long-term storage will be addressed in Bug 154642.

3. Should I be using a RuntimeEnabledFeature flag instead of the preference?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168111</commentid>
    <comment_count>5</comment_count>
      <attachid>272208</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-25 09:32:19 -0800</bug_when>
    <thetext>Created attachment 272208
Patch (Fixed EFL Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168266</commentid>
    <comment_count>6</comment_count>
      <attachid>272253</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-25 15:36:51 -0800</bug_when>
    <thetext>Created attachment 272253
Patch (Revised per Anders)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168281</commentid>
    <comment_count>7</comment_count>
      <attachid>272253</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-25 16:01:54 -0800</bug_when>
    <thetext>Comment on attachment 272253
Patch (Revised per Anders)

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

&gt; Source/WebKit2/UIProcess/API/C/WKResourceLoadStatisticsState.cpp:43
&gt; +}

This file is unused. I&apos;ll remove.

&gt; Source/WebKit2/UIProcess/API/C/WKResourceLoadStatisticsState.h:43
&gt; +#endif /* WKResourceLoadStatisticsState_h */

This whole file is unused. I&apos;ll remove.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:32
&gt; +#import &lt;WebKit/WKContext.h&gt;

This isn&apos;t needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168282</commentid>
    <comment_count>8</comment_count>
      <attachid>272257</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-25 16:04:07 -0800</bug_when>
    <thetext>Created attachment 272257
Patch (Revised per Anders)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168327</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-02-25 17:39:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/24851116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168335</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-25 17:54:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/24702892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169334</commentid>
    <comment_count>11</comment_count>
      <attachid>272257</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-02-29 18:12:03 -0800</bug_when>
    <thetext>Comment on attachment 272257
Patch (Revised per Anders)

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

Anders wants everyone to know that he reviewed this with Sam.

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:393
&gt; +    Vector&lt;ResourceLoadStatistics&gt; statistics;

This should be using reserveInitialCapacity based on m_resourceStatisticsMap.size()

&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:395
&gt; +        statistics.append(statistic);

This should move the values into the Vector and use uncheckedAppend()

&gt; Source/WebCore/loader/ResourceLoadObserver.h:56
&gt; +    WEBCORE_EXPORT bool isEmpty() const { return m_resourceStatisticsMap.isEmpty(); }

Inline functions don&apos;t need to be exported.

&gt; Source/WebCore/loader/ResourceLoadObserver.h:64
&gt; +    static String defaultFilename() { return ASCIILiteral(&quot;full_browsing_session_resourceLog.plist&quot;); }

This should not be inline.  It&apos;s also really weird to be naming a file like this.  I am also confused why there is file writing going on at all in WebCore.

&gt; Source/WebCore/loader/ResourceLoadStatistics.h:40
&gt; +    { }

This should be 
{
}

&gt; Source/WebCore/loader/ResourceLoadStatistics.h:43
&gt; +    { }

Same here

&gt; Source/WebKit2/ChangeLog:8
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

Can you add a high level description of what is going on here?

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:2056
&gt; +static void encodeHashCountedSet(ArgumentEncoder&amp; encoder, const HashCountedSet&lt;String&gt;&amp; hashCountedSet)
&gt; +{
&gt; +    encoder &lt;&lt; hashCountedSet.size();
&gt; +
&gt; +    for (auto entry : hashCountedSet) {
&gt; +        encoder &lt;&lt; entry.key;
&gt; +        encoder &lt;&lt; entry.value;
&gt; +    }
&gt; +}

This needs to go into ArgumentCoders.h and be generalized on HashCountedSet&lt;T&gt;.

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:2115
&gt; +static bool decodeHashCountedSet(ArgumentDecoder&amp; decoder, HashCountedSet&lt;String&gt;&amp; hashCountedSet)
&gt; +{
&gt; +    unsigned entries;
&gt; +    if (!decoder.decode(entries))
&gt; +        return false;
&gt; +
&gt; +    for (size_t i = 0; i &lt; entries; ++i) {
&gt; +        String origin;
&gt; +        if (!decoder.decode(origin))
&gt; +            return false;
&gt; +        
&gt; +        unsigned count;
&gt; +        if (!decoder.decode(count))
&gt; +            return false;
&gt; +
&gt; +        hashCountedSet.add(origin, count);
&gt; +    }
&gt; +
&gt; +    return true;
&gt; +}

This too needs to move to ArgumentCoders.h

&gt; Source/WebKit2/UIProcess/ResourceLoadStatisticsState.cpp:37
&gt; +PassRefPtr&lt;ResourceLoadStatisticsState&gt; ResourceLoadStatisticsState::create(WebProcessPool* processPool)

This should return a Ref&lt;ResourceLoadStatisticsState&gt; and take a WebProcessPool&amp;.

&gt; Source/WebKit2/UIProcess/ResourceLoadStatisticsState.cpp:45
&gt; +    m_processPool.addMessageReceiver(Messages::ResourceLoadStatisticsState::messageReceiverName(), *this);

If you add yourself as a MessageReceiver, you should also remove yourself somewhere.

&gt; Source/WebKit2/UIProcess/ResourceLoadStatisticsState.h:43
&gt; +class ResourceLoadStatisticsState : public API::ObjectImpl&lt;API::Object::Type::ResourceLoadStatisticsState&gt;, private IPC::MessageReceiver {

We tend to think of State objects as immutable things. This doesn&apos;t seem to fall into that category.

&gt; Source/WebKit2/UIProcess/ResourceLoadStatisticsState.h:62
&gt; +    WebProcessPool&amp; m_processPool;

It&apos;s not clear to me that this should be on the WebProcessPool. I think we need to have a conversation about this.

&gt; Source/WebKit2/UIProcess/ResourceLoadStatisticsState.h:64
&gt; +    std::unique_ptr&lt;WebCore::ResourceLoadObserver&gt; m_resourceLoadObserver;

It seems wrong to use a WebCore::ResourceLoadObserver in the UIProcess as that class uses many WebProcess specific classes, such as Document and Settings. Even if this happens to work, it is the wrong abstraction for it.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKProcessPoolPrivate.h:62
&gt; +- (void)setResourceLoadStatisticsEnabled:(BOOL)value;

This needs to start with an underscore and have WK_AVAILABLE. It should also probably be a @property. It should also probably be on the _WKProcessPoolConfiguration.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:52
&gt; +@property (nonatomic, setter=_setResourceLoadStatisticsEnabled:) BOOL _resourceLoadStatisticsEnabled;

I don&apos;t get why this is needed on both the configuration and the process pool.

&gt; Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:441
&gt; +    NSString *storageDirectory = [[NSUserDefaults standardUserDefaults] objectForKey:WebKitResourceLoadStatisticsDirectoryDefaultsKey];

Please don&apos;t use NSUserDefaults for this.  If you need to provide a custom location, please pass it in explicitly to the API, probably on the _WKProcessPoolConfiguration.  It would be good if you could reuse WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation() for this.

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:369
&gt; +    m_statisticsChangedTimer.startRepeating(std::chrono::seconds(5));

This is not a good idea.  We try very hard to not have repeating timers like this.  I assume this is for coalescing updates, so I will recommend using an approach that has changes in the resource load observer trigger the coalesced timer. That way, if no resources are being loaded, the timer won&apos;t fire and wake up the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169351</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-02-29 19:44:39 -0800</bug_when>
    <thetext>I&apos;m back in the office tomorrow and will try to get a few minutes of your time to hammer out the details of your comments. Thank your for taking time to look this over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169546</commentid>
    <comment_count>13</comment_count>
      <attachid>272257</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-01 13:27:27 -0800</bug_when>
    <thetext>Comment on attachment 272257
Patch (Revised per Anders)

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

&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:393
&gt;&gt; +    Vector&lt;ResourceLoadStatistics&gt; statistics;
&gt; 
&gt; This should be using reserveInitialCapacity based on m_resourceStatisticsMap.size()

OK!

&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.cpp:395
&gt;&gt; +        statistics.append(statistic);
&gt; 
&gt; This should move the values into the Vector and use uncheckedAppend()

Would it be better to do:

Vector&lt;ResourceLoadStatistics&gt; statistics = WTFMove(m_resourceStatisticsMap.values());

... instead?

To answer my own question: No. It looks like &apos;values()&apos; returns a set of iterators that the Vector constructor doesn&apos;t provide an overload for.

&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.h:56
&gt;&gt; +    WEBCORE_EXPORT bool isEmpty() const { return m_resourceStatisticsMap.isEmpty(); }
&gt; 
&gt; Inline functions don&apos;t need to be exported.

OK!

&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.h:64
&gt;&gt; +    static String defaultFilename() { return ASCIILiteral(&quot;full_browsing_session_resourceLog.plist&quot;); }
&gt; 
&gt; This should not be inline.  It&apos;s also really weird to be naming a file like this.  I am also confused why there is file writing going on at all in WebCore.

This is left over from the early experimental stages. I had hoped to address the longer-term storage aspects in Bug 154642 in one step, moving file writing out of WebCore and into the WK1 and WK2 layers. Do you want me to attack that in this same step? I was hoping to keep each step simple.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatistics.h:40
&gt;&gt; +    { }
&gt; 
&gt; This should be 
&gt; {
&gt; }

OK!

&gt;&gt; Source/WebCore/loader/ResourceLoadStatistics.h:43
&gt;&gt; +    { }
&gt; 
&gt; Same here

OK! We should probably have a check-webkit-style for this.

&gt;&gt; Source/WebKit2/ChangeLog:8
&gt;&gt; +
&gt; 
&gt; Can you add a high level description of what is going on here?

Will do!

&gt;&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:2056
&gt;&gt; +}
&gt; 
&gt; This needs to go into ArgumentCoders.h and be generalized on HashCountedSet&lt;T&gt;.

Oh, cool! I didn&apos;t know about this file. That&apos;s much cleaner.

&gt;&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:2115
&gt;&gt; +}
&gt; 
&gt; This too needs to move to ArgumentCoders.h

Will do!

&gt;&gt; Source/WebKit2/UIProcess/ResourceLoadStatisticsState.cpp:37
&gt;&gt; +PassRefPtr&lt;ResourceLoadStatisticsState&gt; ResourceLoadStatisticsState::create(WebProcessPool* processPool)
&gt; 
&gt; This should return a Ref&lt;ResourceLoadStatisticsState&gt; and take a WebProcessPool&amp;.

OK!

&gt;&gt; Source/WebKit2/UIProcess/ResourceLoadStatisticsState.cpp:45
&gt;&gt; +    m_processPool.addMessageReceiver(Messages::ResourceLoadStatisticsState::messageReceiverName(), *this);
&gt; 
&gt; If you add yourself as a MessageReceiver, you should also remove yourself somewhere.

That should have been obvious to me. :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169554</commentid>
    <comment_count>14</comment_count>
      <attachid>272257</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-01 13:37:22 -0800</bug_when>
    <thetext>Comment on attachment 272257
Patch (Revised per Anders)

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

&gt;&gt; Source/WebKit2/UIProcess/ResourceLoadStatisticsState.h:64
&gt;&gt; +    std::unique_ptr&lt;WebCore::ResourceLoadObserver&gt; m_resourceLoadObserver;
&gt; 
&gt; It seems wrong to use a WebCore::ResourceLoadObserver in the UIProcess as that class uses many WebProcess specific classes, such as Document and Settings. Even if this happens to work, it is the wrong abstraction for it.

It seems like I should split the ResourceLoadObserver class up. The only part of this I&apos;m using in the UIProcess is the &quot;thing that holds a collection of ResourceLoadStatistics&quot;, not the part that looks at documents and settings. I&apos;ll make a new class, maybe &quot;ResourceLoadStatisticsCollection&quot; that can be used by ResourceLoadObserver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169580</commentid>
    <comment_count>15</comment_count>
      <attachid>272257</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-01 14:49:17 -0800</bug_when>
    <thetext>Comment on attachment 272257
Patch (Revised per Anders)

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

&gt;&gt; Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:441
&gt;&gt; +    NSString *storageDirectory = [[NSUserDefaults standardUserDefaults] objectForKey:WebKitResourceLoadStatisticsDirectoryDefaultsKey];
&gt; 
&gt; Please don&apos;t use NSUserDefaults for this.  If you need to provide a custom location, please pass it in explicitly to the API, probably on the _WKProcessPoolConfiguration.  It would be good if you could reuse WebsiteDataStore::websiteDataDirectoryFileSystemRepresentation() for this.

Yes! I will do this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170314</commentid>
    <comment_count>16</comment_count>
      <attachid>272773</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-03 13:34:08 -0800</bug_when>
    <thetext>Created attachment 272773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170315</commentid>
    <comment_count>17</comment_count>
      <attachid>272774</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-03 13:37:23 -0800</bug_when>
    <thetext>Created attachment 272774
Patch (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170322</commentid>
    <comment_count>18</comment_count>
      <attachid>272774</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-03 13:50:13 -0800</bug_when>
    <thetext>Comment on attachment 272774
Patch (v2)

This includes fixes for Sam/Anders review, plus a fix for EFL/GTK builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170363</commentid>
    <comment_count>19</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-03 16:05:44 -0800</bug_when>
    <thetext>1) iOS Failure:

/Volumes/Data/EWS/WebKit/Source/WebKit2/WebProcess/WebProcess.cpp:173:7: error: field &apos;m_resourceLoadStatisticsStorage&apos; will be initialized after field &apos;m_webSQLiteDatabaseTracker&apos; [-Werror,-Wreorder]
    , m_resourceLoadStatisticsStorage(WebCore::ResourceLoadStatisticsStore::create())
      ^
2) GTK Failure:

API::ProcessPoolConfiguration::ProcessPoolConfiguration(): error: undefined reference to &apos;API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory()&apos;

3) EFK Failure:

Missing API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170518</commentid>
    <comment_count>20</comment_count>
      <attachid>272774</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-03 21:54:21 -0800</bug_when>
    <thetext>Comment on attachment 272774
Patch (v2)

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

I&apos;d like to see a version of this with a simplified SPI for enabling the feature.

&gt; Source/WebCore/loader/ResourceLoadObserver.h:59
&gt; +    RefPtr&lt;ResourceLoadStatisticsStore&gt; m_statistics;

Can you call this m_store or m_statisticsStore instead? m_statistics sounds like an instance of ResourceLoadStatistics.

&gt; Source/WebCore/loader/ResourceLoadStatistics.h:45
&gt; +    ResourceLoadStatistics()
&gt; +    {
&gt; +    }

I slightly prefer to write this as ResourceLoadStatistics() = default

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:75
&gt; +    if (!m_resourceStatisticsMap.contains(primaryDomain)) {
&gt; +        ResourceLoadStatistics newStatistics(primaryDomain);
&gt; +        m_resourceStatisticsMap.set(primaryDomain, newStatistics);
&gt; +    }
&gt; +    
&gt; +    return m_resourceStatisticsMap.find(primaryDomain)-&gt;value;

This looks like a perfect case for HashMap::ensure():

    auto addResult =  m_resourceStatisticsMap.ensure(primaryDomain, [primaryDomain] { return ResourceLoadStatistics(primaryDomain); });
    return addResult.iterator-&gt;value;

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:83
&gt; +    encoder-&gt;encodeUInt32(&quot;originsVisited&quot;, m_resourceStatisticsMap.size());

I don&apos;t see why you need to encode this value.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:105
&gt; +void ResourceLoadStatisticsStore::writeDataToDisk(const String&amp; origin, const ResourceLoadStatistics&amp; resourceStatistics) const
&gt; +{
&gt; +    auto encoder = KeyedEncoder::encoder();
&gt; +    encoder-&gt;encodeUInt32(&quot;originsVisited&quot;, 1);
&gt; +    
&gt; +    encoder-&gt;encodeObject(origin, resourceStatistics, [this](KeyedEncoder&amp; encoder, const ResourceLoadStatistics&amp; resourceStatistics) {
&gt; +        resourceStatistics.encode(encoder);
&gt; +    });
&gt; +    
&gt; +    String label = origin;
&gt; +    label.replace(&apos;/&apos;, &apos;_&apos;);
&gt; +    label.replace(&apos;:&apos;, &apos;+&apos;);
&gt; +    writeEncoderToDisk(*encoder.get(), label);
&gt; +}

I don&apos;t see this function being called anywhere.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:132
&gt; +    decoder-&gt;decodeUInt32(&quot;originsVisited&quot;, visitedOrigins);

Previous comment about the utility of encoding this value notwithstanding, you need to check the return value of decodeUInt32().

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:135
&gt; +    decoder-&gt;decodeObjects(&quot;browsingStatistics&quot;, loadedOrigins, [this](KeyedDecoder&amp; decoderInner, String&amp; origin) {

You need to check this return value, too. If it returns false, then m_resourceStatisticsMap should be left unmodified (or at least cleared). The file on disk should maybe also be deleted, although I guess that&apos;s unnecessary since it&apos;ll just be overwritten with valid data the next time we save.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:137
&gt; +        if (!decoderInner.decodeString(&quot;PrevalentResourceOrigin&quot;, origin))
&gt; +            return false;

This seems wrong. Won&apos;t ResourceLoadStatistics::decode() also try to decode &quot;PrevalentResourceOrigin&quot;? Is it OK to decode the same key twice?

Even if it were ok, I&apos;d still be bothered by the lack of symmetry between this lambda and the one passed to encodeObjects() above. I think you should pass a Vector&lt;ResourceLoadStatistics&gt; to decodeObjects() and then move the values from the vector to the map once you know that decoding was successful.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:148
&gt; +    ASSERT(visitedOrigins == static_cast&lt;size_t&gt;(loadedOrigins.size()));

This isn&apos;t a good assertion, since most causes of decoding failure are outside of your control. I&apos;d just make sure you handle decoding failure properly at runtime.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:198
&gt; +    if (!m_resourceStatisticsMap.contains(origin))
&gt; +        return emptyString();
&gt; +    
&gt; +    auto&amp; statistics = m_resourceStatisticsMap.find(origin)-&gt;value;

Why call both contains() and find()? Can&apos;t you check the iterator returned from find() against m_resourceStatisticsMap::end()?

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:211
&gt; +    Vector&lt;ResourceLoadStatistics&gt; statistics;
&gt; +    statistics.reserveInitialCapacity(m_resourceStatisticsMap.size());
&gt; +    for (auto&amp; statistic : m_resourceStatisticsMap.values())
&gt; +        statistics.uncheckedAppend(WTFMove(statistic));
&gt; +
&gt; +    m_resourceStatisticsMap.clear();
&gt; +
&gt; +    return statistics;

This could just be:

    return WTFMove(m_resourceStatisticsMap);

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:223
&gt; +        auto iter = m_resourceStatisticsMap.find(statistic.highLevelDomain);
&gt; +        if (iter == m_resourceStatisticsMap.end()) {
&gt; +            m_resourceStatisticsMap.set(statistic.highLevelDomain, statistic);
&gt; +            continue;
&gt; +        }
&gt; +        
&gt; +        iter-&gt;value.merge(statistic);

You could use HashMap::ensure() to store a default-constructed value when the key is missing, then you could call merge unconditionally.

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.h:51
&gt; +    bool isEmpty() const { return m_resourceStatisticsMap.isEmpty(); }
&gt; +    size_t size() const { return m_resourceStatisticsMap.size(); }

Do we need isEmpty() if we have size()?

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.h:67
&gt; +    ResourceLoadStatisticsStore()
&gt; +    {
&gt; +    }

I slightly prefer to write this as ResourceLoadStatisticsStore() = default

&gt; Source/WebKit2/Platform/IPC/ArgumentCoders.h:2
&gt; + * Copyright (C) 2010, 2016 Apple Inc. All rights reserved.

I think we can write a year range (e.g. 2010-2016) these days.

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:2
&gt; + * Copyright (C) 2011, 2016 Apple Inc. All rights reserved.

Ditto.

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.h:2
&gt; + * Copyright (C) 2010-2011, 2016 Apple Inc. All rights reserved.

Ditto.

&gt; Source/WebKit2/Shared/WebProcessCreationParameters.cpp:2
&gt; + * Copyright (C) 2010-2012, 2016 Apple Inc. All rights reserved.

Ditto.

&gt; Source/WebKit2/Shared/WebProcessCreationParameters.h:2
&gt; + * Copyright (C) 2010-2012, 2016 Apple Inc. All rights reserved.

Ditto.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:2
&gt; + * Copyright (C) 2010-2013, 2016 Apple Inc. All rights reserved.

Ditto.

&gt; Source/WebKit2/UIProcess/WebProcessPool.h:2
&gt; + * Copyright (C) 2010-2013, 2016 Apple Inc. All rights reserved.

Ditto.

&gt; Source/WebKit2/UIProcess/WebProcessPool.h:234
&gt; +    WebResourceLoadStatisticsStore* resourceLoadStatisticsStore() const { return m_resourceLoadStatistics.get(); }

I don&apos;t think you need this anymore.

&gt; Source/WebKit2/UIProcess/WebProcessPool.h:480
&gt; +    RefPtr&lt;WebResourceLoadStatisticsStore&gt; m_resourceLoadStatistics;

I don&apos;t think you need this anymore.

&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:44
&gt; +class WebResourceLoadStatisticsStore : public IPC::Connection::WorkQueueMessageReceiver {

Seems like this should be a subclass of WebCore::ResourceLoadStatisticsStore.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:40
&gt; +@property (nonatomic, setter=_setResourceLoadStatisticsEnabled:) BOOL _resourceLoadStatisticsEnabled WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);

Since the load statistics store is owned by the website data store, this seems like the right place for the SPI that enables the feature. But if you do it here, you should remove *all* the other places with enabled properties/logic that aren&apos;t WebsiteDataStore-related. You could also move the code that notifies web processes about state changes to WebsiteDataStore.

This patch would seem a lot clearer without the proliferation of enable code.

&gt; Source/WebKit2/UIProcess/Cocoa/WebProcessPoolCocoa.mm:181
&gt; +    parameters.resourceLoadStatisticsEnabled = [defaults boolForKey:WebKitResourceLoadStatisticsEnabledDefaultsKey];

I don&apos;t think you need to do this. It seems fine to default to false and rely on the application to enable this at runtime.

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:81
&gt; +    , m_resourceLoadStatisticsDirectory(WTFMove(configuration.resourceLoadStatisticsDirectory))

Do you need to store the directory path separately? You only use it to construct m_resourceLoadStatistics.

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:207
&gt; +    ResourceLoadObserver::sharedObserver().setStatisticsStore(m_resourceLoadStatisticsStorage.copyRef());

Not sure I see why WebProcess has to keep a strong reference to the statistics store. All these objects are essentially singletons. It&apos;d seem cleaner to have the store created and owned by ResourceLoadObserver, which could have public functions for setting the notification callback and taking the statistics vector.

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:1306
&gt; +void WebProcess::notifyNewStatisticsAdded()
&gt; +{
&gt; +    if (m_statisticsChangedTimer.isActive())
&gt; +        return;
&gt; +
&gt; +    m_statisticsChangedTimer.startOneShot(std::chrono::seconds(5));
&gt; +}

Is this called anywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170538</commentid>
    <comment_count>21</comment_count>
      <attachid>272774</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-03 23:46:49 -0800</bug_when>
    <thetext>Comment on attachment 272774
Patch (v2)

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

&gt;&gt; Source/WebCore/loader/ResourceLoadObserver.h:59
&gt;&gt; +    RefPtr&lt;ResourceLoadStatisticsStore&gt; m_statistics;
&gt; 
&gt; Can you call this m_store or m_statisticsStore instead? m_statistics sounds like an instance of ResourceLoadStatistics.

m_store seems fine.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:75
&gt;&gt; +    return m_resourceStatisticsMap.find(primaryDomain)-&gt;value;
&gt; 
&gt; This looks like a perfect case for HashMap::ensure():
&gt; 
&gt;     auto addResult =  m_resourceStatisticsMap.ensure(primaryDomain, [primaryDomain] { return ResourceLoadStatistics(primaryDomain); });
&gt;     return addResult.iterator-&gt;value;

Ooh! Wow! I didn&apos;t know that existed! Will do!

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:83
&gt;&gt; +    encoder-&gt;encodeUInt32(&quot;originsVisited&quot;, m_resourceStatisticsMap.size());
&gt; 
&gt; I don&apos;t see why you need to encode this value.

I stuck that in there so I could compare the count I read back to the count I wrote out originally to find serialization errors. But it was never a problem, and certainly isn&apos;t needed now. I&apos;ll remove it.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:105
&gt;&gt; +}
&gt; 
&gt; I don&apos;t see this function being called anywhere.

I&apos;ll get rid of it. It was used in some earlier debugging logic that is now gone.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:132
&gt;&gt; +    decoder-&gt;decodeUInt32(&quot;originsVisited&quot;, visitedOrigins);
&gt; 
&gt; Previous comment about the utility of encoding this value notwithstanding, you need to check the return value of decodeUInt32().

I got rid of it, but you point is noted (and I hang my head in shame)!

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:135
&gt;&gt; +    decoder-&gt;decodeObjects(&quot;browsingStatistics&quot;, loadedOrigins, [this](KeyedDecoder&amp; decoderInner, String&amp; origin) {
&gt; 
&gt; You need to check this return value, too. If it returns false, then m_resourceStatisticsMap should be left unmodified (or at least cleared). The file on disk should maybe also be deleted, although I guess that&apos;s unnecessary since it&apos;ll just be overwritten with valid data the next time we save.

I&apos;ll clear out the HashMap, but I won&apos;t touch the file system here. We&apos;ll be revisiting storage in Bug 154642.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:137
&gt;&gt; +            return false;
&gt; 
&gt; This seems wrong. Won&apos;t ResourceLoadStatistics::decode() also try to decode &quot;PrevalentResourceOrigin&quot;? Is it OK to decode the same key twice?
&gt; 
&gt; Even if it were ok, I&apos;d still be bothered by the lack of symmetry between this lambda and the one passed to encodeObjects() above. I think you should pass a Vector&lt;ResourceLoadStatistics&gt; to decodeObjects() and then move the values from the vector to the map once you know that decoding was successful.

You are right -- that wasn&apos;t necessary. Happily, it worked because the plist retrieval logic reads the plist into an NSDictionary, which is perfectly happy to answer repeated requests for the same keys.

However, I&apos;ll fix that.

I&apos;ll also revise this to match the encodeObjects behavior.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:148
&gt;&gt; +    ASSERT(visitedOrigins == static_cast&lt;size_t&gt;(loadedOrigins.size()));
&gt; 
&gt; This isn&apos;t a good assertion, since most causes of decoding failure are outside of your control. I&apos;d just make sure you handle decoding failure properly at runtime.

Done!

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:198
&gt;&gt; +    auto&amp; statistics = m_resourceStatisticsMap.find(origin)-&gt;value;
&gt; 
&gt; Why call both contains() and find()? Can&apos;t you check the iterator returned from find() against m_resourceStatisticsMap::end()?

Oh, duh. Thanks for catching that.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:211
&gt;&gt; +    return statistics;
&gt; 
&gt; This could just be:
&gt; 
&gt;     return WTFMove(m_resourceStatisticsMap);

I don&apos;t think that works, because m_resourceStatisticsMap is a HashMap, and I&apos;m trying to return a Vector. :-(

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:223
&gt;&gt; +        iter-&gt;value.merge(statistic);
&gt; 
&gt; You could use HashMap::ensure() to store a default-constructed value when the key is missing, then you could call merge unconditionally.

Yes! That is so cool - I&apos;m glad you told me about that method.

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.h:51
&gt;&gt; +    size_t size() const { return m_resourceStatisticsMap.size(); }
&gt; 
&gt; Do we need isEmpty() if we have size()?

No, but I think it reads better in code that uses it. Ultimately, isEmpty is defined in terms of size().

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.h:67
&gt;&gt; +    }
&gt; 
&gt; I slightly prefer to write this as ResourceLoadStatisticsStore() = default

OK!

&gt;&gt; Source/WebKit2/Platform/IPC/ArgumentCoders.h:2
&gt;&gt; + * Copyright (C) 2010, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; I think we can write a year range (e.g. 2010-2016) these days.

OK!

&gt;&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:2
&gt;&gt; + * Copyright (C) 2011, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; Ditto.

OK!

&gt;&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.h:2
&gt;&gt; + * Copyright (C) 2010-2011, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; Ditto.

OK!

&gt;&gt; Source/WebKit2/Shared/WebProcessCreationParameters.cpp:2
&gt;&gt; + * Copyright (C) 2010-2012, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; Ditto.

OK!

&gt;&gt; Source/WebKit2/Shared/WebProcessCreationParameters.h:2
&gt;&gt; + * Copyright (C) 2010-2012, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; Ditto.

OK!

&gt;&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:2
&gt;&gt; + * Copyright (C) 2010-2013, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; Ditto.

OK!

&gt;&gt; Source/WebKit2/UIProcess/WebProcessPool.h:2
&gt;&gt; + * Copyright (C) 2010-2013, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; Ditto.

OK!

&gt; Source/WebKit2/UIProcess/WebProcessPool.h:87
&gt; +class WebResourceLoadStatisticsStore;

This isn&apos;t needed, either!

&gt;&gt; Source/WebKit2/UIProcess/WebProcessPool.h:234
&gt;&gt; +    WebResourceLoadStatisticsStore* resourceLoadStatisticsStore() const { return m_resourceLoadStatistics.get(); }
&gt; 
&gt; I don&apos;t think you need this anymore.

Oops! You are right!

&gt;&gt; Source/WebKit2/UIProcess/WebProcessPool.h:480
&gt;&gt; +    RefPtr&lt;WebResourceLoadStatisticsStore&gt; m_resourceLoadStatistics;
&gt; 
&gt; I don&apos;t think you need this anymore.

OK!

&gt;&gt; Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:44
&gt;&gt; +class WebResourceLoadStatisticsStore : public IPC::Connection::WorkQueueMessageReceiver {
&gt; 
&gt; Seems like this should be a subclass of WebCore::ResourceLoadStatisticsStore.

Does that work when going across WebCore/WebKit2? For example, WebPage is not a subclass of WebCore::Page, it uses composition like I did here.

I tried making this a subclass of the WebCore class, but ran into trouble with duplicate destruction definitions, and conflict between FAST_MALLOC and IPC/ThreadSafe memory handling.

I don&apos;t thin this works the way you want here. :-(

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:40
&gt;&gt; +@property (nonatomic, setter=_setResourceLoadStatisticsEnabled:) BOOL _resourceLoadStatisticsEnabled WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
&gt; 
&gt; Since the load statistics store is owned by the website data store, this seems like the right place for the SPI that enables the feature. But if you do it here, you should remove *all* the other places with enabled properties/logic that aren&apos;t WebsiteDataStore-related. You could also move the code that notifies web processes about state changes to WebsiteDataStore.
&gt; 
&gt; This patch would seem a lot clearer without the proliferation of enable code.

Agreed. As we discussed in person, this is one of the things I&apos;m least happy with in this patch. Unfortunately, it wasn&apos;t clear to me how to get to the WKWebsiteDataStore from the process pool. I&apos;ll take another look tomorrow.

&gt;&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:81
&gt;&gt; +    , m_resourceLoadStatisticsDirectory(WTFMove(configuration.resourceLoadStatisticsDirectory))
&gt; 
&gt; Do you need to store the directory path separately? You only use it to construct m_resourceLoadStatistics.

Probably not. I can get rid of that.

&gt;&gt; Source/WebKit2/WebProcess/WebProcess.cpp:207
&gt;&gt; +    ResourceLoadObserver::sharedObserver().setStatisticsStore(m_resourceLoadStatisticsStorage.copyRef());
&gt; 
&gt; Not sure I see why WebProcess has to keep a strong reference to the statistics store. All these objects are essentially singletons. It&apos;d seem cleaner to have the store created and owned by ResourceLoadObserver, which could have public functions for setting the notification callback and taking the statistics vector.

I&apos;d prefer to go the other direction (as is done in this patch), so that we can move more of this logic into WK2 in future updates.

&gt;&gt; Source/WebKit2/WebProcess/WebProcess.cpp:1306
&gt;&gt; +}
&gt; 
&gt; Is this called anywhere?

Nope. I made it a lambda. I&apos;ll get rid of this.

&gt; Source/WebKit/mac/WebView/WebView.mm:611
&gt; +static WebCore::ResourceLoadStatisticsStore *resourceLoadStatisticsStore;

I tried to make this a static RefPtr&lt;WebCore::ResourceLoadStatisticsStore&gt;, but clang complained about needing a global destructor. Is there a better way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170541</commentid>
    <comment_count>22</comment_count>
      <attachid>272838</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-03 23:55:14 -0800</bug_when>
    <thetext>Created attachment 272838
Patch (v3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170542</commentid>
    <comment_count>23</comment_count>
      <attachid>272838</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-03 23:56:43 -0800</bug_when>
    <thetext>Comment on attachment 272838
Patch (v3)

Updated with (most of) Andy&apos;s comments, plus more attempts to fix Efl/Gtk.

I&apos;ll revise the SPI for setting the feature tomorrow when I&apos;m in the office.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170544</commentid>
    <comment_count>24</comment_count>
      <attachid>272840</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-04 00:02:33 -0800</bug_when>
    <thetext>Created attachment 272840
Patch (v4)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170545</commentid>
    <comment_count>25</comment_count>
      <attachid>272840</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-04 00:02:47 -0800</bug_when>
    <thetext>Comment on attachment 272840
Patch (v4)

Correct merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170557</commentid>
    <comment_count>26</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-04 01:20:23 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Comment on attachment 272774 [details]
&gt; Patch (v2)
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272774&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:611
&gt; &gt; +static WebCore::ResourceLoadStatisticsStore *resourceLoadStatisticsStore;
&gt; 
&gt; I tried to make this a static RefPtr&lt;WebCore::ResourceLoadStatisticsStore&gt;,
&gt; but clang complained about needing a global destructor. Is there a better
&gt; way to do this?

I think the raw pointer is ok, but you should leak a reference to protect against the Ref passed to ResourceLoadObserver going out of scope and leaving you with a dangling pointer:

    resourceLoadStatisticsStore = &amp;WebCore::ResourceLoadStatisticsStore::create(supportDirectory).leakRef();
    ResourceLoadObserver::sharedObserver().setStatisticsStore(*statisticsStore);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170924</commentid>
    <comment_count>27</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-04 10:14:41 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #21)
&gt; &gt; Comment on attachment 272774 [details]
&gt; &gt; Patch (v2)
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=272774&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/mac/WebView/WebView.mm:611
&gt; &gt; &gt; +static WebCore::ResourceLoadStatisticsStore *resourceLoadStatisticsStore;
&gt; &gt; 
&gt; &gt; I tried to make this a static RefPtr&lt;WebCore::ResourceLoadStatisticsStore&gt;,
&gt; &gt; but clang complained about needing a global destructor. Is there a better
&gt; &gt; way to do this?
&gt; 
&gt; I think the raw pointer is ok, but you should leak a reference to protect
&gt; against the Ref passed to ResourceLoadObserver going out of scope and
&gt; leaving you with a dangling pointer:
&gt; 
&gt;     resourceLoadStatisticsStore =
&gt; &amp;WebCore::ResourceLoadStatisticsStore::create(supportDirectory).leakRef();
&gt;    
&gt; ResourceLoadObserver::sharedObserver().setStatisticsStore(*statisticsStore);

OK! Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170994</commentid>
    <comment_count>28</comment_count>
      <attachid>273028</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-04 13:09:33 -0800</bug_when>
    <thetext>Created attachment 273028
Patch (v5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170996</commentid>
    <comment_count>29</comment_count>
      <attachid>273028</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-04 13:10:41 -0800</bug_when>
    <thetext>Comment on attachment 273028
Patch (v5)

Incorporates all of Andy&apos;s review comments, simplifies the SPI, and corrects the build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170997</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-04 13:12:45 -0800</bug_when>
    <thetext>Attachment 273028 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:67:  &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot;  [readability/inheritance] [4]
Total errors found: 1 in 48 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170998</commentid>
    <comment_count>31</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-04 13:14:38 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; Attachment 273028 [details] did not pass style-queue:
&gt; 
&gt; ERROR: Source/WebKit2/UIProcess/WebResourceLoadStatisticsStore.h:67: 
&gt; &quot;virtual&quot; is redundant since function is already declared as &quot;override&quot; 
&gt; [readability/inheritance] [4]
&gt; Total errors found: 1 in 48 files

Whooooo! I&apos;ll gladly fix this :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171057</commentid>
    <comment_count>32</comment_count>
      <attachid>273028</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-04 14:45:08 -0800</bug_when>
    <thetext>Comment on attachment 273028
Patch (v5)

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

&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:197
&gt; +        auto result = m_resourceStatisticsMap.ensure(statistic.highLevelDomain, [&amp;statistic] {
&gt; +            return statistic;
&gt; +        });
&gt; +        
&gt; +        result.iterator-&gt;value.merge(statistic);

Won&apos;t this double-count statistics from a new high-level domain? ensure() will insert the new statistic into the map, then merge() will merge it with itself.

I think ensure() needs to insert a default-constructed statistic.

&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:624
&gt; +    parameters.resourceLoadStatisticsEnabled = configuration().resourceLoadStatisticsEnabled();

I suggest below that you move the resourceLoadStatisticsEnabled flag from the configuration to WebProcessPool, which means this line would just need to access a member variable.

&gt; Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h:112
&gt; +    WTF::String m_resourceLoadStatisticsDirectory;

I don&apos;t think this belongs in APIProcessPoolConfiguration, since there is no corresponding API in WKProcessPoolConfiguration. I think it should just be a member of WebProcessPool.

&gt; Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h:116
&gt; +    bool m_resourceLoadStatisticsEnabled { false };

Ditto.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:360
&gt; +    processPool.configuration().setResourceLoadStatisticsEnabled(configuration.websiteDataStore._resourceLoadStatisticsEnabled);

This seems a little flaky. What if I call -[WKWebsiteDataStore _setResourceLoadStatisticsEnabled:] after creating a WKWebView but before the first process is launched? Seems like the process pool would never get configured with the right value for creating new web processes.

If you move the settings value from APIProcessPoolConfiguration to WebProcesPool, you can just have WebsiteDataStore::setResourceLoadStatisticsEnabled() set the value on the process pool along with calling sendToAllProcesses().

&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:1120
&gt; +    for (auto&amp; processPool : WebProcessPool::allProcessPools())

I notice that some parts of the code use WebProcessPool::allProcessPools(), some use processPools(), and some use both. I don&apos;t know which is correct in this case. Maybe Anders does?

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:2
&gt; + * Copyright (C) 2009-2010, 2012, 2014, 2016 Apple Inc. All rights reserved.

2009-2016

&gt; Source/WebKit2/WebProcess/WebProcess.h:2
&gt; + * Copyright (C) 2010, 2016 Apple Inc. All rights reserved.

2010-2016

&gt; Source/WebKit/mac/WebView/WebView.mm:611
&gt; +static WebCore::ResourceLoadStatisticsStore *resourceLoadStatisticsStore;

The space goes after the asterisk instead of before in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171061</commentid>
    <comment_count>33</comment_count>
      <attachid>273028</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-04 14:49:54 -0800</bug_when>
    <thetext>Comment on attachment 273028
Patch (v5)

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:175
&gt; +- (BOOL)_resourceLoadStatisticsEnabled
&gt; +{
&gt; +    return _websiteDataStore-&gt;websiteDataStore().resourceLoadStatisticsEnabled();
&gt; +}
&gt; +
&gt; +- (void)_setResourceLoadStatisticsEnabled:(BOOL)enabled
&gt; +{
&gt; +    _websiteDataStore-&gt;websiteDataStore().setResourceLoadStatisticsEnabled(enabled);
&gt; +}

This should probably call into member functions on APIWebsiteDataStore, which should then call into WebsiteDataStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171077</commentid>
    <comment_count>34</comment_count>
      <attachid>273028</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-03-04 15:09:10 -0800</bug_when>
    <thetext>Comment on attachment 273028
Patch (v5)

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

&gt;&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:624
&gt;&gt; +    parameters.resourceLoadStatisticsEnabled = configuration().resourceLoadStatisticsEnabled();
&gt; 
&gt; I suggest below that you move the resourceLoadStatisticsEnabled flag from the configuration to WebProcessPool, which means this line would just need to access a member variable.

Actually, I don&apos;t think you need to add anything to WebProcessPool. You can just do this:

    parameters.resourceLoadStatisticsEnabled = m_websiteDataStore-&gt;resourceLoadStatisticsEnabled();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171081</commentid>
    <comment_count>35</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-04 15:29:21 -0800</bug_when>
    <thetext>Committed r197592: &lt;http://trac.webkit.org/changeset/197592&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171088</commentid>
    <comment_count>36</comment_count>
      <attachid>273028</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-04 15:38:23 -0800</bug_when>
    <thetext>Comment on attachment 273028
Patch (v5)

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

&gt;&gt; Source/WebCore/loader/ResourceLoadStatisticsStore.cpp:197
&gt;&gt; +        result.iterator-&gt;value.merge(statistic);
&gt; 
&gt; Won&apos;t this double-count statistics from a new high-level domain? ensure() will insert the new statistic into the map, then merge() will merge it with itself.
&gt; 
&gt; I think ensure() needs to insert a default-constructed statistic.

Oh, I think you are right. I&apos;ll fix that. It should have read:

    return ResourceLoadStatistics(statistic.highLevelDomain);

&gt;&gt; Source/WebKit2/UIProcess/WebProcessPool.cpp:624
&gt;&gt; +    parameters.resourceLoadStatisticsEnabled = configuration().resourceLoadStatisticsEnabled();
&gt; 
&gt; I suggest below that you move the resourceLoadStatisticsEnabled flag from the configuration to WebProcessPool, which means this line would just need to access a member variable.

OK! I actually gave it an accessor (to balance the &apos;set&apos; function) and used it here.

&gt;&gt; Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h:112
&gt;&gt; +    WTF::String m_resourceLoadStatisticsDirectory;
&gt; 
&gt; I don&apos;t think this belongs in APIProcessPoolConfiguration, since there is no corresponding API in WKProcessPoolConfiguration. I think it should just be a member of WebProcessPool.

Yeah, it&apos;s actually not used. I&apos;ll get rid of this variable ...

&gt;&gt; Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h:116
&gt;&gt; +    bool m_resourceLoadStatisticsEnabled { false };
&gt; 
&gt; Ditto.

.... and move this to WebProcessPool as you suggest later.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:360
&gt;&gt; +    processPool.configuration().setResourceLoadStatisticsEnabled(configuration.websiteDataStore._resourceLoadStatisticsEnabled);
&gt; 
&gt; This seems a little flaky. What if I call -[WKWebsiteDataStore _setResourceLoadStatisticsEnabled:] after creating a WKWebView but before the first process is launched? Seems like the process pool would never get configured with the right value for creating new web processes.
&gt; 
&gt; If you move the settings value from APIProcessPoolConfiguration to WebProcesPool, you can just have WebsiteDataStore::setResourceLoadStatisticsEnabled() set the value on the process pool along with calling sendToAllProcesses().

Sounds good.

&gt;&gt; Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp:1120
&gt;&gt; +    for (auto&amp; processPool : WebProcessPool::allProcessPools())
&gt; 
&gt; I notice that some parts of the code use WebProcessPool::allProcessPools(), some use processPools(), and some use both. I don&apos;t know which is correct in this case. Maybe Anders does?

I did some searching. &quot;processPools()&quot; is a static function local to this file. WebProcessPool::allProcessPools() is a static method on the class (visible outside this compilation unit) that simply calls the internal singleton method.

&gt;&gt; Source/WebKit2/WebProcess/WebProcess.cpp:2
&gt;&gt; + * Copyright (C) 2009-2010, 2012, 2014, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; 2009-2016

Done.

&gt;&gt; Source/WebKit2/WebProcess/WebProcess.h:2
&gt;&gt; + * Copyright (C) 2010, 2016 Apple Inc. All rights reserved.
&gt; 
&gt; 2010-2016

Done.

&gt;&gt; Source/WebKit/mac/WebView/WebView.mm:611
&gt;&gt; +static WebCore::ResourceLoadStatisticsStore *resourceLoadStatisticsStore;
&gt; 
&gt; The space goes after the asterisk instead of before in this case.

OK!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272172</attachid>
            <date>2016-02-24 22:06:32 -0800</date>
            <delta_ts>2016-02-24 22:13:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154278-20160224220615.patch</filename>
            <type>text/plain</type>
            <size>72107</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE2LTAyLTI0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKTogUmV2
aXNlIGZvcgorICAgICAgICBuZXcgY29uc3RydWN0b3IgYXJndW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaXNrKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVhZERhdGFGcm9tRGlza0lmTmVl
ZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFr
ZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjptZXJnZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpp
c0VtcHR5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
ZGVmYXVsdEZpbGVuYW1lKTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
ZW5jb2RlKTogUmV2aXNlIHRvIHVzZSBpbnRlcm5hbAorICAgICAgICAnaGlnaExldmVsRG9tYWlu
JyBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNv
ZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om1lcmdlSGFzaENvdW50ZWRTZXQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKTogQWRk
ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
OgorCiAyMDE2LTAyLTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmxvY2tlZCBwbHVnLWluIHBsYWNlaG9sZGVyIGlzIHNvbWV0aW1lcyBub3Qgc2hvd24uCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MDIsNyArMjcwMiw3IEBACiAJ
CTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I5MTAx
ODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLzsgfTsKIAkJN0E3
NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0JD
MTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi87
IH07CiAJCTdBOTI5Q0E2MUM1OThBOUUwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5
Q0ExMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLzsgfTsK
LQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5Q0EyMUM1
OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IH07CisJCTdBOTI5
Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTkyOUNBMjFDNTk4Mzc4MDA0
REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBOTM4Njg1MThEQ0MxNDUwMEI4MjYzRCAvKiBW
VFRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBOTM4NjgyMThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLzsgfTsKIAkJ
N0E5Mzg2ODYxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTM4NjgzMThEQ0MxNDUwMEI4MjYzRCAv
KiBWVFRTY2FubmVyLmggKi87IH07CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAvKiBUaWxl
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUEzQTY5NTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3BwICovOyB9
OwpAQCAtMjQ5MTcsNiArMjQ5MTcsNyBAQAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAv
KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIz
MzBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyOUE4MTIzQjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJDMEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjlBODEyNDMwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOUE4MTI0MjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjUxNDIsNyArMjUxNDMsNiBAQAogCQkJ
CTk5Q0MwQjRGMThCRTk4NDkwMDZDRUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RDNzM0MTUxOTc3ODk2RDAwNDZCRkM1IC8qIENBUmluZ0J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2Vj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERThCNUVEMUE2OTc3
NzMwMEI0QjY2QSAvKiBDRE1Qcml2YXRlQ2xlYXJLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
MzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRERENTcxNTE4QjU3QTgyMDBBOTRGQ0IgLyogQ0RNU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw4
ICsxOTAsMTAgQEAgYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQcmV2YWxlbnRSZQogICAg
IAogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKQog
ewotICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFp
bikpCi0gICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChwcmltYXJ5RG9tYWluLCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpOworICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyBuZXdTdGF0aXN0aWNzKHByaW1hcnlEb21haW4pOworICAgICAgICBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5zZXQocHJpbWFyeURvbWFpbiwgbmV3U3RhdGlzdGljcyk7CisgICAgfQogICAg
IAogICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHByaW1hcnlEb21haW4p
LT52YWx1ZTsKIH0KQEAgLTI0OSw3ICsyNTEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
Ojp3cml0ZURhdGFUb0RpCiAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKCJvcmlnaW5zVmlzaXRl
ZCIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7CiAgICAgCiAgICAgZW5jb2Rlci0+
ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCksIFt0aGlzXShLZXllZEVu
Y29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgU3RhdGlzdGljc1ZhbHVlJiBvcmlnaW4pIHsKLSAg
ICAgICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIsIG9yaWdpbi5rZXkpOworICAg
ICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lcik7CiAgICAgfSk7CiAgICAgCiAg
ICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVsbF9icm93c2luZ19zZXNz
aW9uIik7CkBAIC0yNjMsOCArMjY1LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3Jp
dGVEYXRhVG9EaQogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwog
ICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zpc2l0ZWQiLCAxKTsKICAgICAKLSAg
ICBlbmNvZGVyLT5lbmNvZGVPYmplY3Qob3JpZ2luLCByZXNvdXJjZVN0YXRpc3RpY3MsIFt0aGlz
LCAmb3JpZ2luXShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHJlc291cmNlU3RhdGlzdGljcykgewotICAgICAgICByZXNvdXJjZVN0YXRpc3RpY3Mu
ZW5jb2RlKGVuY29kZXIsIG9yaWdpbik7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0KG9yaWdp
biwgcmVzb3VyY2VTdGF0aXN0aWNzLCBbdGhpc10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpY3MpIHsKKyAgICAgICAg
cmVzb3VyY2VTdGF0aXN0aWNzLmVuY29kZShlbmNvZGVyKTsKICAgICB9KTsKICAgICAKICAgICBT
dHJpbmcgbGFiZWwgPSBvcmlnaW47CkBAIC0zMDcsOCArMzA5LDggQEAgdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6cmVhZERhdGFGcm9tRAogICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNv
ZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgb3JpZ2luKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3Rp
Y3M7Ci0gICAgICAgIGlmICghc3RhdGlzdGljcy5kZWNvZGUoZGVjb2RlcklubmVyLCBvcmlnaW4p
KQorICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3RpY3Mob3JpZ2luKTsKKyAg
ICAgICAgaWYgKCFzdGF0aXN0aWNzLmRlY29kZShkZWNvZGVySW5uZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChvcmln
aW4sIHN0YXRpc3RpY3MpOwpAQCAtMzY5LDUgKzM3MSwyOSBAQCBTdHJpbmcgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnN0YXRpc3RpY3NGCiAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmZpbmQob3JpZ2luKS0+dmFsdWU7CiAgICAgcmV0dXJuICJTdGF0aXN0aWNz
IGZvciAiICsgb3JpZ2luICsgIjpcbiIgKyBzdGF0aXN0aWNzLnRvU3RyaW5nKCk7CiB9Ci0gICAg
CisKK1ZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
dGFrZVN0YXRpc3RpY3MoKQoreworICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBz
dGF0aXN0aWNzOworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAudmFsdWVzKCkpCisgICAgICAgIHN0YXRpc3RpY3MuYXBwZW5kKHN0YXRpc3RpYyk7CisK
KyAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOworCisgICAgcmV0dXJuIHN0YXRp
c3RpY3M7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Om1lcmdlU3RhdGlzdGljcyhj
b25zdCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIHN0YXRpc3RpY3MpCit7CisgICAg
Zm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7CisgICAgICAgIGF1dG8gaXRlciA9
IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoc3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7
CisgICAgICAgIGlmIChpdGVyID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpKSB7Cisg
ICAgICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQoc3RhdGlzdGljLmhpZ2hMZXZl
bERvbWFpbiwgc3RhdGlzdGljKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgaXRlci0+dmFsdWUubWVyZ2Uoc3RhdGlzdGljKTsKKyAgICB9Cit9CisKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCShyZXZp
c2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQCBjbGFzcyBSZXNvdXJjZUxvYWRP
YnNlcnZlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlTG9h
ZE9ic2VydmVyJiBzaGFyZWRPYnNlcnZlcigpOwogICAgIAotICAgIHZvaWQgbG9nRnJhbWVOYXZp
Z2F0aW9uKGJvb2wgaXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYg
dGFyZ2V0VVJMLCBib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7Ci0g
ICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoYm9vbCBpc1JlZGlyZWN0LCBjb25zdCBVUkwm
IHNvdXJjZVVSTCwgY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJM
KTsKLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBEb2N1bWVudCYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGJvb2wgaXNSZWRpcmVjdCwgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBib29sIGlzTWFpbkZyYW1l
LCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2dT
dWJyZXNvdXJjZUxvYWRpbmcoYm9vbCBpc1JlZGlyZWN0LCBjb25zdCBVUkwmIHNvdXJjZVVSTCwg
Y29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJMKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBEb2N1bWVudCYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZURhdGFUb0Rpc2soKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOwpAQCAtNTMsNiArNTMsMTQgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JPcmlnaW4o
Y29uc3QgU3RyaW5nJik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGlj
cygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtZXJnZVN0YXRpc3RpY3MoY29uc3QgVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+Jik7CisgICAgCisgICAgc3RhdGljIFN0cmluZyBk
ZWZhdWx0RmlsZW5hbWUoKSB7IHJldHVybiBBU0NJSUxpdGVyYWwoImZ1bGxfYnJvd3Npbmdfc2Vz
c2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOyB9CisKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJp
bmcmKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSAr
NzYsOSBAQCBzdGF0aWMgdm9pZCBlbmNvZGVIYXNoQ291bnRlZFNldChLZXllZEVuCiAgICAgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlKEtleWVkRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIGNvbnN0Cit2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5j
b2Rlci5lbmNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgb3JpZ2luKTsKKyAg
ICBlbmNvZGVyLmVuY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBoaWdoTGV2
ZWxEb21haW4pOwogICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBlbmNvZGVyLmVu
Y29kZUJvb2woImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbik7CkBAIC0x
MzAsMTQgKzEzMCwxMSBAQCBzdGF0aWMgdm9pZCBkZWNvZGVIYXNoQ291bnRlZFNldChLZXllZERl
CiAgICAgfSk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVk
RGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgU3RyaW5n
IHN0b3JlZE9yaWdpbjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRS
ZXNvdXJjZU9yaWdpbiIsIHN0b3JlZE9yaWdpbikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0
cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBoaWdoTGV2ZWxEb21haW4pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgQVNTRVJUX1VOVVNFRChvcmlnaW4sIHN0b3JlZE9y
aWdpbiA9PSBvcmlnaW4pOwotICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA3LDQgKzMwNCw0NyBAQCBTdHJpbmcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgdm9pZCBtZXJnZUhh
c2hDb3VudGVkU2V0KEhhc2hDb3VudGVkU2V0PFQ+JiB0bywgY29uc3QgSGFzaENvdW50ZWRTZXQ8
VD4mIGZyb20pCit7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGZyb20pCisgICAgICAgIHRvLmFk
ZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjptZXJnZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBvdGhlcikKK3sKKyAgICBB
U1NFUlQob3RoZXIuaGlnaExldmVsRG9tYWluID09IGhpZ2hMZXZlbERvbWFpbik7CisKKyAgICBo
YWRVc2VySW50ZXJhY3Rpb24gfD0gb3RoZXIuaGFkVXNlckludGVyYWN0aW9uOworICAgIAorICAg
IC8vIFRvcCBmcmFtZSBzdGF0cworICAgIHRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBv
dGhlci50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgdG9wRnJhbWVIYXNCZWVuUmVk
aXJlY3RlZEZyb20gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAg
dG9wRnJhbWVJbml0aWFsTG9hZENvdW50ICs9IG90aGVyLnRvcEZyYW1lSW5pdGlhbExvYWRDb3Vu
dDsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbyArPSBvdGhlci50b3BGcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRUbzsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tICs9IG90aGVy
LnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgdG9wRnJhbWVIYXNCZWVuTmF2aWdh
dGVkVG9CZWZvcmUgfD0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmU7Cisg
ICAgCisgICAgLy8gU3ViZnJhbWUgc3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMsIG90aGVyLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bnMpOworICAgIHN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBvdGhlci5zdWJmcmFtZUhh
c0JlZW5SZWRpcmVjdGVkVG87CisgICAgc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb20gKz0g
b3RoZXIuc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAgbWVyZ2VIYXNoQ291bnRl
ZFNldChzdWJmcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLCBvdGhlci5zdWJmcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvKTsKKyAgICBzdWJmcmFtZVN1YlJlc291cmNlQ291bnQgKz0gb3RoZXIuc3ViZnJhbWVT
dWJSZXNvdXJjZUNvdW50OworICAgIHN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvICs9IG90aGVy
LnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvOworICAgIHN1YmZyYW1lSGFzQmVlbk5hdmlnYXRl
ZEZyb20gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsKKyAgICBzdWJmcmFt
ZUhhc0JlZW5Mb2FkZWRCZWZvcmUgfD0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTG9hZGVkQmVmb3Jl
OworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNl
dChzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLCBvdGhlci5zdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW5zKTsKKyAgICBzdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50
ICs9IG90aGVyLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQ7CisgICAgc3VicmVz
b3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb20gKz0gb3RoZXIuc3VicmVzb3VyY2VIYXNCZWVuUmVk
aXJlY3RlZEZyb207CisgICAgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZFRvICs9IG90aGVy
LnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0
KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIG90aGVyLnN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8pOworICAgIAorICAgIC8vIFByZXZhbGVudCByZXNvdXJjZSBzdGF0cworICAgIG1l
cmdlSGFzaENvdW50ZWRTZXQocmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdp
bnMsIG90aGVyLnJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zKTsKKyAg
ICBpc1ByZXZhbGVudFJlc291cmNlIHw9IG90aGVyLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDI3IEBAIGNsYXNz
IEtleWVkRGVjb2RlcjsKIGNsYXNzIEtleWVkRW5jb2RlcjsKIAogc3RydWN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgeworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MoY29uc3QgU3RyaW5nJiBw
cmltYXJ5RG9tYWluKQorICAgICAgICA6IGhpZ2hMZXZlbERvbWFpbihwcmltYXJ5RG9tYWluKQor
ICAgIHsgfQorCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCisgICAgeyB9CisKICAgICBi
b29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9y
aWdpbnNWaXNpdGVkU29GYXIpOwogCiAgICAgYm9vbCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigp
IGNvbnN0OwogICAgIGJvb2wgaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBj
b25zdDsKIAotICAgIHZvaWQgZW5jb2RlKEtleWVkRW5jb2RlciYsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKSBjb25zdDsKLSAgICBib29sIGRlY29kZShLZXllZERlY29kZXImLCBjb25zdCBTdHJpbmcm
IG9yaWdpbik7CisgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7CisgICAgYm9v
bCBkZWNvZGUoS2V5ZWREZWNvZGVyJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
IAorICAgIHZvaWQgbWVyZ2UoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworCisgICAg
U3RyaW5nIGhpZ2hMZXZlbERvbWFpbjsKKwogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw3NSBAQAorMjAxNi0wMi0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBHYXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0
aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQy
NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzAyODkyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBuZXcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIGZpbGVzIHRvIGJ1aWxkLgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0
Lmg6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6ZGVj
b2RlKTogU3VwcG9ydCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAgICAo
SVBDOjplbmNvZGVIYXNoQ291bnRlZFNldCk6IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjplbmNvZGUpOiBBZGRlZC4KKyAgICAgICAg
KElQQzo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOiBBZGRlZC4KKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZGVjb2RlKTogQWRkZWQuCisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cmVmZXJlbmNlc0RlZmluaXRpb25zLmg6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQgcHJlZmVyZW5jZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0Nv
bnRleHRHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdL
Q29udGV4dFNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yYWdlUGF0aCk6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZF0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBf
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6XSk6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX3NldEF1dG9tYXRpb25TZXNzaW9uOl0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIHJlYWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVGcm9tRGlza0lmTmVlZGVkXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQ
YXRoKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpzZXRTdGF0aXN0
aWNzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6d3JpdGVU
b0Rpc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKTog
SW5pdGlhbGl6ZSB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGRhdGEgb2Jq
ZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKTog
U2h1dCBkb3duIHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgZGF0YSBvYmpl
Y3QuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRTdGF0aXN0aWNzU3RvcmFn
ZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3Rp
Y3NTdG9yYWdlUGF0aCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0
b3JhZ2VQYXRoKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9v
bEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1
bHRTdGF0aXN0aWNzU3RvcmFnZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
IGZpbGVzIHRvIGJ1aWxkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OldlYlByb2Nlc3MpOiBJbml0aWFsaXplZCBzdGF0aXN0aWNzIGNoYW5nZWQgbm90aWZpY2F0
aW9uIHRpbWVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdGF0aXN0aWNzQ2hhbmdl
ZFRpbWVyRmlyZWQpOiBBZGRlZC4gU2VuZCBidW5kbGVzIG9mIHNpdGUgbG9hZAorICAgICAgICBz
dGF0aXN0aWNzIHRvIHRoZSBVSVByb2Nlc3Mgb24gYSBzZXQgaW50ZXJ2YWwuIENsZWFyIG91dCBs
b2NhbCBjYWNoZSBhZnRlciBlYWNoIHNlbmQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmg6CisKIDIwMTYtMDItMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCAiZGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2giIHRvIHRoZSBXS0NvbnRleHRD
bGllbnQ7IEFkb3B0IGl0IGluIFdLVFIuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTY2Myw2ICs2NjMsNyBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAg
IFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCiAKICAg
ICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgpJbmRleDogU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAx
OTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw2ICs5OCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAg
ICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCisJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlIFwKICAgICBTZWNJdGVtU2hpbSBcCiAgICAgU2VjSXRlbVNoaW1Qcm94eSBcCiAgICAgU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTk2ODIxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+
CkBAIC0yMDQ0LDQgKzIwNDUsMTU2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRh
aWxzPjo6ZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIHZvaWQgZW5jb2RlSGFzaENv
dW50ZWRTZXQoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIYXNoQ291bnRlZFNldDxT
dHJpbmc+JiBoYXNoQ291bnRlZFNldCkKK3sKKyAgICBlbmNvZGVyIDw8IGhhc2hDb3VudGVkU2V0
LnNpemUoKTsKKworICAgIGZvciAoYXV0byBlbnRyeSA6IGhhc2hDb3VudGVkU2V0KSB7CisgICAg
ICAgIGVuY29kZXIgPDwgZW50cnkua2V5OworICAgICAgICBlbmNvZGVyIDw8IGVudHJ5LnZhbHVl
OworICAgIH0KK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGlzdGlj
cy5oaWdoTGV2ZWxEb21haW47CisgICAgCisgICAgLy8gVXNlciBpbnRlcmFjdGlvbgorICAgIGVu
Y29kZXIgPDwgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb247CisgICAgCisgICAgLy8gVG9w
IGZyYW1lIHN0YXRzCisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5h
dmlnYXRlZFRvQmVmb3JlOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0Jl
ZW5SZWRpcmVjdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVl
blJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUluaXRp
YWxMb2FkQ291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5h
dmlnYXRlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZp
Z2F0ZWRGcm9tOworICAgIAorICAgIC8vIFN1YmZyYW1lIHN0YXRzCisgICAgZW5jb2RlciA8PCBz
dGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvOworICAgIGVuY29kZXIgPDwgc3Rh
dGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3Muc3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50OworICAgIGVuY29kZUhhc2hDb3VudGVk
U2V0KGVuY29kZXIsIHN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyk7Cisg
ICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2Rlciwgc3RhdGlzdGljcy5zdWJmcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVu
TmF2aWdhdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5h
dmlnYXRlZEZyb207CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAgICBlbmNvZGVy
IDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAgZW5j
b2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudDsK
KyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VD
b3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZDsKKyAgICBlbmNvZGVIYXNo
Q291bnRlZFNldChlbmNvZGVyLCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbnMpOworICAgIGVuY29kZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsIHN0YXRpc3RpY3Muc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgCisgICAgLy8gUHJldmFsZW50IFJlc291
cmNlCisgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2Rlciwgc3RhdGlzdGljcy5yZWRpcmVj
dGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucyk7CisgICAgZW5jb2RlciA8PCBzdGF0
aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisKK3N0YXRpYyBib29sIGRlY29kZUhhc2hD
b3VudGVkU2V0KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSGFzaENvdW50ZWRTZXQ8U3RyaW5n
PiYgaGFzaENvdW50ZWRTZXQpCit7CisgICAgdW5zaWduZWQgZW50cmllczsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGVudHJpZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGVudHJpZXM7ICsraSkgeworICAgICAgICBTdHJpbmcgb3JpZ2lu
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9yaWdpbikpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBjb3VudDsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb3VudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaGFzaENvdW50ZWRTZXQuYWRkKG9yaWdpbiwgY291bnQpOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0
aXN0aWNzLmhpZ2hMZXZlbERvbWFpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNz
LmhhZFVzZXJJbnRlcmFjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAv
LyBUb3AgZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9w
RnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJl
ZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb20pKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0
aWNzLnRvcEZyYW1lSW5pdGlhbExvYWRDb3VudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2
aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb20pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3ViZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTG9hZGVkQmVmb3JlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlz
dGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVl
blJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZVN1YlJlc291cmNlQ291bnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChk
ZWNvZGVyLCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIs
IHN0YXRpc3RpY3Muc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNUbykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVI
YXNCZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb20p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuUmVk
aXJlY3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRp
c3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVz
b3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5z
VmlzaXRlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZUhh
c2hDb3VudGVkU2V0KGRlY29kZXIsIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2lucykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2RlSGFzaENv
dW50ZWRTZXQoZGVjb2Rlciwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIFByZXZhbGVudCBSZXNvdXJj
ZQorICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rlciwgc3RhdGlzdGljcy5yZWRp
cmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxl
bnRSZXNvdXJjZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04MCw2ICs4MCw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBSZWNlbnRT
ZWFyY2g7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIHN0cnVjdCBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0IFRleHRJ
bmRpY2F0b3JEYXRhOwpAQCAtNDU1LDYgKzQ1NiwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYsIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKK307CisKKwogfSAvLyBuYW1l
c3BhY2UgSVBDCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCShyZXZpc2lv
biAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAKICAgICBtYWNybyhJZ25v
cmVWaWV3cG9ydFNjYWxpbmdDb25zdHJhaW50cywgaWdub3JlVmlld3BvcnRTY2FsaW5nQ29uc3Ry
YWludHMsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBtYWNybyhGb3JjZUFsd2F5c1VzZXJTY2Fs
YWJsZSwgZm9yY2VBbHdheXNVc2VyU2NhbGFibGUsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAg
bWFjcm8oUmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlLCByZXNvdXJjZVVzYWdlT3ZlcmxheVZp
c2libGUsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAgbWFjcm8oUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkLCBCb29sLCBib29sLCBm
YWxzZSkgXAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfREVCVUdfVUlOVDMyX1BS
RUZFUkVOQ0UobWFjcm8pIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3Qu
aAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAgICAg
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLAogICAgICAgICBQbHVnaW5TaXRlRGF0YU1hbmFnZXIs
CiAgICAgICAgIFByZWZlcmVuY2VzLAorICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGUsCiAgICAgICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyLAog
ICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2
YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZVJ1bkJlZm8KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyKiBXS1BhZ2VSdW5KYXZh
U2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIqIFdLUGFnZVJ1bkphdmFT
Y3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIqIFdLUGFnZVJ1bkphdmFT
Y3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVGV4dENoZWNrZXIqIFdLVGV4
dENoZWNrZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Nlc3Npb24qIFdLU2Vz
c2lvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU2Vzc2lvblN0YXRlKiBXS1Nl
c3Npb25TdGF0ZVJlZjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCIKKworI2luY2x1
ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFz
c1JlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU+IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdGF0ZTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgqcHJvY2Vzc1Bvb2wp
KTsKK30KKworUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDogbV9wcm9jZXNzUG9v
bChwcm9jZXNzUG9vbCkKK3sKKyAgICBtX3Byb2Nlc3NQb29sLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksICp0aGlzKTsKK30KKworUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjp+UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlKCkKK3sKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGU6OnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJj
ZUxvYWRPYnNlcnZlcj4oKTsKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyLT5zZXRTdGF0aXN0
aWNzU3RvcmFnZURpcmVjdG9yeShwYXRoKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgb3JpZ2lucykKK3sKKyAgICBtX3Jlc291cmNl
TG9hZE9ic2VydmVyLT5tZXJnZVN0YXRpc3RpY3Mob3JpZ2lucyk7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKQoreworICAg
IGlmIChtX3Jlc291cmNlTG9hZE9ic2VydmVyKQorICAgICAgICBtX3Jlc291cmNlTG9hZE9ic2Vy
dmVyLT5yZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGU6OndyaXRlVG9EaXNrKCkKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRP
YnNlcnZlcikKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRPYnNlcnZlci0+d3JpdGVEYXRhVG9EaXNr
KCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlX2gKKyNkZWZpbmUgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NQb29sOworCitjbGFzcyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU+LCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGU+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOworICAgIHZpcnR1YWwgflJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgpOworICAgIAorICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1N0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgdm9pZCByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4mIG9yaWdpbnMpOworCisgICAgdm9pZCB3cml0ZVRvRGlzaygpOworICAgIHZv
aWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7CisgICAgCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShXZWJQcm9jZXNzUG9vbCYpOworICAgIAor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsK
KyAgICAKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKKyAgICAKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI+IG1fcmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMg
LT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIHsKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gb3JpZ2lu
cykKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NQcm94eS5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgog
I2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xNzUsNiArMTc2LDggQEAgV2ViUHJvY2Vzc1Bv
b2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogCiAgICAgLy8gTk9URTogVGhlc2Ugc3ViLW9i
amVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3NhZ2VSZWNlaXZlck1hcC4uCiAg
ICAgbV9pY29uRGF0YWJhc2UgPSBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZSh0aGlzKTsKKyAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OmNy
ZWF0ZSh0aGlzKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN0YXRpc3RpY3NT
dG9yYWdlRGlyZWN0b3J5KHN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpKTsKIAogICAgIGFkZFN1cHBs
ZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwogICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CkBAIC0yMjksNiArMjMyLDkgQEAgV2ViUHJvY2Vzc1Bv
b2w6On5XZWJQcm9jZXNzUG9vbCgpCiAgICAgICAgIGl0LT52YWx1ZS0+Y2xlYXJQcm9jZXNzUG9v
bCgpOwogICAgIH0KIAorICAgIC8vIEZJWE1FKDE1NDY0Mik6IFRoaXMgc2hvdWxkIG5vdCBiZSBk
b25lIGluIG9uZSBsb25nIG9wZXJhdGlvbiB3aGVuIGV4aXRpbmcuCisgICAgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT53cml0ZVRvRGlzaygpOworICAgIAogICAgIG1faWNvbkRhdGFiYXNlLT5p
bnZhbGlkYXRlKCk7CiAgICAgbV9pY29uRGF0YWJhc2UtPmNsZWFyUHJvY2Vzc1Bvb2woKTsKICAg
ICBXZWJJY29uRGF0YWJhc2UqIHJhd0ljb25EYXRhYmFzZSA9IG1faWNvbkRhdGFiYXNlLnJlbGVh
c2UoKS5sZWFrUmVmKCk7CkBAIC0xMDUzLDYgKzEwNTksMjMgQEAgU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjppY29uRGF0YWJhc2VQYXRoKAogICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRJY29uRGF0
YWJhc2VQYXRoKCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFN0YXRpc3RpY3NTdG9y
YWdlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbV9vdmVycmlkZVN0YXRpc3RpY3NT
dG9yYWdlUGF0aCA9IHBhdGg7CisgICAgaWYgKCFtX292ZXJyaWRlU3RhdGlzdGljc1N0b3JhZ2VQ
YXRoLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBUaGlzIGltcGxpY2l0bHkgZW5hYmxlcyB0aGUg
ZGF0YWJhc2Ugb24gVUkgcHJvY2VzcyBzaWRlLgorICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MtPnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KHBhdGgpOworICAgIH0KK30KKwor
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdAorewor
ICAgIGlmICghbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0aC5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIG1fb3ZlcnJpZGVTdGF0aXN0aWNzU3RvcmFnZVBhdGg7CisgICAgCisgICAgcmV0
dXJuIHBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpOworfQorCiAjaWYgRU5B
QkxFKFNFQ0NPTVBfRklMVEVSUykKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFn
ZURpcmVjdG9yeSgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzksNiArNzksNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBEb3dubG9hZFByb3h5OworY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlOwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb247CiBjbGFzcyBXZWJDb250ZXh0U3Vw
cGxlbWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKQEAgLTIyOCw2ICsyMjksNyBAQCBwdWJs
aWM6CiAgICAgV2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0K
IAogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9p
Y29uRGF0YWJhc2UuZ2V0KCk7IH0KKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUqIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3MgewogICAgICAgICB1
bnNpZ25lZCB3a1ZpZXdDb3VudDsKQEAgLTI0MCw2ICsyNDIsOSBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNldENvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkgPSBkaXI7IH0KIAorICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKGNvbnN0
IFN0cmluZyYpOworICAgIFN0cmluZyBzdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdDsKKwog
ICAgIHZvaWQgdXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCk7CiAgICAgYm9vbCBpc1VzaW5nVGVz
dGluZ05ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb247IH0KIApAQCAtMzgyLDYgKzM4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBs
YW5ndWFnZUNoYW5nZWQoKTsKIAogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJh
c2VQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9y
YWdlUGF0aCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCBFTkFCTEUoU0VDQ09NUF9G
SUxURVJTKQogICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CkBAIC00
NjUsNiArNDcxLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9tZW1vcnlTYW1wbGVySW50ZXJ2
YWw7CiAKICAgICBSZWZQdHI8V2ViSWNvbkRhdGFiYXNlPiBtX2ljb25EYXRhYmFzZTsKKyAgICBS
ZWZQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlPiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CiAKICAgICBjb25zdCBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CiAKQEAgLTQ4NSw2ICs0OTIsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1f
b3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwogICAgIFN0cmluZyBtX292ZXJyaWRlQ29va2llU3Rv
cmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0
aDsKIAogICAgIGJvb2wgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDE5
NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7Citj
bGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQSV9N
QVBQSU5HKFdLUGFnZVJlZiwgV2ViUGFnZVBybwogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVy
ZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlv
blNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZW5k
ZXJMYXllclJlZiwgV2ViUmVuZGVyTGF5ZXIpCitXS19BRERfQVBJX01BUFBJTkcoV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSkKIFdL
X0FERF9BUElfTUFQUElORyhXS1JlbmRlck9iamVjdFJlZiwgV2ViUmVuZGVyT2JqZWN0KQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLU2Vzc2lvblN0YXRlUmVmLCBBUEk6OlNlc3Npb25TdGF0ZSkKIFdL
X0FERF9BUElfTUFQUElORyhXS1RleHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lv
biAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0YXRlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBAIC01
NzcsMyArNTc4LDE0IEBAIHZvaWQgV0tDb250ZXh0U2V0Rm9udFdoaXRlbGlzdChXS0NvbnRleHQK
IHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldEZvbnRXaGl0ZWxpc3QodG9JbXBsKGFycmF5
UmVmKSk7CiB9CisKK1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlUmVmIFdLQ29udGV4dEdl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZikKK3sK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JhZ2VQYXRoKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGF0aCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldFN0YXRp
c3RpY3NTdG9yYWdlUGF0aCh0b0ltcGwocmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGgpLT5zdHJp
bmcoKSk7Cit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw3IEBAIFdLX0VYUE9S
VCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiAKIFdLX0VYUE9SVCBXS05vdGlmaWNhdGlv
bk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYg
Y29udGV4dCk7CiBXS19FWFBPUlQgV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWYgV0tDb250ZXh0
R2V0UGx1Z2luU2l0ZURhdGFNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9S
VCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFJlc291cmNlQ2FjaGVNYW5h
Z2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKK1dLX0VYUE9SVCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZVJlZiBXS0NvbnRleHRHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYpOwogCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRHZXRTdGF0
aXN0aWNzRnVuY3Rpb24pKFdLRGljdGlvbmFyeVJlZiBzdGF0aXN0aWNzLCBXS0Vycm9yUmVmIGVy
cm9yLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0
U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBX
S0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCShyZXZpc2lv
biAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw4IEBAIFdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFNldE1lbW9yeUNhY2hlRGkKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Rm9u
dFdoaXRlbGlzdChXS0NvbnRleHRSZWYsIFdLQXJyYXlSZWYpOwogCitXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZVBhdGgoV0tDb250ZXh0UmVm
IGNvbnRleHQsIFdLU3RyaW5nUmVmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoKTsKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEy
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQ1NiwzICsxNDU2LDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dl
dE1vY2tDYXB0dXJlRGV2aWNlc0UKIHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+bW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK2Jvb2wgV0tQcmVm
ZXJlbmNlc0dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAko
cmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw2ICszOTksMTAgQEAg
V0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFJlc291cmNlVQogV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1Jl
ZiwgYm9vbCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TW9ja0NhcHR1cmVEZXZp
Y2VzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdHMgdG8gZmFsc2UuCitX
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2Vz
R2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZik7CisgICAg
CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTk2
ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMjcsNiArMjI3LDE2IEBAIC0gKHZvaWQpX3NldFJlc291cmNl
VXNhZ2VPdmVybGF5VmlzaWJsZToKICAgICBfcHJlZmVyZW5jZXMtPnNldFJlc291cmNlVXNhZ2VP
dmVybGF5VmlzaWJsZShyZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUpOwogfQogCistIChCT09M
KV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAoreworICAgIHJldHVybiBfcHJlZmVyZW5j
ZXMtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Cit9CisKKy0gKHZvaWQpX3NldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKXJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkCit7CisgICAgX3ByZWZlcmVuY2VzLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7Cit9CisKIC0gKF9XS0RlYnVnT3Zl
cmxheVJlZ2lvbnMpX3Zpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zCiB7CiAgICAgcmV0dXJuIF9w
cmVmZXJlbmNlcy0+dmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiAr
NjAsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLSmF2YVNjCiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRTaW1wbGVMaW5lTGF5b3V0RGVidWdCb3JkZXJzRW5h
YmxlZDopIEJPT0wgX3NpbXBsZUxpbmVMYXlvdXREZWJ1Z0JvcmRlcnNFbmFibGVkIFdLX0FWQUlM
QUJMRSgxMF8xMSwgOV8wKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFjY2Vs
ZXJhdGVkRHJhd2luZ0VuYWJsZWQ6KSBCT09MIF9hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIFdL
X0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldERpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ6KSBCT09MIF9kaXNwbGF5TGlz
dERyYXdpbmdFbmFibGVkIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiAKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzZXR0ZXI9X3NldERldmVsb3BlckV4dHJhc0VuYWJsZWQ6KSBCT09MIF9kZXZl
bG9wZXJFeHRyYXNFbmFibGVkIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bQkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW1w
b3J0ICJBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAjaW1wb3J0
ICJEb3dubG9hZENsaWVudC5oIgorI2ltcG9ydCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
LmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgog
I2ltcG9ydCAiV2Vha09iakNQdHIuaCIKQEAgLTI1MSw2ICsyNTIsMTcgQEAgLSAodm9pZClfc2V0
QXV0b21hdGlvblNlc3Npb246KF9XS0F1dG9tYQogICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21h
dGlvblNlc3Npb24oYXV0b21hdGlvblNlc3Npb24gPyBhdXRvbWF0aW9uU2Vzc2lvbi0+X3Nlc3Np
b24uZ2V0KCkgOiBudWxscHRyKTsKIH0KIAorLSAodm9pZClzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDooQk9PTCl2YWx1ZQoreworICAgIFdlYkNvcmU6OlNldHRpbmdzOjpzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh2YWx1ZSk7Cit9CisKKy0gKHZvaWQpcmVhZFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZUZyb21EaXNrSWZOZWVkZWQKK3sKKyAgICBpZiAoYXV0byog
c3RhdGlzdGljcyA9IF9wcm9jZXNzUG9vbC0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKCkp
CisgICAgICAgIHN0YXRpc3RpY3MtPnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOworfQorCiBA
ZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAko
cmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw5IEBACiAt
ICh2b2lkKV9hdXRvbWF0aW9uQ2FwYWJpbGl0aWVzRGlkQ2hhbmdlIFdLX0FWQUlMQUJMRShXS19N
QUNfVEJBLCBXS19JT1NfVEJBKTsKIC0gKHZvaWQpX3NldEF1dG9tYXRpb25TZXNzaW9uOihfV0tB
dXRvbWF0aW9uU2Vzc2lvbiAqKWF1dG9tYXRpb25TZXNzaW9uIFdLX0FWQUlMQUJMRShXS19NQUNf
VEJBLCBXS19JT1NfVEJBKTsKIAorLSAodm9pZClzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDooQk9PTCl2YWx1ZTsKKy0gKHZvaWQpcmVhZFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZUZyb21EaXNrSWZOZWVkZWQ7CisKIEBlbmQKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2
aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTczLDYgKzczLDggQEAgc3RhdGljIE5T
U3RyaW5nICpXZWJLaXRBcHBsaWNhdGlvbkRpZENoYQogLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxl
bS85MTM4ODE3PiAtIEFmdGVyIHRoaXMgImJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IiByYWRhciBp
cyByZW1vdmVkLCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQgdG8gb25seSByZXR1cm4gYW4g
ZW1wdHkgU3RyaW5nLgogTlNTdHJpbmcgKldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRz
S2V5ID0gQCJXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0c0tleSI7CiAKK05TU3RyaW5n
ICpXZWJLaXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldl
YktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlEZWZhdWx0c0tleSI7CisKIHN0YXRp
YyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZhdWx0c0tleSA9IEAiV2ViS2l0
MkhUVFBQcm94eSI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXQySFRUUFNQcm94eURl
ZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFNQcm94eSI7CiAKQEAgLTQyOCw2ICs0MzAsMjYgQEAg
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJYwogICAgIHJldHVybiBzdHJp
bmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtkYXRhYmFzZXNEaXJlY3Rvcnkgc3RyaW5nQnlT
dGFuZGFyZGl6aW5nUGF0aF0pOwogfQogCitTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3Jt
RGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpIGNvbnN0Cit7CisgICAgTlNTdHJpbmcgKmFw
cE5hbWUgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdOworICAgIGlm
ICghYXBwTmFtZSkKKyAgICAgICAgYXBwTmFtZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10gcHJvY2Vzc05hbWVdOworICAgIAorICAgIEFTU0VSVChhcHBOYW1lKTsKKworICAgIE5TU3Ry
aW5nICpzdG9yYWdlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlE
ZWZhdWx0c0tleV07CisgICAgaWYgKCFzdG9yYWdlRGlyZWN0b3J5IHx8ICFbc3RvcmFnZURpcmVj
dG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgIE5TRXJyb3Ig
KmVycm9yOworICAgICAgICBzdG9yYWdlRGlyZWN0b3J5ID0gW1tbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQXBwbGljYXRpb25TdXBwb3J0RGlyZWN0b3J5
IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVGb3JVUkw6bmlsIGNyZWF0ZTpZ
RVMgZXJyb3I6JmVycm9yXSBwYXRoXTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RvcmFnZURp
cmVjdG9yeSB8fCAhW3N0b3JhZ2VEaXJlY3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSkKKyAgICAgICAgICAgIHN0b3JhZ2VEaXJlY3RvcnkgPSBbTlNIb21lRGlyZWN0b3J5KCkg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBw
b3J0Il07CisgICAgfQorCisgICAgcmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBh
dGgoW1tzdG9yYWdlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDphcHBO
YW1lXSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Cit9CisKIGJvb2wgV2ViUHJvY2Vzc1Bv
b2w6Om9taXRQREZTdXBwb3J0KCkKIHsKICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgInNlY3JldCBk
ZWZhdWx0IiB3ZSBkb24ndCBib3RoZXIgcmVnaXN0ZXJpbmcgaXQuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcAkocmV2aXNp
b24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9v
bEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsMTQgQEAgU3RyaW5nIFdlYlBy
b2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJYwogICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQoam9pbmVkUGF0aCwgV2ViQ29yZTo6SWNvbkRhdGFiYXNlOjpkZWZh
dWx0RGF0YWJhc2VGaWxlbmFtZSgpKTsKIH0KIAorU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybURlZmF1bHRTdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdAoreworICAgIGNoYXIgam9p
bmVkUGF0aFtQQVRIX01BWF07CisgICAgZWluYV9maWxlX3BhdGhfam9pbihqb2luZWRQYXRoLCBz
aXplb2Yoam9pbmVkUGF0aCksIGVmcmVldF9kYXRhX2hvbWVfZ2V0KCksICJXZWJLaXRFZmwiIEVJ
TkFfUEFUSF9TRVBfUyAiTG9hZFN0YXRpc3RpY3MiKTsKKworICAgIHJldHVybiBXZWJDb3JlOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnQoam9pbmVkUGF0aCwgV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmRlZmF1bHRGaWxlbmFtZSgpKTsKK30KKwogU3RyaW5nIFdlYlByb2Nlc3NQb29s
OjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewogICAgIHJl
dHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vz
c1Bvb2xHdGsuY3BwCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzEx
OCwxMiBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljCiAgICAgcmV0
dXJuIFdlYkNvcmU6OmZpbGVuYW1lVG9TdHJpbmcoZGF0YWJhc2VEaXJlY3RvcnkuZ2V0KCkpOwog
fQogCitTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9y
YWdlUGF0aCgpIGNvbnN0Cit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gc3RhdGlzdGljc0RpcmVj
dG9yeShnX2J1aWxkX2ZpbGVuYW1lKGdfZ2V0X3VzZXJfY2FjaGVfZGlyKCksICJ3ZWJraXRndGsi
LCAibG9hZHN0YXRpc3RpY3MiLCBudWxscHRyKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmZpbGVu
YW1lVG9TdHJpbmcoc3RhdGlzdGljc0RpcmVjdG9yeS5nZXQoKSk7Cit9CisKIFN0cmluZyBXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkK
IHsKICAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNjQs
NiArMTA2NCwxMSBAQAogCQk3NUE4RDJFMTE4N0RFQzFBMDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyREUx
ODdERTg3NDAwQzM5QzlFIC8qIEFQSVNlc3Npb24uaCAqLzsgfTsKIAkJNzVBOEQyRTIxODdERUMx
RTAwQzM5QzlFIC8qIEFQSVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyREQxODdERTg3NDAwQzM5QzlFIC8qIEFQSVNlc3Npb24u
Y3BwICovOyB9OwogCQk3NjJCNzQ4RDEyMEJDNzVDMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdBNzkxRUZB
MUM3Q0ZDRjEwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTdBNzkxRUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmggKi87IH07CisJCTdBNzkxRUZDMUM3
RDA4QzUwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5Q0Q4QzAxQzc3OTg0OTAw
RDlGNkM3IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAgKi87IH07CisJCTdBNzkx
RjAzMUM3RTkwNzcwMEM0QzUyQiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUYwMTFD
N0U3NkVCMDBDNEM1MkIgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwICovOyB9
OworCQk3QTc5MUYwNDFDN0U5MzdGMDBDNEM1MkIgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
NzkxRjAyMUM3RTc2RUIwMEM0QzUyQiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMTM1
QUE4MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE2MTczQjBCQ0EwMDU4
NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJD
QTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1Bs
dWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJN0MxMzVBQUMxNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9u
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mx
MzVBQUExNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tICovOyB9OwpA
QCAtMzA4MSw2ICszMDg2LDEzIEBACiAJCTc1QThEMkRFMTg3REU4NzQwMEMzOUM5RSAvKiBBUElT
ZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFQSVNlc3Npb24uaDsg
cGF0aCA9IFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CiAJCTc2MkI3NDgxMTIwQkJBMDEwMDgxOTMzOSAvKiBGb250U21vb3RoaW5nTGV2ZWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFNtb290aGluZ0xldmVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAv
KiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTc5MUYwMTFDN0U3NkVCMDBDNEM1MkIgLyogV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3QTc5MUYwMjFDN0U3NkVCMDBDNEM1MkIgLyogV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTlDRDhD
MTFDNzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2Qzcg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5tZXNzYWdlcy5pbjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQkI5QTgxOERDREU4OTAwMDZDMDg2IC8qIFdlYkNv
bnRlbnQtaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueG1sOyBwYXRoID0gIldlYkNvbnRlbnQtaU9TLmVudGl0bGVt
ZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMEJCOUE5MThEQ0RGNUEwMDA2
QzA4NiAvKiBOZXR3b3JrLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9ICJOZXR3b3JrLWlPUy5l
bnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzEzNUFBNjE3M0Iw
QkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTU4NDEsNiArNTg1Myw5IEBACiAJCQkJODZFNjdBMjIxOTBGNDEx
ODAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuY3BwICovLAogCQkJCTg2RTY3QTIxMTkwRjQx
MTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggKi8sCiAJCQkJODMwNDhBRTUxQUNBNDVE
QzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAqLywKKwkJCQk3QTlDRDhDMDFD
Nzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcCAqLywKKwkJ
CQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
LmggKi8sCisJCQkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIg
LyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5
MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1MUE0RDVBODE2Q0FDNEZGMDAw
RTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICovLApAQCAtNjExMyw2ICs2MTI4LDggQEAK
IAkJCQk1MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5o
ICovLAogCQkJCTMzMzY3NjM4MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcCAqLywKIAkJCQkzMzM2NzYzOTEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNh
Y2hlTWFuYWdlci5oICovLAorCQkJCTdBNzkxRjAxMUM3RTc2RUIwMEM0QzUyQiAvKiBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAgKi8sCisJCQkJN0E3OTFGMDIxQzdFNzZFQjAwQzRD
NTJCIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmggKi8sCiAJCQkJNzVBOEQyRDAx
ODdEMTdCRjAwQzM5QzlFIC8qIFdLU2Vzc2lvblJlZi5jcHAgKi8sCiAJCQkJNzVBOEQyRDExODdE
MTdCRjAwQzM5QzlFIC8qIFdLU2Vzc2lvblJlZi5oICovLAogCQkJCTFBREU0NkIwMTk1NEVDNjEw
MDBGNzk4NSAvKiBXS1Nlc3Npb25TdGF0ZVJlZi5jcHAgKi8sCkBAIC02ODYwLDYgKzY4NzcsOCBA
QAogCQkJCTFBQzEzMzg0MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1l
c3NhZ2VzLmggKi8sCiAJCQkJMEY1OTQ3QTUxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRjU5NDdBNjE4N0I1
MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovLAor
CQkJCTdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGVNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlcy5oICovLAogCQkJCUUxOEU2OTEx
MTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJRTE4RTY5MTIxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2FnZXMuaCAqLywK
IAkJCQlFMThFNjkxMzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCkBAIC03MjY0LDYgKzcyODMsNyBAQAogCQkJCUJDMDMyREE2MTBGNDM3
RDEwMDU4QzE1QSAvKiBBcmd1bWVudERlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMy
REE4MTBGNDM3RDEwMDU4QzE1QSAvKiBBcmd1bWVudEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMDMyREE5MTBGNDM3RDEwMDU4QzE1QSAvKiBBcmd1bWVudHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTdBNzkxRjA0MUM3RTkzN0YwMEM0QzUyQiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDIxQTQ4RTZDNjAwNTRFRjc0IC8q
IEFzc2VydGlvblNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTlDNEE1OTE4Qjgx
MTc0MDA3QkRDQjYgLyogQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxNUU3NzI4MTgzREQ2RjYwMDA3MjAzRiAvKiBBc3luY1JlcXVlc3QuaCBpbiBIZWFkZXJz
ICovLApAQCAtNzQ3Niw2ICs3NDk2LDcgQEAKIAkJCQkxQTBFQzc1RTEyNEJDN0IyMDA3RUY0QTUg
LyogUGx1Z2luUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0M0I1RTEyNEQ1
RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBMDQzREMxMTI0RkY4NzUwMEZGQkZCNSAvKiBQbHVnaW5Qcm94eS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThFRkE3MTEyNTJCODQx
MDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0
QTlGMzMxMkI4NDRFMjAwOEZFOTg0IC8qIFBsdWdpblF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJN0NENjIyNzgxNzM5RDg2MzAwNUJEN0ZGIC8qIFBsdWdpblNhbmRib3hQcm9maWxlLmggaW4g
SGVhZGVycyAqLywKQEAgLTg4OTUsNiArODkxNiw3IEBACiAJCQkJMUEyRDg0QTQxMjdGNkFEMTAw
MUVCOTYyIC8qIE5QVmFyaWFudERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4QUNBMTQx
NjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUJDQ0Y2NzMzMTJDN0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzM4
NzQzNDE3MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1QzA1MkYyNjFDNkQzQkQzMDA3NkU5MTkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2Eu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzZEMzdGQzE3MkY1NTVGMDA5RDI4NDcgLyogUGFnZUJh
bm5lck1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtOTE2NCw2ICs5MTg2LDcgQEAKIAkJCQlCQzdC
NjIxNjEyQTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMjlENTVERjExNjFCRjlGMTAwMzFBMkUzIC8qIFdlYlBhZ2VHcm91cFByb3h5TWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOUVBMzExMUE5NkQ5RUIwMDJE
MjgwNyAvKiBXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJN0E3OTFGMDMxQzdFOTA3NzAwQzRDNTJCIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNkVDMUMyM0Y4MDkwMEQ0MTE4MyAvKiBO
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
REE5NDRCQTE4ODRFQTNDMDBFRDg2REIgLyogV2ViUGFnZUlPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJDOTYzRDZFMTEzREQxQTUwMDU3NEJFMiAvKiBXZWJQYWdlTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC05Mjc3LDYgKzkzMDAsNyBAQAogCQkJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAv
KiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBDNTdBMTI0
MEE1NDYwMDhDNUUyOSAvKiBXS0J1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDMTRERjlFMTIwQjYzNUYwMDgyNkMwQyAvKiBXS0J1bmRsZVNjcmlwdFdvcmxkLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTIxQzIzRjg5
RTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RjUx
MjRGRjAyNzAwNjhGMjBBIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDNDA3NjI4MTI0RkYwNDAwMDY4RjIwQSAvKiBXS0NlcnRpZmljYXRlSW5mb01hYy5tbSBp
biBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMCwgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCwgMjAxMiwgMjAxNCwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tl
ci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIK
QEAgLTg3LDYgKzg4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUhhbmRsZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5o
PgpAQCAtMTY2LDYgKzE2OSw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgICwgbV9o
YXNSaWNoQ29udGVudFNlcnZpY2VzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX25vblZpc2libGVQ
cm9jZXNzQ2xlYW51cFRpbWVyKCp0aGlzLCAmV2ViUHJvY2Vzczo6bm9uVmlzaWJsZVByb2Nlc3ND
bGVhbnVwVGltZXJGaXJlZCkKKyAgICAsIG1fc3RhdGlzdGljc0NoYW5nZWRUaW1lcigqdGhpcywg
JldlYlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcigqdGhpcykKICNlbmRpZgpAQCAt
MzYxLDYgKzM2NSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UK
ICAgICAgICAgfQogICAgIH0KICNlbmRpZgorCisgICAgbV9zdGF0aXN0aWNzQ2hhbmdlZFRpbWVy
LnN0YXJ0UmVwZWF0aW5nKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDUpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQpAQCAtMTI3NSw2ICsxMjgx
LDE2IEBAIHZvaWQgV2ViUHJvY2Vzczo6bm9uVmlzaWJsZVByb2Nlc3NDbGVhbnUKICNlbmRpZgog
fQogCit2b2lkIFdlYlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCgpCit7Cisg
ICAgYXV0byYgb2JzZXJ2ZXIgPSBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIo
KTsKKyAgICBpZiAob2JzZXJ2ZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBX
VEZMb2dBbHdheXMoIlNlbmRpbmcgc3RhdGlzdGljcyIpOworICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQob2JzZXJ2ZXIudGFrZVN0YXRpc3RpY3MoKSksIDAp
OworfQorCiBSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHMoQVBJOjpPYmplY3QqIG9iamVjdCkKIHsKICAgICBzdHJ1Y3QgVHJhbnNmb3JtZXIg
ZmluYWwgOiBVc2VyRGF0YTo6VHJhbnNmb3JtZXIgewpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogCiAg
ICAgdm9pZCBub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKCk7CisgICAgdm9pZCBz
dGF0aXN0aWNzQ2hhbmdlZFRpbWVyRmlyZWQoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgZGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcygpOwpAQCAtMzU4LDYgKzM1OSw3IEBAIHBy
aXZhdGU6CiAKICAgICBIYXNoU2V0PHVpbnQ2NF90PiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdl
YkNvcmU6OlRpbWVyIG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXI7CisgICAgV2ViQ29y
ZTo6VGltZXIgbV9zdGF0aXN0aWNzQ2hhbmdlZFRpbWVyOwogCiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk2OSw2ICsyOTY5LDggQEAgdm9pZCBXZWJQ
YWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZQogICAgIHNldHRpbmdzLnNldFNlcnZpY2VD
b250cm9sc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjpzZXJ2aWNlQ29udHJvbHNFbmFibGVkS2V5KCkpKTsKICNlbmRpZgogCisgICAgc2V0dGluZ3Mu
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZEtleSgpKSk7
CisKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgPSBzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBhZ2VWaXNpYmlsaXR5QmFzZWRQcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkS2V5KCkpOwogICAgIGlmIChtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJs
ZWQgIT0gcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCkgewogICAgICAgICBtX3Byb2Nlc3NTdXBw
cmVzc2lvbkVuYWJsZWQgPSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkOwpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3MDYx
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTYtMDItMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dLMl0gR2F0aGVyIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjc4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yNDcwMjg5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubToKKyAgICAgICAg
KC1bU2V0dGluZ3NDb250cm9sbGVyIF9wb3B1bGF0ZU1lbnVdKTogTW92ZSBzZXR0aW5nIGZyb20g
V0sxLW9ubHkgdG8gYmUKKyAgICAgICAgdW5pdmVyc2FsbHkgYXBwbGljYWJsZS4KKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAg
KC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZGlkQ2hhbmdlU2V0dGluZ3NdKTogUmVjb2du
aXplIHdoZW4gdGhlCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljcyBmbGFnIGhhcyBj
aGFuZ2VkLgorCiAyMDE2LTAyLTI0ICBOaWtvcyBBbmRyb25pa29zICA8bmlrb3MuYW5kcm9uaWtv
cy13ZWJraXRAY2lzcmEuY2Fub24uY29tLmF1PgogCiAgICAgICAgIFt3ZWItYW5pbWF0aW9uc10g
QWRkIEFuaW1hdGlvblRpbWVsaW5lLCBEb2N1bWVudFRpbWVsaW5lIGFuZCBhZGQgZXh0ZW5zaW9u
cyB0byBEb2N1bWVudCBpbnRlcmZhY2UKSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0
aW5nc0NvbnRyb2xsZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9NaW5pQnJvd3Nlci9tYWMvU2V0
dGluZ3NDb250cm9sbGVyLm0JKHJldmlzaW9uIDE5NjgyMSkKKysrIFRvb2xzL01pbmlCcm93c2Vy
L21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3
IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAi
U3VwcHJlc3MgSW5jcmVtZW50YWwgUmVuZGVyaW5nIGluIE5ldyBXaW5kb3dzIiBhY3Rpb246QHNl
bGVjdG9yKHRvZ2dsZUluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3NlZDopIGluZGVudGVkOk5P
XTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBBY2NlbGVyYXRlZCBEcmF3
aW5nIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZUFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ6KSBp
bmRlbnRlZDpOT107CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgRGlzcGxh
eSBMaXN0IERyYXdpbmciIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlRGlzcGxheUxpc3REcmF3aW5n
RW5hYmxlZDopIGluZGVudGVkOk5PXTsKKyAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVu
YWJsZSBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBpbmRlbnRlZDpOT107CiAKICAgICBbc2VsZiBf
YWRkSGVhZGVyV2l0aFRpdGxlOkAiV2ViS2l0Mi1vbmx5IFNldHRpbmdzIl07CiAKQEAgLTE0MSw3
ICsxNDIsNiBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKIAogICAgIFtzZWxmIF9hZGRIZWFkZXJX
aXRoVGl0bGU6QCJXZWJLaXQxLW9ubHkgU2V0dGluZ3MiXTsKICAgICBbc2VsZiBfYWRkSXRlbVdp
dGhUaXRsZTpAIkVuYWJsZSBTdWJwaXhlbCBDU1NPTSBNZXRyaWNzIiBhY3Rpb246QHNlbGVjdG9y
KHRvZ2dsZUVuYWJsZVN1YlBpeGVsQ1NTT01NZXRyaWNzOikgaW5kZW50ZWQ6WUVTXTsKLSAgICBb
c2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3Mi
IGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBp
bmRlbnRlZDpOT107CiB9CiAKIC0gKEJPT0wpdmFsaWRhdGVNZW51SXRlbTooTlNNZW51SXRlbSAq
KW1lbnVJdGVtCkluZGV4OiBUb29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIubQkocmV2aXNpb24gMTk2ODIxKQorKysgVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTI5
LDkgKzI5LDEyIEBACiAKICNpbXBvcnQgIkFwcERlbGVnYXRlLmgiCiAjaW1wb3J0ICJTZXR0aW5n
c0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0NvbnRleHQuaD4KICNpbXBvcnQgPFdl
YktpdC9XS0ZyYW1lSW5mby5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CkBAIC0zNDQsNiArMzQ3LDcgQEAgLSAodm9pZClk
aWRDaGFuZ2VTZXR0aW5ncwogICAgIHByZWZlcmVuY2VzLl9hY2NlbGVyYXRlZERyYXdpbmdFbmFi
bGVkID0gc2V0dGluZ3MuYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDsKICAgICBwcmVmZXJlbmNl
cy5fcmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlID0gc2V0dGluZ3MucmVzb3VyY2VVc2FnZU92
ZXJsYXlWaXNpYmxlOwogICAgIHByZWZlcmVuY2VzLl9kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVk
ID0gc2V0dGluZ3MuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZDsKKyAgICBwcmVmZXJlbmNlcy5f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBzZXR0aW5ncy5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZDsKIAogICAgIEJPT0wgdXNlVHJhbnNwYXJlbnRXaW5kb3dzID0gc2V0dGlu
Z3MudXNlVHJhbnNwYXJlbnRXaW5kb3dzOwogICAgIGlmICh1c2VUcmFuc3BhcmVudFdpbmRvd3Mg
IT0gIV93ZWJWaWV3Ll9kcmF3c0JhY2tncm91bmQpIHsKQEAgLTM3Myw2ICszNzcsMTAgQEAgLSAo
dm9pZClkaWRDaGFuZ2VTZXR0aW5ncwogICAgICAgICB2aXNpYmxlT3ZlcmxheVJlZ2lvbnMgfD0g
X1dLV2hlZWxFdmVudEhhbmRsZXJSZWdpb247CiAgICAgCiAgICAgcHJlZmVyZW5jZXMuX3Zpc2li
bGVEZWJ1Z092ZXJsYXlSZWdpb25zID0gdmlzaWJsZU92ZXJsYXlSZWdpb25zOworCisgICAgW19j
b25maWd1cmF0aW9uLnByb2Nlc3NQb29sIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
OnByZWZlcmVuY2VzLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF07CisgICAgaWYgKHBy
ZWZlcmVuY2VzLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKKyAgICAgICAgW19jb25m
aWd1cmF0aW9uLnByb2Nlc3NQb29sIHJlYWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVGcm9t
RGlza0lmTmVlZGVkXTsKIH0KIAogLSAodm9pZCl1cGRhdGVUaXRsZTooTlNTdHJpbmcgKil0aXRs
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272173</attachid>
            <date>2016-02-24 22:13:42 -0800</date>
            <delta_ts>2016-02-24 22:44:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154278-20160224221324.patch</filename>
            <type>text/plain</type>
            <size>76447</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE2LTAyLTI0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKTogUmV2
aXNlIGZvcgorICAgICAgICBuZXcgY29uc3RydWN0b3IgYXJndW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaXNrKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVhZERhdGFGcm9tRGlza0lmTmVl
ZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFr
ZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjptZXJnZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpp
c0VtcHR5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
ZGVmYXVsdEZpbGVuYW1lKTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
ZW5jb2RlKTogUmV2aXNlIHRvIHVzZSBpbnRlcm5hbAorICAgICAgICAnaGlnaExldmVsRG9tYWlu
JyBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNv
ZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om1lcmdlSGFzaENvdW50ZWRTZXQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKTogQWRk
ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
OgorCiAyMDE2LTAyLTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmxvY2tlZCBwbHVnLWluIHBsYWNlaG9sZGVyIGlzIHNvbWV0aW1lcyBub3Qgc2hvd24uCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MDIsNyArMjcwMiw3IEBACiAJ
CTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I5MTAx
ODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLzsgfTsKIAkJN0E3
NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0JD
MTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi87
IH07CiAJCTdBOTI5Q0E2MUM1OThBOUUwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5
Q0ExMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLzsgfTsK
LQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5Q0EyMUM1
OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IH07CisJCTdBOTI5
Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTkyOUNBMjFDNTk4Mzc4MDA0
REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBOTM4Njg1MThEQ0MxNDUwMEI4MjYzRCAvKiBW
VFRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBOTM4NjgyMThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLzsgfTsKIAkJ
N0E5Mzg2ODYxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTM4NjgzMThEQ0MxNDUwMEI4MjYzRCAv
KiBWVFRTY2FubmVyLmggKi87IH07CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAvKiBUaWxl
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUEzQTY5NTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3BwICovOyB9
OwpAQCAtMjQ5MTcsNiArMjQ5MTcsNyBAQAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAv
KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIz
MzBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyOUE4MTIzQjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJDMEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjlBODEyNDMwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOUE4MTI0MjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjUxNDIsNyArMjUxNDMsNiBAQAogCQkJ
CTk5Q0MwQjRGMThCRTk4NDkwMDZDRUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RDNzM0MTUxOTc3ODk2RDAwNDZCRkM1IC8qIENBUmluZ0J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2Vj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERThCNUVEMUE2OTc3
NzMwMEI0QjY2QSAvKiBDRE1Qcml2YXRlQ2xlYXJLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
MzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRERENTcxNTE4QjU3QTgyMDBBOTRGQ0IgLyogQ0RNU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw4
ICsxOTAsMTAgQEAgYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQcmV2YWxlbnRSZQogICAg
IAogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKQog
ewotICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFp
bikpCi0gICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChwcmltYXJ5RG9tYWluLCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpOworICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyBuZXdTdGF0aXN0aWNzKHByaW1hcnlEb21haW4pOworICAgICAgICBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5zZXQocHJpbWFyeURvbWFpbiwgbmV3U3RhdGlzdGljcyk7CisgICAgfQogICAg
IAogICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHByaW1hcnlEb21haW4p
LT52YWx1ZTsKIH0KQEAgLTI0OSw3ICsyNTEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
Ojp3cml0ZURhdGFUb0RpCiAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKCJvcmlnaW5zVmlzaXRl
ZCIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7CiAgICAgCiAgICAgZW5jb2Rlci0+
ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCksIFt0aGlzXShLZXllZEVu
Y29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgU3RhdGlzdGljc1ZhbHVlJiBvcmlnaW4pIHsKLSAg
ICAgICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIsIG9yaWdpbi5rZXkpOworICAg
ICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lcik7CiAgICAgfSk7CiAgICAgCiAg
ICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVsbF9icm93c2luZ19zZXNz
aW9uIik7CkBAIC0yNjMsOCArMjY1LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3Jp
dGVEYXRhVG9EaQogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwog
ICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zpc2l0ZWQiLCAxKTsKICAgICAKLSAg
ICBlbmNvZGVyLT5lbmNvZGVPYmplY3Qob3JpZ2luLCByZXNvdXJjZVN0YXRpc3RpY3MsIFt0aGlz
LCAmb3JpZ2luXShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHJlc291cmNlU3RhdGlzdGljcykgewotICAgICAgICByZXNvdXJjZVN0YXRpc3RpY3Mu
ZW5jb2RlKGVuY29kZXIsIG9yaWdpbik7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0KG9yaWdp
biwgcmVzb3VyY2VTdGF0aXN0aWNzLCBbdGhpc10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpY3MpIHsKKyAgICAgICAg
cmVzb3VyY2VTdGF0aXN0aWNzLmVuY29kZShlbmNvZGVyKTsKICAgICB9KTsKICAgICAKICAgICBT
dHJpbmcgbGFiZWwgPSBvcmlnaW47CkBAIC0zMDcsOCArMzA5LDggQEAgdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6cmVhZERhdGFGcm9tRAogICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNv
ZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgb3JpZ2luKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3Rp
Y3M7Ci0gICAgICAgIGlmICghc3RhdGlzdGljcy5kZWNvZGUoZGVjb2RlcklubmVyLCBvcmlnaW4p
KQorICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3RpY3Mob3JpZ2luKTsKKyAg
ICAgICAgaWYgKCFzdGF0aXN0aWNzLmRlY29kZShkZWNvZGVySW5uZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChvcmln
aW4sIHN0YXRpc3RpY3MpOwpAQCAtMzY5LDUgKzM3MSwyOSBAQCBTdHJpbmcgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnN0YXRpc3RpY3NGCiAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmZpbmQob3JpZ2luKS0+dmFsdWU7CiAgICAgcmV0dXJuICJTdGF0aXN0aWNz
IGZvciAiICsgb3JpZ2luICsgIjpcbiIgKyBzdGF0aXN0aWNzLnRvU3RyaW5nKCk7CiB9Ci0gICAg
CisKK1ZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
dGFrZVN0YXRpc3RpY3MoKQoreworICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBz
dGF0aXN0aWNzOworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAudmFsdWVzKCkpCisgICAgICAgIHN0YXRpc3RpY3MuYXBwZW5kKHN0YXRpc3RpYyk7CisK
KyAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOworCisgICAgcmV0dXJuIHN0YXRp
c3RpY3M7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Om1lcmdlU3RhdGlzdGljcyhj
b25zdCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIHN0YXRpc3RpY3MpCit7CisgICAg
Zm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7CisgICAgICAgIGF1dG8gaXRlciA9
IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoc3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7
CisgICAgICAgIGlmIChpdGVyID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpKSB7Cisg
ICAgICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQoc3RhdGlzdGljLmhpZ2hMZXZl
bERvbWFpbiwgc3RhdGlzdGljKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgaXRlci0+dmFsdWUubWVyZ2Uoc3RhdGlzdGljKTsKKyAgICB9Cit9CisKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCShyZXZp
c2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQCBjbGFzcyBSZXNvdXJjZUxvYWRP
YnNlcnZlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlTG9h
ZE9ic2VydmVyJiBzaGFyZWRPYnNlcnZlcigpOwogICAgIAotICAgIHZvaWQgbG9nRnJhbWVOYXZp
Z2F0aW9uKGJvb2wgaXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYg
dGFyZ2V0VVJMLCBib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7Ci0g
ICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoYm9vbCBpc1JlZGlyZWN0LCBjb25zdCBVUkwm
IHNvdXJjZVVSTCwgY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJM
KTsKLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBEb2N1bWVudCYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGJvb2wgaXNSZWRpcmVjdCwgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBib29sIGlzTWFpbkZyYW1l
LCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2dT
dWJyZXNvdXJjZUxvYWRpbmcoYm9vbCBpc1JlZGlyZWN0LCBjb25zdCBVUkwmIHNvdXJjZVVSTCwg
Y29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJMKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBEb2N1bWVudCYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZURhdGFUb0Rpc2soKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOwpAQCAtNTMsNiArNTMsMTQgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JPcmlnaW4o
Y29uc3QgU3RyaW5nJik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGlj
cygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtZXJnZVN0YXRpc3RpY3MoY29uc3QgVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+Jik7CisgICAgCisgICAgc3RhdGljIFN0cmluZyBk
ZWZhdWx0RmlsZW5hbWUoKSB7IHJldHVybiBBU0NJSUxpdGVyYWwoImZ1bGxfYnJvd3Npbmdfc2Vz
c2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOyB9CisKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJp
bmcmKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSAr
NzYsOSBAQCBzdGF0aWMgdm9pZCBlbmNvZGVIYXNoQ291bnRlZFNldChLZXllZEVuCiAgICAgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlKEtleWVkRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIGNvbnN0Cit2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5j
b2Rlci5lbmNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgb3JpZ2luKTsKKyAg
ICBlbmNvZGVyLmVuY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBoaWdoTGV2
ZWxEb21haW4pOwogICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBlbmNvZGVyLmVu
Y29kZUJvb2woImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbik7CkBAIC0x
MzAsMTQgKzEzMCwxMSBAQCBzdGF0aWMgdm9pZCBkZWNvZGVIYXNoQ291bnRlZFNldChLZXllZERl
CiAgICAgfSk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVk
RGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgU3RyaW5n
IHN0b3JlZE9yaWdpbjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRS
ZXNvdXJjZU9yaWdpbiIsIHN0b3JlZE9yaWdpbikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0
cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBoaWdoTGV2ZWxEb21haW4pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgQVNTRVJUX1VOVVNFRChvcmlnaW4sIHN0b3JlZE9y
aWdpbiA9PSBvcmlnaW4pOwotICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA3LDQgKzMwNCw0NyBAQCBTdHJpbmcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgdm9pZCBtZXJnZUhh
c2hDb3VudGVkU2V0KEhhc2hDb3VudGVkU2V0PFQ+JiB0bywgY29uc3QgSGFzaENvdW50ZWRTZXQ8
VD4mIGZyb20pCit7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGZyb20pCisgICAgICAgIHRvLmFk
ZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjptZXJnZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBvdGhlcikKK3sKKyAgICBB
U1NFUlQob3RoZXIuaGlnaExldmVsRG9tYWluID09IGhpZ2hMZXZlbERvbWFpbik7CisKKyAgICBo
YWRVc2VySW50ZXJhY3Rpb24gfD0gb3RoZXIuaGFkVXNlckludGVyYWN0aW9uOworICAgIAorICAg
IC8vIFRvcCBmcmFtZSBzdGF0cworICAgIHRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBv
dGhlci50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgdG9wRnJhbWVIYXNCZWVuUmVk
aXJlY3RlZEZyb20gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAg
dG9wRnJhbWVJbml0aWFsTG9hZENvdW50ICs9IG90aGVyLnRvcEZyYW1lSW5pdGlhbExvYWRDb3Vu
dDsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbyArPSBvdGhlci50b3BGcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRUbzsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tICs9IG90aGVy
LnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgdG9wRnJhbWVIYXNCZWVuTmF2aWdh
dGVkVG9CZWZvcmUgfD0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmU7Cisg
ICAgCisgICAgLy8gU3ViZnJhbWUgc3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMsIG90aGVyLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bnMpOworICAgIHN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBvdGhlci5zdWJmcmFtZUhh
c0JlZW5SZWRpcmVjdGVkVG87CisgICAgc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb20gKz0g
b3RoZXIuc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAgbWVyZ2VIYXNoQ291bnRl
ZFNldChzdWJmcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLCBvdGhlci5zdWJmcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvKTsKKyAgICBzdWJmcmFtZVN1YlJlc291cmNlQ291bnQgKz0gb3RoZXIuc3ViZnJhbWVT
dWJSZXNvdXJjZUNvdW50OworICAgIHN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvICs9IG90aGVy
LnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvOworICAgIHN1YmZyYW1lSGFzQmVlbk5hdmlnYXRl
ZEZyb20gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsKKyAgICBzdWJmcmFt
ZUhhc0JlZW5Mb2FkZWRCZWZvcmUgfD0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTG9hZGVkQmVmb3Jl
OworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNl
dChzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLCBvdGhlci5zdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW5zKTsKKyAgICBzdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50
ICs9IG90aGVyLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQ7CisgICAgc3VicmVz
b3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb20gKz0gb3RoZXIuc3VicmVzb3VyY2VIYXNCZWVuUmVk
aXJlY3RlZEZyb207CisgICAgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZFRvICs9IG90aGVy
LnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0
KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIG90aGVyLnN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8pOworICAgIAorICAgIC8vIFByZXZhbGVudCByZXNvdXJjZSBzdGF0cworICAgIG1l
cmdlSGFzaENvdW50ZWRTZXQocmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdp
bnMsIG90aGVyLnJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zKTsKKyAg
ICBpc1ByZXZhbGVudFJlc291cmNlIHw9IG90aGVyLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDI3IEBAIGNsYXNz
IEtleWVkRGVjb2RlcjsKIGNsYXNzIEtleWVkRW5jb2RlcjsKIAogc3RydWN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgeworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MoY29uc3QgU3RyaW5nJiBw
cmltYXJ5RG9tYWluKQorICAgICAgICA6IGhpZ2hMZXZlbERvbWFpbihwcmltYXJ5RG9tYWluKQor
ICAgIHsgfQorCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCisgICAgeyB9CisKICAgICBi
b29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9y
aWdpbnNWaXNpdGVkU29GYXIpOwogCiAgICAgYm9vbCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigp
IGNvbnN0OwogICAgIGJvb2wgaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBj
b25zdDsKIAotICAgIHZvaWQgZW5jb2RlKEtleWVkRW5jb2RlciYsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKSBjb25zdDsKLSAgICBib29sIGRlY29kZShLZXllZERlY29kZXImLCBjb25zdCBTdHJpbmcm
IG9yaWdpbik7CisgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7CisgICAgYm9v
bCBkZWNvZGUoS2V5ZWREZWNvZGVyJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
IAorICAgIHZvaWQgbWVyZ2UoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworCisgICAg
U3RyaW5nIGhpZ2hMZXZlbERvbWFpbjsKKwogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw3NSBAQAorMjAxNi0wMi0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBHYXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0
aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQy
NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzAyODkyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBuZXcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIGZpbGVzIHRvIGJ1aWxkLgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0
Lmg6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAgICAqIFNoYXJl
ZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6ZGVj
b2RlKTogU3VwcG9ydCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAgICAo
SVBDOjplbmNvZGVIYXNoQ291bnRlZFNldCk6IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVu
dENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjplbmNvZGUpOiBBZGRlZC4KKyAgICAgICAg
KElQQzo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOiBBZGRlZC4KKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZGVjb2RlKTogQWRkZWQuCisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
cmVmZXJlbmNlc0RlZmluaXRpb25zLmg6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQgcHJlZmVyZW5jZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0Nv
bnRleHRHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdL
Q29udGV4dFNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yYWdlUGF0aCk6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZF0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBf
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6XSk6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bv
b2wgX3NldEF1dG9tYXRpb25TZXNzaW9uOl0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIHJlYWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVGcm9tRGlza0lmTmVlZGVkXSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQ
YXRoKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpzZXRTdGF0aXN0
aWNzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6d3JpdGVU
b0Rpc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZS5tZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKTog
SW5pdGlhbGl6ZSB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGRhdGEgb2Jq
ZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKTog
U2h1dCBkb3duIHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgZGF0YSBvYmpl
Y3QuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRTdGF0aXN0aWNzU3RvcmFn
ZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3Rp
Y3NTdG9yYWdlUGF0aCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0
b3JhZ2VQYXRoKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9v
bEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1
bHRTdGF0aXN0aWNzU3RvcmFnZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
IGZpbGVzIHRvIGJ1aWxkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3M6OldlYlByb2Nlc3MpOiBJbml0aWFsaXplZCBzdGF0aXN0aWNzIGNoYW5nZWQgbm90aWZpY2F0
aW9uIHRpbWVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdGF0aXN0aWNzQ2hhbmdl
ZFRpbWVyRmlyZWQpOiBBZGRlZC4gU2VuZCBidW5kbGVzIG9mIHNpdGUgbG9hZAorICAgICAgICBz
dGF0aXN0aWNzIHRvIHRoZSBVSVByb2Nlc3Mgb24gYSBzZXQgaW50ZXJ2YWwuIENsZWFyIG91dCBs
b2NhbCBjYWNoZSBhZnRlciBlYWNoIHNlbmQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmg6CisKIDIwMTYtMDItMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCAiZGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2giIHRvIHRoZSBXS0NvbnRleHRD
bGllbnQ7IEFkb3B0IGl0IGluIFdLVFIuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTY2Myw2ICs2NjMsNyBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAg
IFNoYXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCiAKICAg
ICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5t
ZXNzYWdlcy5pbgpJbmRleDogU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAx
OTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw2ICs5OCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAg
ICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCisJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlIFwKICAgICBTZWNJdGVtU2hpbSBcCiAgICAgU2VjSXRlbVNoaW1Qcm94eSBcCiAgICAgU21h
cnRNYWduaWZpY2F0aW9uQ29udHJvbGxlciBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTk2ODIxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVy
cm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+
CkBAIC0yMDQ0LDQgKzIwNDUsMTU2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRh
aWxzPjo6ZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIHZvaWQgZW5jb2RlSGFzaENv
dW50ZWRTZXQoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIYXNoQ291bnRlZFNldDxT
dHJpbmc+JiBoYXNoQ291bnRlZFNldCkKK3sKKyAgICBlbmNvZGVyIDw8IGhhc2hDb3VudGVkU2V0
LnNpemUoKTsKKworICAgIGZvciAoYXV0byBlbnRyeSA6IGhhc2hDb3VudGVkU2V0KSB7CisgICAg
ICAgIGVuY29kZXIgPDwgZW50cnkua2V5OworICAgICAgICBlbmNvZGVyIDw8IGVudHJ5LnZhbHVl
OworICAgIH0KK30KKwordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGlzdGlj
cy5oaWdoTGV2ZWxEb21haW47CisgICAgCisgICAgLy8gVXNlciBpbnRlcmFjdGlvbgorICAgIGVu
Y29kZXIgPDwgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb247CisgICAgCisgICAgLy8gVG9w
IGZyYW1lIHN0YXRzCisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5h
dmlnYXRlZFRvQmVmb3JlOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0Jl
ZW5SZWRpcmVjdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVl
blJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUluaXRp
YWxMb2FkQ291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5h
dmlnYXRlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZp
Z2F0ZWRGcm9tOworICAgIAorICAgIC8vIFN1YmZyYW1lIHN0YXRzCisgICAgZW5jb2RlciA8PCBz
dGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvOworICAgIGVuY29kZXIgPDwgc3Rh
dGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3Muc3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50OworICAgIGVuY29kZUhhc2hDb3VudGVk
U2V0KGVuY29kZXIsIHN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyk7Cisg
ICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2Rlciwgc3RhdGlzdGljcy5zdWJmcmFtZVVuaXF1
ZVJlZGlyZWN0c1RvKTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVu
TmF2aWdhdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5h
dmlnYXRlZEZyb207CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAgICBlbmNvZGVy
IDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAgZW5j
b2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudDsK
KyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VD
b3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZDsKKyAgICBlbmNvZGVIYXNo
Q291bnRlZFNldChlbmNvZGVyLCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbnMpOworICAgIGVuY29kZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsIHN0YXRpc3RpY3Muc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgCisgICAgLy8gUHJldmFsZW50IFJlc291
cmNlCisgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2Rlciwgc3RhdGlzdGljcy5yZWRpcmVj
dGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucyk7CisgICAgZW5jb2RlciA8PCBzdGF0
aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisKK3N0YXRpYyBib29sIGRlY29kZUhhc2hD
b3VudGVkU2V0KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSGFzaENvdW50ZWRTZXQ8U3RyaW5n
PiYgaGFzaENvdW50ZWRTZXQpCit7CisgICAgdW5zaWduZWQgZW50cmllczsKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGVudHJpZXMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGVudHJpZXM7ICsraSkgeworICAgICAgICBTdHJpbmcgb3JpZ2lu
OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9yaWdpbikpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICB1bnNpZ25lZCBjb3VudDsKKyAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShjb3VudCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgaGFzaENvdW50ZWRTZXQuYWRkKG9yaWdpbiwgY291bnQpOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0
aXN0aWNzLmhpZ2hMZXZlbERvbWFpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNz
LmhhZFVzZXJJbnRlcmFjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAv
LyBUb3AgZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9w
RnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJl
ZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb20pKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0
aWNzLnRvcEZyYW1lSW5pdGlhbExvYWRDb3VudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2
aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb20pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3ViZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTG9hZGVkQmVmb3JlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlz
dGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVl
blJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZVN1YlJlc291cmNlQ291bnQpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChk
ZWNvZGVyLCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIs
IHN0YXRpc3RpY3Muc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNUbykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVI
YXNCZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb20p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuUmVk
aXJlY3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbykpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRp
c3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVz
b3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5z
VmlzaXRlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZUhh
c2hDb3VudGVkU2V0KGRlY29kZXIsIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2lucykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2RlSGFzaENv
dW50ZWRTZXQoZGVjb2Rlciwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1Rv
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIFByZXZhbGVudCBSZXNvdXJj
ZQorICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rlciwgc3RhdGlzdGljcy5yZWRp
cmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxl
bnRSZXNvdXJjZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04MCw2ICs4MCw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBSZWNlbnRT
ZWFyY2g7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIHN0cnVjdCBTY3JvbGxhYmxl
QXJlYVBhcmFtZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0IFRleHRJ
bmRpY2F0b3JEYXRhOwpAQCAtNDU1LDYgKzQ1NiwxMiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYsIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4geworICAgIHN0
YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKK307CisKKwogfSAvLyBuYW1l
c3BhY2UgSVBDCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpJbmRleDogU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCShyZXZpc2lv
biAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0
aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiArMjU1LDcgQEAKICAgICBtYWNybyhJZ25v
cmVWaWV3cG9ydFNjYWxpbmdDb25zdHJhaW50cywgaWdub3JlVmlld3BvcnRTY2FsaW5nQ29uc3Ry
YWludHMsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBtYWNybyhGb3JjZUFsd2F5c1VzZXJTY2Fs
YWJsZSwgZm9yY2VBbHdheXNVc2VyU2NhbGFibGUsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAg
bWFjcm8oUmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlLCByZXNvdXJjZVVzYWdlT3ZlcmxheVZp
c2libGUsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAgbWFjcm8oUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkLCBCb29sLCBib29sLCBm
YWxzZSkgXAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfREVCVUdfVUlOVDMyX1BS
RUZFUkVOQ0UobWFjcm8pIFwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3Qu
aAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAgICAg
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLAogICAgICAgICBQbHVnaW5TaXRlRGF0YU1hbmFnZXIs
CiAgICAgICAgIFByZWZlcmVuY2VzLAorICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGUsCiAgICAgICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyLAog
ICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2
YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tCYXNlLmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZVJ1bkJlZm8KIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyKiBXS1BhZ2VSdW5KYXZh
U2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIqIFdLUGFnZVJ1bkphdmFT
Y3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFx
dWVXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0TGlzdGVuZXIqIFdLUGFnZVJ1bkphdmFT
Y3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lclJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVGV4dENoZWNrZXIqIFdLVGV4
dENoZWNrZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1Nlc3Npb24qIFdLU2Vz
c2lvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLU2Vzc2lvblN0YXRlKiBXS1Nl
c3Npb25TdGF0ZVJlZjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCIKKworI2luY2x1
ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+
CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFz
c1JlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU+IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdGF0ZTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgqcHJvY2Vzc1Bvb2wp
KTsKK30KKworUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDogbV9wcm9jZXNzUG9v
bChwcm9jZXNzUG9vbCkKK3sKKyAgICBtX3Byb2Nlc3NQb29sLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksICp0aGlzKTsKK30KKworUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjp+UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlKCkKK3sKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGU6OnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJj
ZUxvYWRPYnNlcnZlcj4oKTsKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyLT5zZXRTdGF0aXN0
aWNzU3RvcmFnZURpcmVjdG9yeShwYXRoKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgb3JpZ2lucykKK3sKKyAgICBtX3Jlc291cmNl
TG9hZE9ic2VydmVyLT5tZXJnZVN0YXRpc3RpY3Mob3JpZ2lucyk7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKQoreworICAg
IGlmIChtX3Jlc291cmNlTG9hZE9ic2VydmVyKQorICAgICAgICBtX3Jlc291cmNlTG9hZE9ic2Vy
dmVyLT5yZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGU6OndyaXRlVG9EaXNrKCkKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRP
YnNlcnZlcikKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRPYnNlcnZlci0+d3JpdGVEYXRhVG9EaXNr
KCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlX2gKKyNkZWZpbmUgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NQb29sOworCitjbGFzcyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU+LCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGU+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOworICAgIHZpcnR1YWwgflJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgpOworICAgIAorICAgIHZvaWQgc2V0U3RhdGlzdGlj
c1N0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgdm9pZCByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4mIG9yaWdpbnMpOworCisgICAgdm9pZCB3cml0ZVRvRGlzaygpOworICAgIHZv
aWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7CisgICAgCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShXZWJQcm9jZXNzUG9vbCYpOworICAgIAor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsK
KyAgICAKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKKyAgICAKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI+IG1fcmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMg
LT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIHsKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gb3JpZ2lu
cykKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNp
bmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NQcm94eS5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oIgogI2lu
Y2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgog
I2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xNzUsNiArMTc2LDggQEAgV2ViUHJvY2Vzc1Bv
b2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogCiAgICAgLy8gTk9URTogVGhlc2Ugc3ViLW9i
amVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3NhZ2VSZWNlaXZlck1hcC4uCiAg
ICAgbV9pY29uRGF0YWJhc2UgPSBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZSh0aGlzKTsKKyAgICBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OmNy
ZWF0ZSh0aGlzKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN0YXRpc3RpY3NT
dG9yYWdlRGlyZWN0b3J5KHN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpKTsKIAogICAgIGFkZFN1cHBs
ZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwogICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2Vv
bG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CkBAIC0yMjksNiArMjMyLDkgQEAgV2ViUHJvY2Vzc1Bv
b2w6On5XZWJQcm9jZXNzUG9vbCgpCiAgICAgICAgIGl0LT52YWx1ZS0+Y2xlYXJQcm9jZXNzUG9v
bCgpOwogICAgIH0KIAorICAgIC8vIEZJWE1FKDE1NDY0Mik6IFRoaXMgc2hvdWxkIG5vdCBiZSBk
b25lIGluIG9uZSBsb25nIG9wZXJhdGlvbiB3aGVuIGV4aXRpbmcuCisgICAgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT53cml0ZVRvRGlzaygpOworICAgIAogICAgIG1faWNvbkRhdGFiYXNlLT5p
bnZhbGlkYXRlKCk7CiAgICAgbV9pY29uRGF0YWJhc2UtPmNsZWFyUHJvY2Vzc1Bvb2woKTsKICAg
ICBXZWJJY29uRGF0YWJhc2UqIHJhd0ljb25EYXRhYmFzZSA9IG1faWNvbkRhdGFiYXNlLnJlbGVh
c2UoKS5sZWFrUmVmKCk7CkBAIC0xMDUzLDYgKzEwNTksMjMgQEAgU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjppY29uRGF0YWJhc2VQYXRoKAogICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRJY29uRGF0
YWJhc2VQYXRoKCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFN0YXRpc3RpY3NTdG9y
YWdlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbV9vdmVycmlkZVN0YXRpc3RpY3NT
dG9yYWdlUGF0aCA9IHBhdGg7CisgICAgaWYgKCFtX292ZXJyaWRlU3RhdGlzdGljc1N0b3JhZ2VQ
YXRoLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBUaGlzIGltcGxpY2l0bHkgZW5hYmxlcyB0aGUg
ZGF0YWJhc2Ugb24gVUkgcHJvY2VzcyBzaWRlLgorICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MtPnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KHBhdGgpOworICAgIH0KK30KKwor
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdAorewor
ICAgIGlmICghbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0aC5pc051bGwoKSkKKyAgICAg
ICAgcmV0dXJuIG1fb3ZlcnJpZGVTdGF0aXN0aWNzU3RvcmFnZVBhdGg7CisgICAgCisgICAgcmV0
dXJuIHBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpOworfQorCiAjaWYgRU5B
QkxFKFNFQ0NPTVBfRklMVEVSUykKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3RvcmFn
ZURpcmVjdG9yeSgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNzksNiArNzksNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBEb3dubG9hZFByb3h5OworY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlOwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb247CiBjbGFzcyBXZWJDb250ZXh0U3Vw
cGxlbWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKQEAgLTIyOCw2ICsyMjksNyBAQCBwdWJs
aWM6CiAgICAgV2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0K
IAogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9p
Y29uRGF0YWJhc2UuZ2V0KCk7IH0KKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUqIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3MgewogICAgICAgICB1
bnNpZ25lZCB3a1ZpZXdDb3VudDsKQEAgLTI0MCw2ICsyNDIsOSBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNldENvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkgPSBkaXI7IH0KIAorICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKGNvbnN0
IFN0cmluZyYpOworICAgIFN0cmluZyBzdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdDsKKwog
ICAgIHZvaWQgdXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCk7CiAgICAgYm9vbCBpc1VzaW5nVGVz
dGluZ05ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVc2VUZXN0aW5nTmV0
d29ya1Nlc3Npb247IH0KIApAQCAtMzgyLDYgKzM4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBs
YW5ndWFnZUNoYW5nZWQoKTsKIAogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJh
c2VQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9y
YWdlUGF0aCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCBFTkFCTEUoU0VDQ09NUF9G
SUxURVJTKQogICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CkBAIC00
NjUsNiArNDcxLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9tZW1vcnlTYW1wbGVySW50ZXJ2
YWw7CiAKICAgICBSZWZQdHI8V2ViSWNvbkRhdGFiYXNlPiBtX2ljb25EYXRhYmFzZTsKKyAgICBS
ZWZQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlPiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CiAKICAgICBjb25zdCBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVE
YXRhU3RvcmU7CiAKQEAgLTQ4NSw2ICs0OTIsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIG1f
b3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwogICAgIFN0cmluZyBtX292ZXJyaWRlQ29va2llU3Rv
cmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0
aDsKIAogICAgIGJvb2wgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9uIDE5
NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lzaW9u
TGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7Citj
bGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU7CiBjbGFzcyBVc2VyTWVkaWFQZXJtaXNz
aW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiBj
bGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQSV9N
QVBQSU5HKFdLUGFnZVJlZiwgV2ViUGFnZVBybwogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJlZmVy
ZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVjdGlv
blNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZW5k
ZXJMYXllclJlZiwgV2ViUmVuZGVyTGF5ZXIpCitXS19BRERfQVBJX01BUFBJTkcoV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSkKIFdL
X0FERF9BUElfTUFQUElORyhXS1JlbmRlck9iamVjdFJlZiwgV2ViUmVuZGVyT2JqZWN0KQogV0tf
QUREX0FQSV9NQVBQSU5HKFdLU2Vzc2lvblN0YXRlUmVmLCBBUEk6OlNlc3Npb25TdGF0ZSkKIFdL
X0FERF9BUElfTUFQUElORyhXS1RleHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lv
biAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVk
ZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0YXRlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBAIC01
NzcsMyArNTc4LDE0IEBAIHZvaWQgV0tDb250ZXh0U2V0Rm9udFdoaXRlbGlzdChXS0NvbnRleHQK
IHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldEZvbnRXaGl0ZWxpc3QodG9JbXBsKGFycmF5
UmVmKSk7CiB9CisKK1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlUmVmIFdLQ29udGV4dEdl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZikKK3sK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JhZ2VQYXRoKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGF0aCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldFN0YXRp
c3RpY3NTdG9yYWdlUGF0aCh0b0ltcGwocmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGgpLT5zdHJp
bmcoKSk7Cit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw3IEBAIFdLX0VYUE9S
VCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiAKIFdLX0VYUE9SVCBXS05vdGlmaWNhdGlv
bk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihXS0NvbnRleHRSZWYg
Y29udGV4dCk7CiBXS19FWFBPUlQgV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWYgV0tDb250ZXh0
R2V0UGx1Z2luU2l0ZURhdGFNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9S
VCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFJlc291cmNlQ2FjaGVNYW5h
Z2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKK1dLX0VYUE9SVCBXS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZVJlZiBXS0NvbnRleHRHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYpOwogCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRHZXRTdGF0
aXN0aWNzRnVuY3Rpb24pKFdLRGljdGlvbmFyeVJlZiBzdGF0aXN0aWNzLCBXS0Vycm9yUmVmIGVy
cm9yLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0
U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBX
S0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCShyZXZpc2lv
biAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw4IEBAIFdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFNldE1lbW9yeUNhY2hlRGkKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Rm9u
dFdoaXRlbGlzdChXS0NvbnRleHRSZWYsIFdLQXJyYXlSZWYpOwogCitXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZVBhdGgoV0tDb250ZXh0UmVm
IGNvbnRleHQsIFdLU3RyaW5nUmVmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoKTsKKwogI2lm
ZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEy
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMTQ1NiwzICsxNDU2LDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dl
dE1vY2tDYXB0dXJlRGV2aWNlc0UKIHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+bW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK2Jvb2wgV0tQcmVm
ZXJlbmNlc0dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAko
cmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw2ICszOTksMTAgQEAg
V0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFJlc291cmNlVQogV0tfRVhQT1JUIHZvaWQg
V0tQcmVmZXJlbmNlc1NldE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1Jl
ZiwgYm9vbCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TW9ja0NhcHR1cmVEZXZp
Y2VzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdHMgdG8gZmFsc2UuCitX
S19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2Vz
R2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZik7CisgICAg
CiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgiCisKKyNpbmNsdWRlICJBUElEYXRhLmgi
CisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgiCisjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpBUElUeXBlKTsKK30KKwordm9pZCBXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZVJlYWREYXRhRnJvbURpc2tJZk5lZWRlZChXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZVJlZiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYpCit7Cisg
ICAgdG9JbXBsKHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZVJlZiktPnJlYWREYXRhRnJvbURp
c2tJZk5lZWRlZCgpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCisjZGVmaW5lIFdL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBP
UlQgV0tUeXBlSUQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVHZXRUeXBlSUQoKTsKKwor
V0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWFkRGF0YUZyb21E
aXNrSWZOZWVkZWQoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1JlZik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRp
ZiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oICovCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCShyZXZp
c2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJl
ZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyNyw2ICsyMjcsMTYgQEAgLSAodm9pZClfc2V0
UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlOgogICAgIF9wcmVmZXJlbmNlcy0+c2V0UmVzb3Vy
Y2VVc2FnZU92ZXJsYXlWaXNpYmxlKHJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSk7CiB9CiAK
Ky0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCit7CisgICAgcmV0dXJuIF9w
cmVmZXJlbmNlcy0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKK30KKworLSAodm9p
ZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKK30KKwogLSAoX1dL
RGVidWdPdmVybGF5UmVnaW9ucylfdmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMKIHsKICAgICBy
ZXR1cm4gX3ByZWZlcmVuY2VzLT52aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucygpOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02MCw2ICs2MCw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tKYXZhU2MK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNpbXBsZUxpbmVMYXlvdXREZWJ1Z0Jv
cmRlcnNFbmFibGVkOikgQk9PTCBfc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJsZWQg
V0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDopIEJPT0wgX2FjY2VsZXJhdGVkRHJhd2luZ0Vu
YWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHNldHRlcj1fc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZDopIEJPT0wgX2Rp
c3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19U
QkEpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKIAogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDopIEJP
T0wgX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIK
ICNpbXBvcnQgIkRvd25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldLT2Jq
ZWN0LmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgpAQCAtMjUxLDYgKzI1MiwxNyBAQCAtICh2
b2lkKV9zZXRBdXRvbWF0aW9uU2Vzc2lvbjooX1dLQXV0b21hCiAgICAgX3Byb2Nlc3NQb29sLT5z
ZXRBdXRvbWF0aW9uU2Vzc2lvbihhdXRvbWF0aW9uU2Vzc2lvbiA/IGF1dG9tYXRpb25TZXNzaW9u
LT5fc2Vzc2lvbi5nZXQoKSA6IG51bGxwdHIpOwogfQogCistICh2b2lkKXNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKXZhbHVlCit7CisgICAgV2ViQ29yZTo6U2V0dGluZ3M6
OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHZhbHVlKTsKK30KKworLSAodm9pZCly
ZWFkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlRnJvbURpc2tJZk5lZWRlZAoreworICAgIGlm
IChhdXRvKiBzdGF0aXN0aWNzID0gX3Byb2Nlc3NQb29sLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGUoKSkKKyAgICAgICAgc3RhdGlzdGljcy0+cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7
Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5
LDkgQEAKIC0gKHZvaWQpX2F1dG9tYXRpb25DYXBhYmlsaXRpZXNEaWRDaGFuZ2UgV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogLSAodm9pZClfc2V0QXV0b21hdGlvblNlc3Np
b246KF9XS0F1dG9tYXRpb25TZXNzaW9uICopYXV0b21hdGlvblNlc3Npb24gV0tfQVZBSUxBQkxF
KFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCistICh2b2lkKXNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOihCT09MKXZhbHVlOworLSAodm9pZClyZWFkUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlRnJvbURpc2tJZk5lZWRlZDsKKwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOCBAQCBz
dGF0aWMgTlNTdHJpbmcgKldlYktpdEFwcGxpY2F0aW9uRGlkQ2hhCiAvLyBGSVhNRTogPHJkYXI6
Ly9wcm9ibGVtLzkxMzg4MTc+IC0gQWZ0ZXIgdGhpcyAiYmFja3dhcmRzIGNvbXBhdGliaWxpdHki
IHJhZGFyIGlzIHJlbW92ZWQsIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZCB0byBvbmx5IHJl
dHVybiBhbiBlbXB0eSBTdHJpbmcuCiBOU1N0cmluZyAqV2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5
RGVmYXVsdHNLZXkgPSBAIldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5IjsKIAor
TlNTdHJpbmcgKldlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlEZWZhdWx0c0tl
eSA9IEAiV2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeURlZmF1bHRzS2V5IjsK
Kwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5ID0g
QCJXZWJLaXQySFRUUFByb3h5IjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJIVFRQ
U1Byb3h5RGVmYXVsdHNLZXkgPSBAIldlYktpdDJIVFRQU1Byb3h5IjsKIApAQCAtNDI4LDYgKzQz
MCwyNiBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljCiAgICAgcmV0
dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2RhdGFiYXNlc0RpcmVjdG9yeSBz
dHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CiB9CiAKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKCkgY29uc3QKK3sKKyAgICBOU1N0
cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07
CisgICAgaWYgKCFhcHBOYW1lKQorICAgICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHBy
b2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07CisgICAgCisgICAgQVNTRVJUKGFwcE5hbWUpOworCisg
ICAgTlNTdHJpbmcgKnN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJk
VXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeURlZmF1bHRzS2V5XTsKKyAgICBpZiAoIXN0b3JhZ2VEaXJlY3RvcnkgfHwgIVtzdG9y
YWdlRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAg
TlNFcnJvciAqZXJyb3I7CisgICAgICAgIHN0b3JhZ2VEaXJlY3RvcnkgPSBbW1tOU0ZpbGVNYW5h
Z2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNBcHBsaWNhdGlvblN1cHBvcnRE
aXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpuaWwg
Y3JlYXRlOllFUyBlcnJvcjomZXJyb3JdIHBhdGhdOworICAgICAgICAKKyAgICAgICAgaWYgKCFz
dG9yYWdlRGlyZWN0b3J5IHx8ICFbc3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKQorICAgICAgICAgICAgc3RvcmFnZURpcmVjdG9yeSA9IFtOU0hvbWVEaXJl
Y3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0FwcGxpY2F0
aW9uIFN1cHBvcnQiXTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1s
aW5rc0luUGF0aChbW3N0b3JhZ2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OmFwcE5hbWVdIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKK30KKwogYm9vbCBXZWJQ
cm9jZXNzUG9vbDo6b21pdFBERlN1cHBvcnQoKQogewogICAgIC8vIFNpbmNlIHRoaXMgaXMgYSAi
c2VjcmV0IGRlZmF1bHQiIHdlIGRvbid0IGJvdGhlciByZWdpc3RlcmluZyBpdC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3Bw
CShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBy
b2Nlc3NQb29sRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxNCBAQCBTdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljCiAgICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChqb2luZWRQYXRoLCBXZWJDb3JlOjpJY29uRGF0YWJh
c2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkpOwogfQogCitTdHJpbmcgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpIGNvbnN0Cit7CisgICAg
Y2hhciBqb2luZWRQYXRoW1BBVEhfTUFYXTsKKyAgICBlaW5hX2ZpbGVfcGF0aF9qb2luKGpvaW5l
ZFBhdGgsIHNpemVvZihqb2luZWRQYXRoKSwgZWZyZWV0X2RhdGFfaG9tZV9nZXQoKSwgIldlYktp
dEVmbCIgRUlOQV9QQVRIX1NFUF9TICJMb2FkU3RhdGlzdGljcyIpOworCisgICAgcmV0dXJuIFdl
YkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChqb2luZWRQYXRoLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6ZGVmYXVsdEZpbGVuYW1lKCkpOworfQorCiBTdHJpbmcgV2ViUHJv
Y2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7
CiAgICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURp
cmVjdG9yeSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNz
UG9vbEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9X
ZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTgsNiArMTE4LDEyIEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SWMK
ICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkYXRhYmFzZURpcmVjdG9yeS5n
ZXQoKSk7CiB9CiAKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlz
dGljc1N0b3JhZ2VQYXRoKCkgY29uc3QKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdGF0aXN0
aWNzRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndl
YmtpdGd0ayIsICJsb2Fkc3RhdGlzdGljcyIsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6ZmlsZW5hbWVUb1N0cmluZyhzdGF0aXN0aWNzRGlyZWN0b3J5LmdldCgpKTsKK30KKwogU3Ry
aW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKQogewogICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2Nh
bFN0b3JhZ2VEaXJlY3RvcnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMTA2NCw2ICsxMDY0LDExIEBACiAJCTc1QThEMkUxMTg3REVDMUEwMEMzOUM5RSAvKiBBUElT
ZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NUE4RDJERTE4N0RFODc0MDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5oICovOyB9OwogCQk3NUE4RDJF
MjE4N0RFQzFFMDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUE4RDJERDE4N0RFODc0MDBDMzlDOUUgLyogQVBJ
U2Vzc2lvbi5jcHAgKi87IH07CiAJCTc2MkI3NDhEMTIwQkM3NUMwMDgxOTMzOSAvKiBXS1ByZWZl
cmVuY2VzUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
N0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJN0E3OTFFRkIxQzdDRkQwMTAwQzRD
NTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGODFDN0NGQjEwMDBDNEM1
MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCAqLzsgfTsKKwkJN0E3
OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTlDRDhDMDFD
Nzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcCAqLzsgfTsK
KwkJN0E3OTFGMDMxQzdFOTA3NzAwQzRDNTJCIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdB
NzkxRjAxMUM3RTc2RUIwMEM0QzUyQiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5j
cHAgKi87IH07CisJCTdBNzkxRjA0MUM3RTkzN0YwMEM0QzUyQiAvKiBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0E3OTFGMDIxQzdFNzZFQjAwQzRDNTJCIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0MxMzVBQTgxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTYxNzNC
MEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICovOyB9OwogCQk3QzEzNUFB
OTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUy
IC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QzEzNUFBQzE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5m
b3JtYXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzEzNUFBQTE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25NYWMubW0g
Ki87IH07CkBAIC0zMDgxLDYgKzMwODYsMTMgQEAKIAkJNzVBOEQyREUxODdERTg3NDAwQzM5QzlF
IC8qIEFQSVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQVBJU2Vz
c2lvbi5oOyBwYXRoID0gVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKIAkJNzYyQjc0ODExMjBCQkEwMTAwODE5MzM5IC8qIEZvbnRTbW9vdGhp
bmdMZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U21vb3RoaW5n
TGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzYyQjc0ODQxMjBCQkEyRDAw
ODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGVNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNzkxRjAxMUM3RTc2RUIwMEM0QzUyQiAv
KiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNzkxRjAyMUM3RTc2RUIwMEM0QzUyQiAvKiBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBOUNEOEMyMUM3NzlBRDYw
MEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBCQjlBODE4RENERTg5MDAwNkMwODYg
LyogV2ViQ29udGVudC1pT1MuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54bWw7IHBhdGggPSAiV2ViQ29udGVudC1pT1Mu
ZW50aXRsZW1lbnRzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQkI5QTkxOERD
REY1QTAwMDZDMDg2IC8qIE5ldHdvcmstaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueG1sOyBwYXRoID0gIk5ldHdv
cmstaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1
QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTg0MSw2ICs1ODUzLDkgQEAKIAkJCQk4NkU2N0Ey
MjE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5jcHAgKi8sCiAJCQkJODZFNjdB
MjExOTBGNDExODAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuaCAqLywKIAkJCQk4MzA0OEFF
NTFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovLAorCQkJCTdB
OUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3Bw
ICovLAorCQkJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUuaCAqLywKKwkJCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluICovLAogCQkJCUJDMTExQjA4MTEyRjVFM0Mw
MDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQkxQTMwMDY2QzExMTBG
NEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJCTUxQTRENUE4MTZD
QUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgKi8sCkBAIC02MTEzLDYgKzYx
MjgsOCBAQAogCQkJCTUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFj
ZVR5cGVzLmggKi8sCiAJCQkJMzMzNjc2MzgxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VD
YWNoZU1hbmFnZXIuY3BwICovLAogCQkJCTMzMzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBXS1Jl
c291cmNlQ2FjaGVNYW5hZ2VyLmggKi8sCisJCQkJN0E3OTFGMDExQzdFNzZFQjAwQzRDNTJCIC8q
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcCAqLywKKwkJCQk3QTc5MUYwMjFDN0U3
NkVCMDBDNEM1MkIgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCAqLywKIAkJCQk3
NUE4RDJEMDE4N0QxN0JGMDBDMzlDOUUgLyogV0tTZXNzaW9uUmVmLmNwcCAqLywKIAkJCQk3NUE4
RDJEMTE4N0QxN0JGMDBDMzlDOUUgLyogV0tTZXNzaW9uUmVmLmggKi8sCiAJCQkJMUFERTQ2QjAx
OTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmNwcCAqLywKQEAgLTY4NjAsNiAr
Njg3Nyw4IEBACiAJCQkJMUFDMTMzODQxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJl
Z2lzdHJ5TWVzc2FnZXMuaCAqLywKIAkJCQkwRjU5NDdBNTE4N0I1MTc2MDA0Mzc4NTcgLyogUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTBGNTk0
N0E2MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2Vz
LmggKi8sCisJCQkJN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJN0E3OTFFRjgxQzdDRkIxMDAw
QzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmggKi8sCiAJCQkJ
RTE4RTY5MTExNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLywKIAkJCQlFMThFNjkxMjE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1NZXNzYWdl
cy5oICovLAogCQkJCUUxOEU2OTEzMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTcyNjQsNiArNzI4Myw3IEBACiAJCQkJQkMwMzJE
QTYxMEY0MzdEMTAwNThDMTVBIC8qIEFyZ3VtZW50RGVjb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMwMzJEQTgxMEY0MzdEMTAwNThDMTVBIC8qIEFyZ3VtZW50RW5jb2Rlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMwMzJEQTkxMEY0MzdEMTAwNThDMTVBIC8qIEFyZ3VtZW50cy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJN0E3OTFGMDQxQzdFOTM3RjAwQzRDNTJCIC8qIFdLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJEMjFBNDhFNkM2MDA1
NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1OUM0
QTU5MThCODExNzQwMDdCRENCNiAvKiBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03NDc2LDYgKzc0OTYsNyBAQAogCQkJCTFBMEVDNzVFMTI0QkM3QjIw
MDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQz
QjVFMTI0RDVFOUQwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEwNDNEQzExMjRGRjg3NTAwRkZCRkI1IC8qIFBsdWdpblByb3h5Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEVGQTcx
MTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTRBOUYzMzEyQjg0NEUyMDA4RkU5ODQgLyogUGx1Z2luUXVpcmtzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3Q0Q2MjI3ODE3MzlEODYzMDA1QkQ3RkYgLyogUGx1Z2luU2FuZGJveFByb2Zp
bGUuaCBpbiBIZWFkZXJzICovLApAQCAtODg5NSw2ICs4OTE2LDcgQEAKIAkJCQkxQTJEODRBNDEy
N0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzhBQ0ExNDE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNDRjY3MzMxMkM3RjE1QzAwOEY5QzM1IC8qIE9yaWdpbkFuZERhdGFiYXNlcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDMzg3NDM0MTcyRjU2MTUwMDFCRDg4QSAvKiBQYWdlQmFubmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMDUyRjI2MUM2RDNCRDMwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFn
ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDNkQzN0ZDMTcyRjU1NUYwMDlEMjg0NyAv
KiBQYWdlQmFubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC05MTY0LDYgKzkxODYsNyBAQAog
CQkJCUJDN0I2MjE2MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyOUQ1NURGMTE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdyb3Vw
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5RUEzMTExQTk2
RDlFQjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3QTc5MUYwMzFDN0U5MDc3MDBDNEM1MkIgLyogV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI2RUMxQzIzRjgwOTAwRDQx
MTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBXZWJQYWdlSU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM5NjNENkUxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gaW4g
U291cmNlcyAqLywKQEAgLTkyNzcsNiArOTMwMCw3IEBACiAJCQkJRURDQTcxQjcxMjhEREE4QzAw
MjAxQjI2IC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2
MEM1N0ExMjQwQTU0NjAwOEM1RTI5IC8qIFdLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMxNERGOUUxMjBCNjM1RjAwODI2QzBDIC8qIFdLQnVuZGxlU2NyaXB0V29y
bGQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E3OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzE0Mjcx
MjFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
QzQwNzVGNTEyNEZGMDI3MDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm8uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM0MDc2MjgxMjRGRjA0MDAwNjhGMjBBIC8qIFdLQ2VydGlmaWNhdGVJbmZv
TWFjLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwLCAyMDEyLCAyMDE0LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNlc3Np
b25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJVc2Vy
RGF0YS5oIgpAQCAtODcsNiArODgsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CkBAIC0xNjYsNiArMTY5LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAg
ICAgLCBtX2hhc1JpY2hDb250ZW50U2VydmljZXMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fbm9u
VmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXIoKnRoaXMsICZXZWJQcm9jZXNzOjpub25WaXNpYmxl
UHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKQorICAgICwgbV9zdGF0aXN0aWNzQ2hhbmdlZFRpbWVy
KCp0aGlzLCAmV2ViUHJvY2Vzczo6c3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVkKQogI2lmIFBM
QVRGT1JNKElPUykKICAgICAsIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKCp0aGlzKQogI2Vu
ZGlmCkBAIC0zNjEsNiArMzY1LDggQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJv
Y2VzcyhXZQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyAgICBtX3N0YXRpc3RpY3NDaGFu
Z2VkVGltZXIuc3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86OnNlY29uZHMoNSkpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCkBAIC0xMjc1
LDYgKzEyODEsMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpub25WaXNpYmxlUHJvY2Vzc0NsZWFudQog
I2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVk
KCkKK3sKKyAgICBhdXRvJiBvYnNlcnZlciA9IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRP
YnNlcnZlcigpOworICAgIGlmIChvYnNlcnZlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFdURkxvZ0Fsd2F5cygiU2VuZGluZyBzdGF0aXN0aWNzIik7CisgICAgcGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChvYnNlcnZlci50YWtlU3RhdGlzdGlj
cygpKSwgMCk7Cit9CisKIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vzczo6dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyhBUEk6Ok9iamVjdCogb2JqZWN0KQogewogICAgIHN0cnVjdCBUcmFu
c2Zvcm1lciBmaW5hbCA6IFVzZXJEYXRhOjpUcmFuc2Zvcm1lciB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2OCw2ICsxNjgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBhZ2VJ
RCk7CiAKICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsKKyAg
ICB2b2lkIHN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCgpOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgdm9pZCBkZXN0cm95UmVuZGVyaW5nUmVzb3VyY2VzKCk7CkBAIC0zNTgsNiArMzU5
LDcgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fcGFnZXNJbldpbmRvd3M7
CiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lcjsKKyAg
ICBXZWJDb3JlOjpUaW1lciBtX3N0YXRpc3RpY3NDaGFuZ2VkVGltZXI7CiAKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRlRGF0YWJhc2VU
cmFja2VyOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTY5LDYgKzI5NjksOCBAQCB2
b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0dGluZ3Muc2V0
U2VydmljZUNvbnRyb2xzRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVy
ZW5jZXNLZXk6OnNlcnZpY2VDb250cm9sc0VuYWJsZWRLZXkoKSkpOwogI2VuZGlmCiAKKyAgICBz
ZXR0aW5ncy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
S2V5KCkpKTsKKwogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9IHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6cGFnZVZpc2liaWxpdHlCYXNlZFBy
b2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWRLZXkoKSk7CiAgICAgaWYgKG1fcHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCAhPSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKSB7CiAgICAgICAgIG1fcHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQ7CkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxOTcwNjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxNi0wMi0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV0syXSBHYXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNzgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI0NzAyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tOgor
ICAgICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgX3BvcHVsYXRlTWVudV0pOiBNb3ZlIHNldHRp
bmcgZnJvbSBXSzEtb25seSB0byBiZQorICAgICAgICB1bml2ZXJzYWxseSBhcHBsaWNhYmxlLgor
ICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgor
ICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkaWRDaGFuZ2VTZXR0aW5nc10p
OiBSZWNvZ25pemUgd2hlbiB0aGUKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIGZs
YWcgaGFzIGNoYW5nZWQuCisKIDIwMTYtMDItMjQgIE5pa29zIEFuZHJvbmlrb3MgIDxuaWtvcy5h
bmRyb25pa29zLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CiAKICAgICAgICAgW3dlYi1hbmlt
YXRpb25zXSBBZGQgQW5pbWF0aW9uVGltZWxpbmUsIERvY3VtZW50VGltZWxpbmUgYW5kIGFkZCBl
eHRlbnNpb25zIHRvIERvY3VtZW50IGludGVyZmFjZQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIv
bWFjL1NldHRpbmdzQ29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2Vy
L21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQkocmV2aXNpb24gMTk2ODIxKQorKysgVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMs
NiArMTEzLDcgQEAgLSAodm9pZClfcG9wdWxhdGVNZW51CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRo
VGl0bGU6QCJTdXBwcmVzcyBJbmNyZW1lbnRhbCBSZW5kZXJpbmcgaW4gTmV3IFdpbmRvd3MiIGFj
dGlvbjpAc2VsZWN0b3IodG9nZ2xlSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2VkOikgaW5k
ZW50ZWQ6Tk9dOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIEFjY2VsZXJh
dGVkIERyYXdpbmciIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlQWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZDopIGluZGVudGVkOk5PXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJs
ZSBEaXNwbGF5IExpc3QgRHJhd2luZyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVEaXNwbGF5TGlz
dERyYXdpbmdFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOworICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRp
dGxlOkAiRW5hYmxlIFJlc291cmNlIExvYWQgU3RhdGlzdGljcyIgYWN0aW9uOkBzZWxlY3Rvcih0
b2dnbGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIGluZGVudGVkOk5PXTsKIAogICAg
IFtzZWxmIF9hZGRIZWFkZXJXaXRoVGl0bGU6QCJXZWJLaXQyLW9ubHkgU2V0dGluZ3MiXTsKIApA
QCAtMTQxLDcgKzE0Miw2IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogCiAgICAgW3NlbGYgX2Fk
ZEhlYWRlcldpdGhUaXRsZTpAIldlYktpdDEtb25seSBTZXR0aW5ncyJdOwogICAgIFtzZWxmIF9h
ZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIFN1YnBpeGVsIENTU09NIE1ldHJpY3MiIGFjdGlvbjpA
c2VsZWN0b3IodG9nZ2xlRW5hYmxlU3ViUGl4ZWxDU1NPTU1ldHJpY3M6KSBpbmRlbnRlZDpZRVNd
OwotICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIFJlc291cmNlIExvYWQgU3Rh
dGlzdGljcyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDopIGluZGVudGVkOk5PXTsKIH0KIAogLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01l
bnVJdGVtICopbWVudUl0ZW0KSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9X
SzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBUb29scy9N
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5
KQpAQCAtMjksOSArMjksMTIgQEAKIAogI2ltcG9ydCAiQXBwRGVsZWdhdGUuaCIKICNpbXBvcnQg
IlNldHRpbmdzQ29udHJvbGxlci5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dC5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLRnJhbWVJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9u
RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KQEAgLTM0NCw2ICszNDcsNyBAQCAt
ICh2b2lkKWRpZENoYW5nZVNldHRpbmdzCiAgICAgcHJlZmVyZW5jZXMuX2FjY2VsZXJhdGVkRHJh
d2luZ0VuYWJsZWQgPSBzZXR0aW5ncy5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOwogICAgIHBy
ZWZlcmVuY2VzLl9yZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUgPSBzZXR0aW5ncy5yZXNvdXJj
ZVVzYWdlT3ZlcmxheVZpc2libGU7CiAgICAgcHJlZmVyZW5jZXMuX2Rpc3BsYXlMaXN0RHJhd2lu
Z0VuYWJsZWQgPSBzZXR0aW5ncy5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkOworICAgIHByZWZl
cmVuY2VzLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHNldHRpbmdzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOwogCiAgICAgQk9PTCB1c2VUcmFuc3BhcmVudFdpbmRvd3Mg
PSBzZXR0aW5ncy51c2VUcmFuc3BhcmVudFdpbmRvd3M7CiAgICAgaWYgKHVzZVRyYW5zcGFyZW50
V2luZG93cyAhPSAhX3dlYlZpZXcuX2RyYXdzQmFja2dyb3VuZCkgewpAQCAtMzczLDYgKzM3Nywx
MCBAQCAtICh2b2lkKWRpZENoYW5nZVNldHRpbmdzCiAgICAgICAgIHZpc2libGVPdmVybGF5UmVn
aW9ucyB8PSBfV0tXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbjsKICAgICAKICAgICBwcmVmZXJlbmNl
cy5fdmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMgPSB2aXNpYmxlT3ZlcmxheVJlZ2lvbnM7CisK
KyAgICBbX2NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQ6cHJlZmVyZW5jZXMuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXTsKKyAg
ICBpZiAocHJlZmVyZW5jZXMuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQorICAgICAg
ICBbX2NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgcmVhZFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZUZyb21EaXNrSWZOZWVkZWRdOwogfQogCiAtICh2b2lkKXVwZGF0ZVRpdGxlOihOU1N0cmlu
ZyAqKXRpdGxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272177</attachid>
            <date>2016-02-24 22:44:49 -0800</date>
            <delta_ts>2016-02-25 09:32:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154278-20160224224432.patch</filename>
            <type>text/plain</type>
            <size>77891</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE2LTAyLTI0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKTogUmV2
aXNlIGZvcgorICAgICAgICBuZXcgY29uc3RydWN0b3IgYXJndW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaXNrKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVhZERhdGFGcm9tRGlza0lmTmVl
ZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFr
ZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjptZXJnZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpp
c0VtcHR5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
ZGVmYXVsdEZpbGVuYW1lKTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
ZW5jb2RlKTogUmV2aXNlIHRvIHVzZSBpbnRlcm5hbAorICAgICAgICAnaGlnaExldmVsRG9tYWlu
JyBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNv
ZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om1lcmdlSGFzaENvdW50ZWRTZXQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKTogQWRk
ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
OgorCiAyMDE2LTAyLTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmxvY2tlZCBwbHVnLWluIHBsYWNlaG9sZGVyIGlzIHNvbWV0aW1lcyBub3Qgc2hvd24uCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MDIsNyArMjcwMiw3IEBACiAJ
CTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I5MTAx
ODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLzsgfTsKIAkJN0E3
NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0JD
MTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi87
IH07CiAJCTdBOTI5Q0E2MUM1OThBOUUwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5
Q0ExMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLzsgfTsK
LQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5Q0EyMUM1
OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IH07CisJCTdBOTI5
Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTkyOUNBMjFDNTk4Mzc4MDA0
REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBOTM4Njg1MThEQ0MxNDUwMEI4MjYzRCAvKiBW
VFRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBOTM4NjgyMThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLzsgfTsKIAkJ
N0E5Mzg2ODYxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTM4NjgzMThEQ0MxNDUwMEI4MjYzRCAv
KiBWVFRTY2FubmVyLmggKi87IH07CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAvKiBUaWxl
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUEzQTY5NTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3BwICovOyB9
OwpAQCAtMjQ5MTcsNiArMjQ5MTcsNyBAQAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAv
KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIz
MzBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyOUE4MTIzQjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJDMEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjlBODEyNDMwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOUE4MTI0MjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjUxNDIsNyArMjUxNDMsNiBAQAogCQkJ
CTk5Q0MwQjRGMThCRTk4NDkwMDZDRUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RDNzM0MTUxOTc3ODk2RDAwNDZCRkM1IC8qIENBUmluZ0J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2Vj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERThCNUVEMUE2OTc3
NzMwMEI0QjY2QSAvKiBDRE1Qcml2YXRlQ2xlYXJLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
MzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRERENTcxNTE4QjU3QTgyMDBBOTRGQ0IgLyogQ0RNU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw4
ICsxOTAsMTAgQEAgYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQcmV2YWxlbnRSZQogICAg
IAogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKQog
ewotICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFp
bikpCi0gICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChwcmltYXJ5RG9tYWluLCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpOworICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyBuZXdTdGF0aXN0aWNzKHByaW1hcnlEb21haW4pOworICAgICAgICBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5zZXQocHJpbWFyeURvbWFpbiwgbmV3U3RhdGlzdGljcyk7CisgICAgfQogICAg
IAogICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHByaW1hcnlEb21haW4p
LT52YWx1ZTsKIH0KQEAgLTI0OSw3ICsyNTEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
Ojp3cml0ZURhdGFUb0RpCiAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKCJvcmlnaW5zVmlzaXRl
ZCIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7CiAgICAgCiAgICAgZW5jb2Rlci0+
ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCksIFt0aGlzXShLZXllZEVu
Y29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgU3RhdGlzdGljc1ZhbHVlJiBvcmlnaW4pIHsKLSAg
ICAgICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIsIG9yaWdpbi5rZXkpOworICAg
ICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lcik7CiAgICAgfSk7CiAgICAgCiAg
ICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVsbF9icm93c2luZ19zZXNz
aW9uIik7CkBAIC0yNjMsOCArMjY1LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3Jp
dGVEYXRhVG9EaQogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwog
ICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zpc2l0ZWQiLCAxKTsKICAgICAKLSAg
ICBlbmNvZGVyLT5lbmNvZGVPYmplY3Qob3JpZ2luLCByZXNvdXJjZVN0YXRpc3RpY3MsIFt0aGlz
LCAmb3JpZ2luXShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHJlc291cmNlU3RhdGlzdGljcykgewotICAgICAgICByZXNvdXJjZVN0YXRpc3RpY3Mu
ZW5jb2RlKGVuY29kZXIsIG9yaWdpbik7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0KG9yaWdp
biwgcmVzb3VyY2VTdGF0aXN0aWNzLCBbdGhpc10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpY3MpIHsKKyAgICAgICAg
cmVzb3VyY2VTdGF0aXN0aWNzLmVuY29kZShlbmNvZGVyKTsKICAgICB9KTsKICAgICAKICAgICBT
dHJpbmcgbGFiZWwgPSBvcmlnaW47CkBAIC0zMDcsOCArMzA5LDggQEAgdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6cmVhZERhdGFGcm9tRAogICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNv
ZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgb3JpZ2luKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3Rp
Y3M7Ci0gICAgICAgIGlmICghc3RhdGlzdGljcy5kZWNvZGUoZGVjb2RlcklubmVyLCBvcmlnaW4p
KQorICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3RpY3Mob3JpZ2luKTsKKyAg
ICAgICAgaWYgKCFzdGF0aXN0aWNzLmRlY29kZShkZWNvZGVySW5uZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChvcmln
aW4sIHN0YXRpc3RpY3MpOwpAQCAtMzY5LDUgKzM3MSwyOSBAQCBTdHJpbmcgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnN0YXRpc3RpY3NGCiAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmZpbmQob3JpZ2luKS0+dmFsdWU7CiAgICAgcmV0dXJuICJTdGF0aXN0aWNz
IGZvciAiICsgb3JpZ2luICsgIjpcbiIgKyBzdGF0aXN0aWNzLnRvU3RyaW5nKCk7CiB9Ci0gICAg
CisKK1ZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
dGFrZVN0YXRpc3RpY3MoKQoreworICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBz
dGF0aXN0aWNzOworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAudmFsdWVzKCkpCisgICAgICAgIHN0YXRpc3RpY3MuYXBwZW5kKHN0YXRpc3RpYyk7CisK
KyAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOworCisgICAgcmV0dXJuIHN0YXRp
c3RpY3M7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Om1lcmdlU3RhdGlzdGljcyhj
b25zdCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIHN0YXRpc3RpY3MpCit7CisgICAg
Zm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7CisgICAgICAgIGF1dG8gaXRlciA9
IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoc3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7
CisgICAgICAgIGlmIChpdGVyID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpKSB7Cisg
ICAgICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQoc3RhdGlzdGljLmhpZ2hMZXZl
bERvbWFpbiwgc3RhdGlzdGljKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgaXRlci0+dmFsdWUubWVyZ2Uoc3RhdGlzdGljKTsKKyAgICB9Cit9CisKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCShyZXZp
c2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQCBjbGFzcyBSZXNvdXJjZUxvYWRP
YnNlcnZlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlTG9h
ZE9ic2VydmVyJiBzaGFyZWRPYnNlcnZlcigpOwogICAgIAotICAgIHZvaWQgbG9nRnJhbWVOYXZp
Z2F0aW9uKGJvb2wgaXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYg
dGFyZ2V0VVJMLCBib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7Ci0g
ICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoYm9vbCBpc1JlZGlyZWN0LCBjb25zdCBVUkwm
IHNvdXJjZVVSTCwgY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJM
KTsKLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBEb2N1bWVudCYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGJvb2wgaXNSZWRpcmVjdCwgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBib29sIGlzTWFpbkZyYW1l
LCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2dT
dWJyZXNvdXJjZUxvYWRpbmcoYm9vbCBpc1JlZGlyZWN0LCBjb25zdCBVUkwmIHNvdXJjZVVSTCwg
Y29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJMKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBEb2N1bWVudCYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZURhdGFUb0Rpc2soKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOwpAQCAtNTMsNiArNTMsMTQgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JPcmlnaW4o
Y29uc3QgU3RyaW5nJik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGlj
cygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtZXJnZVN0YXRpc3RpY3MoY29uc3QgVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+Jik7CisgICAgCisgICAgc3RhdGljIFN0cmluZyBk
ZWZhdWx0RmlsZW5hbWUoKSB7IHJldHVybiBBU0NJSUxpdGVyYWwoImZ1bGxfYnJvd3Npbmdfc2Vz
c2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOyB9CisKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJp
bmcmKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSAr
NzYsOSBAQCBzdGF0aWMgdm9pZCBlbmNvZGVIYXNoQ291bnRlZFNldChLZXllZEVuCiAgICAgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlKEtleWVkRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIGNvbnN0Cit2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5j
b2Rlci5lbmNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgb3JpZ2luKTsKKyAg
ICBlbmNvZGVyLmVuY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBoaWdoTGV2
ZWxEb21haW4pOwogICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBlbmNvZGVyLmVu
Y29kZUJvb2woImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbik7CkBAIC0x
MzAsMTQgKzEzMCwxMSBAQCBzdGF0aWMgdm9pZCBkZWNvZGVIYXNoQ291bnRlZFNldChLZXllZERl
CiAgICAgfSk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVk
RGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgU3RyaW5n
IHN0b3JlZE9yaWdpbjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRS
ZXNvdXJjZU9yaWdpbiIsIHN0b3JlZE9yaWdpbikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0
cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBoaWdoTGV2ZWxEb21haW4pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgQVNTRVJUX1VOVVNFRChvcmlnaW4sIHN0b3JlZE9y
aWdpbiA9PSBvcmlnaW4pOwotICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA3LDQgKzMwNCw0NyBAQCBTdHJpbmcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgdm9pZCBtZXJnZUhh
c2hDb3VudGVkU2V0KEhhc2hDb3VudGVkU2V0PFQ+JiB0bywgY29uc3QgSGFzaENvdW50ZWRTZXQ8
VD4mIGZyb20pCit7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGZyb20pCisgICAgICAgIHRvLmFk
ZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjptZXJnZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBvdGhlcikKK3sKKyAgICBB
U1NFUlQob3RoZXIuaGlnaExldmVsRG9tYWluID09IGhpZ2hMZXZlbERvbWFpbik7CisKKyAgICBo
YWRVc2VySW50ZXJhY3Rpb24gfD0gb3RoZXIuaGFkVXNlckludGVyYWN0aW9uOworICAgIAorICAg
IC8vIFRvcCBmcmFtZSBzdGF0cworICAgIHRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBv
dGhlci50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgdG9wRnJhbWVIYXNCZWVuUmVk
aXJlY3RlZEZyb20gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAg
dG9wRnJhbWVJbml0aWFsTG9hZENvdW50ICs9IG90aGVyLnRvcEZyYW1lSW5pdGlhbExvYWRDb3Vu
dDsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbyArPSBvdGhlci50b3BGcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRUbzsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tICs9IG90aGVy
LnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgdG9wRnJhbWVIYXNCZWVuTmF2aWdh
dGVkVG9CZWZvcmUgfD0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmU7Cisg
ICAgCisgICAgLy8gU3ViZnJhbWUgc3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMsIG90aGVyLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bnMpOworICAgIHN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBvdGhlci5zdWJmcmFtZUhh
c0JlZW5SZWRpcmVjdGVkVG87CisgICAgc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb20gKz0g
b3RoZXIuc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAgbWVyZ2VIYXNoQ291bnRl
ZFNldChzdWJmcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLCBvdGhlci5zdWJmcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvKTsKKyAgICBzdWJmcmFtZVN1YlJlc291cmNlQ291bnQgKz0gb3RoZXIuc3ViZnJhbWVT
dWJSZXNvdXJjZUNvdW50OworICAgIHN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvICs9IG90aGVy
LnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvOworICAgIHN1YmZyYW1lSGFzQmVlbk5hdmlnYXRl
ZEZyb20gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsKKyAgICBzdWJmcmFt
ZUhhc0JlZW5Mb2FkZWRCZWZvcmUgfD0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTG9hZGVkQmVmb3Jl
OworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNl
dChzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLCBvdGhlci5zdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW5zKTsKKyAgICBzdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50
ICs9IG90aGVyLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQ7CisgICAgc3VicmVz
b3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb20gKz0gb3RoZXIuc3VicmVzb3VyY2VIYXNCZWVuUmVk
aXJlY3RlZEZyb207CisgICAgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZFRvICs9IG90aGVy
LnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0
KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIG90aGVyLnN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8pOworICAgIAorICAgIC8vIFByZXZhbGVudCByZXNvdXJjZSBzdGF0cworICAgIG1l
cmdlSGFzaENvdW50ZWRTZXQocmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdp
bnMsIG90aGVyLnJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zKTsKKyAg
ICBpc1ByZXZhbGVudFJlc291cmNlIHw9IG90aGVyLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDI3IEBAIGNsYXNz
IEtleWVkRGVjb2RlcjsKIGNsYXNzIEtleWVkRW5jb2RlcjsKIAogc3RydWN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgeworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MoY29uc3QgU3RyaW5nJiBw
cmltYXJ5RG9tYWluKQorICAgICAgICA6IGhpZ2hMZXZlbERvbWFpbihwcmltYXJ5RG9tYWluKQor
ICAgIHsgfQorCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCisgICAgeyB9CisKICAgICBi
b29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9y
aWdpbnNWaXNpdGVkU29GYXIpOwogCiAgICAgYm9vbCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigp
IGNvbnN0OwogICAgIGJvb2wgaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBj
b25zdDsKIAotICAgIHZvaWQgZW5jb2RlKEtleWVkRW5jb2RlciYsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKSBjb25zdDsKLSAgICBib29sIGRlY29kZShLZXllZERlY29kZXImLCBjb25zdCBTdHJpbmcm
IG9yaWdpbik7CisgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7CisgICAgYm9v
bCBkZWNvZGUoS2V5ZWREZWNvZGVyJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
IAorICAgIHZvaWQgbWVyZ2UoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworCisgICAg
U3RyaW5nIGhpZ2hMZXZlbERvbWFpbjsKKwogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw3OCBAQAorMjAxNi0wMi0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBHYXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0
aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQy
NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzAyODkyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBuZXcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIGZpbGVzIHRvIGJ1aWxkLgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBE
aXR0by4KKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxh
dGZvcm1NYWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6
IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6ZGVjb2Rl
KTogU3VwcG9ydCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAgICAoSVBD
OjplbmNvZGVIYXNoQ291bnRlZFNldCk6IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjplbmNvZGUpOiBBZGRlZC4KKyAgICAgICAgKElQ
Qzo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOiBBZGRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZGVjb2RlKTogQWRkZWQuCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVm
ZXJlbmNlc0RlZmluaXRpb25zLmg6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQgcHJlZmVyZW5jZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRl
eHRHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdLQ29u
dGV4dFNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yYWdlUGF0aCk6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZF0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wg
X3NldEF1dG9tYXRpb25TZXNzaW9uOl0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIHNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IHJlYWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVGcm9tRGlza0lmTmVlZGVkXSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQYXRo
KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpzZXRTdGF0aXN0aWNz
U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdGF0ZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6d3JpdGVUb0Rp
c2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKTogSW5p
dGlhbGl6ZSB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGRhdGEgb2JqZWN0
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKTogU2h1
dCBkb3duIHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgZGF0YSBvYmplY3Qu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRTdGF0aXN0aWNzU3RvcmFnZVBh
dGgpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3NT
dG9yYWdlUGF0aCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3Jh
Z2VQYXRoKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRT
dGF0aXN0aWNzU3RvcmFnZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIGZp
bGVzIHRvIGJ1aWxkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OldlYlByb2Nlc3MpOiBJbml0aWFsaXplZCBzdGF0aXN0aWNzIGNoYW5nZWQgbm90aWZpY2F0aW9u
IHRpbWVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdGF0aXN0aWNzQ2hhbmdlZFRp
bWVyRmlyZWQpOiBBZGRlZC4gU2VuZCBidW5kbGVzIG9mIHNpdGUgbG9hZAorICAgICAgICBzdGF0
aXN0aWNzIHRvIHRoZSBVSVByb2Nlc3Mgb24gYSBzZXQgaW50ZXJ2YWwuIENsZWFyIG91dCBsb2Nh
bCBjYWNoZSBhZnRlciBlYWNoIHNlbmQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisKIDIwMTYtMDItMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCAiZGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2giIHRvIHRoZSBXS0NvbnRleHRDbGll
bnQ7IEFkb3B0IGl0IGluIFdLVFIuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTY2Myw2ICs2NjMsNyBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFNo
YXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCiAKICAgICBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgpJbmRleDogU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTY4
MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC05OCw2ICs5OCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAgICBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCisJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
IFwKICAgICBTZWNJdGVtU2hpbSBcCiAgICAgU2VjSXRlbVNoaW1Qcm94eSBcCiAgICAgU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlciBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQko
cmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVu
ZG9Db250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdO
b25lLmNwcAorICAgIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwCiAK
ICAgICBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBA
QCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9D
b250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKICAg
ICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKyAgICBVSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9D
L2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFj
LmNtYWtlCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5j
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBAIGxpc3QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogICAgIFNoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KICAgICBT
aGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1tCiAKKyAgICBVSVByb2Nlc3MvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAogICAgIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAko
cmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+CkBAIC0yMDQ0LDQgKzIwNDUsMTU2IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6ZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
c3RhdGljIHZvaWQgZW5jb2RlSGFzaENvdW50ZWRTZXQoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBIYXNoQ291bnRlZFNldDxTdHJpbmc+JiBoYXNoQ291bnRlZFNldCkKK3sKKyAgICBl
bmNvZGVyIDw8IGhhc2hDb3VudGVkU2V0LnNpemUoKTsKKworICAgIGZvciAoYXV0byBlbnRyeSA6
IGhhc2hDb3VudGVkU2V0KSB7CisgICAgICAgIGVuY29kZXIgPDwgZW50cnkua2V5OworICAgICAg
ICBlbmNvZGVyIDw8IGVudHJ5LnZhbHVlOworICAgIH0KK30KKwordm9pZCBBcmd1bWVudENvZGVy
PFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKQorewor
ICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5oaWdoTGV2ZWxEb21haW47CisgICAgCisgICAgLy8g
VXNlciBpbnRlcmFjdGlvbgorICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJh
Y3Rpb247CisgICAgCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgZW5jb2RlciA8PCBzdGF0
aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlOworICAgIGVuY29kZXIgPDwg
c3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgZW5jb2RlciA8PCBz
dGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29kZXIgPDwg
c3RhdGlzdGljcy50b3BGcmFtZUluaXRpYWxMb2FkQ291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0
aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlz
dGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tOworICAgIAorICAgIC8vIFN1YmZyYW1l
IHN0YXRzCisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJl
Zm9yZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3Rl
ZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVk
RnJvbTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50
OworICAgIGVuY29kZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsIHN0YXRpc3RpY3Muc3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2lucyk7CisgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2Rlciwg
c3RhdGlzdGljcy5zdWJmcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0
aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgCisgICAgLy8gU3VicmVz
b3VyY2Ugc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVu
UmVkaXJlY3RlZEZyb207CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFz
QmVlblJlZGlyZWN0ZWRUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VI
YXNCZWVuU3VicmVzb3VyY2VDb3VudDsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVz
b3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5z
VmlzaXRlZDsKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCBzdGF0aXN0aWNzLnN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMpOworICAgIGVuY29kZUhhc2hDb3VudGVkU2V0
KGVuY29kZXIsIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAg
CisgICAgLy8gUHJldmFsZW50IFJlc291cmNlCisgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5j
b2Rlciwgc3RhdGlzdGljcy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lu
cyk7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisK
K3N0YXRpYyBib29sIGRlY29kZUhhc2hDb3VudGVkU2V0KEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiYgaGFzaENvdW50ZWRTZXQpCit7CisgICAgdW5zaWdu
ZWQgZW50cmllczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJpZXMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJpZXM7ICsraSkg
eworICAgICAgICBTdHJpbmcgb3JpZ2luOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9y
aWdpbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICB1bnNp
Z25lZCBjb3VudDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3VudCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaGFzaENvdW50ZWRTZXQuYWRkKG9yaWdpbiwg
Y291bnQpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFyZ3VtZW50Q29k
ZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MpCit7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0
aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNC
ZWVuUmVkaXJlY3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSW5pdGlhbExvYWRDb3VudCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRp
c3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVl
bk5hdmlnYXRlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3Vi
ZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVI
YXNCZWVuTG9hZGVkQmVmb3JlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFt
ZVN1YlJlc291cmNlQ291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29k
ZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsIHN0YXRpc3RpY3Muc3ViZnJhbWVVbmlxdWVSZWRpcmVj
dHNUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZy
YW1lSGFzQmVlbk5hdmlnYXRlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNl
SGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3Vy
Y2VDb3VudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlk
ZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsIHN0YXRpc3RpY3Mu
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rlciwgc3RhdGlzdGljcy5zdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQorICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQo
ZGVjb2Rlciwgc3RhdGlzdGljcy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3Jp
Z2lucykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBJUEMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJl
dmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MCw2ICs4MCw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBzdHJ1Y3QgUGx1
Z2luSW5mbzsKIHN0cnVjdCBSZWNlbnRTZWFyY2g7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczsKIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNr
aW5nUmVzdWx0Owogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwpAQCAtNDU1LDYgKzQ1NiwxMiBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6CiAgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmKTsK
IH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmKTsKK307CisKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKICNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5p
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNEZWZpbml0aW9ucy5oCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiAr
MjU1LDcgQEAKICAgICBtYWNybyhJZ25vcmVWaWV3cG9ydFNjYWxpbmdDb25zdHJhaW50cywgaWdu
b3JlVmlld3BvcnRTY2FsaW5nQ29uc3RyYWludHMsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBt
YWNybyhGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSwgZm9yY2VBbHdheXNVc2VyU2NhbGFibGUsIEJv
b2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oUmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxl
LCByZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAg
bWFjcm8oUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQsIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFD
SF9XRUJLSVRfREVCVUdfVUlOVDMyX1BSRUZFUkVOQ0UobWFjcm8pIFwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEz
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLAogICAgICAg
ICBQbHVnaW5TaXRlRGF0YU1hbmFnZXIsCiAgICAgICAgIFByZWZlcmVuY2VzLAorICAgICAgICBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUsCiAgICAgICAgIFJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbFJlc3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRM
aXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDE5NjgyMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDYgKzEzMiw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZVJ1bkJlZm8K
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydFJlc3Vs
dExpc3RlbmVyKiBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lclJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0
TGlzdGVuZXIqIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXJSZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0
TGlzdGVuZXIqIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lclJlZjsKK3R5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKiBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLVGV4dENoZWNrZXIqIFdLVGV4dENoZWNrZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1Nlc3Npb24qIFdLU2Vzc2lvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLU2Vzc2lvblN0YXRlKiBXS1Nlc3Npb25TdGF0ZVJlZjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUuaCIKKworI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZSgqcHJvY2Vzc1Bvb2wpKTsKK30KKworUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sKQorICAgIDogbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKK3sKKyAgICBtX3Byb2Nlc3NQ
b29sLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKCkKK3sKK30KKwordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRPYnNlcnZlcj4oKTsKKyAgICBtX3Jlc291cmNl
TG9hZE9ic2VydmVyLT5zZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShwYXRoKTsKK30KKwor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NV
cGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgb3Jp
Z2lucykKK3sKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyLT5tZXJnZVN0YXRpc3RpY3Mob3Jp
Z2lucyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpyZWFkRGF0YUZy
b21EaXNrSWZOZWVkZWQoKQoreworICAgIGlmIChtX3Jlc291cmNlTG9hZE9ic2VydmVyKQorICAg
ICAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyLT5yZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsK
K30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OndyaXRlVG9EaXNrKCkKK3sK
KyAgICBpZiAobV9yZXNvdXJjZUxvYWRPYnNlcnZlcikKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRP
YnNlcnZlci0+d3JpdGVEYXRhVG9EaXNrKCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlX2gKKyNkZWZpbmUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlX2gKKworI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI7CitzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nl
c3NQb29sOworCitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGU+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU+IGNyZWF0ZShXZWJQcm9jZXNz
UG9vbCopOworICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgpOworICAg
IAorICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7
CisgICAgCisgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpOworCisgICAgdm9p
ZCB3cml0ZVRvRGlzaygpOworICAgIHZvaWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Cisg
ICAgCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShX
ZWJQcm9jZXNzUG9vbCYpOworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVz
c2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICAKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9j
ZXNzUG9vbDsKKyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI+IG1fcmVzb3VyY2VMb2FkT2JzZXJ2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIHsK
KyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4gb3JpZ2lucykKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNs
dWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xNzUs
NiArMTc2LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogCiAg
ICAgLy8gTk9URTogVGhlc2Ugc3ViLW9iamVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBt
X21lc3NhZ2VSZWNlaXZlck1hcC4uCiAgICAgbV9pY29uRGF0YWJhc2UgPSBXZWJJY29uRGF0YWJh
c2U6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGU6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KHN0YXRpc3RpY3NTdG9yYWdl
UGF0aCgpKTsKIAogICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwog
ICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CkBAIC0yMjks
NiArMjMyLDkgQEAgV2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCgpCiAgICAgICAgIGl0
LT52YWx1ZS0+Y2xlYXJQcm9jZXNzUG9vbCgpOwogICAgIH0KIAorICAgIC8vIEZJWE1FKDE1NDY0
Mik6IFRoaXMgc2hvdWxkIG5vdCBiZSBkb25lIGluIG9uZSBsb25nIG9wZXJhdGlvbiB3aGVuIGV4
aXRpbmcuCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT53cml0ZVRvRGlzaygpOworICAg
IAogICAgIG1faWNvbkRhdGFiYXNlLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9pY29uRGF0YWJhc2Ut
PmNsZWFyUHJvY2Vzc1Bvb2woKTsKICAgICBXZWJJY29uRGF0YWJhc2UqIHJhd0ljb25EYXRhYmFz
ZSA9IG1faWNvbkRhdGFiYXNlLnJlbGVhc2UoKS5sZWFrUmVmKCk7CkBAIC0xMDUzLDYgKzEwNTks
MjEgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjppY29uRGF0YWJhc2VQYXRoKAogICAgIHJldHVy
biBwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldFN0YXRpc3RpY3NTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0aCA9IHBhdGg7CisgICAgaWYgKCFtX292
ZXJyaWRlU3RhdGlzdGljc1N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShwYXRoKTsKK30K
KworU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdAor
eworICAgIGlmICghbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0aC5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVTdGF0aXN0aWNzU3RvcmFnZVBhdGg7CisgICAgCisgICAg
cmV0dXJuIHBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpOworfQorCiAjaWYg
RU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzLCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzksNiArNzksNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZFByb3h5OworY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlOwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb247CiBjbGFzcyBXZWJDb250ZXh0
U3VwcGxlbWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKQEAgLTIyOCw2ICsyMjksNyBAQCBw
dWJsaWM6CiAgICAgV2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7
IH0KIAogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgY29uc3QgeyByZXR1cm4g
bV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0KKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUq
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3MgewogICAgICAg
ICB1bnNpZ25lZCB3a1ZpZXdDb3VudDsKQEAgLTI0MCw2ICsyNDIsOSBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNldENvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkgPSBkaXI7IH0KIAorICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKGNv
bnN0IFN0cmluZyYpOworICAgIFN0cmluZyBzdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdDsK
KwogICAgIHZvaWQgdXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCk7CiAgICAgYm9vbCBpc1VzaW5n
VGVzdGluZ05ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVc2VUZXN0aW5n
TmV0d29ya1Nlc3Npb247IH0KIApAQCAtMzgyLDYgKzM4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBsYW5ndWFnZUNoYW5nZWQoKTsKIAogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRJY29uRGF0
YWJhc2VQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NT
dG9yYWdlUGF0aCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCBFTkFCTEUoU0VDQ09N
UF9GSUxURVJTKQogICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CkBA
IC00NjUsNiArNDcxLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9tZW1vcnlTYW1wbGVySW50
ZXJ2YWw7CiAKICAgICBSZWZQdHI8V2ViSWNvbkRhdGFiYXNlPiBtX2ljb25EYXRhYmFzZTsKKyAg
ICBSZWZQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlPiBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3M7CiAKICAgICBjb25zdCBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNp
dGVEYXRhU3RvcmU7CiAKQEAgLTQ4NSw2ICs0OTIsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5n
IG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwogICAgIFN0cmluZyBtX292ZXJyaWRlQ29va2ll
U3RvcmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdl
UGF0aDsKIAogICAgIGJvb2wgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9u
IDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7
CitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU7CiBjbGFzcyBVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7
CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQ
SV9NQVBQSU5HKFdLUGFnZVJlZiwgV2ViUGFnZVBybwogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJl
ZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVj
dGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tS
ZW5kZXJMYXllclJlZiwgV2ViUmVuZGVyTGF5ZXIpCitXS19BRERfQVBJX01BUFBJTkcoV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSkK
IFdLX0FERF9BUElfTUFQUElORyhXS1JlbmRlck9iamVjdFJlZiwgV2ViUmVuZGVyT2JqZWN0KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLU2Vzc2lvblN0YXRlUmVmLCBBUEk6OlNlc3Npb25TdGF0ZSkK
IFdLX0FERF9BUElfTUFQUElORyhXS1RleHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZp
c2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAi
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBA
IC01NzcsMyArNTc4LDE0IEBAIHZvaWQgV0tDb250ZXh0U2V0Rm9udFdoaXRlbGlzdChXS0NvbnRl
eHQKIHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldEZvbnRXaGl0ZWxpc3QodG9JbXBsKGFy
cmF5UmVmKSk7CiB9CisKK1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlUmVmIFdLQ29udGV4
dEdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZikK
K3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JhZ2VQYXRoKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGF0aCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldFN0
YXRpc3RpY3NTdG9yYWdlUGF0aCh0b0ltcGwocmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGgpLT5z
dHJpbmcoKSk7Cit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw3IEBAIFdLX0VY
UE9SVCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiAKIFdLX0VYUE9SVCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihXS0NvbnRleHRS
ZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWYgV0tDb250
ZXh0R2V0UGx1Z2luU2l0ZURhdGFNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VY
UE9SVCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFJlc291cmNlQ2FjaGVN
YW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKK1dLX0VYUE9SVCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZVJlZiBXS0NvbnRleHRHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYpOwogCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRHZXRT
dGF0aXN0aWNzRnVuY3Rpb24pKFdLRGljdGlvbmFyeVJlZiBzdGF0aXN0aWNzLCBXS0Vycm9yUmVm
IGVycm9yLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
R2V0U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0
LCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCShyZXZp
c2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw4IEBAIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFNldE1lbW9yeUNhY2hlRGkKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
Rm9udFdoaXRlbGlzdChXS0NvbnRleHRSZWYsIFdLQXJyYXlSZWYpOwogCitXS19FWFBPUlQgdm9p
ZCBXS0NvbnRleHRTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZVBhdGgoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoKTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ1NiwzICsxNDU2LDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNl
c0dldE1vY2tDYXB0dXJlRGV2aWNlc0UKIHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+bW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK2Jvb2wgV0tQ
cmVmZXJlbmNlc0dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUu
aAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw2ICszOTksMTAg
QEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFJlc291cmNlVQogV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1NldE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZiwgYm9vbCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdHMgdG8gZmFsc2Uu
CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVu
Y2VzR2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZik7Cisg
ICAgCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgiCisKKyNpbmNsdWRlICJBUElEYXRh
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgiCisjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEko
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpBUElUeXBlKTsKK30KKwordm9pZCBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZVJlYWREYXRhRnJvbURpc2tJZk5lZWRlZChXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZVJlZiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYpCit7
CisgICAgdG9JbXBsKHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZVJlZiktPnJlYWREYXRhRnJv
bURpc2tJZk5lZWRlZCgpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCisjZGVmaW5l
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jh
c2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19F
WFBPUlQgV0tUeXBlSUQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVHZXRUeXBlSUQoKTsK
KworV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWFkRGF0YUZy
b21EaXNrSWZOZWVkZWQoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1JlZik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oICovCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCShy
ZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyNyw2ICsyMjcsMTYgQEAgLSAodm9pZClf
c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlOgogICAgIF9wcmVmZXJlbmNlcy0+c2V0UmVz
b3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKHJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSk7CiB9
CiAKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCit7CisgICAgcmV0dXJu
IF9wcmVmZXJlbmNlcy0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKK30KKworLSAo
dm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKK30KKwogLSAo
X1dLRGVidWdPdmVybGF5UmVnaW9ucylfdmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMKIHsKICAg
ICByZXR1cm4gX3ByZWZlcmVuY2VzLT52aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucygpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw2ICs2MCw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tKYXZh
U2MKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNpbXBsZUxpbmVMYXlvdXREZWJ1
Z0JvcmRlcnNFbmFibGVkOikgQk9PTCBfc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJs
ZWQgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDopIEJPT0wgX2FjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogQHByb3BlcnR5
IChub25hdG9taWMsIHNldHRlcj1fc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZDopIEJPT0wg
X2Rpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lP
U19UQkEpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKIAog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDop
IEJPT0wgX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwu
aCIKICNpbXBvcnQgIkRvd25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldL
T2JqZWN0LmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgpAQCAtMjUxLDYgKzI1MiwxNyBAQCAt
ICh2b2lkKV9zZXRBdXRvbWF0aW9uU2Vzc2lvbjooX1dLQXV0b21hCiAgICAgX3Byb2Nlc3NQb29s
LT5zZXRBdXRvbWF0aW9uU2Vzc2lvbihhdXRvbWF0aW9uU2Vzc2lvbiA/IGF1dG9tYXRpb25TZXNz
aW9uLT5fc2Vzc2lvbi5nZXQoKSA6IG51bGxwdHIpOwogfQogCistICh2b2lkKXNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKXZhbHVlCit7CisgICAgV2ViQ29yZTo6U2V0dGlu
Z3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHZhbHVlKTsKK30KKworLSAodm9p
ZClyZWFkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlRnJvbURpc2tJZk5lZWRlZAoreworICAg
IGlmIChhdXRvKiBzdGF0aXN0aWNzID0gX3Byb2Nlc3NQb29sLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUoKSkKKyAgICAgICAgc3RhdGlzdGljcy0+cmVhZERhdGFGcm9tRGlza0lmTmVlZGVk
KCk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDkgQEAKIC0gKHZvaWQpX2F1dG9tYXRpb25DYXBhYmlsaXRpZXNEaWRDaGFuZ2UgV0tfQVZB
SUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogLSAodm9pZClfc2V0QXV0b21hdGlvblNl
c3Npb246KF9XS0F1dG9tYXRpb25TZXNzaW9uICopYXV0b21hdGlvblNlc3Npb24gV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCistICh2b2lkKXNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkOihCT09MKXZhbHVlOworLSAodm9pZClyZWFkUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlRnJvbURpc2tJZk5lZWRlZDsKKwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOCBA
QCBzdGF0aWMgTlNTdHJpbmcgKldlYktpdEFwcGxpY2F0aW9uRGlkQ2hhCiAvLyBGSVhNRTogPHJk
YXI6Ly9wcm9ibGVtLzkxMzg4MTc+IC0gQWZ0ZXIgdGhpcyAiYmFja3dhcmRzIGNvbXBhdGliaWxp
dHkiIHJhZGFyIGlzIHJlbW92ZWQsIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZCB0byBvbmx5
IHJldHVybiBhbiBlbXB0eSBTdHJpbmcuCiBOU1N0cmluZyAqV2ViSWNvbkRhdGFiYXNlRGlyZWN0
b3J5RGVmYXVsdHNLZXkgPSBAIldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5IjsK
IAorTlNTdHJpbmcgKldlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlEZWZhdWx0
c0tleSA9IEAiV2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeURlZmF1bHRzS2V5
IjsKKwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5
ID0gQCJXZWJLaXQySFRUUFByb3h5IjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJI
VFRQU1Byb3h5RGVmYXVsdHNLZXkgPSBAIldlYktpdDJIVFRQU1Byb3h5IjsKIApAQCAtNDI4LDYg
KzQzMCwyNiBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljCiAgICAg
cmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2RhdGFiYXNlc0RpcmVjdG9y
eSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CiB9CiAKK1N0cmluZyBXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKCkgY29uc3QKK3sKKyAgICBO
U1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmll
cl07CisgICAgaWYgKCFhcHBOYW1lKQorICAgICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZv
IHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07CisgICAgCisgICAgQVNTRVJUKGFwcE5hbWUpOwor
CisgICAgTlNTdHJpbmcgKnN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeURlZmF1bHRzS2V5XTsKKyAgICBpZiAoIXN0b3JhZ2VEaXJlY3RvcnkgfHwgIVtz
dG9yYWdlRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAg
ICAgTlNFcnJvciAqZXJyb3I7CisgICAgICAgIHN0b3JhZ2VEaXJlY3RvcnkgPSBbW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNBcHBsaWNhdGlvblN1cHBv
cnREaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpu
aWwgY3JlYXRlOllFUyBlcnJvcjomZXJyb3JdIHBhdGhdOworICAgICAgICAKKyAgICAgICAgaWYg
KCFzdG9yYWdlRGlyZWN0b3J5IHx8ICFbc3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgc3RvcmFnZURpcmVjdG9yeSA9IFtOU0hvbWVE
aXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0FwcGxp
Y2F0aW9uIFN1cHBvcnQiXTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdT
eW1saW5rc0luUGF0aChbW3N0b3JhZ2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OmFwcE5hbWVdIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKK30KKwogYm9vbCBX
ZWJQcm9jZXNzUG9vbDo6b21pdFBERlN1cHBvcnQoKQogewogICAgIC8vIFNpbmNlIHRoaXMgaXMg
YSAic2VjcmV0IGRlZmF1bHQiIHdlIGRvbid0IGJvdGhlciByZWdpc3RlcmluZyBpdC4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwu
Y3BwCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlByb2Nlc3NQb29sRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxNCBAQCBT
dHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljCiAgICAgcmV0dXJuIFdlYkNv
cmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChqb2luZWRQYXRoLCBXZWJDb3JlOjpJY29uRGF0
YWJhc2U6OmRlZmF1bHREYXRhYmFzZUZpbGVuYW1lKCkpOwogfQogCitTdHJpbmcgV2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpIGNvbnN0Cit7Cisg
ICAgY2hhciBqb2luZWRQYXRoW1BBVEhfTUFYXTsKKyAgICBlaW5hX2ZpbGVfcGF0aF9qb2luKGpv
aW5lZFBhdGgsIHNpemVvZihqb2luZWRQYXRoKSwgZWZyZWV0X2RhdGFfaG9tZV9nZXQoKSwgIldl
YktpdEVmbCIgRUlOQV9QQVRIX1NFUF9TICJMb2FkU3RhdGlzdGljcyIpOworCisgICAgcmV0dXJu
IFdlYkNvcmU6OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChqb2luZWRQYXRoLCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZGVmYXVsdEZpbGVuYW1lKCkpOworfQorCiBTdHJpbmcgV2Vi
UHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgp
CiB7CiAgICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFn
ZURpcmVjdG9yeSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9j
ZXNzUG9vbEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTgsNiArMTE4LDEyIEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0
SWMKICAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkYXRhYmFzZURpcmVjdG9y
eS5nZXQoKSk7CiB9CiAKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3Rh
dGlzdGljc1N0b3JhZ2VQYXRoKCkgY29uc3QKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdGF0
aXN0aWNzRGlyZWN0b3J5KGdfYnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwg
IndlYmtpdGd0ayIsICJsb2Fkc3RhdGlzdGljcyIsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6ZmlsZW5hbWVUb1N0cmluZyhzdGF0aXN0aWNzRGlyZWN0b3J5LmdldCgpKTsKK30KKwog
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKQogewogICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRM
b2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTA2NCw2ICsxMDY0LDExIEBACiAJCTc1QThEMkUxMTg3REVDMUEwMEMzOUM5RSAvKiBB
UElTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NUE4RDJERTE4N0RFODc0MDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5oICovOyB9OwogCQk3NUE4
RDJFMjE4N0RFQzFFMDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUE4RDJERDE4N0RFODc0MDBDMzlDOUUgLyog
QVBJU2Vzc2lvbi5jcHAgKi87IH07CiAJCTc2MkI3NDhEMTIwQkM3NUMwMDgxOTMzOSAvKiBXS1By
ZWZlcmVuY2VzUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQ
cml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJN0E3OTFFRkIxQzdDRkQwMTAw
QzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGODFDN0NGQjEwMDBD
NEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCAqLzsgfTsKKwkJ
N0E3OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTlDRDhD
MDFDNzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcCAqLzsg
fTsKKwkJN0E3OTFGMDMxQzdFOTA3NzAwQzRDNTJCIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBNzkxRjAxMUM3RTc2RUIwMEM0QzUyQiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZS5jcHAgKi87IH07CisJCTdBNzkxRjA0MUM3RTkzN0YwMEM0QzUyQiAvKiBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0E3OTFGMDIxQzdFNzZFQjAwQzRDNTJCIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJN0MxMzVBQTgxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTYx
NzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICovOyB9OwogCQk3QzEz
NUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2
QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzEzNUFBQzE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2lu
SW5mb3JtYXRpb25NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QzEzNUFBQTE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25NYWMu
bW0gKi87IH07CkBAIC0zMDgxLDYgKzMwODYsMTMgQEAKIAkJNzVBOEQyREUxODdERTg3NDAwQzM5
QzlFIC8qIEFQSVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQVBJ
U2Vzc2lvbi5oOyBwYXRoID0gVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uLmg7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKIAkJNzYyQjc0ODExMjBCQkEwMTAwODE5MzM5IC8qIEZvbnRTbW9v
dGhpbmdMZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U21vb3Ro
aW5nTGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzYyQjc0ODQxMjBCQkEy
RDAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGVNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VSZWNlaXZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNzkxRjAxMUM3RTc2RUIwMEM0QzUy
QiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNzkxRjAyMUM3RTc2RUIwMEM0QzUyQiAvKiBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBOUNEOEMyMUM3NzlB
RDYwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2Vz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBCQjlBODE4RENERTg5MDAwNkMw
ODYgLyogV2ViQ29udGVudC1pT1MuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54bWw7IHBhdGggPSAiV2ViQ29udGVudC1p
T1MuZW50aXRsZW1lbnRzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQkI5QTkx
OERDREY1QTAwMDZDMDg2IC8qIE5ldHdvcmstaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueG1sOyBwYXRoID0gIk5l
dHdvcmstaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdD
MTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTg0MSw2ICs1ODUzLDkgQEAKIAkJCQk4NkU2
N0EyMjE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vzc1Rocm90dGxlci5jcHAgKi8sCiAJCQkJODZF
NjdBMjExOTBGNDExODAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuaCAqLywKIAkJCQk4MzA0
OEFFNTFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovLAorCQkJ
CTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUu
Y3BwICovLAorCQkJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUuaCAqLywKKwkJCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluICovLAogCQkJCUJDMTExQjA4MTEyRjVF
M0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQkxQTMwMDY2QzEx
MTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJCTUxQTRENUE4
MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgKi8sCkBAIC02MTEzLDYg
KzYxMjgsOCBAQAogCQkJCTUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25T
cGFjZVR5cGVzLmggKi8sCiAJCQkJMzMzNjc2MzgxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3Vy
Y2VDYWNoZU1hbmFnZXIuY3BwICovLAogCQkJCTMzMzY3NjM5MTMwQzk5REMwMDZDOURFMiAvKiBX
S1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmggKi8sCisJCQkJN0E3OTFGMDExQzdFNzZFQjAwQzRDNTJC
IC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcCAqLywKKwkJCQk3QTc5MUYwMjFD
N0U3NkVCMDBDNEM1MkIgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCAqLywKIAkJ
CQk3NUE4RDJEMDE4N0QxN0JGMDBDMzlDOUUgLyogV0tTZXNzaW9uUmVmLmNwcCAqLywKIAkJCQk3
NUE4RDJEMTE4N0QxN0JGMDBDMzlDOUUgLyogV0tTZXNzaW9uUmVmLmggKi8sCiAJCQkJMUFERTQ2
QjAxOTU0RUM2MTAwMEY3OTg1IC8qIFdLU2Vzc2lvblN0YXRlUmVmLmNwcCAqLywKQEAgLTY4NjAs
NiArNjg3Nyw4IEBACiAJCQkJMUFDMTMzODQxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVj
dFJlZ2lzdHJ5TWVzc2FnZXMuaCAqLywKIAkJCQkwRjU5NDdBNTE4N0I1MTc2MDA0Mzc4NTcgLyog
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTBG
NTk0N0E2MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3Nh
Z2VzLmggKi8sCisJCQkJN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCisJCQkJN0E3OTFFRjgxQzdDRkIx
MDAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmggKi8sCiAJ
CQkJRTE4RTY5MTExNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKIAkJCQlFMThFNjkxMjE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1NZXNz
YWdlcy5oICovLAogCQkJCUUxOEU2OTEzMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKQEAgLTcyNjQsNiArNzI4Myw3IEBACiAJCQkJQkMw
MzJEQTYxMEY0MzdEMTAwNThDMTVBIC8qIEFyZ3VtZW50RGVjb2Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMwMzJEQTgxMEY0MzdEMTAwNThDMTVBIC8qIEFyZ3VtZW50RW5jb2Rlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMwMzJEQTkxMEY0MzdEMTAwNThDMTVBIC8qIEFyZ3VtZW50cy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0E3OTFGMDQxQzdFOTM3RjAwQzRDNTJCIC8qIFdLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJEMjFBNDhFNkM2
MDA1NEVGNzQgLyogQXNzZXJ0aW9uU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1
OUM0QTU5MThCODExNzQwMDdCRENCNiAvKiBBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE1RTc3MjgxODNERDZGNjAwMDcyMDNGIC8qIEFzeW5jUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCkBAIC03NDc2LDYgKzc0OTYsNyBAQAogCQkJCTFBMEVDNzVFMTI0QkM3
QjIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MDQzQjVFMTI0RDVFOUQwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNEQzExMjRGRjg3NTAwRkZCRkI1IC8qIFBsdWdpblByb3h5
LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEVG
QTcxMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTRBOUYzMzEyQjg0NEUyMDA4RkU5ODQgLyogUGx1Z2luUXVpcmtzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0Q2MjI3ODE3MzlEODYzMDA1QkQ3RkYgLyogUGx1Z2luU2FuZGJveFBy
b2ZpbGUuaCBpbiBIZWFkZXJzICovLApAQCAtODg5NSw2ICs4OTE2LDcgQEAKIAkJCQkxQTJEODRB
NDEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzhBQ0ExNDE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkNDRjY3MzMxMkM3RjE1QzAwOEY5QzM1IC8qIE9yaWdpbkFuZERhdGFiYXNl
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTdDMzg3NDM0MTcyRjU2MTUwMDFCRDg4QSAvKiBQYWdlQmFubmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMDUyRjI2MUM2RDNCRDMwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1h
bmFnZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDNkQzN0ZDMTcyRjU1NUYwMDlEMjg0
NyAvKiBQYWdlQmFubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC05MTY0LDYgKzkxODYsNyBA
QAogCQkJCUJDN0I2MjE2MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkyOUQ1NURGMTE2MUJGOUYxMDAzMUEyRTMgLyogV2ViUGFnZUdy
b3VwUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ5RUEzMTEx
QTk2RDlFQjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk3QTc5MUYwMzFDN0U5MDc3MDBDNEM1MkIgLyogV0tSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI2RUMxQzIzRjgwOTAw
RDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEQTk0NEJBMTg4NEVBM0MwMEVEODZEQiAvKiBXZWJQYWdlSU9TLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM5NjNENkUxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0g
aW4gU291cmNlcyAqLywKQEAgLTkyNzcsNiArOTMwMCw3IEBACiAJCQkJRURDQTcxQjcxMjhEREE4
QzAwMjAxQjI2IC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM2MEM1N0ExMjQwQTU0NjAwOEM1RTI5IC8qIFdLQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkMxNERGOUUxMjBCNjM1RjAwODI2QzBDIC8qIFdLQnVuZGxlU2NyaXB0
V29ybGQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E3OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzE0
MjcxMjFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlCQzQwNzVGNTEyNEZGMDI3MDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM0MDc2MjgxMjRGRjA0MDAwNjhGMjBBIC8qIFdLQ2VydGlmaWNhdGVJ
bmZvTWFjLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOS0yMDEwLCAyMDEyLCAyMDE0LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuaCIKKyNpbmNs
dWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNl
c3Npb25UcmFja2VyLmgiCiAjaW5jbHVkZSAiU3RhdGlzdGljc0RhdGEuaCIKICNpbmNsdWRlICJV
c2VyRGF0YS5oIgpAQCAtODcsNiArODgsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3Vw
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRPYnNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3Vy
aXR5T3JpZ2luLmg+CkBAIC0xNjYsNiArMTY5LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vzcygp
CiAgICAgLCBtX2hhc1JpY2hDb250ZW50U2VydmljZXMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1f
bm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXIoKnRoaXMsICZXZWJQcm9jZXNzOjpub25WaXNp
YmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKQorICAgICwgbV9zdGF0aXN0aWNzQ2hhbmdlZFRp
bWVyKCp0aGlzLCAmV2ViUHJvY2Vzczo6c3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVkKQogI2lm
IFBMQVRGT1JNKElPUykKICAgICAsIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKCp0aGlzKQog
I2VuZGlmCkBAIC0zNjEsNiArMzY1LDggQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2Vi
UHJvY2VzcyhXZQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyAgICBtX3N0YXRpc3RpY3ND
aGFuZ2VkVGltZXIuc3RhcnRSZXBlYXRpbmcoc3RkOjpjaHJvbm86OnNlY29uZHMoNSkpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCkBAIC0x
Mjc1LDYgKzEyODEsMTUgQEAgdm9pZCBXZWJQcm9jZXNzOjpub25WaXNpYmxlUHJvY2Vzc0NsZWFu
dQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c3RhdGlzdGljc0NoYW5nZWRUaW1lckZp
cmVkKCkKK3sKKyAgICBhdXRvJiBvYnNlcnZlciA9IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFy
ZWRPYnNlcnZlcigpOworICAgIGlmIChvYnNlcnZlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQob2Jz
ZXJ2ZXIudGFrZVN0YXRpc3RpY3MoKSksIDApOworfQorCiBSZWZQdHI8QVBJOjpPYmplY3Q+IFdl
YlByb2Nlc3M6OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3QqIG9iamVjdCkK
IHsKICAgICBzdHJ1Y3QgVHJhbnNmb3JtZXIgZmluYWwgOiBVc2VyRGF0YTo6VHJhbnNmb3JtZXIg
ewpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDE5
NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0xNjgsNiArMTY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdp
bmRvdyh1aW50NjRfdCBwYWdlSUQpOwogCiAgICAgdm9pZCBub25WaXNpYmxlUHJvY2Vzc0NsZWFu
dXBUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzdGF0aXN0aWNzQ2hhbmdlZFRpbWVyRmlyZWQoKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgZGVzdHJveVJlbmRlcmluZ1Jlc291cmNl
cygpOwpAQCAtMzU4LDYgKzM1OSw3IEBAIHByaXZhdGU6CiAKICAgICBIYXNoU2V0PHVpbnQ2NF90
PiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fbm9uVmlzaWJsZVByb2Nl
c3NDbGVhbnVwVGltZXI7CisgICAgV2ViQ29yZTo6VGltZXIgbV9zdGF0aXN0aWNzQ2hhbmdlZFRp
bWVyOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBt
X3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjk2OSw2ICsyOTY5LDggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBX
ZQogICAgIHNldHRpbmdzLnNldFNlcnZpY2VDb250cm9sc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlQ29udHJvbHNFbmFibGVkS2V5KCkp
KTsKICNlbmRpZgogCisgICAgc2V0dGluZ3Muc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZEtleSgpKSk7CisKICAgICBib29sIHByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQgPSBzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnBh
Z2VWaXNpYmlsaXR5QmFzZWRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkS2V5KCkpOwogICAgIGlm
IChtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgIT0gcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxl
ZCkgewogICAgICAgICBtX3Byb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQgPSBwcm9jZXNzU3VwcHJl
c3Npb25FbmFibGVkOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTk3MDYxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDItMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gR2F0aGVyIHJlc291cmNlIGxvYWQgc3Rh
dGlzdGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0Mjc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDcwMjg5Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0
aW5nc0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIF9wb3B1bGF0
ZU1lbnVdKTogTW92ZSBzZXR0aW5nIGZyb20gV0sxLW9ubHkgdG8gYmUKKyAgICAgICAgdW5pdmVy
c2FsbHkgYXBwbGljYWJsZS4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
ZGlkQ2hhbmdlU2V0dGluZ3NdKTogUmVjb2duaXplIHdoZW4gdGhlCisgICAgICAgIFJlc291cmNl
IExvYWQgU3RhdGlzdGljcyBmbGFnIGhhcyBjaGFuZ2VkLgorCiAyMDE2LTAyLTI0ICBOaWtvcyBB
bmRyb25pa29zICA8bmlrb3MuYW5kcm9uaWtvcy13ZWJraXRAY2lzcmEuY2Fub24uY29tLmF1Pgog
CiAgICAgICAgIFt3ZWItYW5pbWF0aW9uc10gQWRkIEFuaW1hdGlvblRpbWVsaW5lLCBEb2N1bWVu
dFRpbWVsaW5lIGFuZCBhZGQgZXh0ZW5zaW9ucyB0byBEb2N1bWVudCBpbnRlcmZhY2UKSW5kZXg6
IFRvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0JKHJldmlzaW9uIDE5
NjgyMSkKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogICAg
IFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiU3VwcHJlc3MgSW5jcmVtZW50YWwgUmVuZGVyaW5n
IGluIE5ldyBXaW5kb3dzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZUluY3JlbWVudGFsUmVuZGVy
aW5nU3VwcHJlc3NlZDopIGluZGVudGVkOk5PXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRs
ZTpAIkVuYWJsZSBBY2NlbGVyYXRlZCBEcmF3aW5nIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZUFj
Y2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQ6KSBpbmRlbnRlZDpOT107CiAgICAgW3NlbGYgX2FkZEl0
ZW1XaXRoVGl0bGU6QCJFbmFibGUgRGlzcGxheSBMaXN0IERyYXdpbmciIGFjdGlvbjpAc2VsZWN0
b3IodG9nZ2xlRGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZDopIGluZGVudGVkOk5PXTsKKyAgICBb
c2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3Mi
IGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBp
bmRlbnRlZDpOT107CiAKICAgICBbc2VsZiBfYWRkSGVhZGVyV2l0aFRpdGxlOkAiV2ViS2l0Mi1v
bmx5IFNldHRpbmdzIl07CiAKQEAgLTE0MSw3ICsxNDIsNiBAQCAtICh2b2lkKV9wb3B1bGF0ZU1l
bnUKIAogICAgIFtzZWxmIF9hZGRIZWFkZXJXaXRoVGl0bGU6QCJXZWJLaXQxLW9ubHkgU2V0dGlu
Z3MiXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBTdWJwaXhlbCBDU1NP
TSBNZXRyaWNzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZUVuYWJsZVN1YlBpeGVsQ1NTT01NZXRy
aWNzOikgaW5kZW50ZWQ6WUVTXTsKLSAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJs
ZSBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBpbmRlbnRlZDpOT107CiB9CiAKIC0gKEJPT0wpdmFs
aWRhdGVNZW51SXRlbTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCkluZGV4OiBUb29scy9NaW5pQnJv
d3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkocmV2aXNpb24g
MTk2ODIxKQorKysgVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDEyIEBACiAKICNpbXBvcnQgIkFwcERl
bGVnYXRlLmgiCiAjaW1wb3J0ICJTZXR0aW5nc0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZyYW1lSW5mby5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tVSURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmln
dXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CkBA
IC0zNDQsNiArMzQ3LDcgQEAgLSAodm9pZClkaWRDaGFuZ2VTZXR0aW5ncwogICAgIHByZWZlcmVu
Y2VzLl9hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkID0gc2V0dGluZ3MuYWNjZWxlcmF0ZWREcmF3
aW5nRW5hYmxlZDsKICAgICBwcmVmZXJlbmNlcy5fcmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxl
ID0gc2V0dGluZ3MucmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlOwogICAgIHByZWZlcmVuY2Vz
Ll9kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkID0gc2V0dGluZ3MuZGlzcGxheUxpc3REcmF3aW5n
RW5hYmxlZDsKKyAgICBwcmVmZXJlbmNlcy5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQg
PSBzZXR0aW5ncy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKIAogICAgIEJPT0wgdXNl
VHJhbnNwYXJlbnRXaW5kb3dzID0gc2V0dGluZ3MudXNlVHJhbnNwYXJlbnRXaW5kb3dzOwogICAg
IGlmICh1c2VUcmFuc3BhcmVudFdpbmRvd3MgIT0gIV93ZWJWaWV3Ll9kcmF3c0JhY2tncm91bmQp
IHsKQEAgLTM3Myw2ICszNzcsMTAgQEAgLSAodm9pZClkaWRDaGFuZ2VTZXR0aW5ncwogICAgICAg
ICB2aXNpYmxlT3ZlcmxheVJlZ2lvbnMgfD0gX1dLV2hlZWxFdmVudEhhbmRsZXJSZWdpb247CiAg
ICAgCiAgICAgcHJlZmVyZW5jZXMuX3Zpc2libGVEZWJ1Z092ZXJsYXlSZWdpb25zID0gdmlzaWJs
ZU92ZXJsYXlSZWdpb25zOworCisgICAgW19jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIHNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOnByZWZlcmVuY2VzLl9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZF07CisgICAgaWYgKHByZWZlcmVuY2VzLl9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCkKKyAgICAgICAgW19jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sIHJlYWRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVGcm9tRGlza0lmTmVlZGVkXTsKIH0KIAogLSAodm9pZCl1
cGRhdGVUaXRsZTooTlNTdHJpbmcgKil0aXRsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272208</attachid>
            <date>2016-02-25 09:32:19 -0800</date>
            <delta_ts>2016-02-25 15:36:46 -0800</delta_ts>
            <desc>Patch (Fixed EFL Build)</desc>
            <filename>bug-154278-20160225093202.patch</filename>
            <type>text/plain</type>
            <size>78094</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE2LTAyLTI0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlTG9hZE9ic2VydmVyOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKTogUmV2
aXNlIGZvcgorICAgICAgICBuZXcgY29uc3RydWN0b3IgYXJndW1lbnQuCisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaXNrKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVhZERhdGFGcm9tRGlza0lmTmVl
ZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6dGFr
ZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2Vy
dmVyOjptZXJnZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpp
c0VtcHR5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
ZGVmYXVsdEZpbGVuYW1lKTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6
ZW5jb2RlKTogUmV2aXNlIHRvIHVzZSBpbnRlcm5hbAorICAgICAgICAnaGlnaExldmVsRG9tYWlu
JyBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNv
ZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om1lcmdlSGFzaENvdW50ZWRTZXQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKTogQWRk
ZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
OgorCiAyMDE2LTAyLTE5ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmxvY2tlZCBwbHVnLWluIHBsYWNlaG9sZGVyIGlzIHNvbWV0aW1lcyBub3Qgc2hvd24uCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3MDIsNyArMjcwMiw3IEBACiAJ
CTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I5MTAx
ODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLzsgfTsKIAkJN0E3
NEVDQkQxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0JD
MTAxODM5REEwMEJGOTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi87
IH07CiAJCTdBOTI5Q0E2MUM1OThBOUUwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5
Q0ExMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLzsgfTsK
LQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5Q0EyMUM1
OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IH07CisJCTdBOTI5
Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTkyOUNBMjFDNTk4Mzc4MDA0
REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBOTM4Njg1MThEQ0MxNDUwMEI4MjYzRCAvKiBW
VFRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBOTM4NjgyMThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLzsgfTsKIAkJ
N0E5Mzg2ODYxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTM4NjgzMThEQ0MxNDUwMEI4MjYzRCAv
KiBWVFRTY2FubmVyLmggKi87IH07CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAvKiBUaWxl
Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUEzQTY5NTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3BwICovOyB9
OwpAQCAtMjQ5MTcsNiArMjQ5MTcsNyBAQAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAv
KiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIz
MzBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyOUE4MTIzQjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJDMEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjlBODEyNDMwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOUE4MTI0MjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjUxNDIsNyArMjUxNDMsNiBAQAogCQkJ
CTk5Q0MwQjRGMThCRTk4NDkwMDZDRUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RDNzM0MTUxOTc3ODk2RDAwNDZCRkM1IC8qIENBUmluZ0J1ZmZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2Vj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNERThCNUVEMUE2OTc3
NzMwMEI0QjY2QSAvKiBDRE1Qcml2YXRlQ2xlYXJLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNE
MzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDRERENTcxNTE4QjU3QTgyMDBBOTRGQ0IgLyogQ0RNU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw4
ICsxOTAsMTAgQEAgYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQcmV2YWxlbnRSZQogICAg
IAogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlc291cmNl
U3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKQog
ewotICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFp
bikpCi0gICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChwcmltYXJ5RG9tYWluLCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpOworICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpIHsKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyBuZXdTdGF0aXN0aWNzKHByaW1hcnlEb21haW4pOworICAgICAgICBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5zZXQocHJpbWFyeURvbWFpbiwgbmV3U3RhdGlzdGljcyk7CisgICAgfQogICAg
IAogICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHByaW1hcnlEb21haW4p
LT52YWx1ZTsKIH0KQEAgLTI0OSw3ICsyNTEsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
Ojp3cml0ZURhdGFUb0RpCiAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKCJvcmlnaW5zVmlzaXRl
ZCIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7CiAgICAgCiAgICAgZW5jb2Rlci0+
ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCksIFt0aGlzXShLZXllZEVu
Y29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgU3RhdGlzdGljc1ZhbHVlJiBvcmlnaW4pIHsKLSAg
ICAgICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIsIG9yaWdpbi5rZXkpOworICAg
ICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lcik7CiAgICAgfSk7CiAgICAgCiAg
ICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVsbF9icm93c2luZ19zZXNz
aW9uIik7CkBAIC0yNjMsOCArMjY1LDggQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3Jp
dGVEYXRhVG9EaQogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwog
ICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zpc2l0ZWQiLCAxKTsKICAgICAKLSAg
ICBlbmNvZGVyLT5lbmNvZGVPYmplY3Qob3JpZ2luLCByZXNvdXJjZVN0YXRpc3RpY3MsIFt0aGlz
LCAmb3JpZ2luXShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MmIHJlc291cmNlU3RhdGlzdGljcykgewotICAgICAgICByZXNvdXJjZVN0YXRpc3RpY3Mu
ZW5jb2RlKGVuY29kZXIsIG9yaWdpbik7CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0KG9yaWdp
biwgcmVzb3VyY2VTdGF0aXN0aWNzLCBbdGhpc10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpY3MpIHsKKyAgICAgICAg
cmVzb3VyY2VTdGF0aXN0aWNzLmVuY29kZShlbmNvZGVyKTsKICAgICB9KTsKICAgICAKICAgICBT
dHJpbmcgbGFiZWwgPSBvcmlnaW47CkBAIC0zMDcsOCArMzA5LDggQEAgdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6cmVhZERhdGFGcm9tRAogICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNv
ZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgb3JpZ2luKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3Rp
Y3M7Ci0gICAgICAgIGlmICghc3RhdGlzdGljcy5kZWNvZGUoZGVjb2RlcklubmVyLCBvcmlnaW4p
KQorICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3RpY3Mob3JpZ2luKTsKKyAg
ICAgICAgaWYgKCFzdGF0aXN0aWNzLmRlY29kZShkZWNvZGVySW5uZXIpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChvcmln
aW4sIHN0YXRpc3RpY3MpOwpAQCAtMzY5LDUgKzM3MSwyOSBAQCBTdHJpbmcgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnN0YXRpc3RpY3NGCiAgICAgYXV0byYgc3RhdGlzdGljcyA9IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmZpbmQob3JpZ2luKS0+dmFsdWU7CiAgICAgcmV0dXJuICJTdGF0aXN0aWNz
IGZvciAiICsgb3JpZ2luICsgIjpcbiIgKyBzdGF0aXN0aWNzLnRvU3RyaW5nKCk7CiB9Ci0gICAg
CisKK1ZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
dGFrZVN0YXRpc3RpY3MoKQoreworICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBz
dGF0aXN0aWNzOworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAudmFsdWVzKCkpCisgICAgICAgIHN0YXRpc3RpY3MuYXBwZW5kKHN0YXRpc3RpYyk7CisK
KyAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOworCisgICAgcmV0dXJuIHN0YXRp
c3RpY3M7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Om1lcmdlU3RhdGlzdGljcyhj
b25zdCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIHN0YXRpc3RpY3MpCit7CisgICAg
Zm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7CisgICAgICAgIGF1dG8gaXRlciA9
IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQoc3RhdGlzdGljLmhpZ2hMZXZlbERvbWFpbik7
CisgICAgICAgIGlmIChpdGVyID09IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpKSB7Cisg
ICAgICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQoc3RhdGlzdGljLmhpZ2hMZXZl
bERvbWFpbiwgc3RhdGlzdGljKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisK
KyAgICAgICAgaXRlci0+dmFsdWUubWVyZ2Uoc3RhdGlzdGljKTsKKyAgICB9Cit9CisKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oCShyZXZp
c2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsOSArNDMsOSBAQCBjbGFzcyBSZXNvdXJjZUxvYWRP
YnNlcnZlciB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlc291cmNlTG9h
ZE9ic2VydmVyJiBzaGFyZWRPYnNlcnZlcigpOwogICAgIAotICAgIHZvaWQgbG9nRnJhbWVOYXZp
Z2F0aW9uKGJvb2wgaXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYg
dGFyZ2V0VVJMLCBib29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7Ci0g
ICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoYm9vbCBpc1JlZGlyZWN0LCBjb25zdCBVUkwm
IHNvdXJjZVVSTCwgY29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJM
KTsKLSAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBEb2N1bWVudCYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGJvb2wgaXNSZWRpcmVjdCwgY29u
c3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBib29sIGlzTWFpbkZyYW1l
LCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2dT
dWJyZXNvdXJjZUxvYWRpbmcoYm9vbCBpc1JlZGlyZWN0LCBjb25zdCBVUkwmIHNvdXJjZVVSTCwg
Y29uc3QgVVJMJiB0YXJnZXRVUkwsIGNvbnN0IFVSTCYgbWFpbkZyYW1lVVJMKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBEb2N1bWVudCYpOwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZURhdGFUb0Rpc2soKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOwpAQCAtNTMsNiArNTMsMTQgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JPcmlnaW4o
Y29uc3QgU3RyaW5nJik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KKworICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGlj
cygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBtZXJnZVN0YXRpc3RpY3MoY29uc3QgVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+Jik7CisgICAgCisgICAgc3RhdGljIFN0cmluZyBk
ZWZhdWx0RmlsZW5hbWUoKSB7IHJldHVybiBBU0NJSUxpdGVyYWwoImZ1bGxfYnJvd3Npbmdfc2Vz
c2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIpOyB9CisKIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJp
bmcmKTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsOSAr
NzYsOSBAQCBzdGF0aWMgdm9pZCBlbmNvZGVIYXNoQ291bnRlZFNldChLZXllZEVuCiAgICAgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlKEtleWVkRW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pIGNvbnN0Cit2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5j
b2Rlci5lbmNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgb3JpZ2luKTsKKyAg
ICBlbmNvZGVyLmVuY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBoaWdoTGV2
ZWxEb21haW4pOwogICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBlbmNvZGVyLmVu
Y29kZUJvb2woImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbik7CkBAIC0x
MzAsMTQgKzEzMCwxMSBAQCBzdGF0aWMgdm9pZCBkZWNvZGVIYXNoQ291bnRlZFNldChLZXllZERl
CiAgICAgfSk7CiB9CiAKLWJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVk
RGVjb2RlciYgZGVjb2RlciwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitib29sIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgU3RyaW5n
IHN0b3JlZE9yaWdpbjsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRS
ZXNvdXJjZU9yaWdpbiIsIHN0b3JlZE9yaWdpbikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0
cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBoaWdoTGV2ZWxEb21haW4pKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgQVNTRVJUX1VOVVNFRChvcmlnaW4sIHN0b3JlZE9y
aWdpbiA9PSBvcmlnaW4pOwotICAgIAogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0
aW9uKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA3LDQgKzMwNCw0NyBAQCBTdHJpbmcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6dG9TdHJpbmcoCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9T
dHJpbmcoKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgdm9pZCBtZXJnZUhh
c2hDb3VudGVkU2V0KEhhc2hDb3VudGVkU2V0PFQ+JiB0bywgY29uc3QgSGFzaENvdW50ZWRTZXQ8
VD4mIGZyb20pCit7CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGZyb20pCisgICAgICAgIHRvLmFk
ZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjptZXJnZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBvdGhlcikKK3sKKyAgICBB
U1NFUlQob3RoZXIuaGlnaExldmVsRG9tYWluID09IGhpZ2hMZXZlbERvbWFpbik7CisKKyAgICBo
YWRVc2VySW50ZXJhY3Rpb24gfD0gb3RoZXIuaGFkVXNlckludGVyYWN0aW9uOworICAgIAorICAg
IC8vIFRvcCBmcmFtZSBzdGF0cworICAgIHRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBv
dGhlci50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgdG9wRnJhbWVIYXNCZWVuUmVk
aXJlY3RlZEZyb20gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAg
dG9wRnJhbWVJbml0aWFsTG9hZENvdW50ICs9IG90aGVyLnRvcEZyYW1lSW5pdGlhbExvYWRDb3Vu
dDsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbyArPSBvdGhlci50b3BGcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRUbzsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tICs9IG90aGVy
LnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgdG9wRnJhbWVIYXNCZWVuTmF2aWdh
dGVkVG9CZWZvcmUgfD0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmU7Cisg
ICAgCisgICAgLy8gU3ViZnJhbWUgc3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMsIG90aGVyLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bnMpOworICAgIHN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBvdGhlci5zdWJmcmFtZUhh
c0JlZW5SZWRpcmVjdGVkVG87CisgICAgc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb20gKz0g
b3RoZXIuc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAgbWVyZ2VIYXNoQ291bnRl
ZFNldChzdWJmcmFtZVVuaXF1ZVJlZGlyZWN0c1RvLCBvdGhlci5zdWJmcmFtZVVuaXF1ZVJlZGly
ZWN0c1RvKTsKKyAgICBzdWJmcmFtZVN1YlJlc291cmNlQ291bnQgKz0gb3RoZXIuc3ViZnJhbWVT
dWJSZXNvdXJjZUNvdW50OworICAgIHN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvICs9IG90aGVy
LnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvOworICAgIHN1YmZyYW1lSGFzQmVlbk5hdmlnYXRl
ZEZyb20gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsKKyAgICBzdWJmcmFt
ZUhhc0JlZW5Mb2FkZWRCZWZvcmUgfD0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTG9hZGVkQmVmb3Jl
OworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNl
dChzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLCBvdGhlci5zdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW5zKTsKKyAgICBzdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50
ICs9IG90aGVyLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQ7CisgICAgc3VicmVz
b3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb20gKz0gb3RoZXIuc3VicmVzb3VyY2VIYXNCZWVuUmVk
aXJlY3RlZEZyb207CisgICAgc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZFRvICs9IG90aGVy
LnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0
KHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIG90aGVyLnN1YnJlc291cmNlVW5pcXVlUmVk
aXJlY3RzVG8pOworICAgIAorICAgIC8vIFByZXZhbGVudCByZXNvdXJjZSBzdGF0cworICAgIG1l
cmdlSGFzaENvdW50ZWRTZXQocmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdp
bnMsIG90aGVyLnJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zKTsKKyAg
ICBpc1ByZXZhbGVudFJlc291cmNlIHw9IG90aGVyLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTYgKzM1LDI3IEBAIGNsYXNz
IEtleWVkRGVjb2RlcjsKIGNsYXNzIEtleWVkRW5jb2RlcjsKIAogc3RydWN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgeworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MoY29uc3QgU3RyaW5nJiBw
cmltYXJ5RG9tYWluKQorICAgICAgICA6IGhpZ2hMZXZlbERvbWFpbihwcmltYXJ5RG9tYWluKQor
ICAgIHsgfQorCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCisgICAgeyB9CisKICAgICBi
b29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9y
aWdpbnNWaXNpdGVkU29GYXIpOwogCiAgICAgYm9vbCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigp
IGNvbnN0OwogICAgIGJvb2wgaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBj
b25zdDsKIAotICAgIHZvaWQgZW5jb2RlKEtleWVkRW5jb2RlciYsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKSBjb25zdDsKLSAgICBib29sIGRlY29kZShLZXllZERlY29kZXImLCBjb25zdCBTdHJpbmcm
IG9yaWdpbik7CisgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7CisgICAgYm9v
bCBkZWNvZGUoS2V5ZWREZWNvZGVyJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsK
IAorICAgIHZvaWQgbWVyZ2UoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworCisgICAg
U3RyaW5nIGhpZ2hMZXZlbERvbWFpbjsKKwogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBi
b29sIGhhZFVzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw3OCBAQAorMjAxNi0wMi0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBHYXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0
aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQy
NzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzAyODkyPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZCBuZXcg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIGZpbGVzIHRvIGJ1aWxkLgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLm1ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBE
aXR0by4KKyAgICAgICAgKiBQbGF0Zm9ybUdUSy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxh
dGZvcm1NYWMuY21ha2U6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6
IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6ZGVjb2Rl
KTogU3VwcG9ydCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAgICAoSVBD
OjplbmNvZGVIYXNoQ291bnRlZFNldCk6IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjplbmNvZGUpOiBBZGRlZC4KKyAgICAgICAgKElQ
Qzo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOiBBZGRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRD
b2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZGVjb2RlKTogQWRkZWQuCisgICAgICAgICog
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVm
ZXJlbmNlc0RlZmluaXRpb25zLmg6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQgcHJlZmVyZW5jZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6CisgICAgICAgIChXS0NvbnRl
eHRHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUpOiBBZGRlZC4KKyAgICAgICAgKFdLQ29u
dGV4dFNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yYWdlUGF0aCk6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXNSZWZQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1ByZWZlcmVuY2VzLm1tOgorICAgICAgICAoLVtXS1ByZWZlcmVuY2VzIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZF0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tQcmVmZXJlbmNlcyBfc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wg
X3NldEF1dG9tYXRpb25TZXNzaW9uOl0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIHNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29s
IHJlYWRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVGcm9tRGlza0lmTmVlZGVkXSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQYXRo
KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpzZXRTdGF0aXN0aWNz
U3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdGF0ZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6d3JpdGVUb0Rp
c2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaDog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5t
ZXNzYWdlcy5pbjogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKTogSW5p
dGlhbGl6ZSB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGRhdGEgb2JqZWN0
LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6fldlYlByb2Nlc3NQb29sKTogU2h1
dCBkb3duIHRoZSByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgZGF0YSBvYmplY3Qu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzZXRTdGF0aXN0aWNzU3RvcmFnZVBh
dGgpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnN0YXRpc3RpY3NT
dG9yYWdlUGF0aCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3Jh
Z2VQYXRoKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRT
dGF0aXN0aWNzU3RvcmFnZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIGZp
bGVzIHRvIGJ1aWxkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OldlYlByb2Nlc3MpOiBJbml0aWFsaXplZCBzdGF0aXN0aWNzIGNoYW5nZWQgbm90aWZpY2F0aW9u
IHRpbWVyLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzdGF0aXN0aWNzQ2hhbmdlZFRp
bWVyRmlyZWQpOiBBZGRlZC4gU2VuZCBidW5kbGVzIG9mIHNpdGUgbG9hZAorICAgICAgICBzdGF0
aXN0aWNzIHRvIHRoZSBVSVByb2Nlc3Mgb24gYSBzZXQgaW50ZXJ2YWwuIENsZWFyIG91dCBsb2Nh
bCBjYWNoZSBhZnRlciBlYWNoIHNlbmQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisKIDIwMTYtMDItMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCAiZGF0YWJhc2VQcm9jZXNzRGlkQ3Jhc2giIHRvIHRoZSBXS0NvbnRleHRDbGll
bnQ7IEFkb3B0IGl0IGluIFdLVFIuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTY2Myw2ICs2NjMsNyBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFNo
YXJlZC9QbHVnaW5zL05QT2JqZWN0TWVzc2FnZVJlY2VpdmVyLm1lc3NhZ2VzLmluCiAKICAgICBV
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5tZXNzYWdlcy5pbgorICAgIFVJUHJvY2Vzcy9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJCYXR0ZXJ5TWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5tZXNz
YWdlcy5pbgpJbmRleDogU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTY4
MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC05OCw2ICs5OCw3IEBAIE1FU1NBR0VfUkVDRUlWRVJTID0gXAogICAgIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkgXAogICAgIFJlbW90ZU9iamVjdFJlZ2lzdHJ5IFwKICAgICBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciBcCisJUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
IFwKICAgICBTZWNJdGVtU2hpbSBcCiAgICAgU2VjSXRlbVNoaW1Qcm94eSBcCiAgICAgU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlciBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVm
bC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQko
cmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
CiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVu
ZG9Db250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdO
b25lLmNwcAorICAgIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwCiAK
ICAgICBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBA
QCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9D
b250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKICAg
ICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKyAgICBVSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9D
L2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFj
LmNtYWtlCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5j
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBAIGxpc3QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogICAgIFNoYXJlZC9tYWMvV2ViSGl0VGVzdFJlc3VsdERhdGEubW0KICAgICBT
aGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1tCiAKKyAgICBVSVByb2Nlc3MvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAogICAgIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAogCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAko
cmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+CkBAIC0yMDQ0LDQgKzIwNDUsMTU2IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6ZGUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
c3RhdGljIHZvaWQgZW5jb2RlSGFzaENvdW50ZWRTZXQoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBIYXNoQ291bnRlZFNldDxTdHJpbmc+JiBoYXNoQ291bnRlZFNldCkKK3sKKyAgICBl
bmNvZGVyIDw8IGhhc2hDb3VudGVkU2V0LnNpemUoKTsKKworICAgIGZvciAoYXV0byBlbnRyeSA6
IGhhc2hDb3VudGVkU2V0KSB7CisgICAgICAgIGVuY29kZXIgPDwgZW50cnkua2V5OworICAgICAg
ICBlbmNvZGVyIDw8IGVudHJ5LnZhbHVlOworICAgIH0KK30KKwordm9pZCBBcmd1bWVudENvZGVy
PFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKQorewor
ICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5oaWdoTGV2ZWxEb21haW47CisgICAgCisgICAgLy8g
VXNlciBpbnRlcmFjdGlvbgorICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJh
Y3Rpb247CisgICAgCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgZW5jb2RlciA8PCBzdGF0
aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlOworICAgIGVuY29kZXIgPDwg
c3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgZW5jb2RlciA8PCBz
dGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29kZXIgPDwg
c3RhdGlzdGljcy50b3BGcmFtZUluaXRpYWxMb2FkQ291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0
aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlz
dGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tOworICAgIAorICAgIC8vIFN1YmZyYW1l
IHN0YXRzCisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJl
Zm9yZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3Rl
ZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVk
RnJvbTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50
OworICAgIGVuY29kZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsIHN0YXRpc3RpY3Muc3ViZnJhbWVV
bmRlclRvcEZyYW1lT3JpZ2lucyk7CisgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5jb2Rlciwg
c3RhdGlzdGljcy5zdWJmcmFtZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0
aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgCisgICAgLy8gU3VicmVz
b3VyY2Ugc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVu
UmVkaXJlY3RlZEZyb207CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFz
QmVlblJlZGlyZWN0ZWRUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VI
YXNCZWVuU3VicmVzb3VyY2VDb3VudDsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVz
b3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5z
VmlzaXRlZDsKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCBzdGF0aXN0aWNzLnN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMpOworICAgIGVuY29kZUhhc2hDb3VudGVkU2V0
KGVuY29kZXIsIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAg
CisgICAgLy8gUHJldmFsZW50IFJlc291cmNlCisgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQoZW5j
b2Rlciwgc3RhdGlzdGljcy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lu
cyk7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisK
K3N0YXRpYyBib29sIGRlY29kZUhhc2hDb3VudGVkU2V0KEFyZ3VtZW50RGVjb2RlciYgZGVjb2Rl
ciwgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiYgaGFzaENvdW50ZWRTZXQpCit7CisgICAgdW5zaWdu
ZWQgZW50cmllczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGVudHJpZXMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJpZXM7ICsraSkg
eworICAgICAgICBTdHJpbmcgb3JpZ2luOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9y
aWdpbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICB1bnNp
Z25lZCBjb3VudDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3VudCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgaGFzaENvdW50ZWRTZXQuYWRkKG9yaWdpbiwg
Y291bnQpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFyZ3VtZW50Q29k
ZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29k
ZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MpCit7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0
aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNC
ZWVuUmVkaXJlY3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSW5pdGlhbExvYWRDb3VudCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRp
c3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVl
bk5hdmlnYXRlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3Vi
ZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVI
YXNCZWVuTG9hZGVkQmVmb3JlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFt
ZVN1YlJlc291cmNlQ291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29k
ZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsIHN0YXRpc3RpY3Muc3ViZnJhbWVVbmlxdWVSZWRpcmVj
dHNUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZy
YW1lSGFzQmVlbk5hdmlnYXRlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNl
SGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3Vy
Y2VDb3VudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlk
ZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsIHN0YXRpc3RpY3Mu
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rlciwgc3RhdGlzdGljcy5zdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQorICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQo
ZGVjb2Rlciwgc3RhdGlzdGljcy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3Jp
Z2lucykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBJUEMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJl
dmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04MCw2ICs4MCw3IEBAIHN0cnVjdCBQ
YXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBzdHJ1Y3QgUGx1
Z2luSW5mbzsKIHN0cnVjdCBSZWNlbnRTZWFyY2g7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczsKIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNr
aW5nUmVzdWx0Owogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRhOwpAQCAtNDU1LDYgKzQ1NiwxMiBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6CiAgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmKTsK
IH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmKTsKK307CisKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKICNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzRGVmaW5p
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNEZWZpbml0aW9ucy5oCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNEZWZpbml0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsNiAr
MjU1LDcgQEAKICAgICBtYWNybyhJZ25vcmVWaWV3cG9ydFNjYWxpbmdDb25zdHJhaW50cywgaWdu
b3JlVmlld3BvcnRTY2FsaW5nQ29uc3RyYWludHMsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBt
YWNybyhGb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSwgZm9yY2VBbHdheXNVc2VyU2NhbGFibGUsIEJv
b2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oUmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxl
LCByZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAg
bWFjcm8oUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQsIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFD
SF9XRUJLSVRfREVCVUdfVUlOVDMyX1BSRUZFUkVOQ0UobWFjcm8pIFwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEz
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLAogICAgICAg
ICBQbHVnaW5TaXRlRGF0YU1hbmFnZXIsCiAgICAgICAgIFByZWZlcmVuY2VzLAorICAgICAgICBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUsCiAgICAgICAgIFJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbFJlc3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRM
aXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9uIDE5NjgyMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MTMyLDYgKzEzMiw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZVJ1bkJlZm8K
IHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZVJ1bkphdmFTY3JpcHRBbGVydFJlc3Vs
dExpc3RlbmVyKiBXS1BhZ2VSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lclJlZjsKIHR5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0
TGlzdGVuZXIqIFdLUGFnZVJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXJSZWY7CiB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2VSdW5KYXZhU2NyaXB0UHJvbXB0UmVzdWx0
TGlzdGVuZXIqIFdLUGFnZVJ1bkphdmFTY3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lclJlZjsKK3R5
cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKiBX
S1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLVGV4dENoZWNrZXIqIFdLVGV4dENoZWNrZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBPcGFxdWVXS1Nlc3Npb24qIFdLU2Vzc2lvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9w
YXF1ZVdLU2Vzc2lvblN0YXRlKiBXS1Nlc3Npb25TdGF0ZVJlZjsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUuaCIKKworI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29sKiBw
cm9jZXNzUG9vbCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZSgqcHJvY2Vzc1Bvb2wpKTsKK30KKworUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQ
b29sKQorICAgIDogbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKK3sKKyAgICBtX3Byb2Nlc3NQ
b29sLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKCkKK3sKK30KKwordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyID0g
c3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRPYnNlcnZlcj4oKTsKKyAgICBtX3Jlc291cmNl
TG9hZE9ic2VydmVyLT5zZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShwYXRoKTsKK30KKwor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NV
cGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgb3Jp
Z2lucykKK3sKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyLT5tZXJnZVN0YXRpc3RpY3Mob3Jp
Z2lucyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpyZWFkRGF0YUZy
b21EaXNrSWZOZWVkZWQoKQoreworICAgIGlmIChtX3Jlc291cmNlTG9hZE9ic2VydmVyKQorICAg
ICAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyLT5yZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsK
K30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OndyaXRlVG9EaXNrKCkKK3sK
KyAgICBpZiAobV9yZXNvdXJjZUxvYWRPYnNlcnZlcikKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRP
YnNlcnZlci0+d3JpdGVEYXRhVG9EaXNrKCk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlX2gKKyNkZWZpbmUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlX2gKKworI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI7CitzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nl
c3NQb29sOworCitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGU+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU+IGNyZWF0ZShXZWJQcm9jZXNz
UG9vbCopOworICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgpOworICAg
IAorICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7
CisgICAgCisgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpOworCisgICAgdm9p
ZCB3cml0ZVRvRGlzaygpOworICAgIHZvaWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Cisg
ICAgCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShX
ZWJQcm9jZXNzUG9vbCYpOworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVz
c2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICAKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9j
ZXNzUG9vbDsKKyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI+IG1fcmVzb3VyY2VMb2FkT2JzZXJ2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIHsK
KyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4gb3JpZ2lucykKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNs
dWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xNzUs
NiArMTc2LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogCiAg
ICAgLy8gTk9URTogVGhlc2Ugc3ViLW9iamVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBt
X21lc3NhZ2VSZWNlaXZlck1hcC4uCiAgICAgbV9pY29uRGF0YWJhc2UgPSBXZWJJY29uRGF0YWJh
c2U6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGU6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MtPnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KHN0YXRpc3RpY3NTdG9yYWdl
UGF0aCgpKTsKIAogICAgIGFkZFN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwog
ICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CkBAIC0yMjks
NiArMjMyLDkgQEAgV2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCgpCiAgICAgICAgIGl0
LT52YWx1ZS0+Y2xlYXJQcm9jZXNzUG9vbCgpOwogICAgIH0KIAorICAgIC8vIEZJWE1FKDE1NDY0
Mik6IFRoaXMgc2hvdWxkIG5vdCBiZSBkb25lIGluIG9uZSBsb25nIG9wZXJhdGlvbiB3aGVuIGV4
aXRpbmcuCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT53cml0ZVRvRGlzaygpOworICAg
IAogICAgIG1faWNvbkRhdGFiYXNlLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9pY29uRGF0YWJhc2Ut
PmNsZWFyUHJvY2Vzc1Bvb2woKTsKICAgICBXZWJJY29uRGF0YWJhc2UqIHJhd0ljb25EYXRhYmFz
ZSA9IG1faWNvbkRhdGFiYXNlLnJlbGVhc2UoKS5sZWFrUmVmKCk7CkBAIC0xMDUzLDYgKzEwNTks
MjEgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjppY29uRGF0YWJhc2VQYXRoKAogICAgIHJldHVy
biBwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRoKCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnNldFN0YXRpc3RpY3NTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0aCA9IHBhdGg7CisgICAgaWYgKCFtX292
ZXJyaWRlU3RhdGlzdGljc1N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5zZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShwYXRoKTsKK30K
KworU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdAor
eworICAgIGlmICghbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0aC5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVTdGF0aXN0aWNzU3RvcmFnZVBhdGg7CisgICAgCisgICAg
cmV0dXJuIHBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpOworfQorCiAjaWYg
RU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6Y29va2llU3Rv
cmFnZURpcmVjdG9yeSgpIGNvbnN0CiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzLCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzksNiArNzksNyBAQCBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBEb3dubG9hZFByb3h5OworY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlOwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb247CiBjbGFzcyBXZWJDb250ZXh0
U3VwcGxlbWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKQEAgLTIyOCw2ICsyMjksNyBAQCBw
dWJsaWM6CiAgICAgV2ViQ29udGV4dENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7
IH0KIAogICAgIFdlYkljb25EYXRhYmFzZSogaWNvbkRhdGFiYXNlKCkgY29uc3QgeyByZXR1cm4g
bV9pY29uRGF0YWJhc2UuZ2V0KCk7IH0KKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUq
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5nZXQoKTsgfQogCiAgICAgc3RydWN0IFN0YXRpc3RpY3MgewogICAgICAg
ICB1bnNpZ25lZCB3a1ZpZXdDb3VudDsKQEAgLTI0MCw2ICsyNDIsOSBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIGljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKICAgICB2b2lkIHNldENvb2tpZVN0b3Jh
Z2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBkaXIpIHsgbV9vdmVycmlkZUNvb2tpZVN0b3JhZ2VE
aXJlY3RvcnkgPSBkaXI7IH0KIAorICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKGNv
bnN0IFN0cmluZyYpOworICAgIFN0cmluZyBzdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdDsK
KwogICAgIHZvaWQgdXNlVGVzdGluZ05ldHdvcmtTZXNzaW9uKCk7CiAgICAgYm9vbCBpc1VzaW5n
VGVzdGluZ05ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVc2VUZXN0aW5n
TmV0d29ya1Nlc3Npb247IH0KIApAQCAtMzgyLDYgKzM4Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBsYW5ndWFnZUNoYW5nZWQoKTsKIAogICAgIFN0cmluZyBwbGF0Zm9ybURlZmF1bHRJY29uRGF0
YWJhc2VQYXRoKCkgY29uc3Q7CisgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NT
dG9yYWdlUGF0aCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCBFTkFCTEUoU0VDQ09N
UF9GSUxURVJTKQogICAgIFN0cmluZyBjb29raWVTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3Q7CkBA
IC00NjUsNiArNDcxLDcgQEAgcHJpdmF0ZToKICAgICBkb3VibGUgbV9tZW1vcnlTYW1wbGVySW50
ZXJ2YWw7CiAKICAgICBSZWZQdHI8V2ViSWNvbkRhdGFiYXNlPiBtX2ljb25EYXRhYmFzZTsKKyAg
ICBSZWZQdHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlPiBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3M7CiAKICAgICBjb25zdCBSZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNp
dGVEYXRhU3RvcmU7CiAKQEAgLTQ4NSw2ICs0OTIsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5n
IG1fb3ZlcnJpZGVJY29uRGF0YWJhc2VQYXRoOwogICAgIFN0cmluZyBtX292ZXJyaWRlQ29va2ll
U3RvcmFnZURpcmVjdG9yeTsKKyAgICBTdHJpbmcgbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdl
UGF0aDsKIAogICAgIGJvb2wgbV9zaG91bGRVc2VUZXN0aW5nTmV0d29ya1Nlc3Npb247CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHJldmlzaW9u
IDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBjbGFzcyBBdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXI7CiBjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdFByb3h5OwogY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q7
CitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU7CiBjbGFzcyBVc2VyTWVkaWFQZXJt
aXNzaW9uQ2hlY2tQcm94eTsKIGNsYXNzIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHk7
CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0xNTIsNiArMTUzLDcgQEAgV0tfQUREX0FQ
SV9NQVBQSU5HKFdLUGFnZVJlZiwgV2ViUGFnZVBybwogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJl
ZmVyZW5jZXNSZWYsIFdlYlByZWZlcmVuY2VzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUHJvdGVj
dGlvblNwYWNlUmVmLCBXZWJQcm90ZWN0aW9uU3BhY2UpCiBXS19BRERfQVBJX01BUFBJTkcoV0tS
ZW5kZXJMYXllclJlZiwgV2ViUmVuZGVyTGF5ZXIpCitXS19BRERfQVBJX01BUFBJTkcoV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYsIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSkK
IFdLX0FERF9BUElfTUFQUElORyhXS1JlbmRlck9iamVjdFJlZiwgV2ViUmVuZGVyT2JqZWN0KQog
V0tfQUREX0FQSV9NQVBQSU5HKFdLU2Vzc2lvblN0YXRlUmVmLCBBUEk6OlNlc3Npb25TdGF0ZSkK
IFdLX0FERF9BUElfTUFQUElORyhXS1RleHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZp
c2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiQVBJVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAi
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oIgogI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCkBA
IC01NzcsMyArNTc4LDE0IEBAIHZvaWQgV0tDb250ZXh0U2V0Rm9udFdoaXRlbGlzdChXS0NvbnRl
eHQKIHsKICAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldEZvbnRXaGl0ZWxpc3QodG9JbXBsKGFy
cmF5UmVmKSk7CiB9CisKK1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlUmVmIFdLQ29udGV4
dEdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZikK
K3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0U2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JhZ2VQYXRoKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1N0cmluZ1JlZiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGF0aCkKK3sKKyAgICB0b0ltcGwoY29udGV4dFJlZiktPnNldFN0
YXRpc3RpY3NTdG9yYWdlUGF0aCh0b0ltcGwocmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGgpLT5z
dHJpbmcoKSk7Cit9CisKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw3IEBAIFdLX0VY
UE9SVCBXS01lZGlhU2Vzc2lvbkZvY3VzTWFuYWdlclJlZiAKIFdLX0VYUE9SVCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWYgV0tDb250ZXh0R2V0Tm90aWZpY2F0aW9uTWFuYWdlcihXS0NvbnRleHRS
ZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tQbHVnaW5TaXRlRGF0YU1hbmFnZXJSZWYgV0tDb250
ZXh0R2V0UGx1Z2luU2l0ZURhdGFNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VY
UE9SVCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFJlc291cmNlQ2FjaGVN
YW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKK1dLX0VYUE9SVCBXS1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZVJlZiBXS0NvbnRleHRHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYpOwogCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRHZXRT
dGF0aXN0aWNzRnVuY3Rpb24pKFdLRGljdGlvbmFyeVJlZiBzdGF0aXN0aWNzLCBXS0Vycm9yUmVm
IGVycm9yLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
R2V0U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0
LCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0ZS5oCShyZXZp
c2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw4IEBAIFdLX0VYUE9SVCB2b2lk
IFdLQ29udGV4dFNldE1lbW9yeUNhY2hlRGkKIAogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
Rm9udFdoaXRlbGlzdChXS0NvbnRleHRSZWYsIFdLQXJyYXlSZWYpOwogCitXS19FWFBPUlQgdm9p
ZCBXS0NvbnRleHRTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZVBhdGgoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoKTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDEyLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTQ1NiwzICsxNDU2LDEzIEBAIGJvb2wgV0tQcmVmZXJlbmNl
c0dldE1vY2tDYXB0dXJlRGV2aWNlc0UKIHsKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+bW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwogfQorCit2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK2Jvb2wgV0tQ
cmVmZXJlbmNlc0dldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUu
aAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXNSZWZQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw2ICszOTksMTAg
QEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFJlc291cmNlVQogV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1NldE1vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZiwgYm9vbCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0TW9ja0NhcHR1cmVE
ZXZpY2VzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIAorLy8gRGVmYXVsdHMgdG8gZmFsc2Uu
CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVu
Y2VzR2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZik7Cisg
ICAgCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgiCisKKyNpbmNsdWRlICJBUElEYXRh
LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgiCisjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEko
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpBUElUeXBlKTsKK30KKwordm9pZCBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZVJlYWREYXRhRnJvbURpc2tJZk5lZWRlZChXS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZVJlZiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYpCit7
CisgICAgdG9JbXBsKHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZVJlZiktPnJlYWREYXRhRnJv
bURpc2tJZk5lZWRlZCgpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCisjZGVmaW5l
IFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jh
c2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19F
WFBPUlQgV0tUeXBlSUQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVHZXRUeXBlSUQoKTsK
KworV0tfRVhQT1JUIHZvaWQgV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWFkRGF0YUZy
b21EaXNrSWZOZWVkZWQoV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc1JlZik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNl
bmRpZiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oICovCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzLm1tCShy
ZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyNyw2ICsyMjcsMTYgQEAgLSAodm9pZClf
c2V0UmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlOgogICAgIF9wcmVmZXJlbmNlcy0+c2V0UmVz
b3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlKHJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSk7CiB9
CiAKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCit7CisgICAgcmV0dXJu
IF9wcmVmZXJlbmNlcy0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKK30KKworLSAo
dm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQKK3sKKyAgICBfcHJlZmVyZW5jZXMtPnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKK30KKwogLSAo
X1dLRGVidWdPdmVybGF5UmVnaW9ucylfdmlzaWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMKIHsKICAg
ICByZXR1cm4gX3ByZWZlcmVuY2VzLT52aXNpYmxlRGVidWdPdmVybGF5UmVnaW9ucygpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MCw2ICs2MCw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tKYXZh
U2MKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFNpbXBsZUxpbmVMYXlvdXREZWJ1
Z0JvcmRlcnNFbmFibGVkOikgQk9PTCBfc2ltcGxlTGluZUxheW91dERlYnVnQm9yZGVyc0VuYWJs
ZWQgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDopIEJPT0wgX2FjY2VsZXJhdGVkRHJhd2lu
Z0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogQHByb3BlcnR5
IChub25hdG9taWMsIHNldHRlcj1fc2V0RGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZDopIEJPT0wg
X2Rpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lP
U19UQkEpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKIAog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDop
IEJPT0wgX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwu
aCIKICNpbXBvcnQgIkRvd25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUuaCIKICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldL
T2JqZWN0LmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgpAQCAtMjUxLDYgKzI1MiwxNyBAQCAt
ICh2b2lkKV9zZXRBdXRvbWF0aW9uU2Vzc2lvbjooX1dLQXV0b21hCiAgICAgX3Byb2Nlc3NQb29s
LT5zZXRBdXRvbWF0aW9uU2Vzc2lvbihhdXRvbWF0aW9uU2Vzc2lvbiA/IGF1dG9tYXRpb25TZXNz
aW9uLT5fc2Vzc2lvbi5nZXQoKSA6IG51bGxwdHIpOwogfQogCistICh2b2lkKXNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKXZhbHVlCit7CisgICAgV2ViQ29yZTo6U2V0dGlu
Z3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHZhbHVlKTsKK30KKworLSAodm9p
ZClyZWFkUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlRnJvbURpc2tJZk5lZWRlZAoreworICAg
IGlmIChhdXRvKiBzdGF0aXN0aWNzID0gX3Byb2Nlc3NQb29sLT5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUoKSkKKyAgICAgICAgc3RhdGlzdGljcy0+cmVhZERhdGFGcm9tRGlza0lmTmVlZGVk
KCk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDkgQEAKIC0gKHZvaWQpX2F1dG9tYXRpb25DYXBhYmlsaXRpZXNEaWRDaGFuZ2UgV0tfQVZB
SUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogLSAodm9pZClfc2V0QXV0b21hdGlvblNl
c3Npb246KF9XS0F1dG9tYXRpb25TZXNzaW9uICopYXV0b21hdGlvblNlc3Npb24gV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCistICh2b2lkKXNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkOihCT09MKXZhbHVlOworLSAodm9pZClyZWFkUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlRnJvbURpc2tJZk5lZWRlZDsKKwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOCBA
QCBzdGF0aWMgTlNTdHJpbmcgKldlYktpdEFwcGxpY2F0aW9uRGlkQ2hhCiAvLyBGSVhNRTogPHJk
YXI6Ly9wcm9ibGVtLzkxMzg4MTc+IC0gQWZ0ZXIgdGhpcyAiYmFja3dhcmRzIGNvbXBhdGliaWxp
dHkiIHJhZGFyIGlzIHJlbW92ZWQsIHRoaXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZCB0byBvbmx5
IHJldHVybiBhbiBlbXB0eSBTdHJpbmcuCiBOU1N0cmluZyAqV2ViSWNvbkRhdGFiYXNlRGlyZWN0
b3J5RGVmYXVsdHNLZXkgPSBAIldlYkljb25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5IjsK
IAorTlNTdHJpbmcgKldlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlEZWZhdWx0
c0tleSA9IEAiV2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeURlZmF1bHRzS2V5
IjsKKwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5
ID0gQCJXZWJLaXQySFRUUFByb3h5IjsKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJI
VFRQU1Byb3h5RGVmYXVsdHNLZXkgPSBAIldlYktpdDJIVFRQU1Byb3h5IjsKIApAQCAtNDI4LDYg
KzQzMCwyNiBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljCiAgICAg
cmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2RhdGFiYXNlc0RpcmVjdG9y
eSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CiB9CiAKK1N0cmluZyBXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKCkgY29uc3QKK3sKKyAgICBO
U1N0cmluZyAqYXBwTmFtZSA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmll
cl07CisgICAgaWYgKCFhcHBOYW1lKQorICAgICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZv
IHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07CisgICAgCisgICAgQVNTRVJUKGFwcE5hbWUpOwor
CisgICAgTlNTdHJpbmcgKnN0b3JhZ2VEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6V2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeURlZmF1bHRzS2V5XTsKKyAgICBpZiAoIXN0b3JhZ2VEaXJlY3RvcnkgfHwgIVtz
dG9yYWdlRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAg
ICAgTlNFcnJvciAqZXJyb3I7CisgICAgICAgIHN0b3JhZ2VEaXJlY3RvcnkgPSBbW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBVUkxGb3JEaXJlY3Rvcnk6TlNBcHBsaWNhdGlvblN1cHBv
cnREaXJlY3RvcnkgaW5Eb21haW46TlNVc2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpu
aWwgY3JlYXRlOllFUyBlcnJvcjomZXJyb3JdIHBhdGhdOworICAgICAgICAKKyAgICAgICAgaWYg
KCFzdG9yYWdlRGlyZWN0b3J5IHx8ICFbc3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgc3RvcmFnZURpcmVjdG9yeSA9IFtOU0hvbWVE
aXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0FwcGxp
Y2F0aW9uIFN1cHBvcnQiXTsKKyAgICB9CisKKyAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdT
eW1saW5rc0luUGF0aChbW3N0b3JhZ2VEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OmFwcE5hbWVdIHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKK30KKwogYm9vbCBX
ZWJQcm9jZXNzUG9vbDo6b21pdFBERlN1cHBvcnQoKQogewogICAgIC8vIFNpbmNlIHRoaXMgaXMg
YSAic2VjcmV0IGRlZmF1bHQiIHdlIGRvbid0IGJvdGhlciByZWdpc3RlcmluZyBpdC4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwu
Y3BwCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlByb2Nlc3NQb29sRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ljb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC0xMTUsNiArMTE2LDE0IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxh
dGZvcm1EZWZhdWx0SWMKICAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50KGpvaW5lZFBhdGgsIFdlYkNvcmU6Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmls
ZW5hbWUoKSk7CiB9CiAKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3Rh
dGlzdGljc1N0b3JhZ2VQYXRoKCkgY29uc3QKK3sKKyAgICBjaGFyIGpvaW5lZFBhdGhbUEFUSF9N
QVhdOworICAgIGVpbmFfZmlsZV9wYXRoX2pvaW4oam9pbmVkUGF0aCwgc2l6ZW9mKGpvaW5lZFBh
dGgpLCBlZnJlZXRfZGF0YV9ob21lX2dldCgpLCAiV2ViS2l0RWZsIiBFSU5BX1BBVEhfU0VQX1Mg
IkxvYWRTdGF0aXN0aWNzIik7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGpvaW5lZFBhdGgsIFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpkZWZh
dWx0RmlsZW5hbWUoKSk7Cit9CisKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZv
cm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICByZXR1cm4gQVBJOjpXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAko
cmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9j
ZXNzUG9vbEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw2ICsxMTgsMTIgQEAgU3RyaW5n
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJYwogICAgIHJldHVybiBXZWJDb3JlOjpm
aWxlbmFtZVRvU3RyaW5nKGRhdGFiYXNlRGlyZWN0b3J5LmdldCgpKTsKIH0KIAorU3RyaW5nIFdl
YlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRTdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25z
dAoreworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHN0YXRpc3RpY3NEaXJlY3RvcnkoZ19idWlsZF9m
aWxlbmFtZShnX2dldF91c2VyX2NhY2hlX2RpcigpLCAid2Via2l0Z3RrIiwgImxvYWRzdGF0aXN0
aWNzIiwgbnVsbHB0cikpOworICAgIHJldHVybiBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKHN0
YXRpc3RpY3NEaXJlY3RvcnkuZ2V0KCkpOworfQorCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6Omxl
Z2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJu
IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDY0LDYgKzEwNjQsMTEgQEAK
IAkJNzVBOEQyRTExODdERUMxQTAwQzM5QzlFIC8qIEFQSVNlc3Npb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1QThEMkRFMTg3REU4NzQwMEMzOUM5
RSAvKiBBUElTZXNzaW9uLmggKi87IH07CiAJCTc1QThEMkUyMTg3REVDMUUwMEMzOUM5RSAvKiBB
UElTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc1QThEMkREMTg3REU4NzQwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmNwcCAqLzsgfTsKIAkJ
NzYyQjc0OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjJCNzQ4NDEyMEJC
QTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1
MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzkxRUY5MUM3Q0ZC
MzcwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OworCQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGVNZXNzYWdlcy5oICovOyB9OworCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwICovOyB9OworCQk3QTc5MUYwMzFDN0U5MDc3MDBD
NEM1MkIgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFGMDExQzdFNzZFQjAwQzRDNTJC
IC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcCAqLzsgfTsKKwkJN0E3OTFGMDQx
QzdFOTM3RjAwQzRDNTJCIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUYwMjFDN0U3NkVC
MDBDNEM1MkIgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzEzNUFBODE3M0IwQkNBMDA1
ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVn
aW5JbmZvcm1hdGlvbi5jcHAgKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBX
S1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdD
MTM1QUFDMTczQjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUFBMTczQjBDRkYw
MDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSAqLzsgfTsKQEAgLTMwODEsNiArMzA4
NiwxMyBAQAogCQk3NUE4RDJERTE4N0RFODc0MDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBUElTZXNzaW9uLmg7IHBhdGggPSBVSVByb2Nl
c3MvQVBJL0FQSVNlc3Npb24uaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk3NjJC
NzQ4MTEyMEJCQTAxMDA4MTkzMzkgLyogRm9udFNtb290aGluZ0xldmVsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTbW9vdGhpbmdMZXZlbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJl
bmNlc1JlZlByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E3OTFFRjgx
QzdDRkIxMDAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNzkxRUY5MUM3
Q0ZCMzcwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0E3OTFGMDExQzdFNzZFQjAwQzRDNTJCIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJN0E3OTFGMDIxQzdFNzZFQjAwQzRDNTJCIC8qIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBOUNEOEMwMUM3
Nzk4NDkwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlG
NkM3IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMEJCOUE4MThEQ0RFODkwMDA2QzA4NiAvKiBXZWJDb250ZW50LWlPUy5lbnRp
dGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhtbDsgcGF0aCA9ICJXZWJDb250ZW50LWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzBCQjlBOTE4RENERjVBMDAwNkMwODYgLyogTmV0d29y
ay1pT1MuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54bWw7IHBhdGggPSAiTmV0d29yay1pT1MuZW50aXRsZW1lbnRzIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8q
IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01ODQxLDYgKzU4NTMsOSBAQAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFCNyAvKiBQ
cm9jZXNzVGhyb3R0bGVyLmNwcCAqLywKIAkJCQk4NkU2N0EyMTE5MEY0MTE4MDAwMDRBQjcgLyog
UHJvY2Vzc1Rocm90dGxlci5oICovLAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQ
cm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggKi8sCisJCQkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAgKi8sCisJCQkJN0E5Q0Q4QzExQzc3
OTg0OTAwRDlGNkM3IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oICovLAorCQkJCTdB
OUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVz
c2FnZXMuaW4gKi8sCiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNpdmVu
ZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25z
aXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNTFBNEQ1QTgxNkNBQzRGRjAwMEU2MTVFIC8qIFN0YXRp
c3RpY3NSZXF1ZXN0LmNwcCAqLywKQEAgLTYxMTMsNiArNjEyOCw4IEBACiAJCQkJNTE4QUNBRTkx
MkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLywKIAkJCQkzMzM2
NzYzODEzMEM5OURDMDA2QzlERTIgLyogV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgKi8sCiAJ
CQkJMzMzNjc2MzkxMzBDOTlEQzAwNkM5REUyIC8qIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXIuaCAq
LywKKwkJCQk3QTc5MUYwMTFDN0U3NkVCMDBDNEM1MkIgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUuY3BwICovLAorCQkJCTdBNzkxRjAyMUM3RTc2RUIwMEM0QzUyQiAvKiBXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oICovLAogCQkJCTc1QThEMkQwMTg3RDE3QkYwMEMzOUM5
RSAvKiBXS1Nlc3Npb25SZWYuY3BwICovLAogCQkJCTc1QThEMkQxMTg3RDE3QkYwMEMzOUM5RSAv
KiBXS1Nlc3Npb25SZWYuaCAqLywKIAkJCQkxQURFNDZCMDE5NTRFQzYxMDAwRjc5ODUgLyogV0tT
ZXNzaW9uU3RhdGVSZWYuY3BwICovLApAQCAtNjg2MCw2ICs2ODc3LDggQEAKIAkJCQkxQUMxMzM4
NDE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oICovLAog
CQkJCTBGNTk0N0E1MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEY1OTQ3QTYxODdCNTE3NjAwNDM3ODU3IC8q
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLywKKwkJCQk3QTc5MUVGOTFD
N0NGQjM3MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLywKKwkJCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCAqLywKIAkJCQlFMThFNjkxMTE2OUI2NjdCMDA5QjY2
NzAgLyogU2VjSXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTEyMTY5
QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggKi8sCiAJCQkJRTE4RTY5MTMx
NjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICov
LApAQCAtNzI2NCw2ICs3MjgzLDcgQEAKIAkJCQlCQzAzMkRBNjEwRjQzN0QxMDA1OEMxNUEgLyog
QXJndW1lbnREZWNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1
OEMxNUEgLyogQXJndW1lbnRFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBOTEw
RjQzN0QxMDA1OEMxNUEgLyogQXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTc5MUYw
NDFDN0U5MzdGMDBDNEM1MkIgLyogV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNFMUEwQkQyMUE0OEU2QzYwMDU0RUY3NCAvKiBBc3NlcnRpb25TZXJ2
aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5QzRBNTkxOEI4MTE3NDAwN0JEQ0I2IC8q
IEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTVFNzcyODE4
M0RENkY2MDAwNzIwM0YgLyogQXN5bmNSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTc0NzYs
NiArNzQ5Niw3IEBACiAJCQkJMUEwRUM3NUUxMjRCQzdCMjAwN0VGNEE1IC8qIFBsdWdpblByb2Nl
c3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNCNUUxMjRENUU5RDAwRkZCRkI1IC8q
IFBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0M0RD
MTEyNEZGODc1MDBGRkJGQjUgLyogUGx1Z2luUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTdB
NzkxRUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4RUZBNzExMjUyQjg0MTAwRjcwNjdGIC8qIFBs
dWdpblByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEE5RjMzMTJCODQ0RTIw
MDhGRTk4NCAvKiBQbHVnaW5RdWlya3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRDYyMjc4MTcz
OUQ4NjMwMDVCRDdGRiAvKiBQbHVnaW5TYW5kYm94UHJvZmlsZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC04ODk1LDYgKzg5MTYsNyBAQAogCQkJCTFBMkQ4NEE0MTI3RjZBRDEwMDFFQjk2MiAvKiBOUFZh
cmlhbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDOEFDQTE0MTY2NzBEODkwMDRDMTk0
MSAvKiBPYmpDT2JqZWN0R3JhcGgubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0NGNjczMzEyQzdG
MTVDMDA4RjlDMzUgLyogT3JpZ2luQW5kRGF0YWJhc2VzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzODc0MzQxNzJGNTYxNTAw
MUJEODhBIC8qIFBhZ2VCYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMwNTJGMjYxQzZE
M0JEMzAwNzZFOTE5IC8qIEF1dGhlbnRpY2F0aW9uTWFuYWdlckNvY29hLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M2RDM3RkMxNzJGNTU1RjAwOUQyODQ3IC8qIFBhZ2VCYW5uZXJNYWMubW0gaW4g
U291cmNlcyAqLywKQEAgLTkxNjQsNiArOTE4Niw3IEBACiAJCQkJQkM3QjYyMTYxMkE0MjE5QTAw
RDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5RDU1
REYxMTYxQkY5RjEwMDMxQTJFMyAvKiBXZWJQYWdlR3JvdXBQcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDlFQTMxMTFBOTZEOUVCMDAyRDI4MDcgLyogV2ViUGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBNzkxRjAzMUM3
RTkwNzcwMEM0QzUyQiAvKiBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1QzE0MjZFQzFDMjNGODA5MDBENDExODMgLyogTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0QkExODg0RUEz
QzAwRUQ4NkRCIC8qIFdlYlBhZ2VJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzk2M0Q2RTEx
M0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtOTI3Nyw2
ICs5MzAwLDcgQEAKIAkJCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYwQzU3QTEyNDBBNTQ2MDA4QzVFMjkg
LyogV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzE0REY5RTEy
MEI2MzVGMDA4MjZDMEMgLyogV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0MTE4MyAvKiBE
b3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUY1MTI0RkYwMjcwMDY4RjIw
QSAvKiBXS0NlcnRpZmljYXRlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzYyODEy
NEZGMDQwMDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0gaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTAsIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdGF0ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC04Nyw2ICs4OCw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE2Niw2ICsx
NjksNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1faGFzUmljaENvbnRlbnRT
ZXJ2aWNlcyhmYWxzZSkKICNlbmRpZgogICAgICwgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBU
aW1lcigqdGhpcywgJldlYlByb2Nlc3M6Om5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmly
ZWQpCisgICAgLCBtX3N0YXRpc3RpY3NDaGFuZ2VkVGltZXIoKnRoaXMsICZXZWJQcm9jZXNzOjpz
dGF0aXN0aWNzQ2hhbmdlZFRpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgbV93
ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTM2MSw2ICszNjUsOCBA
QCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlCiAgICAgICAgIH0KICAg
ICB9CiAjZW5kaWYKKworICAgIG1fc3RhdGlzdGljc0NoYW5nZWRUaW1lci5zdGFydFJlcGVhdGlu
ZyhzdGQ6OmNocm9ubzo6c2Vjb25kcyg1KSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKQEAgLTEyNzUsNiArMTI4MSwxNSBAQCB2b2lkIFdl
YlByb2Nlc3M6Om5vblZpc2libGVQcm9jZXNzQ2xlYW51CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQ
cm9jZXNzOjpzdGF0aXN0aWNzQ2hhbmdlZFRpbWVyRmlyZWQoKQoreworICAgIGF1dG8mIG9ic2Vy
dmVyID0gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCk7CisgICAgaWYgKG9i
c2VydmVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChvYnNlcnZlci50YWtlU3RhdGlzdGljcygpKSwg
MCk7Cit9CisKIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vzczo6dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyhBUEk6Ok9iamVjdCogb2JqZWN0KQogewogICAgIHN0cnVjdCBUcmFuc2Zvcm1l
ciBmaW5hbCA6IFVzZXJEYXRhOjpUcmFuc2Zvcm1lciB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2OCw2ICsxNjgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CiAK
ICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsKKyAgICB2b2lk
IHN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBkZXN0cm95UmVuZGVyaW5nUmVzb3VyY2VzKCk7CkBAIC0zNTgsNiArMzU5LDcgQEAg
cHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fcGFnZXNJbldpbmRvd3M7CiAgICAg
V2ViQ29yZTo6VGltZXIgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lcjsKKyAgICBXZWJD
b3JlOjpUaW1lciBtX3N0YXRpc3RpY3NDaGFuZ2VkVGltZXI7CiAKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTY5LDYgKzI5NjksOCBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlCiAgICAgc2V0dGluZ3Muc2V0U2Vydmlj
ZUNvbnRyb2xzRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OnNlcnZpY2VDb250cm9sc0VuYWJsZWRLZXkoKSkpOwogI2VuZGlmCiAKKyAgICBzZXR0aW5n
cy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkS2V5KCkp
KTsKKwogICAgIGJvb2wgcHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCA9IHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6cGFnZVZpc2liaWxpdHlCYXNlZFByb2Nlc3NT
dXBwcmVzc2lvbkVuYWJsZWRLZXkoKSk7CiAgICAgaWYgKG1fcHJvY2Vzc1N1cHByZXNzaW9uRW5h
YmxlZCAhPSBwcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKSB7CiAgICAgICAgIG1fcHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZCA9IHByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQ7CkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTcw
NjEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAor
MjAxNi0wMi0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV0syXSBHYXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNzgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI0NzAyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tOgorICAgICAg
ICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgX3BvcHVsYXRlTWVudV0pOiBNb3ZlIHNldHRpbmcgZnJv
bSBXSzEtb25seSB0byBiZQorICAgICAgICB1bml2ZXJzYWxseSBhcHBsaWNhYmxlLgorICAgICAg
ICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAg
ICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkaWRDaGFuZ2VTZXR0aW5nc10pOiBSZWNv
Z25pemUgd2hlbiB0aGUKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIGZsYWcgaGFz
IGNoYW5nZWQuCisKIDIwMTYtMDItMjQgIE5pa29zIEFuZHJvbmlrb3MgIDxuaWtvcy5hbmRyb25p
a29zLXdlYmtpdEBjaXNyYS5jYW5vbi5jb20uYXU+CiAKICAgICAgICAgW3dlYi1hbmltYXRpb25z
XSBBZGQgQW5pbWF0aW9uVGltZWxpbmUsIERvY3VtZW50VGltZWxpbmUgYW5kIGFkZCBleHRlbnNp
b25zIHRvIERvY3VtZW50IGludGVyZmFjZQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL1Nl
dHRpbmdzQ29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9T
ZXR0aW5nc0NvbnRyb2xsZXIubQkocmV2aXNpb24gMTk2ODIxKQorKysgVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEz
LDcgQEAgLSAodm9pZClfcG9wdWxhdGVNZW51CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6
QCJTdXBwcmVzcyBJbmNyZW1lbnRhbCBSZW5kZXJpbmcgaW4gTmV3IFdpbmRvd3MiIGFjdGlvbjpA
c2VsZWN0b3IodG9nZ2xlSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2VkOikgaW5kZW50ZWQ6
Tk9dOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIEFjY2VsZXJhdGVkIERy
YXdpbmciIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlQWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZDop
IGluZGVudGVkOk5PXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBEaXNw
bGF5IExpc3QgRHJhd2luZyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVEaXNwbGF5TGlzdERyYXdp
bmdFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOworICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAi
RW5hYmxlIFJlc291cmNlIExvYWQgU3RhdGlzdGljcyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIGluZGVudGVkOk5PXTsKIAogICAgIFtzZWxm
IF9hZGRIZWFkZXJXaXRoVGl0bGU6QCJXZWJLaXQyLW9ubHkgU2V0dGluZ3MiXTsKIApAQCAtMTQx
LDcgKzE0Miw2IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogCiAgICAgW3NlbGYgX2FkZEhlYWRl
cldpdGhUaXRsZTpAIldlYktpdDEtb25seSBTZXR0aW5ncyJdOwogICAgIFtzZWxmIF9hZGRJdGVt
V2l0aFRpdGxlOkAiRW5hYmxlIFN1YnBpeGVsIENTU09NIE1ldHJpY3MiIGFjdGlvbjpAc2VsZWN0
b3IodG9nZ2xlRW5hYmxlU3ViUGl4ZWxDU1NPTU1ldHJpY3M6KSBpbmRlbnRlZDpZRVNdOwotICAg
IFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIFJlc291cmNlIExvYWQgU3RhdGlzdGlj
cyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDop
IGluZGVudGVkOk5PXTsKIH0KIAogLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVt
ICopbWVudUl0ZW0KSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93
c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBUb29scy9NaW5pQnJv
d3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2luZyBjb3B5KQpAQCAt
MjksOSArMjksMTIgQEAKIAogI2ltcG9ydCAiQXBwRGVsZWdhdGUuaCIKICNpbXBvcnQgIlNldHRp
bmdzQ29udHJvbGxlci5oIgorI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dC5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLRnJhbWVJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KQEAgLTM0NCw2ICszNDcsNyBAQCAtICh2b2lk
KWRpZENoYW5nZVNldHRpbmdzCiAgICAgcHJlZmVyZW5jZXMuX2FjY2VsZXJhdGVkRHJhd2luZ0Vu
YWJsZWQgPSBzZXR0aW5ncy5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOwogICAgIHByZWZlcmVu
Y2VzLl9yZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUgPSBzZXR0aW5ncy5yZXNvdXJjZVVzYWdl
T3ZlcmxheVZpc2libGU7CiAgICAgcHJlZmVyZW5jZXMuX2Rpc3BsYXlMaXN0RHJhd2luZ0VuYWJs
ZWQgPSBzZXR0aW5ncy5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkOworICAgIHByZWZlcmVuY2Vz
Ll9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHNldHRpbmdzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkOwogCiAgICAgQk9PTCB1c2VUcmFuc3BhcmVudFdpbmRvd3MgPSBzZXR0
aW5ncy51c2VUcmFuc3BhcmVudFdpbmRvd3M7CiAgICAgaWYgKHVzZVRyYW5zcGFyZW50V2luZG93
cyAhPSAhX3dlYlZpZXcuX2RyYXdzQmFja2dyb3VuZCkgewpAQCAtMzczLDYgKzM3NywxMCBAQCAt
ICh2b2lkKWRpZENoYW5nZVNldHRpbmdzCiAgICAgICAgIHZpc2libGVPdmVybGF5UmVnaW9ucyB8
PSBfV0tXaGVlbEV2ZW50SGFuZGxlclJlZ2lvbjsKICAgICAKICAgICBwcmVmZXJlbmNlcy5fdmlz
aWJsZURlYnVnT3ZlcmxheVJlZ2lvbnMgPSB2aXNpYmxlT3ZlcmxheVJlZ2lvbnM7CisKKyAgICBb
X2NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQ6cHJlZmVyZW5jZXMuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXTsKKyAgICBpZiAo
cHJlZmVyZW5jZXMuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQorICAgICAgICBbX2Nv
bmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgcmVhZFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZUZy
b21EaXNrSWZOZWVkZWRdOwogfQogCiAtICh2b2lkKXVwZGF0ZVRpdGxlOihOU1N0cmluZyAqKXRp
dGxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272253</attachid>
            <date>2016-02-25 15:36:51 -0800</date>
            <delta_ts>2016-02-25 16:04:03 -0800</delta_ts>
            <desc>Patch (Revised per Anders)</desc>
            <filename>bug-154278-20160225153633.patch</filename>
            <type>text/plain</type>
            <size>69991</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzEzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE2LTAyLTI1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkanVzdCB2aXNp
YmlsaXR5IG9mIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgaGVhZGVyLgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKTogUmV2aXNlIGZvcgorICAgICAgICBuZXcgY29uc3RydWN0b3IgYXJn
dW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRh
VG9EaXNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjptZXJnZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZE9ic2VydmVyOjppc0VtcHR5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZGVmYXVsdEZpbGVuYW1lKTogQWRkZWQuCisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlKTogUmV2aXNlIHRvIHVzZSBpbnRlcm5hbAorICAg
ICAgICAnaGlnaExldmVsRG9tYWluJyBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om1lcmdl
SGFzaENvdW50ZWRTZXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3M6Om1lcmdlKTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3MpOgorCiAyMDE2LTAyLTI1ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG91bGQgdGVtcGxhdGUgUmVmQ291
bnRlciBpbnN0ZWFkIG9mIFJlZkNvdW50ZXI6OlRva2VuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTY4MjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTI3MDIsNyArMjcwMiw3IEBACiAJCTdBNzRFQ0JCMTAxODM5QTYwMEJG
OTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLzsgfTsKIAkJN0E3NEVDQkQxMDE4MzlEQTAwQkY5MzlF
IC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBK
U0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi87IH07CiAJCTdBOTI5Q0E2MUM1OThB
OUUwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5Q0ExMUM1OTgzNzgwMDRERjIyNiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLzsgfTsKLQkJN0E5MjlDQTcxQzU5OEFBOTAw
NERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IH07CisJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTkyOUNBMjFDNTk4Mzc4MDA0REYyMjYgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdBOTM4Njg1MThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTM4NjgyMThEQ0MxNDUw
MEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLzsgfTsKIAkJN0E5Mzg2ODYxOERDQzE0NTAwQjgy
NjNEIC8qIFZUVFNjYW5uZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBOTM4NjgzMThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmggKi87IH07
CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAvKiBUaWxlQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUEzQTY5NTE5NEE2NEU3
MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMjQ5MTcsNiArMjQ5MTcs
NyBAQAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzMzBGQkI5QzFEMDA1MTAyOTMgLyog
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzQjBG
QkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJDMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nl
c3NpYmlsaXR5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDMwRkJCOUMxRDAwNTEw
MjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTI0
MjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMjUxNDIsNyArMjUxNDMsNiBAQAogCQkJCTk5Q0MwQjRGMThCRTk4NDkwMDZD
RUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDNzM0
MTUxOTc3ODk2RDAwNDZCRkM1IC8qIENBUmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERThCNUVEMUE2OTc3NzMwMEI0QjY2QSAvKiBDRE1Qcml2
YXRlQ2xlYXJLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMzE4NjIzMTk5RjFFMkEwMDMwQTBG
NyAvKiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RERENTcxNTE4QjU3QTgyMDBBOTRGQ0IgLyogQ0RNU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJ
KHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDE4IEBAIFJlc291cmNlTG9h
ZE9ic2VydmVyJiBSZXNvdXJjZUxvYWRPYnNlcnYKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI+IHJlc291cmNlTG9hZE9ic2VydmVyOwogICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRPYnNlcnZlcjsKIH0KLSAgICAKKwordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAg
IGlmIChlbmFibGVkID09IFNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBTZXR0aW5nczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoZW5hYmxlZCk7CisKKyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgcmVhZERh
dGFGcm9tRGlza0lmTmVlZGVkKCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z0ZyYW1lTmF2aWdhdGlvbihib29sIGlzUmVkaXJlY3QsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBj
b25zdCBVUkwmIHRhcmdldFVSTCwgYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiBtYWluRnJh
bWVVUkwpCiB7CiAgICAgaWYgKCFTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoKSkKQEAgLTE5MCw4ICsyMDEsMTAgQEAgYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQ
cmV2YWxlbnRSZQogICAgIAogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBw
cmltYXJ5RG9tYWluKQogewotICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFp
bnMocHJpbWFyeURvbWFpbikpCi0gICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChw
cmltYXJ5RG9tYWluLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpOworICAgIGlmICghbV9yZXNv
dXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpIHsKKyAgICAgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyBuZXdTdGF0aXN0aWNzKHByaW1hcnlEb21haW4pOworICAgICAg
ICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQocHJpbWFyeURvbWFpbiwgbmV3U3RhdGlzdGlj
cyk7CisgICAgfQogICAgIAogICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5k
KHByaW1hcnlEb21haW4pLT52YWx1ZTsKIH0KQEAgLTI0OSw3ICsyNjIsNyBAQCB2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjp3cml0ZURhdGFUb0RpCiAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMy
KCJvcmlnaW5zVmlzaXRlZCIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7CiAgICAg
CiAgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbV9yZXNv
dXJjZVN0YXRpc3RpY3NNYXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCks
IFt0aGlzXShLZXllZEVuY29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgU3RhdGlzdGljc1ZhbHVl
JiBvcmlnaW4pIHsKLSAgICAgICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIsIG9y
aWdpbi5rZXkpOworICAgICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lcik7CiAg
ICAgfSk7CiAgICAgCiAgICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVs
bF9icm93c2luZ19zZXNzaW9uIik7CkBAIC0yNjMsOCArMjc2LDggQEAgdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaQogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rl
cjo6ZW5jb2RlcigpOwogICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zpc2l0ZWQi
LCAxKTsKICAgICAKLSAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3Qob3JpZ2luLCByZXNvdXJjZVN0
YXRpc3RpY3MsIFt0aGlzLCAmb3JpZ2luXShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljcykgewotICAgICAgICByZXNv
dXJjZVN0YXRpc3RpY3MuZW5jb2RlKGVuY29kZXIsIG9yaWdpbik7CisgICAgZW5jb2Rlci0+ZW5j
b2RlT2JqZWN0KG9yaWdpbiwgcmVzb3VyY2VTdGF0aXN0aWNzLCBbdGhpc10oS2V5ZWRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3Rp
Y3MpIHsKKyAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWNzLmVuY29kZShlbmNvZGVyKTsKICAgICB9
KTsKICAgICAKICAgICBTdHJpbmcgbGFiZWwgPSBvcmlnaW47CkBAIC0yNzYsNiArMjg5LDExIEBA
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OndyaXRlRGF0YVRvRGkKIHZvaWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBtX3N0b3JhZ2VQYXRoID0gcGF0aDsKKworICAgIGlmICghU2V0dGluZ3M6
OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOwogfQogCiBTdHJpbmcgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnBlcnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdApA
QCAtMzA3LDggKzMyNSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlYWREYXRhRnJv
bUQKICAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNv
dXJjZU9yaWdpbiIsIG9yaWdpbikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdGF0aXN0aWNzOwotICAgICAgICBpZiAoIXN0YXRp
c3RpY3MuZGVjb2RlKGRlY29kZXJJbm5lciwgb3JpZ2luKSkKKyAgICAgICAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyBzdGF0aXN0aWNzKG9yaWdpbik7CisgICAgICAgIGlmICghc3RhdGlzdGljcy5k
ZWNvZGUoZGVjb2RlcklubmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQob3JpZ2luLCBzdGF0aXN0aWNzKTsKQEAgLTM2
OSw1ICszODcsMjkgQEAgU3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRgog
ICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKG9yaWdp
biktPnZhbHVlOwogICAgIHJldHVybiAiU3RhdGlzdGljcyBmb3IgIiArIG9yaWdpbiArICI6XG4i
ICsgc3RhdGlzdGljcy50b1N0cmluZygpOwogfQotICAgIAorCitWZWN0b3I8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0aWNzKCkKK3sKKyAg
ICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljczsKKyAgICBmb3IgKGF1
dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAgICAg
ICBzdGF0aXN0aWNzLmFwcGVuZChzdGF0aXN0aWMpOworCisgICAgbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAuY2xlYXIoKTsKKworICAgIHJldHVybiBzdGF0aXN0aWNzOworfQorCit2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjptZXJnZVN0YXRpc3RpY3MoY29uc3QgVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiBzdGF0aXN0aWNzKQoreworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDog
c3RhdGlzdGljcykgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5maW5kKHN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICBpZiAoaXRlciA9PSBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkgeworICAgICAgICAgICAgbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAuc2V0KHN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4sIHN0YXRpc3RpYyk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGl0ZXItPnZhbHVlLm1l
cmdlKHN0YXRpc3RpYyk7CisgICAgfQorfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDkgKzQzLDkgQEAgY2xhc3MgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgewogcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXNvdXJjZUxvYWRPYnNlcnZlciYgc2hhcmVkT2JzZXJ2
ZXIoKTsKICAgICAKLSAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihib29sIGlzUmVkaXJlY3Qs
IGNvbnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBVUkwmIHRhcmdldFVSTCwgYm9vbCBpc01haW5G
cmFtZSwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwpOwotICAgIHZvaWQgbG9nU3VicmVzb3VyY2VM
b2FkaW5nKGJvb2wgaXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYg
dGFyZ2V0VVJMLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7Ci0gICAgdm9pZCBsb2dVc2VySW50
ZXJhY3Rpb24oY29uc3QgRG9jdW1lbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGxvZ0Zy
YW1lTmF2aWdhdGlvbihib29sIGlzUmVkaXJlY3QsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBjb25z
dCBVUkwmIHRhcmdldFVSTCwgYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiBtYWluRnJhbWVV
UkwpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKGJvb2wg
aXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBj
b25zdCBVUkwmIG1haW5GcmFtZVVSTCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBsb2dVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgRG9jdW1lbnQmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d3JpdGVEYXRhVG9EaXNrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkRGF0YUZyb21E
aXNrSWZOZWVkZWQoKTsKQEAgLTUzLDYgKzUzLDE2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYpOwogCisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAuaXNFbXB0eSgpOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKKworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgbWVyZ2VTdGF0aXN0aWNzKGNvbnN0IFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzPiYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChib29sKTsKKworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdEZpbGVuYW1lKCkg
eyByZXR1cm4gQVNDSUlMaXRlcmFsKCJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cu
cGxpc3QiKTsgfQorCiBwcml2YXRlOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291
cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJik7CiAgICAgCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
CShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDkgKzc2LDkgQEAgc3RhdGljIHZv
aWQgZW5jb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWRFbgogICAgIH0pOwogfQogCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luKSBjb25zdAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUo
S2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlU3RyaW5n
KCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIG9yaWdpbik7CisgICAgZW5jb2Rlci5lbmNvZGVT
dHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgaGlnaExldmVsRG9tYWluKTsKICAgICAK
ICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgZW5jb2Rlci5lbmNvZGVCb29sKCJoYWRVc2Vy
SW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pOwpAQCAtMTMwLDE0ICsxMzAsMTEgQEAg
c3RhdGljIHZvaWQgZGVjb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWREZQogICAgIH0pOwogfQogCi1i
b29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIs
IGNvbnN0IFN0cmluZyYgb3JpZ2luKQorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNv
ZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFN0cmluZyBzdG9yZWRPcmlnaW47Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBz
dG9yZWRPcmlnaW4pKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVudFJl
c291cmNlT3JpZ2luIiwgaGlnaExldmVsRG9tYWluKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIAotICAgIEFTU0VSVF9VTlVTRUQob3JpZ2luLCBzdG9yZWRPcmlnaW4gPT0gb3JpZ2luKTsK
LSAgICAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJv
b2woImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTMwNyw0ICszMDQsNDcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6OnRvU3RyaW5nKAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgbWVyZ2VIYXNoQ291bnRlZFNldChIYXNo
Q291bnRlZFNldDxUPiYgdG8sIGNvbnN0IEhhc2hDb3VudGVkU2V0PFQ+JiBmcm9tKQoreworICAg
IGZvciAoYXV0byYgZW50cnkgOiBmcm9tKQorICAgICAgICB0by5hZGQoZW50cnkua2V5LCBlbnRy
eS52YWx1ZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6bWVyZ2UoY29uc3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyLmhpZ2hM
ZXZlbERvbWFpbiA9PSBoaWdoTGV2ZWxEb21haW4pOworCisgICAgaGFkVXNlckludGVyYWN0aW9u
IHw9IG90aGVyLmhhZFVzZXJJbnRlcmFjdGlvbjsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUgc3Rh
dHMKKyAgICB0b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8gKz0gb3RoZXIudG9wRnJhbWVIYXNC
ZWVuUmVkaXJlY3RlZFRvOworICAgIHRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tICs9IG90
aGVyLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIHRvcEZyYW1lSW5pdGlhbExv
YWRDb3VudCArPSBvdGhlci50b3BGcmFtZUluaXRpYWxMb2FkQ291bnQ7CisgICAgdG9wRnJhbWVI
YXNCZWVuTmF2aWdhdGVkVG8gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87Cisg
ICAgdG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbSArPSBvdGhlci50b3BGcmFtZUhhc0JlZW5O
YXZpZ2F0ZWRGcm9tOworICAgIHRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlIHw9IG90
aGVyLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlOworICAgIAorICAgIC8vIFN1YmZy
YW1lIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zLCBvdGhlci5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKKyAgICBzdWJmcmFt
ZUhhc0JlZW5SZWRpcmVjdGVkVG8gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRv
OworICAgIHN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tICs9IG90aGVyLnN1YmZyYW1lSGFz
QmVlblJlZGlyZWN0ZWRGcm9tOworICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3ViZnJhbWVVbmlx
dWVSZWRpcmVjdHNUbywgb3RoZXIuc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgc3Vi
ZnJhbWVTdWJSZXNvdXJjZUNvdW50ICs9IG90aGVyLnN1YmZyYW1lU3ViUmVzb3VyY2VDb3VudDsK
KyAgICBzdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbyArPSBvdGhlci5zdWJmcmFtZUhhc0JlZW5O
YXZpZ2F0ZWRUbzsKKyAgICBzdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tICs9IG90aGVyLnN1
YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgc3ViZnJhbWVIYXNCZWVuTG9hZGVkQmVm
b3JlIHw9IG90aGVyLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZTsKKyAgICAKKyAgICAvLyBT
dWJyZXNvdXJjZSBzdGF0cworICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyk7
CisgICAgc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCArPSBvdGhlci5zdWJyZXNv
dXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50OworICAgIHN1YnJlc291cmNlSGFzQmVlblJlZGly
ZWN0ZWRGcm9tICs9IG90aGVyLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAg
IHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBvdGhlci5zdWJyZXNvdXJjZUhhc0Jl
ZW5SZWRpcmVjdGVkVG87CisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvLCBvdGhlci5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICAK
KyAgICAvLyBQcmV2YWxlbnQgcmVzb3VyY2Ugc3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0
KHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLCBvdGhlci5yZWRpcmVj
dGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucyk7CisgICAgaXNQcmV2YWxlbnRSZXNv
dXJjZSB8PSBvdGhlci5pc1ByZXZhbGVudFJlc291cmNlOworfQorCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDE5
NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwyNyBAQCBjbGFzcyBLZXllZERlY29kZXI7CiBj
bGFzcyBLZXllZEVuY29kZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsKKyAg
ICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikKKyAg
ICAgICAgOiBoaWdoTGV2ZWxEb21haW4ocHJpbWFyeURvbWFpbikKKyAgICB7IH0KKworICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MoKQorICAgIHsgfQorCiAgICAgYm9vbCBjaGVja0FuZFNldEFz
UHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSh1bnNpZ25lZCBvcmlnaW5zVmlzaXRlZFNvRmFy
KTsKIAogICAgIGJvb2wgaGFzUHJldmFsZW50UmVkaXJlY3Rpb24oKSBjb25zdDsKICAgICBib29s
IGhhc1ByZXZhbGVudFJlc291cmNlQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Q7CiAKLSAgICB2b2lk
IGVuY29kZShLZXllZEVuY29kZXImLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgY29uc3Q7Ci0gICAg
Ym9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworICAgIHZv
aWQgZW5jb2RlKEtleWVkRW5jb2RlciYpIGNvbnN0OworICAgIGJvb2wgZGVjb2RlKEtleWVkRGVj
b2RlciYpOwogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKKyAgICB2b2lkIG1lcmdl
KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKKworICAgIFN0cmluZyBoaWdoTGV2ZWxE
b21haW47CisKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgYm9vbCBoYWRVc2VySW50ZXJh
Y3Rpb24geyBmYWxzZSB9OwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3MTMyKQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzEg
QEAKKzIwMTYtMDItMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dLMl0gR2F0aGVyIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjc4CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yNDcwMjg5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgbmV3IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZSBmaWxlcyB0byBidWlsZC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OiBEaXR0by4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogRGl0dG8uCisgICAgICAgICog
UGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOiBE
aXR0by4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOiBBZGQgbmV3IFJlc291cmNl
TG9hZFN0YXRpc3RpY3MgdHlwZS4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6
ZGVjb2RlKTogU3VwcG9ydCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAg
ICAoSVBDOjplbmNvZGVIYXNoQ291bnRlZFNldCk6IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1
bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjplbmNvZGUpOiBBZGRlZC4KKyAgICAg
ICAgKElQQzo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOiBBZGRlZC4KKyAgICAgICAgKElQQzo6QXJn
dW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZGVjb2RlKTogQWRkZWQuCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9X
ZWJQcmVmZXJlbmNlc0RlZmluaXRpb25zLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZUdldFR5cGVJRCk6CisgICAgICAgIChXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZVJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1b
V0tQcm9jZXNzUG9vbCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKTogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBpbml0XSk6IEluaXRpYWxpemUgX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHN0YXRlLgorICAgICAgICAoLVtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXSk6IEFkZGVkLgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKTogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
Ojp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6cmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKFdl
YktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OndyaXRl
VG9EaXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGUubWVzc2FnZXMuaW46IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6
IEluaXRpYWxpemUgdGhlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBkYXRhIG9i
amVjdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6
IFNodXQgZG93biB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGRhdGEgb2Jq
ZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0U3RhdGlzdGljc1N0b3Jh
Z2VQYXRoKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGF0aXN0
aWNzU3RvcmFnZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6
OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQcm9j
ZXNzUG9vbEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bURlZmF1bHRTdGF0aXN0aWNzU3RvcmFnZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Bvb2w6OnBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCk6IEFkZGVkLgorICAg
ICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vz
cyk6IEluaXRpYWxpemVkIHN0YXRpc3RpY3MgY2hhbmdlZCBub3RpZmljYXRpb24gdGltZXIuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCk6
IEFkZGVkLiBTZW5kIGJ1bmRsZXMgb2Ygc2l0ZSBsb2FkCisgICAgICAgIHN0YXRpc3RpY3MgdG8g
dGhlIFVJUHJvY2VzcyBvbiBhIHNldCBpbnRlcnZhbC4gQ2xlYXIgb3V0IGxvY2FsIGNhY2hlIGFm
dGVyIGVhY2ggc2VuZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAx
Ni0wMi0yNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgU2hvdWxkIHRlbXBsYXRlIFJlZkNvdW50ZXIgaW5zdGVhZCBvZiBSZWZDb3VudGVyOjpU
b2tlbgpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NjMsNiArNjYzLDcg
QEAgc2V0KFdlYktpdDJfTUVTU0FHRVNfSU5fRklMRVMKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9i
amVjdE1lc3NhZ2VSZWNlaXZlci5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkubWVzc2FnZXMuaW4KKyAgICBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlLm1lc3NhZ2VzLmluCiAgICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2Fn
ZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViQmF0dGVyeU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgog
ICAgIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dl
YktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBA
QCBNRVNTQUdFX1JFQ0VJVkVSUyA9IFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5IFwKICAgICBSZW1vdGVPYmplY3RSZWdpc3RyeSBcCiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3IgXAorCVJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSBcCiAgICAgU2VjSXRlbVNo
aW0gXAogICAgIFNlY0l0ZW1TaGltUHJveHkgXAogICAgIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRy
b2xsZXIgXApJbmRleDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDE5NjgyMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02
Niw2ICs2Niw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9C
YWNraW5nU3RvcmUuY3BwCiAgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAK
ICAgICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKyAgICBVSVBy
b2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tWaWV3LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZQkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1H
VEsuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAg
ICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eUltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0xlZ2Fj
eVNlc3Npb25TdGF0ZUNvZGluZ05vbmUuY3BwCisgICAgVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRh
YmFzZUNhaXJvLmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24g
MTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOSw2ICsxMzksNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBT
aGFyZWQvbWFjL1dlYkhpdFRlc3RSZXN1bHREYXRhLm1tCiAgICAgU2hhcmVkL21hYy9XZWJNZW1v
cnlTYW1wbGVyLm1hYy5tbQogCisgICAgVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZS5jcHAKICAgICBVSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKIApJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDE5NjgyMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3Bh
Y2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb25zdHJh
aW50cy5oPgpAQCAtMjA0NCw0ICsyMDQ1LDE1NiBAQCBib29sIEFyZ3VtZW50Q29kZXI8RXhjZXB0
aW9uRGV0YWlscz46OmRlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIGVuY29k
ZUhhc2hDb3VudGVkU2V0KEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgSGFzaENvdW50
ZWRTZXQ8U3RyaW5nPiYgaGFzaENvdW50ZWRTZXQpCit7CisgICAgZW5jb2RlciA8PCBoYXNoQ291
bnRlZFNldC5zaXplKCk7CisKKyAgICBmb3IgKGF1dG8gZW50cnkgOiBoYXNoQ291bnRlZFNldCkg
eworICAgICAgICBlbmNvZGVyIDw8IGVudHJ5LmtleTsKKyAgICAgICAgZW5jb2RlciA8PCBlbnRy
eS52YWx1ZTsKKyAgICB9Cit9CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgc3RhdGlzdGljcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3MuaGlnaExldmVsRG9tYWluOworICAgIAorICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24K
KyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uOworICAgIAorICAg
IC8vIFRvcCBmcmFtZSBzdGF0cworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhh
c0JlZW5OYXZpZ2F0ZWRUb0JlZm9yZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJh
bWVIYXNCZWVuUmVkaXJlY3RlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFt
ZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJh
bWVJbml0aWFsTG9hZENvdW50OworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhh
c0JlZW5OYXZpZ2F0ZWRUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNC
ZWVuTmF2aWdhdGVkRnJvbTsKKyAgICAKKyAgICAvLyBTdWJmcmFtZSBzdGF0cworICAgIGVuY29k
ZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5Mb2FkZWRCZWZvcmU7CisgICAgZW5jb2Rl
ciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAgZW5jb2Rl
ciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lU3ViUmVzb3VyY2VDb3VudDsKKyAgICBlbmNvZGVIYXNo
Q291bnRlZFNldChlbmNvZGVyLCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bnMpOworICAgIGVuY29kZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsIHN0YXRpc3RpY3Muc3ViZnJh
bWVVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1l
SGFzQmVlbk5hdmlnYXRlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZUhh
c0JlZW5OYXZpZ2F0ZWRGcm9tOworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCisgICAg
ZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tOwor
ICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkVG87
CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNl
Q291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJl
c291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQ7CisgICAgZW5j
b2RlSGFzaENvdW50ZWRTZXQoZW5jb2Rlciwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zKTsKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCBzdGF0aXN0
aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8pOworICAgIAorICAgIC8vIFByZXZhbGVu
dCBSZXNvdXJjZQorICAgIGVuY29kZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsIHN0YXRpc3RpY3Mu
cmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMpOworICAgIGVuY29kZXIg
PDwgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlOworfQorCitzdGF0aWMgYm9vbCBkZWNv
ZGVIYXNoQ291bnRlZFNldChBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEhhc2hDb3VudGVkU2V0
PFN0cmluZz4mIGhhc2hDb3VudGVkU2V0KQoreworICAgIHVuc2lnbmVkIGVudHJpZXM7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShlbnRyaWVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbnRyaWVzOyArK2kpIHsKKyAgICAgICAgU3RyaW5n
IG9yaWdpbjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4pKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgY291bnQ7CisgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY291bnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGhhc2hDb3VudGVkU2V0LmFkZChvcmlnaW4sIGNvdW50KTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0
YXRpc3RpY3M+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKQoreworICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc3RhdGlzdGljcy5oaWdoTGV2ZWxEb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgLy8gVXNlciBpbnRlcmFjdGlvbgorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0
aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZUhh
c0JlZW5SZWRpcmVjdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9t
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3RhdGlzdGljcy50b3BGcmFtZUluaXRpYWxMb2FkQ291bnQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFz
QmVlbk5hdmlnYXRlZFRvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIFN1YmZyYW1lIHN0YXRzCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9y
ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFt
ZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2RlSGFzaENvdW50
ZWRTZXQoZGVjb2Rlciwgc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChk
ZWNvZGVyLCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1
YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5OYXZpZ2F0
ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIFN1YnJlc291cmNl
IHN0YXRzCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFz
QmVlblJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVk
VG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNz
LnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9m
T3JpZ2luc1Zpc2l0ZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFk
ZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZU9yaWdpbnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29k
ZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdHNUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBQcmV2YWxlbnQg
UmVzb3VyY2UKKyAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsIHN0YXRpc3Rp
Y3MucmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmlz
UHJldmFsZW50UmVzb3VyY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0
dXJuIHRydWU7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAxOTY4MjEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEx
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtODAsNiArODAsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwog
c3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3Qg
UmVjZW50U2VhcmNoOworc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiBzdHJ1Y3QgU2Ny
b2xsYWJsZUFyZWFQYXJhbWV0ZXJzOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIHN0cnVj
dCBUZXh0SW5kaWNhdG9yRGF0YTsKQEAgLTQ1NSw2ICs0NTYsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVu
dERlY29kZXImLCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJik7CiB9OwogCit0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVu
dERlY29kZXImLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7Cit9OworCisKIH0g
Ly8gbmFtZXNwYWNlIElQQwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4
LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLAog
ICAgICAgICBQbHVnaW5TaXRlRGF0YU1hbmFnZXIsCiAgICAgICAgIFByZWZlcmVuY2VzLAorICAg
ICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUsCiAgICAgICAgIFJ1bkJlZm9yZVVubG9h
ZENvbmZpcm1QYW5lbFJlc3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRS
ZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5l
ciwKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCIKKworI2luY2x1ZGUgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6Y3Jl
YXRlKFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSgqcHJvY2Vzc1Bvb2wpKTsKK30KKworUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoV2Vi
UHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKQorICAgIDogbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9v
bCkKK3sKKyAgICBtX3Byb2Nlc3NQb29sLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsK
K30KKworUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlKCkKK3sKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnNldFN0
YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3Jl
c291cmNlTG9hZE9ic2VydmVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRPYnNlcnZl
cj4oKTsKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyLT5zZXRTdGF0aXN0aWNzU3RvcmFnZURp
cmVjdG9yeShwYXRoKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYgb3JpZ2lucykKK3sKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVy
LT5tZXJnZVN0YXRpc3RpY3Mob3JpZ2lucyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQp
Cit7CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkT2JzZXJ2ZXIpCisgICAgICAgIG1fcmVzb3VyY2VM
b2FkT2JzZXJ2ZXItPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwor
fQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6cmVhZERhdGFGcm9tRGlza0lm
TmVlZGVkKCkKK3sKKyAgICBpZiAobV9yZXNvdXJjZUxvYWRPYnNlcnZlcikKKyAgICAgICAgbV9y
ZXNvdXJjZUxvYWRPYnNlcnZlci0+cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjp3cml0ZVRvRGlzaygpCit7CisgICAgaWYg
KG1fcmVzb3VyY2VMb2FkT2JzZXJ2ZXIpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkT2JzZXJ2ZXIt
PndyaXRlRGF0YVRvRGlzaygpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCisj
ZGVmaW5lIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCisKKyNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKKyNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFJlc291cmNlTG9hZE9ic2VydmVyOworc3RydWN0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3M7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzUG9vbDsK
KworY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlPiwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlPiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsK
KyAgICB2aXJ0dWFsIH5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoKTsKKyAgICAKKyAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc2V0
U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgdm9p
ZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpOworCisgICAgdm9pZCB3cml0ZVRvRGlzaygp
OworICAgIHZvaWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7CisgICAgCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShXZWJQcm9jZXNzUG9vbCYp
OworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBv
dmVycmlkZTsKKyAgICAKKyAgICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKKyAgICAK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI+IG1fcmVz
b3VyY2VMb2FkT2JzZXJ2ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGUubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
bWVzc2FnZXMgLT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlIHsKKyAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4gb3JpZ2lucykKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTMsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZS5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTdGF0aXN0aWNz
RGF0YS5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyLmgiCkBAIC0xNzUsNiArMTc2LDggQEAgV2Vi
UHJvY2Vzc1Bvb2w6OldlYlByb2Nlc3NQb29sKEFQSTo6UHJvYwogCiAgICAgLy8gTk9URTogVGhl
c2Ugc3ViLW9iamVjdHMgbXVzdCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3NhZ2VSZWNlaXZl
ck1hcC4uCiAgICAgbV9pY29uRGF0YWJhc2UgPSBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZSh0aGlz
KTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGU6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN0
YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KHN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpKTsKIAogICAg
IGFkZFN1cHBsZW1lbnQ8V2ViQ29va2llTWFuYWdlclByb3h5PigpOwogICAgIGFkZFN1cHBsZW1l
bnQ8V2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHk+KCk7CkBAIC0yMjksNiArMjMyLDkgQEAgV2Vi
UHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCgpCiAgICAgICAgIGl0LT52YWx1ZS0+Y2xlYXJQ
cm9jZXNzUG9vbCgpOwogICAgIH0KIAorICAgIC8vIEZJWE1FKDE1NDY0Mik6IFRoaXMgc2hvdWxk
IG5vdCBiZSBkb25lIGluIG9uZSBsb25nIG9wZXJhdGlvbiB3aGVuIGV4aXRpbmcuCisgICAgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT53cml0ZVRvRGlzaygpOworICAgIAogICAgIG1faWNvbkRh
dGFiYXNlLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9pY29uRGF0YWJhc2UtPmNsZWFyUHJvY2Vzc1Bv
b2woKTsKICAgICBXZWJJY29uRGF0YWJhc2UqIHJhd0ljb25EYXRhYmFzZSA9IG1faWNvbkRhdGFi
YXNlLnJlbGVhc2UoKS5sZWFrUmVmKCk7CkBAIC0xMDUzLDYgKzEwNTksMjYgQEAgU3RyaW5nIFdl
YlByb2Nlc3NQb29sOjppY29uRGF0YWJhc2VQYXRoKAogICAgIHJldHVybiBwbGF0Zm9ybURlZmF1
bHRJY29uRGF0YWJhc2VQYXRoKCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFN0YXRp
c3RpY3NTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbV9vdmVycmlkZVN0
YXRpc3RpY3NTdG9yYWdlUGF0aCA9IHBhdGg7CisgICAgaWYgKCFtX292ZXJyaWRlU3RhdGlzdGlj
c1N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5zZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShwYXRoKTsKK30KKworU3RyaW5nIFdlYlBy
b2Nlc3NQb29sOjpzdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdAoreworICAgIGlmICghbV9v
dmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0aC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1f
b3ZlcnJpZGVTdGF0aXN0aWNzU3RvcmFnZVBhdGg7CisgICAgCisgICAgcmV0dXJuIHBsYXRmb3Jt
RGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChlbmFibGVkKTsKK30KKwogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiBTdHJpbmcgV2Vi
UHJvY2Vzc1Bvb2w6OmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogewpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDE5NjgyMSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAx
MiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgUGFnZUNvbmZp
Z3VyYXRpb247CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWRQcm94eTsKK2Ns
YXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNz
aW9uOwogY2xhc3MgV2ViQ29udGV4dFN1cHBsZW1lbnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7
CkBAIC0yMjgsNiArMjI5LDkgQEAgcHVibGljOgogICAgIFdlYkNvbnRleHRDbGllbnQmIGNsaWVu
dCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9CiAKICAgICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRh
YmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1faWNvbkRhdGFiYXNlLmdldCgpOyB9CisgICAgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KKworICAgIHZvaWQg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CiAKICAgICBzdHJ1Y3QgU3Rh
dGlzdGljcyB7CiAgICAgICAgIHVuc2lnbmVkIHdrVmlld0NvdW50OwpAQCAtMjQwLDYgKzI0NCw5
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgaWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0OwogICAgIHZv
aWQgc2V0Q29va2llU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292ZXJy
aWRlQ29va2llU3RvcmFnZURpcmVjdG9yeSA9IGRpcjsgfQogCisgICAgdm9pZCBzZXRTdGF0aXN0
aWNzU3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIHN0YXRpc3RpY3NTdG9y
YWdlUGF0aCgpIGNvbnN0OworCiAgICAgdm9pZCB1c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oKTsK
ICAgICBib29sIGlzVXNpbmdUZXN0aW5nTmV0d29ya1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsgfQogCkBAIC0zODIsNiArMzg5LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGxhbmd1YWdlQ2hhbmdlZCgpOwogCiAgICAgU3RyaW5nIHBsYXRm
b3JtRGVmYXVsdEljb25EYXRhYmFzZVBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgcGxhdGZvcm1E
ZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1Mp
IHx8IEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJl
Y3RvcnkoKSBjb25zdDsKQEAgLTQ2NSw2ICs0NzMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBt
X21lbW9yeVNhbXBsZXJJbnRlcnZhbDsKIAogICAgIFJlZlB0cjxXZWJJY29uRGF0YWJhc2U+IG1f
aWNvbkRhdGFiYXNlOworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU+IG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIAogICAgIGNvbnN0IFJlZlB0cjxBUEk6OldlYnNpdGVE
YXRhU3RvcmU+IG1fd2Vic2l0ZURhdGFTdG9yZTsKIApAQCAtNDg1LDYgKzQ5NCw3IEBAIHByaXZh
dGU6CiAKICAgICBTdHJpbmcgbV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGg7CiAgICAgU3RyaW5n
IG1fb3ZlcnJpZGVDb29raWVTdG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX292ZXJyaWRl
U3RhdGlzdGljc1N0b3JhZ2VQYXRoOwogCiAgICAgYm9vbCBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3
b3JrU2Vzc2lvbjsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlLmgiCisKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlOjpBUElUeXBlKTsKK30KKwordm9pZCBXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZVJlYWREYXRhRnJvbURpc2tJZk5lZWRlZChXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZVJl
ZiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYpCit7CisgICAgdG9JbXBsKHJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZVJlZiktPnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOworfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCisjZGVmaW5lIFdLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3Bs
dXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIHZvaWQgV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoV0tSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVSZWYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlZik7CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZV9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIK
ICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKICNpbXBvcnQgIkRvd25sb2FkQ2xpZW50LmgiCisjaW1w
b3J0ICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCIKICNpbXBvcnQgIlNhbmRib3hVdGls
aXRpZXMuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgpA
QCAtMjUxLDYgKzI1MiwxMSBAQCAtICh2b2lkKV9zZXRBdXRvbWF0aW9uU2Vzc2lvbjooX1dLQXV0
b21hCiAgICAgX3Byb2Nlc3NQb29sLT5zZXRBdXRvbWF0aW9uU2Vzc2lvbihhdXRvbWF0aW9uU2Vz
c2lvbiA/IGF1dG9tYXRpb25TZXNzaW9uLT5fc2Vzc2lvbi5nZXQoKSA6IG51bGxwdHIpOwogfQog
CistICh2b2lkKXNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKXZhbHVlCit7
CisgICAgX3Byb2Nlc3NQb29sLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCh2YWx1
ZSk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDggQEAKIC0gKHZvaWQpX2F1dG9tYXRpb25DYXBhYmlsaXRpZXNEaWRDaGFuZ2UgV0tfQVZB
SUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogLSAodm9pZClfc2V0QXV0b21hdGlvblNl
c3Npb246KF9XS0F1dG9tYXRpb25TZXNzaW9uICopYXV0b21hdGlvblNlc3Npb24gV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCistICh2b2lkKXNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkOihCT09MKXZhbHVlOworCiBAZW5kCiAKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgi
CiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sLmgiCisj
aW1wb3J0ICJXS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENv
bnRyb2xsZXIuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmgi
CiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgpAQCAtOTcsNiArOTgsNyBAQCBwcml2YXRlOgogICAg
IEJPT0wgX2FsbG93c0phdmFTY3JpcHRNYXJrdXA7CiAgICAgQk9PTCBfY29udmVydHNQb3NpdGlv
blN0eWxlT25Db3B5OwogICAgIEJPT0wgX2FsbG93c01ldGFSZWZyZXNoOworICAgIEJPT0wgX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIExh
enlJbml0aWFsaXplZDxSZXRhaW5QdHI8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnk+
PiBfY29udGVudFByb3ZpZGVyUmVnaXN0cnk7CkBAIC0xNDcsNiArMTQ5LDcgQEAgLSAoaW5zdGFu
Y2V0eXBlKWluaXQKICAgICBfYWxsb3dzSmF2YVNjcmlwdE1hcmt1cCA9IFlFUzsKICAgICBfY29u
dmVydHNQb3NpdGlvblN0eWxlT25Db3B5ID0gTk87CiAgICAgX2FsbG93c01ldGFSZWZyZXNoID0g
WUVTOworICAgIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IE5POwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9CkBAIC0xODEsNiArMTg0LDcgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pv
bmUgKil6b25lCiAgICAgY29uZmlndXJhdGlvbi0+X2FsbG93c0phdmFTY3JpcHRNYXJrdXAgPSBz
ZWxmLT5fYWxsb3dzSmF2YVNjcmlwdE1hcmt1cDsKICAgICBjb25maWd1cmF0aW9uLT5fY29udmVy
dHNQb3NpdGlvblN0eWxlT25Db3B5ID0gc2VsZi0+X2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29w
eTsKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dzTWV0YVJlZnJlc2ggPSBzZWxmLT5fYWxsb3dz
TWV0YVJlZnJlc2g7CisgICAgY29uZmlndXJhdGlvbi0+X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkID0gc2VsZi0+X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogCiAjaWYgUExB
VEZPUk0oSU9TKQogICAgIGNvbmZpZ3VyYXRpb24tPl9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNr
ID0gc2VsZi0+X2FsbG93c0lubGluZU1lZGlhUGxheWJhY2s7CkBAIC00NDEsNiArNDQ1LDE3IEBA
IC0gKHZvaWQpX3NldEFsbG93c01ldGFSZWZyZXNoOihCT09MKWFsbG8KICAgICBfYWxsb3dzTWV0
YVJlZnJlc2ggPSBhbGxvd3NNZXRhUmVmcmVzaDsKIH0KIAorLSAoQk9PTClfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQKK3sKKyAgICByZXR1cm4gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkOworfQorCistICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDoo
Qk9PTCllbmFibGVkCit7CisgICAgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZW5h
YmxlZDsKKyAgICBbc2VsZi5wcm9jZXNzUG9vbCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDplbmFibGVkXTsKK30KKwogI2lmIFBMQVRGT1JNKElPUykKIC0gKEJPT0wpX2Fsd2F5c1J1
bnNBdEZvcmVncm91bmRQcmlvcml0eQogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlv
blByaXZhdGUuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw2ICs0OSw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxv
d3NKYXZhU2NyaXB0TWFya3VwOikgQk9PTCBfYWxsb3dzSmF2YVNjcmlwdE1hcmt1cCBXS19BVkFJ
TEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRDb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHk6KSBCT09MIF9jb252ZXJ0c1Bvc2l0
aW9uU3R5bGVPbkNvcHkgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzTWV0YVJlZnJlc2g6KSBCT09MIF9h
bGxvd3NNZXRhUmVmcmVzaCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDopIEJPT0wgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogCiAjaWYgVEFSR0VU
X09TX0lQSE9ORQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWx3YXlzUnVuc0F0
Rm9yZWdyb3VuZFByaW9yaXR5OikgQk9PTCBfYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5
IFdLX0FWQUlMQUJMRShOQSwgOV8wKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAxOTY4MjEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOCBAQCBzdGF0aWMgTlNTdHJpbmcgKldlYktp
dEFwcGxpY2F0aW9uRGlkQ2hhCiAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzkxMzg4MTc+IC0g
QWZ0ZXIgdGhpcyAiYmFja3dhcmRzIGNvbXBhdGliaWxpdHkiIHJhZGFyIGlzIHJlbW92ZWQsIHRo
aXMgY29kZSBzaG91bGQgYmUgcmVtb3ZlZCB0byBvbmx5IHJldHVybiBhbiBlbXB0eSBTdHJpbmcu
CiBOU1N0cmluZyAqV2ViSWNvbkRhdGFiYXNlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYklj
b25EYXRhYmFzZURpcmVjdG9yeURlZmF1bHRzS2V5IjsKIAorTlNTdHJpbmcgKldlYktpdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeURlZmF1bHRzS2V5IjsKKwogc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgV2ViS2l0MkhUVFBQcm94eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFByb3h5IjsK
IHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJIVFRQU1Byb3h5RGVmYXVsdHNLZXkgPSBA
IldlYktpdDJIVFRQU1Byb3h5IjsKIApAQCAtNDI4LDYgKzQzMCwyNiBAQCBTdHJpbmcgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdEljCiAgICAgcmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5n
U3ltbGlua3NJblBhdGgoW2RhdGFiYXNlc0RpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQ
YXRoXSk7CiB9CiAKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlz
dGljc1N0b3JhZ2VQYXRoKCkgY29uc3QKK3sKKyAgICBOU1N0cmluZyAqYXBwTmFtZSA9IFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl07CisgICAgaWYgKCFhcHBOYW1lKQor
ICAgICAgICBhcHBOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFt
ZV07CisgICAgCisgICAgQVNTRVJUKGFwcE5hbWUpOworCisgICAgTlNTdHJpbmcgKnN0b3JhZ2VE
aXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RG
b3JLZXk6V2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeURlZmF1bHRzS2V5XTsK
KyAgICBpZiAoIXN0b3JhZ2VEaXJlY3RvcnkgfHwgIVtzdG9yYWdlRGlyZWN0b3J5IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgTlNFcnJvciAqZXJyb3I7CisgICAg
ICAgIHN0b3JhZ2VEaXJlY3RvcnkgPSBbW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBV
UkxGb3JEaXJlY3Rvcnk6TlNBcHBsaWNhdGlvblN1cHBvcnREaXJlY3RvcnkgaW5Eb21haW46TlNV
c2VyRG9tYWluTWFzayBhcHByb3ByaWF0ZUZvclVSTDpuaWwgY3JlYXRlOllFUyBlcnJvcjomZXJy
b3JdIHBhdGhdOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdG9yYWdlRGlyZWN0b3J5IHx8ICFb
c3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAg
ICAgICAgc3RvcmFnZURpcmVjdG9yeSA9IFtOU0hvbWVEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJMaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQiXTsKKyAgICB9
CisKKyAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbW3N0b3JhZ2VE
aXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmFwcE5hbWVdIHN0cmluZ0J5
U3RhbmRhcmRpemluZ1BhdGhdKTsKK30KKwogYm9vbCBXZWJQcm9jZXNzUG9vbDo6b21pdFBERlN1
cHBvcnQoKQogewogICAgIC8vIFNpbmNlIHRoaXMgaXMgYSAic2VjcmV0IGRlZmF1bHQiIHdlIGRv
bid0IGJvdGhlciByZWdpc3RlcmluZyBpdC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwCShyZXZpc2lvbiAxOTY4MjEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZE9ic2VydmVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0xMTUsNiArMTE2
LDE0IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SWMKICAgICByZXR1
cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGpvaW5lZFBhdGgsIFdlYkNvcmU6
Okljb25EYXRhYmFzZTo6ZGVmYXVsdERhdGFiYXNlRmlsZW5hbWUoKSk7CiB9CiAKK1N0cmluZyBX
ZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKCkgY29u
c3QKK3sKKyAgICBjaGFyIGpvaW5lZFBhdGhbUEFUSF9NQVhdOworICAgIGVpbmFfZmlsZV9wYXRo
X2pvaW4oam9pbmVkUGF0aCwgc2l6ZW9mKGpvaW5lZFBhdGgpLCBlZnJlZXRfZGF0YV9ob21lX2dl
dCgpLCAiV2ViS2l0RWZsIiBFSU5BX1BBVEhfU0VQX1MgIkxvYWRTdGF0aXN0aWNzIik7CisKKyAg
ICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KGpvaW5lZFBhdGgsIFdl
YkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpkZWZhdWx0RmlsZW5hbWUoKSk7Cit9CisKIFN0
cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGly
ZWN0b3J5KCkKIHsKICAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3Rr
L1dlYlByb2Nlc3NQb29sR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAkocmV2aXNpb24gMTk2ODIxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExOCw2ICsxMTgsMTIgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bURlZmF1bHRJYwogICAgIHJldHVybiBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGRhdGFiYXNl
RGlyZWN0b3J5LmdldCgpKTsKIH0KIAorU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURl
ZmF1bHRTdGF0aXN0aWNzU3RvcmFnZVBhdGgoKSBjb25zdAoreworICAgIEdVbmlxdWVQdHI8Z2No
YXI+IHN0YXRpc3RpY3NEaXJlY3RvcnkoZ19idWlsZF9maWxlbmFtZShnX2dldF91c2VyX2NhY2hl
X2RpcigpLCAid2Via2l0Z3RrIiwgImxvYWRzdGF0aXN0aWNzIiwgbnVsbHB0cikpOworICAgIHJl
dHVybiBXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKHN0YXRpc3RpY3NEaXJlY3RvcnkuZ2V0KCkp
OworfQorCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk2ODIxKQor
KysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDY0LDYgKzEwNjQsOSBAQAogCQk3NUE4RDJFMTE4N0RFQzFBMDBDMzlD
OUUgLyogQVBJU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzVBOEQyREUxODdERTg3NDAwQzM5QzlFIC8qIEFQSVNlc3Npb24uaCAqLzsgfTsK
IAkJNzVBOEQyRTIxODdERUMxRTAwQzM5QzlFIC8qIEFQSVNlc3Npb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyREQxODdERTg3NDAwQzM5
QzlFIC8qIEFQSVNlc3Npb24uY3BwICovOyB9OwogCQk3NjJCNzQ4RDEyMEJDNzVDMDA4MTkzMzkg
LyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVu
Y2VzUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTdBNzkxRUZCMUM3
Q0ZEMDEwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjgxQzdD
RkIxMDAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmggKi87
IH07CisJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5j
cHAgKi87IH07CiAJCTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdD
MTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLzsgfTsK
IAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxMzVBQUMxNzNCMENGRjAwNTg2QUUyIC8q
IFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MxMzVBQUExNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0
aW9uTWFjLm1tICovOyB9OwpAQCAtMzA4MSw2ICszMDg0LDExIEBACiAJCTc1QThEMkRFMTg3REU4
NzQwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEFQSVNlc3Npb24uaDsgcGF0aCA9IFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTc2MkI3NDgxMTIwQkJBMDEwMDgxOTMzOSAvKiBG
b250U21vb3RoaW5nTGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9u
dFNtb290aGluZ0xldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MkI3NDg0
MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTlDRDhDMDFDNzc5ODQ5
MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QzBCQjlBODE4RENERTg5MDAwNkMwODYgLyogV2ViQ29udGVudC1pT1MuZW50aXRsZW1l
bnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54bWw7IHBhdGggPSAiV2ViQ29udGVudC1pT1MuZW50aXRsZW1lbnRzIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQkI5QTkxOERDREY1QTAwMDZDMDg2IC8qIE5ldHdvcmstaU9T
LmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQueG1sOyBwYXRoID0gIk5ldHdvcmstaU9TLmVudGl0bGVtZW50cyI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1Bs
dWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NTg0MSw2ICs1ODQ5LDkgQEAKIAkJCQk4NkU2N0EyMjE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vz
c1Rocm90dGxlci5jcHAgKi8sCiAJCQkJODZFNjdBMjExOTBGNDExODAwMDA0QUI3IC8qIFByb2Nl
c3NUaHJvdHRsZXIuaCAqLywKIAkJCQk4MzA0OEFFNTFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vz
c1Rocm90dGxlckNsaWVudC5oICovLAorCQkJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwICovLAorCQkJCTdBOUNEOEMxMUM3Nzk4NDkw
MEQ5RjZDNyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuaCAqLywKKwkJCQk3QTlDRDhD
MjFDNzc5QUQ2MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2Vz
LmluICovLAogCQkJCUJDMTExQjA4MTEyRjVFM0MwMDMzN0JBQiAvKiBSZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcCAqLywKIAkJCQkxQTMwMDY2QzExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5l
c3NUaW1lci5oICovLAogCQkJCTUxQTRENUE4MTZDQUM0RkYwMDBFNjE1RSAvKiBTdGF0aXN0aWNz
UmVxdWVzdC5jcHAgKi8sCkBAIC02ODYwLDYgKzY4NzEsOCBAQAogCQkJCTFBQzEzMzg0MTg1OTBD
NDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3NhZ2VzLmggKi8sCiAJCQkJMEY1
OTQ3QTUxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRjU5NDdBNjE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovLAorCQkJCTdBNzkxRUY5MUM3Q0ZCMzcw
MEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovLAorCQkJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGVNZXNzYWdlcy5oICovLAogCQkJCUUxOEU2OTExMTY5QjY2N0IwMDlCNjY3MCAvKiBT
ZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJRTE4RTY5MTIxNjlCNjY3QjAw
OUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2FnZXMuaCAqLywKIAkJCQlFMThFNjkxMzE2OUI2NjdC
MDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCkBAIC03
NDc2LDYgKzc0ODksNyBAQAogCQkJCTFBMEVDNzVFMTI0QkM3QjIwMDdFRjRBNSAvKiBQbHVnaW5Q
cm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzQjVFMTI0RDVFOUQwMEZGQkZC
NSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEw
NDNEQzExMjRGRjg3NTAwRkZCRkI1IC8qIFBsdWdpblByb3h5LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEVGQTcxMTI1MkI4NDEwMEY3MDY3RiAv
KiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBOUYzMzEyQjg0
NEUyMDA4RkU5ODQgLyogUGx1Z2luUXVpcmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0Q2MjI3
ODE3MzlEODYzMDA1QkQ3RkYgLyogUGx1Z2luU2FuZGJveFByb2ZpbGUuaCBpbiBIZWFkZXJzICov
LApAQCAtODg5NSw2ICs4OTA5LDcgQEAKIAkJCQkxQTJEODRBNDEyN0Y2QUQxMDAxRUI5NjIgLyog
TlBWYXJpYW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzhBQ0ExNDE2NjcwRDg5MDA0
QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNDRjY3MzMx
MkM3RjE1QzAwOEY5QzM1IC8qIE9yaWdpbkFuZERhdGFiYXNlcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDMzg3NDM0MTcyRjU2
MTUwMDFCRDg4QSAvKiBQYWdlQmFubmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMDUyRjI2
MUM2RDNCRDMwMDc2RTkxOSAvKiBBdXRoZW50aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDNkQzN0ZDMTcyRjU1NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVyTWFjLm1t
IGluIFNvdXJjZXMgKi8sCkBAIC05Mjc3LDYgKzkyOTIsNyBAQAogCQkJCUVEQ0E3MUI3MTI4RERB
OEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNjBDNTdBMTI0MEE1NDYwMDhDNUUyOSAvKiBXS0J1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMTRERjlFMTIwQjYzNUYwMDgyNkMwQyAvKiBXS0J1bmRsZVNjcmlw
dFdvcmxkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMx
NDI3MTIxQzIzRjg5RTAwRDQxMTgzIC8qIERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM0MDc1RjUxMjRGRjAyNzAwNjhGMjBBIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDNDA3NjI4MTI0RkYwNDAwMDY4RjIwQSAvKiBXS0NlcnRpZmljYXRl
SW5mb01hYy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCwgMjAxMiwgMjAxNCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmgiCisjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJT
ZXNzaW9uVHJhY2tlci5oIgogI2luY2x1ZGUgIlN0YXRpc3RpY3NEYXRhLmgiCiAjaW5jbHVkZSAi
VXNlckRhdGEuaCIKQEAgLTg3LDYgKzg4LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91
cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5hZ2VyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgpAQCAtMTY2LDYgKzE2OSw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3Mo
KQogICAgICwgbV9oYXNSaWNoQ29udGVudFNlcnZpY2VzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBt
X25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyKCp0aGlzLCAmV2ViUHJvY2Vzczo6bm9uVmlz
aWJsZVByb2Nlc3NDbGVhbnVwVGltZXJGaXJlZCkKKyAgICAsIG1fc3RhdGlzdGljc0NoYW5nZWRU
aW1lcigqdGhpcywgJldlYlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCkKICNp
ZiBQTEFURk9STShJT1MpCiAgICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcigqdGhpcykK
ICNlbmRpZgpAQCAtMzYxLDYgKzM2NSw4IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdl
YlByb2Nlc3MoV2UKICAgICAgICAgfQogICAgIH0KICNlbmRpZgorCisgICAgbV9zdGF0aXN0aWNz
Q2hhbmdlZFRpbWVyLnN0YXJ0UmVwZWF0aW5nKHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDUpKTsKIH0K
IAogdm9pZCBXZWJQcm9jZXNzOjplbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKQpAQCAt
MTI3NSw2ICsxMjgxLDE1IEBAIHZvaWQgV2ViUHJvY2Vzczo6bm9uVmlzaWJsZVByb2Nlc3NDbGVh
bnUKICNlbmRpZgogfQogCit2b2lkIFdlYlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFuZ2VkVGltZXJG
aXJlZCgpCit7CisgICAgYXV0byYgb2JzZXJ2ZXIgPSBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hh
cmVkT2JzZXJ2ZXIoKTsKKyAgICBpZiAob2JzZXJ2ZXIuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKG9i
c2VydmVyLnRha2VTdGF0aXN0aWNzKCkpLCAwKTsKK30KKwogUmVmUHRyPEFQSTo6T2JqZWN0PiBX
ZWJQcm9jZXNzOjp0cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKEFQSTo6T2JqZWN0KiBvYmplY3Qp
CiB7CiAgICAgc3RydWN0IFRyYW5zZm9ybWVyIGZpbmFsIDogVXNlckRhdGE6OlRyYW5zZm9ybWVy
IHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAx
OTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTY4LDYgKzE2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhZ2VXaWxsTGVhdmVX
aW5kb3codWludDY0X3QgcGFnZUlEKTsKIAogICAgIHZvaWQgbm9uVmlzaWJsZVByb2Nlc3NDbGVh
bnVwVGltZXJGaXJlZCgpOworICAgIHZvaWQgc3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVkKCk7
CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGRlc3Ryb3lSZW5kZXJpbmdSZXNvdXJj
ZXMoKTsKQEAgLTM1OCw2ICszNTksNyBAQCBwcml2YXRlOgogCiAgICAgSGFzaFNldDx1aW50NjRf
dD4gbV9wYWdlc0luV2luZG93czsKICAgICBXZWJDb3JlOjpUaW1lciBtX25vblZpc2libGVQcm9j
ZXNzQ2xlYW51cFRpbWVyOworICAgIFdlYkNvcmU6OlRpbWVyIG1fc3RhdGlzdGljc0NoYW5nZWRU
aW1lcjsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIg
bV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTcwNjEpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMi0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBHYXRoZXIgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTQyNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzAyODkyPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJy
b3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tOgorICAgICAgICAoLVtTZXR0aW5nc0NvbnRy
b2xsZXIgX3BvcHVsYXRlTWVudV0pOiBNb3ZlIHNldHRpbmcgZnJvbSBXSzEtb25seSB0byBiZQor
ICAgICAgICB1bml2ZXJzYWxseSBhcHBsaWNhYmxlLgorICAgICAgICAqIE1pbmlCcm93c2VyL21h
Yy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2lu
ZG93Q29udHJvbGxlciBkaWRDaGFuZ2VTZXR0aW5nc10pOiBSZWNvZ25pemUgd2hlbiB0aGUKKyAg
ICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIGZsYWcgaGFzIGNoYW5nZWQuCisKIDIwMTYt
MDItMjQgIE5pa29zIEFuZHJvbmlrb3MgIDxuaWtvcy5hbmRyb25pa29zLXdlYmtpdEBjaXNyYS5j
YW5vbi5jb20uYXU+CiAKICAgICAgICAgW3dlYi1hbmltYXRpb25zXSBBZGQgQW5pbWF0aW9uVGlt
ZWxpbmUsIERvY3VtZW50VGltZWxpbmUgYW5kIGFkZCBleHRlbnNpb25zIHRvIERvY3VtZW50IGlu
dGVyZmFjZQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0JKHJldmlzaW9uIDE5
NjgyMSkKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCSh3b3JraW5nIGNv
cHkpCkBAIC04Myw2ICs4Myw3IEBAIHN0YXRpYyBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpkZWZh
dWx0Q28KICAgICB9CiAKICAgICBjb25maWd1cmF0aW9uLnN1cHByZXNzZXNJbmNyZW1lbnRhbFJl
bmRlcmluZyA9IFtTZXR0aW5nc0NvbnRyb2xsZXIgc2hhcmVkXS5pbmNyZW1lbnRhbFJlbmRlcmlu
Z1N1cHByZXNzZWQ7CisgICAgY29uZmlndXJhdGlvbi5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQgPSBbU2V0dGluZ3NDb250cm9sbGVyIHNoYXJlZF0ucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQ7CiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CiAjZW5kaWYKSW5kZXg6IFRv
b2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0JKHJldmlzaW9uIDE5Njgy
MSkKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQkod29ya2lu
ZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw3IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogICAgIFtz
ZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiU3VwcHJlc3MgSW5jcmVtZW50YWwgUmVuZGVyaW5nIGlu
IE5ldyBXaW5kb3dzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZUluY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3NlZDopIGluZGVudGVkOk5PXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpA
IkVuYWJsZSBBY2NlbGVyYXRlZCBEcmF3aW5nIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZUFjY2Vs
ZXJhdGVkRHJhd2luZ0VuYWJsZWQ6KSBpbmRlbnRlZDpOT107CiAgICAgW3NlbGYgX2FkZEl0ZW1X
aXRoVGl0bGU6QCJFbmFibGUgRGlzcGxheSBMaXN0IERyYXdpbmciIGFjdGlvbjpAc2VsZWN0b3Io
dG9nZ2xlRGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZDopIGluZGVudGVkOk5PXTsKKyAgICBbc2Vs
ZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MiIGFj
dGlvbjpAc2VsZWN0b3IodG9nZ2xlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBpbmRl
bnRlZDpOT107CiAKICAgICBbc2VsZiBfYWRkSGVhZGVyV2l0aFRpdGxlOkAiV2ViS2l0Mi1vbmx5
IFNldHRpbmdzIl07CiAKQEAgLTE0MSw3ICsxNDIsNiBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUK
IAogICAgIFtzZWxmIF9hZGRIZWFkZXJXaXRoVGl0bGU6QCJXZWJLaXQxLW9ubHkgU2V0dGluZ3Mi
XTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBTdWJwaXhlbCBDU1NPTSBN
ZXRyaWNzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZUVuYWJsZVN1YlBpeGVsQ1NTT01NZXRyaWNz
OikgaW5kZW50ZWQ6WUVTXTsKLSAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIkVuYWJsZSBS
ZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBpbmRlbnRlZDpOT107CiB9CiAKIC0gKEJPT0wpdmFsaWRh
dGVNZW51SXRlbTooTlNNZW51SXRlbSAqKW1lbnVJdGVtCkluZGV4OiBUb29scy9NaW5pQnJvd3Nl
ci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9N
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkocmV2aXNpb24gMTk2
ODIxKQorKysgVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
Lm0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5LDExIEBACiAKICNpbXBvcnQgIkFwcERlbGVn
YXRlLmgiCiAjaW1wb3J0ICJTZXR0aW5nc0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgPFdlYktpdC9X
S0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZyYW1lSW5mby5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5o
PgpAQCAtMzQ1LDYgKzM0Nyw4IEBAIC0gKHZvaWQpZGlkQ2hhbmdlU2V0dGluZ3MKICAgICBwcmVm
ZXJlbmNlcy5fcmVzb3VyY2VVc2FnZU92ZXJsYXlWaXNpYmxlID0gc2V0dGluZ3MucmVzb3VyY2VV
c2FnZU92ZXJsYXlWaXNpYmxlOwogICAgIHByZWZlcmVuY2VzLl9kaXNwbGF5TGlzdERyYXdpbmdF
bmFibGVkID0gc2V0dGluZ3MuZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZDsKIAorICAgIF93ZWJW
aWV3LmNvbmZpZ3VyYXRpb24uX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gc2V0dGlu
Z3MucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CisKICAgICBCT09MIHVzZVRyYW5zcGFy
ZW50V2luZG93cyA9IHNldHRpbmdzLnVzZVRyYW5zcGFyZW50V2luZG93czsKICAgICBpZiAodXNl
VHJhbnNwYXJlbnRXaW5kb3dzICE9ICFfd2ViVmlldy5fZHJhd3NCYWNrZ3JvdW5kKSB7CiAgICAg
ICAgIFtzZWxmLndpbmRvdyBzZXRPcGFxdWU6IXVzZVRyYW5zcGFyZW50V2luZG93c107Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272257</attachid>
            <date>2016-02-25 16:04:07 -0800</date>
            <delta_ts>2016-03-03 13:34:04 -0800</delta_ts>
            <desc>Patch (Revised per Anders)</desc>
            <filename>bug-154278-20160225160350.patch</filename>
            <type>text/plain</type>
            <size>64970</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzEzMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE2LTAyLTI1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkanVzdCB2aXNp
YmlsaXR5IG9mIFJlc291cmNlTG9hZFN0YXRpc3RpY3MgaGVhZGVyLgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpyZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKTogUmV2aXNlIGZvcgorICAgICAgICBuZXcgY29uc3RydWN0b3IgYXJn
dW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRh
VG9EaXNrKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6dGFrZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjptZXJnZVN0YXRpc3RpY3MpOiBBZGRlZC4KKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZE9ic2VydmVyOjppc0VtcHR5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZGVmYXVsdEZpbGVuYW1lKTogQWRkZWQuCisgICAgICAgICog
bG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlKTogUmV2aXNlIHRvIHVzZSBpbnRlcm5hbAorICAg
ICAgICAnaGlnaExldmVsRG9tYWluJyBtZW1iZXIuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Om1lcmdl
SGFzaENvdW50ZWRTZXQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3M6Om1lcmdlKTogQWRkZWQuCisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3MpOgorCiAyMDE2LTAyLTI1ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG91bGQgdGVtcGxhdGUgUmVmQ291
bnRlciBpbnN0ZWFkIG9mIFJlZkNvdW50ZXI6OlRva2VuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTY4MjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTI3MDIsNyArMjcwMiw3IEBACiAJCTdBNzRFQ0JCMTAxODM5QTYwMEJG
OTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuaCAqLzsgfTsKIAkJN0E3NEVDQkQxMDE4MzlEQTAwQkY5MzlF
IC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzRFQ0JDMTAxODM5REEwMEJGOTM5RSAvKiBK
U0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi87IH07CiAJCTdBOTI5Q0E2MUM1OThB
OUUwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5Q0ExMUM1OTgzNzgwMDRERjIyNiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLzsgfTsKLQkJN0E5MjlDQTcxQzU5OEFBOTAw
NERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IH07CisJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QTkyOUNBMjFDNTk4Mzc4MDA0REYyMjYgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTdBOTM4Njg1MThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTM4NjgyMThEQ0MxNDUw
MEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLzsgfTsKIAkJN0E5Mzg2ODYxOERDQzE0NTAwQjgy
NjNEIC8qIFZUVFNjYW5uZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBOTM4NjgzMThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmggKi87IH07
CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAvKiBUaWxlQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUEzQTY5NTE5NEE2NEU3
MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3BwICovOyB9OwpAQCAtMjQ5MTcsNiArMjQ5MTcs
NyBAQAogCQkJCTI5QTgxMjJFMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzMzBGQkI5QzFEMDA1MTAyOTMgLyog
QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzQjBG
QkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjJDMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nl
c3NpYmlsaXR5TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDMwRkJCOUMxRDAwNTEw
MjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTI0
MjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCBpbiBIZWFk
ZXJzICovLApAQCAtMjUxNDIsNyArMjUxNDMsNiBAQAogCQkJCTk5Q0MwQjRGMThCRTk4NDkwMDZD
RUJDQyAvKiBDYXB0dXJpbmdJbnB1dEN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDNzM0
MTUxOTc3ODk2RDAwNDZCRkM1IC8qIENBUmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NjU1MEI2OUUwOTlERjAyNzAwOTBENzgxIC8qIENEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNERThCNUVEMUE2OTc3NzMwMEI0QjY2QSAvKiBDRE1Qcml2
YXRlQ2xlYXJLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMzE4NjIzMTk5RjFFMkEwMDMwQTBG
NyAvKiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RERENTcxNTE4QjU3QTgyMDBBOTRGQ0IgLyogQ0RNU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJ
KHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRP
YnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDE4IEBAIFJlc291cmNlTG9h
ZE9ic2VydmVyJiBSZXNvdXJjZUxvYWRPYnNlcnYKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI+IHJlc291cmNlTG9hZE9ic2VydmVyOwogICAgIHJldHVybiBy
ZXNvdXJjZUxvYWRPYnNlcnZlcjsKIH0KLSAgICAKKwordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAg
IGlmIChlbmFibGVkID09IFNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBTZXR0aW5nczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoZW5hYmxlZCk7CisKKyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgcmVhZERh
dGFGcm9tRGlza0lmTmVlZGVkKCk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z0ZyYW1lTmF2aWdhdGlvbihib29sIGlzUmVkaXJlY3QsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBj
b25zdCBVUkwmIHRhcmdldFVSTCwgYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiBtYWluRnJh
bWVVUkwpCiB7CiAgICAgaWYgKCFTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoKSkKQEAgLTE5MCw4ICsyMDEsMTAgQEAgYm9vbCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQ
cmV2YWxlbnRSZQogICAgIAogUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBw
cmltYXJ5RG9tYWluKQogewotICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFp
bnMocHJpbWFyeURvbWFpbikpCi0gICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChw
cmltYXJ5RG9tYWluLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpOworICAgIGlmICghbV9yZXNv
dXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpIHsKKyAgICAgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyBuZXdTdGF0aXN0aWNzKHByaW1hcnlEb21haW4pOworICAgICAg
ICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQocHJpbWFyeURvbWFpbiwgbmV3U3RhdGlzdGlj
cyk7CisgICAgfQogICAgIAogICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5k
KHByaW1hcnlEb21haW4pLT52YWx1ZTsKIH0KQEAgLTI0OSw3ICsyNjIsNyBAQCB2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjp3cml0ZURhdGFUb0RpCiAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMy
KCJvcmlnaW5zVmlzaXRlZCIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7CiAgICAg
CiAgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbV9yZXNv
dXJjZVN0YXRpc3RpY3NNYXAuYmVnaW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCks
IFt0aGlzXShLZXllZEVuY29kZXImIGVuY29kZXJJbm5lciwgY29uc3QgU3RhdGlzdGljc1ZhbHVl
JiBvcmlnaW4pIHsKLSAgICAgICAgb3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIsIG9y
aWdpbi5rZXkpOworICAgICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lcik7CiAg
ICAgfSk7CiAgICAgCiAgICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVs
bF9icm93c2luZ19zZXNzaW9uIik7CkBAIC0yNjMsOCArMjc2LDggQEAgdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaQogICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rl
cjo6ZW5jb2RlcigpOwogICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zpc2l0ZWQi
LCAxKTsKICAgICAKLSAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3Qob3JpZ2luLCByZXNvdXJjZVN0
YXRpc3RpY3MsIFt0aGlzLCAmb3JpZ2luXShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljcykgewotICAgICAgICByZXNv
dXJjZVN0YXRpc3RpY3MuZW5jb2RlKGVuY29kZXIsIG9yaWdpbik7CisgICAgZW5jb2Rlci0+ZW5j
b2RlT2JqZWN0KG9yaWdpbiwgcmVzb3VyY2VTdGF0aXN0aWNzLCBbdGhpc10oS2V5ZWRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3Rp
Y3MpIHsKKyAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWNzLmVuY29kZShlbmNvZGVyKTsKICAgICB9
KTsKICAgICAKICAgICBTdHJpbmcgbGFiZWwgPSBvcmlnaW47CkBAIC0yNzYsNiArMjg5LDExIEBA
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OndyaXRlRGF0YVRvRGkKIHZvaWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKICAgICBtX3N0b3JhZ2VQYXRoID0gcGF0aDsKKworICAgIGlmICghU2V0dGluZ3M6
OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOwogfQogCiBTdHJpbmcgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnBlcnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdApA
QCAtMzA3LDggKzMyNSw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlYWREYXRhRnJv
bUQKICAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNv
dXJjZU9yaWdpbiIsIG9yaWdpbikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdGF0aXN0aWNzOwotICAgICAgICBpZiAoIXN0YXRp
c3RpY3MuZGVjb2RlKGRlY29kZXJJbm5lciwgb3JpZ2luKSkKKyAgICAgICAgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyBzdGF0aXN0aWNzKG9yaWdpbik7CisgICAgICAgIGlmICghc3RhdGlzdGljcy5k
ZWNvZGUoZGVjb2RlcklubmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQob3JpZ2luLCBzdGF0aXN0aWNzKTsKQEAgLTM2
OSw1ICszODcsMjkgQEAgU3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRgog
ICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKG9yaWdp
biktPnZhbHVlOwogICAgIHJldHVybiAiU3RhdGlzdGljcyBmb3IgIiArIG9yaWdpbiArICI6XG4i
ICsgc3RhdGlzdGljcy50b1N0cmluZygpOwogfQotICAgIAorCitWZWN0b3I8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnRha2VTdGF0aXN0aWNzKCkKK3sKKyAg
ICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljczsKKyAgICBmb3IgKGF1
dG8mIHN0YXRpc3RpYyA6IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnZhbHVlcygpKQorICAgICAg
ICBzdGF0aXN0aWNzLmFwcGVuZChzdGF0aXN0aWMpOworCisgICAgbV9yZXNvdXJjZVN0YXRpc3Rp
Y3NNYXAuY2xlYXIoKTsKKworICAgIHJldHVybiBzdGF0aXN0aWNzOworfQorCit2b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjptZXJnZVN0YXRpc3RpY3MoY29uc3QgVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiBzdGF0aXN0aWNzKQoreworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDog
c3RhdGlzdGljcykgeworICAgICAgICBhdXRvIGl0ZXIgPSBtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5maW5kKHN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4pOworICAgICAgICBpZiAoaXRlciA9PSBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkgeworICAgICAgICAgICAgbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAuc2V0KHN0YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4sIHN0YXRpc3RpYyk7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGl0ZXItPnZhbHVlLm1l
cmdlKHN0YXRpc3RpYyk7CisgICAgfQorfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDYgKzUzLDE2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0
aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0
eSgpOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4gdGFrZVN0YXRpc3RpY3MoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWVyZ2VTdGF0
aXN0aWNzKGNvbnN0IFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYpOworCisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsK
KworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdEZpbGVuYW1lKCkgeyByZXR1cm4gQVNDSUlMaXRl
cmFsKCJmdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiKTsgfQorCiBwcml2
YXRlOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlzdGljc0ZvclBy
aW1hcnlEb21haW4oY29uc3QgU3RyaW5nJik7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAxOTY4MjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDkgKzc2LDkgQEAgc3RhdGljIHZvaWQgZW5jb2RlSGFzaENvdW50
ZWRTZXQoS2V5ZWRFbgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBjb25z
dAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUoS2V5ZWRFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJj
ZU9yaWdpbiIsIG9yaWdpbik7CisgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoIlByZXZhbGVudFJl
c291cmNlT3JpZ2luIiwgaGlnaExldmVsRG9tYWluKTsKICAgICAKICAgICAvLyBVc2VyIGludGVy
YWN0aW9uCiAgICAgZW5jb2Rlci5lbmNvZGVCb29sKCJoYWRVc2VySW50ZXJhY3Rpb24iLCBoYWRV
c2VySW50ZXJhY3Rpb24pOwpAQCAtMTMwLDE0ICsxMzAsMTEgQEAgc3RhdGljIHZvaWQgZGVjb2Rl
SGFzaENvdW50ZWRTZXQoS2V5ZWREZQogICAgIH0pOwogfQogCi1ib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29kZXIsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKQorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBk
ZWNvZGVyKQogewotICAgIFN0cmluZyBzdG9yZWRPcmlnaW47Ci0gICAgaWYgKCFkZWNvZGVyLmRl
Y29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBzdG9yZWRPcmlnaW4pKQorICAg
IGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgaGln
aExldmVsRG9tYWluKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIEFTU0VSVF9V
TlVTRUQob3JpZ2luLCBzdG9yZWRPcmlnaW4gPT0gb3JpZ2luKTsKLSAgICAKICAgICAvLyBVc2Vy
IGludGVyYWN0aW9uCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woImhhZFVzZXJJbnRlcmFj
dGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMw
Nyw0ICszMDQsNDcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nKAog
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgorc3RhdGljIHZvaWQgbWVyZ2VIYXNoQ291bnRlZFNldChIYXNoQ291bnRlZFNldDxUPiYgdG8s
IGNvbnN0IEhhc2hDb3VudGVkU2V0PFQ+JiBmcm9tKQoreworICAgIGZvciAoYXV0byYgZW50cnkg
OiBmcm9tKQorICAgICAgICB0by5hZGQoZW50cnkua2V5LCBlbnRyeS52YWx1ZSk7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6bWVyZ2UoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYgb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyLmhpZ2hMZXZlbERvbWFpbiA9PSBoaWdo
TGV2ZWxEb21haW4pOworCisgICAgaGFkVXNlckludGVyYWN0aW9uIHw9IG90aGVyLmhhZFVzZXJJ
bnRlcmFjdGlvbjsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICB0b3BGcmFtZUhh
c0JlZW5SZWRpcmVjdGVkVG8gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvOwor
ICAgIHRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tICs9IG90aGVyLnRvcEZyYW1lSGFzQmVl
blJlZGlyZWN0ZWRGcm9tOworICAgIHRvcEZyYW1lSW5pdGlhbExvYWRDb3VudCArPSBvdGhlci50
b3BGcmFtZUluaXRpYWxMb2FkQ291bnQ7CisgICAgdG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG8g
Kz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87CisgICAgdG9wRnJhbWVIYXNCZWVu
TmF2aWdhdGVkRnJvbSArPSBvdGhlci50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tOworICAg
IHRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlIHw9IG90aGVyLnRvcEZyYW1lSGFzQmVl
bk5hdmlnYXRlZFRvQmVmb3JlOworICAgIAorICAgIC8vIFN1YmZyYW1lIHN0YXRzCisgICAgbWVy
Z2VIYXNoQ291bnRlZFNldChzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLCBvdGhlci5zdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKKyAgICBzdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVk
VG8gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvOworICAgIHN1YmZyYW1lSGFz
QmVlblJlZGlyZWN0ZWRGcm9tICs9IG90aGVyLnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9t
OworICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNUbywgb3Ro
ZXIuc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgc3ViZnJhbWVTdWJSZXNvdXJjZUNv
dW50ICs9IG90aGVyLnN1YmZyYW1lU3ViUmVzb3VyY2VDb3VudDsKKyAgICBzdWJmcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRUbyArPSBvdGhlci5zdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbzsKKyAgICBz
dWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tICs9IG90aGVyLnN1YmZyYW1lSGFzQmVlbk5hdmln
YXRlZEZyb207CisgICAgc3ViZnJhbWVIYXNCZWVuTG9hZGVkQmVmb3JlIHw9IG90aGVyLnN1YmZy
YW1lSGFzQmVlbkxvYWRlZEJlZm9yZTsKKyAgICAKKyAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cwor
ICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucywg
b3RoZXIuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyk7CisgICAgc3VicmVzb3VyY2VI
YXNCZWVuU3VicmVzb3VyY2VDb3VudCArPSBvdGhlci5zdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNv
dXJjZUNvdW50OworICAgIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tICs9IG90aGVy
LnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIHN1YnJlc291cmNlSGFzQmVl
blJlZGlyZWN0ZWRUbyArPSBvdGhlci5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkVG87Cisg
ICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLCBvdGhl
ci5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAgICAKKyAgICAvLyBQcmV2YWxlbnQg
cmVzb3VyY2Ugc3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHJlZGlyZWN0ZWRUb090aGVy
UHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLCBvdGhlci5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVu
dFJlc291cmNlT3JpZ2lucyk7CisgICAgaXNQcmV2YWxlbnRSZXNvdXJjZSB8PSBvdGhlci5pc1By
ZXZhbGVudFJlc291cmNlOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDE2ICszNSwyNyBAQCBjbGFzcyBLZXllZERlY29kZXI7CiBjbGFzcyBLZXllZEVuY29kZXI7
CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsKKyAgICBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikKKyAgICAgICAgOiBoaWdoTGV2ZWxE
b21haW4ocHJpbWFyeURvbWFpbikKKyAgICB7IH0KKworICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoKQorICAgIHsgfQorCiAgICAgYm9vbCBjaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJ
Zk5lY2Vzc2FyeSh1bnNpZ25lZCBvcmlnaW5zVmlzaXRlZFNvRmFyKTsKIAogICAgIGJvb2wgaGFz
UHJldmFsZW50UmVkaXJlY3Rpb24oKSBjb25zdDsKICAgICBib29sIGhhc1ByZXZhbGVudFJlc291
cmNlQ2hhcmFjdGVyaXN0aWNzKCkgY29uc3Q7CiAKLSAgICB2b2lkIGVuY29kZShLZXllZEVuY29k
ZXImLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgY29uc3Q7Ci0gICAgYm9vbCBkZWNvZGUoS2V5ZWRE
ZWNvZGVyJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworICAgIHZvaWQgZW5jb2RlKEtleWVkRW5j
b2RlciYpIGNvbnN0OworICAgIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYpOwogCiAgICAgU3Ry
aW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAKKyAgICB2b2lkIG1lcmdlKGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmKTsKKworICAgIFN0cmluZyBoaWdoTGV2ZWxEb21haW47CisKICAgICAvLyBV
c2VyIGludGVyYWN0aW9uCiAgICAgYm9vbCBoYWRVc2VySW50ZXJhY3Rpb24geyBmYWxzZSB9Owog
ICAgIApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3MTMyKQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTYtMDItMjUgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gR2F0aGVy
IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDcwMjg5
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OiBBZGQgbmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSBmaWxlcyB0
byBidWlsZC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4KKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6
IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBT
aGFyZWQvQVBJL0FQSU9iamVjdC5oOiBBZGQgbmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdHlw
ZS4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAg
KElQQzo6QXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6ZGVjb2RlKTogU3VwcG9ydCBu
ZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB0eXBlLgorICAgICAgICAoSVBDOjplbmNvZGVIYXNo
Q291bnRlZFNldCk6IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+OjplbmNvZGUpOiBBZGRlZC4KKyAgICAgICAgKElQQzo6ZGVjb2RlSGFz
aENvdW50ZWRTZXQpOiBBZGRlZC4KKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPjo6ZGVjb2RlKTogQWRkZWQuCisgICAgICAgICogU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc0RlZmlu
aXRpb25zLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlLmNwcDogQWRkZWQuCisgICAgICAgIChXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dGF0ZUdldFR5cGVJRCk6CisgICAgICAgIChXS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZVJl
YWREYXRhRnJvbURpc2tJZk5lZWRlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBpbml0XSk6IEluaXRpYWxpemUgX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkIHN0YXRlLgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlX
aXRoWm9uZTpdKTogRGl0dG8uCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXSk6IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKTogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29h
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3Rh
dGlzdGljc1N0b3JhZ2VQYXRoKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjp+UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0YXRlOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
S2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OndyaXRlVG9EaXNrKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmg6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW46IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpXZWJQcm9jZXNzUG9vbCk6IEluaXRpYWxpemUgdGhlIHJl
c291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBkYXRhIG9iamVjdC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Bvb2w6On5XZWJQcm9jZXNzUG9vbCk6IFNodXQgZG93biB0aGUgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGRhdGEgb2JqZWN0LgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6c2V0U3RhdGlzdGljc1N0b3JhZ2VQYXRoKTogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpzdGF0aXN0aWNzU3RvcmFnZVBhdGgpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRTdGF0aXN0aWNz
U3RvcmFnZVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQ
b29sR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVm
YXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCk6IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGUgZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6IEluaXRpYWxpemVkIHN0
YXRpc3RpY3MgY2hhbmdlZCBub3RpZmljYXRpb24gdGltZXIuCisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCk6IEFkZGVkLiBTZW5kIGJ1bmRs
ZXMgb2Ygc2l0ZSBsb2FkCisgICAgICAgIHN0YXRpc3RpY3MgdG8gdGhlIFVJUHJvY2VzcyBvbiBh
IHNldCBpbnRlcnZhbC4gQ2xlYXIgb3V0IGxvY2FsIGNhY2hlIGFmdGVyIGVhY2ggc2VuZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAxNi0wMi0yNSAgR2F2aW4gQmFy
cmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgU2hvdWxkIHRlbXBs
YXRlIFJlZkNvdW50ZXIgaW5zdGVhZCBvZiBSZWZDb3VudGVyOjpUb2tlbgpJbmRleDogU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NjMsNiArNjYzLDcgQEAgc2V0KFdlYktpdDJfTUVT
U0FHRVNfSU5fRklMRVMKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZl
ci5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkubWVzc2FnZXMu
aW4KKyAgICBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmlu
CiAgICAgVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KICAgICBVSVByb2Nl
c3MvV2ViQmF0dGVyeU1hbmFnZXJQcm94eS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0Rlcml2
ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJj
ZXMubWFrZQkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJj
ZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQCBNRVNTQUdFX1JFQ0VJVkVS
UyA9IFwKICAgICBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5IFwKICAgICBSZW1vdGVP
YmplY3RSZWdpc3RyeSBcCiAgICAgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IgXAorCVJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSBcCiAgICAgU2VjSXRlbVNoaW0gXAogICAgIFNlY0l0ZW1T
aGltUHJveHkgXAogICAgIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXIgXApJbmRleDogU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCiAg
ICAgVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3MvTGVn
YWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKyAgICBVSVByb2Nlc3MvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0YXRlLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tWaWV3LmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkocmV2aXNp
b24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTk0LDYgKzk0LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3MvRHJhd2lu
Z0FyZWFQcm94eUltcGwuY3BwCiAgICAgVUlQcm9jZXNzL0xlZ2FjeVNlc3Npb25TdGF0ZUNvZGlu
Z05vbmUuY3BwCisgICAgVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAK
IAogICAgIFVJUHJvY2Vzcy9BUEkvQy9jYWlyby9XS0ljb25EYXRhYmFzZUNhaXJvLmNwcAogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNl
L1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzks
NyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvbWFjL1dlYkhpdFRl
c3RSZXN1bHREYXRhLm1tCiAgICAgU2hhcmVkL21hYy9XZWJNZW1vcnlTYW1wbGVyLm1hYy5tbQog
CisgICAgVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAKICAgICBVSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJBdXRvbWF0
aW9uU2Vzc2lvbi5jcHAKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Miw2ICs1
Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb25zdHJhaW50cy5oPgpAQCAtMjA0NCw0
ICsyMDQ1LDE1NiBAQCBib29sIEFyZ3VtZW50Q29kZXI8RXhjZXB0aW9uRGV0YWlscz46OmRlCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3VudGVkU2V0KEFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgSGFzaENvdW50ZWRTZXQ8U3RyaW5nPiYgaGFz
aENvdW50ZWRTZXQpCit7CisgICAgZW5jb2RlciA8PCBoYXNoQ291bnRlZFNldC5zaXplKCk7CisK
KyAgICBmb3IgKGF1dG8gZW50cnkgOiBoYXNoQ291bnRlZFNldCkgeworICAgICAgICBlbmNvZGVy
IDw8IGVudHJ5LmtleTsKKyAgICAgICAgZW5jb2RlciA8PCBlbnRyeS52YWx1ZTsKKyAgICB9Cit9
CisKK3ZvaWQgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYgc3RhdGlzdGljcykKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MuaGlnaExldmVs
RG9tYWluOworICAgIAorICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3MuaGFkVXNlckludGVyYWN0aW9uOworICAgIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0
cworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUb0Jl
Zm9yZTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3Rl
ZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVk
RnJvbTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVJbml0aWFsTG9hZENvdW50
OworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbzsK
KyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsK
KyAgICAKKyAgICAvLyBTdWJmcmFtZSBzdGF0cworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5z
dWJmcmFtZUhhc0JlZW5Mb2FkZWRCZWZvcmU7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1
YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3Vi
ZnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1
YmZyYW1lU3ViUmVzb3VyY2VDb3VudDsKKyAgICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVy
LCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpOworICAgIGVuY29kZUhh
c2hDb3VudGVkU2V0KGVuY29kZXIsIHN0YXRpc3RpY3Muc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNU
byk7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRv
OworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9t
OworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCisgICAgZW5jb2RlciA8PCBzdGF0aXN0
aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29kZXIgPDwgc3Rh
dGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgZW5jb2RlciA8PCBz
dGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQ7CisgICAgZW5jb2Rl
ciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnREaXZpZGVk
QnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQ7CisgICAgZW5jb2RlSGFzaENvdW50ZWRTZXQo
ZW5jb2Rlciwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKKyAg
ICBlbmNvZGVIYXNoQ291bnRlZFNldChlbmNvZGVyLCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5p
cXVlUmVkaXJlY3RzVG8pOworICAgIAorICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQorICAgIGVu
Y29kZUhhc2hDb3VudGVkU2V0KGVuY29kZXIsIHN0YXRpc3RpY3MucmVkaXJlY3RlZFRvT3RoZXJQ
cmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMpOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5pc1By
ZXZhbGVudFJlc291cmNlOworfQorCitzdGF0aWMgYm9vbCBkZWNvZGVIYXNoQ291bnRlZFNldChB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIEhhc2hDb3VudGVkU2V0PFN0cmluZz4mIGhhc2hDb3Vu
dGVkU2V0KQoreworICAgIHVuc2lnbmVkIGVudHJpZXM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShlbnRyaWVzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBlbnRyaWVzOyArK2kpIHsKKyAgICAgICAgU3RyaW5nIG9yaWdpbjsKKyAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShvcmlnaW4pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgY291bnQ7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY291bnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGhhc2hD
b3VudGVkU2V0LmFkZChvcmlnaW4sIGNvdW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiBzdGF0aXN0aWNzKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5oaWdo
TGV2ZWxEb21haW4pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gVXNlciBp
bnRlcmFjdGlvbgorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5oYWRVc2VySW50
ZXJhY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gVG9wIGZyYW1l
IHN0YXRzCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVl
bk5hdmlnYXRlZFRvQmVmb3JlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFt
ZUluaXRpYWxMb2FkQ291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIC8vIFN1YmZyYW1lIHN0YXRzCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJh
bWVIYXNCZWVuUmVkaXJlY3RlZFRvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVk
RnJvbSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2RlSGFzaENvdW50ZWRTZXQoZGVjb2Rlciwgc3Rh
dGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNldChkZWNvZGVyLCBzdGF0aXN0aWNz
LnN1YmZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmln
YXRlZFRvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9t
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
c3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkVG8pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJl
c291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVl
blN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVIYXNoQ291bnRlZFNl
dChkZWNvZGVyLCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZUhhc2hDb3VudGVkU2V0KGRl
Y29kZXIsIHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKKyAgICBpZiAo
IWRlY29kZUhhc2hDb3VudGVkU2V0KGRlY29kZXIsIHN0YXRpc3RpY3MucmVkaXJlY3RlZFRvT3Ro
ZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmlzUHJldmFsZW50UmVzb3VyY2Up
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKKwog
fSAvLyBuYW1lc3BhY2UgSVBDCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAxOTY4MjEpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
ODAsNiArODAsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3RydWN0IFBhc3RlYm9hcmRX
ZWJDb250ZW50Owogc3RydWN0IFBsdWdpbkluZm87CiBzdHJ1Y3QgUmVjZW50U2VhcmNoOworc3Ry
dWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiBzdHJ1Y3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0
ZXJzOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKIHN0cnVjdCBUZXh0SW5kaWNhdG9yRGF0
YTsKQEAgLTQ1NSw2ICs0NTYsMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOgogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHsKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljcyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7Cit9OworCisKIH0gLy8gbmFtZXNwYWNlIElQQwog
CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLAogICAgICAgICBQbHVnaW5TaXRl
RGF0YU1hbmFnZXIsCiAgICAgICAgIFByZWZlcmVuY2VzLAorICAgICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGUsCiAgICAgICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3Vs
dExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAg
ICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rh
dGUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RhdGUuaCIKKworI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0
ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RhdGU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZTo6Y3JlYXRlKFdlYlByb2Nlc3NQb29s
KiBwcm9jZXNzUG9vbCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZSgqcHJvY2Vzc1Bvb2wpKTsKK30KKworUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nl
c3NQb29sKQorICAgIDogbV9wcm9jZXNzUG9vbChwcm9jZXNzUG9vbCkKK3sKKyAgICBtX3Byb2Nl
c3NQb29sLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICp0aGlzKTsKK30KKworUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0YXRlOjp+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlKCkKK3sKK30KKwor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnNldFN0YXRpc3RpY3NTdG9yYWdlRGly
ZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxSZXNvdXJjZUxvYWRPYnNlcnZlcj4oKTsKKyAgICBtX3Jlc291
cmNlTG9hZE9ic2VydmVyLT5zZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShwYXRoKTsKK30K
Kwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYg
b3JpZ2lucykKK3sKKyAgICBtX3Jlc291cmNlTG9hZE9ic2VydmVyLT5tZXJnZVN0YXRpc3RpY3Mo
b3JpZ2lucyk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1fcmVz
b3VyY2VMb2FkT2JzZXJ2ZXIpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkT2JzZXJ2ZXItPnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworfQorCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZTo6cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCkKK3sKKyAgICBp
ZiAobV9yZXNvdXJjZUxvYWRPYnNlcnZlcikKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRPYnNlcnZl
ci0+cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlOjp3cml0ZVRvRGlzaygpCit7CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIpCisgICAgICAgIG1fcmVzb3VyY2VMb2FkT2JzZXJ2ZXItPndyaXRlRGF0YVRvRGlzaygp
OworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZV9oCisjZGVmaW5lIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdGF0ZV9oCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNl
TG9hZE9ic2VydmVyOworc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQcm9jZXNzUG9vbDsKKworY2xhc3MgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlPiBjcmVhdGUoV2ViUHJvY2Vzc1Bvb2wqKTsKKyAgICB2aXJ0dWFsIH5SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoKTsKKyAgICAKKyAgICB2b2lkIHNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOworICAgIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JhZ2VE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4mIG9yaWdpbnMpOworCisgICAgdm9pZCB3cml0ZVRvRGlzaygpOworICAgIHZvaWQgcmVhZERh
dGFGcm9tRGlza0lmTmVlZGVkKCk7CisgICAgCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZShXZWJQcm9jZXNzUG9vbCYpOworICAgIAorICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICAKKyAg
ICBXZWJQcm9jZXNzUG9vbCYgbV9wcm9jZXNzUG9vbDsKKyAgICAKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI+IG1fcmVzb3VyY2VMb2FkT2JzZXJ2ZXI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0YXRlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlIHsKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gb3JpZ2lucykKK30KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNp
b24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw2ICszOSw3IEBACiAj
aW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NQcm94eS5o
IgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5oIgogI2luY2x1ZGUgIlNh
bmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUg
IlRleHRDaGVja2VyLmgiCkBAIC0xNzUsNiArMTc2LDggQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlBy
b2Nlc3NQb29sKEFQSTo6UHJvYwogCiAgICAgLy8gTk9URTogVGhlc2Ugc3ViLW9iamVjdHMgbXVz
dCBiZSBpbml0aWFsaXplZCBhZnRlciBtX21lc3NhZ2VSZWNlaXZlck1hcC4uCiAgICAgbV9pY29u
RGF0YWJhc2UgPSBXZWJJY29uRGF0YWJhc2U6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU6OmNyZWF0ZSh0aGlz
KTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnNldFN0YXRpc3RpY3NTdG9yYWdlRGly
ZWN0b3J5KHN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpKTsKIAogICAgIGFkZFN1cHBsZW1lbnQ8V2Vi
Q29va2llTWFuYWdlclByb3h5PigpOwogICAgIGFkZFN1cHBsZW1lbnQ8V2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHk+KCk7CkBAIC0yMjksNiArMjMyLDkgQEAgV2ViUHJvY2Vzc1Bvb2w6On5XZWJQ
cm9jZXNzUG9vbCgpCiAgICAgICAgIGl0LT52YWx1ZS0+Y2xlYXJQcm9jZXNzUG9vbCgpOwogICAg
IH0KIAorICAgIC8vIEZJWE1FKDE1NDY0Mik6IFRoaXMgc2hvdWxkIG5vdCBiZSBkb25lIGluIG9u
ZSBsb25nIG9wZXJhdGlvbiB3aGVuIGV4aXRpbmcuCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLT53cml0ZVRvRGlzaygpOworICAgIAogICAgIG1faWNvbkRhdGFiYXNlLT5pbnZhbGlkYXRl
KCk7CiAgICAgbV9pY29uRGF0YWJhc2UtPmNsZWFyUHJvY2Vzc1Bvb2woKTsKICAgICBXZWJJY29u
RGF0YWJhc2UqIHJhd0ljb25EYXRhYmFzZSA9IG1faWNvbkRhdGFiYXNlLnJlbGVhc2UoKS5sZWFr
UmVmKCk7CkBAIC0xMDUzLDYgKzEwNTksMjYgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjppY29u
RGF0YWJhc2VQYXRoKAogICAgIHJldHVybiBwbGF0Zm9ybURlZmF1bHRJY29uRGF0YWJhc2VQYXRo
KCk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFN0YXRpc3RpY3NTdG9yYWdlUGF0aChj
b25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbV9vdmVycmlkZVN0YXRpc3RpY3NTdG9yYWdlUGF0
aCA9IHBhdGg7CisgICAgaWYgKCFtX292ZXJyaWRlU3RhdGlzdGljc1N0b3JhZ2VQYXRoLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zZXRTdGF0aXN0aWNzU3Rv
cmFnZURpcmVjdG9yeShwYXRoKTsKK30KKworU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpzdGF0aXN0
aWNzU3RvcmFnZVBhdGgoKSBjb25zdAoreworICAgIGlmICghbV9vdmVycmlkZVN0YXRpc3RpY3NT
dG9yYWdlUGF0aC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG1fb3ZlcnJpZGVTdGF0aXN0aWNz
U3RvcmFnZVBhdGg7CisgICAgCisgICAgcmV0dXJuIHBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NT
dG9yYWdlUGF0aCgpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKK30KKwog
I2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmNvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgRG93bmxvYWRQcm94eTsKK2NsYXNzIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZTsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uOwogY2xhc3MgV2ViQ29u
dGV4dFN1cHBsZW1lbnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7CkBAIC0yMjgsNiArMjI5LDkg
QEAgcHVibGljOgogICAgIFdlYkNvbnRleHRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xp
ZW50OyB9CiAKICAgICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFzZSgpIGNvbnN0IHsgcmV0
dXJuIG1faWNvbkRhdGFiYXNlLmdldCgpOyB9CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KKworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoYm9vbCk7CiAKICAgICBzdHJ1Y3QgU3RhdGlzdGljcyB7CiAgICAgICAg
IHVuc2lnbmVkIHdrVmlld0NvdW50OwpAQCAtMjQwLDYgKzI0NCw5IEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgaWNvbkRhdGFiYXNlUGF0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0Q29va2llU3RvcmFn
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIGRpcikgeyBtX292ZXJyaWRlQ29va2llU3RvcmFnZURp
cmVjdG9yeSA9IGRpcjsgfQogCisgICAgdm9pZCBzZXRTdGF0aXN0aWNzU3RvcmFnZVBhdGgoY29u
c3QgU3RyaW5nJik7CisgICAgU3RyaW5nIHN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpIGNvbnN0Owor
CiAgICAgdm9pZCB1c2VUZXN0aW5nTmV0d29ya1Nlc3Npb24oKTsKICAgICBib29sIGlzVXNpbmdU
ZXN0aW5nTmV0d29ya1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFVzZVRlc3RpbmdO
ZXR3b3JrU2Vzc2lvbjsgfQogCkBAIC0zODIsNiArMzg5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGxhbmd1YWdlQ2hhbmdlZCgpOwogCiAgICAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdEljb25EYXRh
YmFzZVBhdGgoKSBjb25zdDsKKyAgICBTdHJpbmcgcGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0
b3JhZ2VQYXRoKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShJT1MpIHx8IEVOQUJMRShTRUNDT01Q
X0ZJTFRFUlMpCiAgICAgU3RyaW5nIGNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdDsKQEAg
LTQ2NSw2ICs0NzMsNyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX21lbW9yeVNhbXBsZXJJbnRl
cnZhbDsKIAogICAgIFJlZlB0cjxXZWJJY29uRGF0YWJhc2U+IG1faWNvbkRhdGFiYXNlOworICAg
IFJlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGU+IG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljczsKIAogICAgIGNvbnN0IFJlZlB0cjxBUEk6OldlYnNpdGVEYXRhU3RvcmU+IG1fd2Vic2l0
ZURhdGFTdG9yZTsKIApAQCAtNDg1LDYgKzQ5NCw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcg
bV9vdmVycmlkZUljb25EYXRhYmFzZVBhdGg7CiAgICAgU3RyaW5nIG1fb3ZlcnJpZGVDb29raWVT
dG9yYWdlRGlyZWN0b3J5OworICAgIFN0cmluZyBtX292ZXJyaWRlU3RhdGlzdGljc1N0b3JhZ2VQ
YXRoOwogCiAgICAgYm9vbCBtX3Nob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbjsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCiAj
aW1wb3J0ICJEb3dubG9hZENsaWVudC5oIgorI2ltcG9ydCAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0YXRlLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXS09iamVj
dC5oIgogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKQEAgLTI1MSw2ICsyNTIsMTEgQEAgLSAodm9p
ZClfc2V0QXV0b21hdGlvblNlc3Npb246KF9XS0F1dG9tYQogICAgIF9wcm9jZXNzUG9vbC0+c2V0
QXV0b21hdGlvblNlc3Npb24oYXV0b21hdGlvblNlc3Npb24gPyBhdXRvbWF0aW9uU2Vzc2lvbi0+
X3Nlc3Npb24uZ2V0KCkgOiBudWxscHRyKTsKIH0KIAorLSAodm9pZClzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZDooQk9PTCl2YWx1ZQoreworICAgIF9wcm9jZXNzUG9vbC0+c2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQodmFsdWUpOworfQorCiBAZW5kCiAKICNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkocmV2aXNpb24gMTk2ODIx
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBACiAtICh2b2lkKV9hdXRvbWF0
aW9uQ2FwYWJpbGl0aWVzRGlkQ2hhbmdlIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1Nf
VEJBKTsKIC0gKHZvaWQpX3NldEF1dG9tYXRpb25TZXNzaW9uOihfV0tBdXRvbWF0aW9uU2Vzc2lv
biAqKWF1dG9tYXRpb25TZXNzaW9uIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJB
KTsKIAorLSAodm9pZClzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDooQk9PTCl2YWx1
ZTsKKwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHJldmlz
aW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Q29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAj
aW1wb3J0ICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiV0tQcmVmZXJlbmNlcy5o
IgogI2ltcG9ydCAiV0tQcm9jZXNzUG9vbC5oIgorI2ltcG9ydCAiV0tQcm9jZXNzUG9vbFByaXZh
dGUuaCIKICNpbXBvcnQgIldLVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIK
QEAgLTk3LDYgKzk4LDcgQEAgcHJpdmF0ZToKICAgICBCT09MIF9hbGxvd3NKYXZhU2NyaXB0TWFy
a3VwOwogICAgIEJPT0wgX2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weTsKICAgICBCT09MIF9h
bGxvd3NNZXRhUmVmcmVzaDsKKyAgICBCT09MIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPFdL
V2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Pj4gX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5
OwpAQCAtMTQ3LDYgKzE0OSw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgX2FsbG93c0ph
dmFTY3JpcHRNYXJrdXAgPSBZRVM7CiAgICAgX2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weSA9
IE5POwogICAgIF9hbGxvd3NNZXRhUmVmcmVzaCA9IFlFUzsKKyAgICBfcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgPSBOTzsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMTgxLDYgKzE4
NCw3IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogICAgIGNvbmZpZ3VyYXRp
b24tPl9hbGxvd3NKYXZhU2NyaXB0TWFya3VwID0gc2VsZi0+X2FsbG93c0phdmFTY3JpcHRNYXJr
dXA7CiAgICAgY29uZmlndXJhdGlvbi0+X2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weSA9IHNl
bGYtPl9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHk7CiAgICAgY29uZmlndXJhdGlvbi0+X2Fs
bG93c01ldGFSZWZyZXNoID0gc2VsZi0+X2FsbG93c01ldGFSZWZyZXNoOworICAgIGNvbmZpZ3Vy
YXRpb24tPl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHNlbGYtPl9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZDsKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBjb25maWd1cmF0
aW9uLT5fYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IHNlbGYtPl9hbGxvd3NJbmxpbmVNZWRp
YVBsYXliYWNrOwpAQCAtNDQxLDYgKzQ0NSwxNyBAQCAtICh2b2lkKV9zZXRBbGxvd3NNZXRhUmVm
cmVzaDooQk9PTClhbGxvCiAgICAgX2FsbG93c01ldGFSZWZyZXNoID0gYWxsb3dzTWV0YVJlZnJl
c2g7CiB9CiAKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCit7CisgICAg
cmV0dXJuIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKK30KKworLSAodm9pZClfc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIF9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgW3NlbGYucHJvY2Vzc1Bv
b2wgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6ZW5hYmxlZF07Cit9CisKICNpZiBQ
TEFURk9STShJT1MpCiAtIChCT09MKV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDE5Njgy
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzSmF2YVNjcmlwdE1hcmt1cDopIEJPT0wg
X2FsbG93c0phdmFTY3JpcHRNYXJrdXAgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19U
QkEpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q29udmVydHNQb3NpdGlvblN0
eWxlT25Db3B5OikgQk9PTCBfY29udmVydHNQb3NpdGlvblN0eWxlT25Db3B5IFdLX0FWQUlMQUJM
RShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldEFsbG93c01ldGFSZWZyZXNoOikgQk9PTCBfYWxsb3dzTWV0YVJlZnJlc2ggV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZDsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBzZXR0ZXI9X3NldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTopIEJPT0wg
X2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBXS19BVkFJTEFCTEUoTkEsIDlfMCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTczLDYg
KzczLDggQEAgc3RhdGljIE5TU3RyaW5nICpXZWJLaXRBcHBsaWNhdGlvbkRpZENoYQogLy8gRklY
TUU6IDxyZGFyOi8vcHJvYmxlbS85MTM4ODE3PiAtIEFmdGVyIHRoaXMgImJhY2t3YXJkcyBjb21w
YXRpYmlsaXR5IiByYWRhciBpcyByZW1vdmVkLCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQg
dG8gb25seSByZXR1cm4gYW4gZW1wdHkgU3RyaW5nLgogTlNTdHJpbmcgKldlYkljb25EYXRhYmFz
ZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJJY29uRGF0YWJhc2VEaXJlY3RvcnlEZWZhdWx0
c0tleSI7CiAKK05TU3RyaW5nICpXZWJLaXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
RGVmYXVsdHNLZXkgPSBAIldlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlEZWZh
dWx0c0tleSI7CisKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdDJIVFRQUHJveHlEZWZh
dWx0c0tleSA9IEAiV2ViS2l0MkhUVFBQcm94eSI7CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBX
ZWJLaXQySFRUUFNQcm94eURlZmF1bHRzS2V5ID0gQCJXZWJLaXQySFRUUFNQcm94eSI7CiAKQEAg
LTQyOCw2ICs0MzAsMjYgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybURlZmF1bHRJ
YwogICAgIHJldHVybiBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtkYXRhYmFzZXNE
aXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwogfQogCitTdHJpbmcgV2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtRGVmYXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpIGNvbnN0Cit7
CisgICAgTlNTdHJpbmcgKmFwcE5hbWUgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdOworICAgIGlmICghYXBwTmFtZSkKKyAgICAgICAgYXBwTmFtZSA9IFtbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOworICAgIAorICAgIEFTU0VSVChhcHBO
YW1lKTsKKworICAgIE5TU3RyaW5nICpzdG9yYWdlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnlEZWZhdWx0c0tleV07CisgICAgaWYgKCFzdG9yYWdlRGlyZWN0b3J5
IHx8ICFbc3RvcmFnZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7
CisgICAgICAgIE5TRXJyb3IgKmVycm9yOworICAgICAgICBzdG9yYWdlRGlyZWN0b3J5ID0gW1tb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gVVJMRm9yRGlyZWN0b3J5Ok5TQXBwbGljYXRp
b25TdXBwb3J0RGlyZWN0b3J5IGluRG9tYWluOk5TVXNlckRvbWFpbk1hc2sgYXBwcm9wcmlhdGVG
b3JVUkw6bmlsIGNyZWF0ZTpZRVMgZXJyb3I6JmVycm9yXSBwYXRoXTsKKyAgICAgICAgCisgICAg
ICAgIGlmICghc3RvcmFnZURpcmVjdG9yeSB8fCAhW3N0b3JhZ2VEaXJlY3RvcnkgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIHN0b3JhZ2VEaXJlY3RvcnkgPSBb
TlNIb21lRGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTGlicmFy
eS9BcHBsaWNhdGlvbiBTdXBwb3J0Il07CisgICAgfQorCisgICAgcmV0dXJuIHN0cmluZ0J5UmVz
b2x2aW5nU3ltbGlua3NJblBhdGgoW1tzdG9yYWdlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDphcHBOYW1lXSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7Cit9CisK
IGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Om9taXRQREZTdXBwb3J0KCkKIHsKICAgICAvLyBTaW5jZSB0
aGlzIGlzIGEgInNlY3JldCBkZWZhdWx0IiB3ZSBkb24ndCBib3RoZXIgcmVnaXN0ZXJpbmcgaXQu
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQ
b29sRWZsLmNwcAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVu
dGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIApAQCAtMTE1LDYgKzExNiwxNCBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtRGVmYXVsdEljCiAgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChqb2luZWRQYXRoLCBXZWJDb3JlOjpJY29uRGF0YWJhc2U6OmRlZmF1bHREYXRh
YmFzZUZpbGVuYW1lKCkpOwogfQogCitTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtRGVm
YXVsdFN0YXRpc3RpY3NTdG9yYWdlUGF0aCgpIGNvbnN0Cit7CisgICAgY2hhciBqb2luZWRQYXRo
W1BBVEhfTUFYXTsKKyAgICBlaW5hX2ZpbGVfcGF0aF9qb2luKGpvaW5lZFBhdGgsIHNpemVvZihq
b2luZWRQYXRoKSwgZWZyZWV0X2RhdGFfaG9tZV9nZXQoKSwgIldlYktpdEVmbCIgRUlOQV9QQVRI
X1NFUF9TICJMb2FkU3RhdGlzdGljcyIpOworCisgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChqb2luZWRQYXRoLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6ZGVmYXVsdEZpbGVuYW1lKCkpOworfQorCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2Fj
eVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAgICAgcmV0dXJuIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0
ay5jcHAJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNiArMTE4LDEyIEBA
IFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0SWMKICAgICByZXR1cm4gV2Vi
Q29yZTo6ZmlsZW5hbWVUb1N0cmluZyhkYXRhYmFzZURpcmVjdG9yeS5nZXQoKSk7CiB9CiAKK1N0
cmluZyBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1EZWZhdWx0U3RhdGlzdGljc1N0b3JhZ2VQYXRo
KCkgY29uc3QKK3sKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBzdGF0aXN0aWNzRGlyZWN0b3J5KGdf
YnVpbGRfZmlsZW5hbWUoZ19nZXRfdXNlcl9jYWNoZV9kaXIoKSwgIndlYmtpdGd0ayIsICJsb2Fk
c3RhdGlzdGljcyIsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6ZmlsZW5hbWVUb1N0
cmluZyhzdGF0aXN0aWNzRGlyZWN0b3J5LmdldCgpKTsKK30KKwogU3RyaW5nIFdlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogewogICAg
IHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NjgyMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw2ICsxMDY0
LDkgQEAKIAkJNzVBOEQyRTExODdERUMxQTAwQzM5QzlFIC8qIEFQSVNlc3Npb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1QThEMkRFMTg3REU4NzQw
MEMzOUM5RSAvKiBBUElTZXNzaW9uLmggKi87IH07CiAJCTc1QThEMkUyMTg3REVDMUUwMEMzOUM5
RSAvKiBBUElTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1QThEMkREMTg3REU4NzQwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmNwcCAqLzsg
fTsKIAkJNzYyQjc0OEQxMjBCQzc1QzAwODE5MzM5IC8qIFdLUHJlZmVyZW5jZXNSZWZQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjJCNzQ4
NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QTc5MUVGQTFDN0NGQ0Yx
MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzkxRUY5
MUM3Q0ZCMzcwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OworCQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdlcy5oICovOyB9OworCQk3QTc5MUVGQzFDN0QwOEM1MDBD
NEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwICovOyB9OwogCQk3QzEzNUFBODE3M0Iw
QkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyog
V0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFF
MiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZv
cm1hdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdDMTM1QUFDMTczQjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUFBMTcz
QjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSAqLzsgfTsKQEAgLTMwODEs
NiArMzA4NCwxMSBAQAogCQk3NUE4RDJERTE4N0RFODc0MDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBUElTZXNzaW9uLmg7IHBhdGggPSBV
SVByb2Nlc3MvQVBJL0FQSVNlc3Npb24uaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQk3NjJCNzQ4MTEyMEJCQTAxMDA4MTkzMzkgLyogRm9udFNtb290aGluZ0xldmVsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvbnRTbW9vdGhpbmdMZXZlbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVm
ZXJlbmNlc1JlZlByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQ
cmVmZXJlbmNlc1JlZlByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E3
OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3Nh
Z2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNzkx
RUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGVNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTlDRDhDMjFDNzc5
QUQ2MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLm1lc3NhZ2VzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQkI5QTgxOERDREU4OTAwMDZD
MDg2IC8qIFdlYkNvbnRlbnQtaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueG1sOyBwYXRoID0gIldlYkNvbnRlbnQt
aU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMEJCOUE5
MThEQ0RGNUEwMDA2QzA4NiAvKiBOZXR3b3JrLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9ICJO
ZXR3b3JrLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4NDEsNiArNTg0OSw5IEBACiAJCQkJODZF
NjdBMjIxOTBGNDExODAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuY3BwICovLAogCQkJCTg2
RTY3QTIxMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggKi8sCiAJCQkJODMw
NDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAqLywKKwkJ
CQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRl
LmNwcCAqLywKKwkJCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlLmggKi8sCisJCQkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzExMUIwODExMkY1
RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMx
MTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1MUE0RDVB
ODE2Q0FDNEZGMDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICovLApAQCAtNjg2MCw2
ICs2ODcxLDggQEAKIAkJCQkxQUMxMzM4NDE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0
UmVnaXN0cnlNZXNzYWdlcy5oICovLAogCQkJCTBGNTk0N0E1MTg3QjUxNzYwMDQzNzg1NyAvKiBS
ZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEY1
OTQ3QTYxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2Fn
ZXMuaCAqLywKKwkJCQk3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0YXRlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk3QTc5MUVGODFDN0NGQjEw
MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlTWVzc2FnZXMuaCAqLywKIAkJ
CQlFMThFNjkxMTE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovLAogCQkJCUUxOEU2OTEyMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3Nh
Z2VzLmggKi8sCiAJCQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNzQ3Niw2ICs3NDg5LDcgQEAKIAkJCQkxQTBF
Qzc1RTEyNEJDN0IyMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTA0M0I1RTEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVz
c2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzREMxMTI0RkY4NzUwMEZGQkZCNSAvKiBQ
bHVnaW5Qcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJC
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQThFRkE3MTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUE0QTlGMzMxMkI4NDRFMjAwOEZFOTg0IC8qIFBsdWdpblF1aXJr
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NENjIyNzgxNzM5RDg2MzAwNUJEN0ZGIC8qIFBsdWdp
blNhbmRib3hQcm9maWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTg4OTUsNiArODkwOSw3IEBACiAJ
CQkJMUEyRDg0QTQxMjdGNkFEMTAwMUVCOTYyIC8qIE5QVmFyaWFudERhdGEuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM4QUNBMTQxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUJDQ0Y2NzMzMTJDN0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5B
bmREYXRhYmFzZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E3OTFFRkExQzdDRkNGMTAwQzRD
NTJCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QzM4NzQzNDE3MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzA1MkYyNjFDNkQzQkQzMDA3NkU5MTkgLyogQXV0aGVu
dGljYXRpb25NYW5hZ2VyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzZEMzdGQzE3MkY1
NTVGMDA5RDI4NDcgLyogUGFnZUJhbm5lck1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtOTI3Nyw2
ICs5MjkyLDcgQEAKIAkJCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdl
T3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYwQzU3QTEyNDBBNTQ2MDA4QzVFMjkg
LyogV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzE0REY5RTEy
MEI2MzVGMDA4MjZDMEMgLyogV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0MTE4MyAvKiBE
b3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUY1MTI0RkYwMjcwMDY4RjIw
QSAvKiBXS0NlcnRpZmljYXRlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzYyODEy
NEZGMDQwMDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0gaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
MTk2ODIxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIw
MTAsIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTAsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlci5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdGF0ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKICNpbmNsdWRl
ICJTdGF0aXN0aWNzRGF0YS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC04Nyw2ICs4OCw4
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtTWVkaWFTZXNzaW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE2Niw2ICsx
NjksNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1faGFzUmljaENvbnRlbnRT
ZXJ2aWNlcyhmYWxzZSkKICNlbmRpZgogICAgICwgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBU
aW1lcigqdGhpcywgJldlYlByb2Nlc3M6Om5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmly
ZWQpCisgICAgLCBtX3N0YXRpc3RpY3NDaGFuZ2VkVGltZXIoKnRoaXMsICZXZWJQcm9jZXNzOjpz
dGF0aXN0aWNzQ2hhbmdlZFRpbWVyRmlyZWQpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgbV93
ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIoKnRoaXMpCiAjZW5kaWYKQEAgLTM2MSw2ICszNjUsOCBA
QCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlCiAgICAgICAgIH0KICAg
ICB9CiAjZW5kaWYKKworICAgIG1fc3RhdGlzdGljc0NoYW5nZWRUaW1lci5zdGFydFJlcGVhdGlu
ZyhzdGQ6OmNocm9ubzo6c2Vjb25kcyg1KSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKQEAgLTEyNzUsNiArMTI4MSwxNSBAQCB2b2lkIFdl
YlByb2Nlc3M6Om5vblZpc2libGVQcm9jZXNzQ2xlYW51CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQ
cm9jZXNzOjpzdGF0aXN0aWNzQ2hhbmdlZFRpbWVyRmlyZWQoKQoreworICAgIGF1dG8mIG9ic2Vy
dmVyID0gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCk7CisgICAgaWYgKG9i
c2VydmVyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChvYnNlcnZlci50YWtlU3RhdGlzdGljcygpKSwg
MCk7Cit9CisKIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vzczo6dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyhBUEk6Ok9iamVjdCogb2JqZWN0KQogewogICAgIHN0cnVjdCBUcmFuc2Zvcm1l
ciBmaW5hbCA6IFVzZXJEYXRhOjpUcmFuc2Zvcm1lciB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMTk2ODIxKQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2OCw2ICsxNjgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CiAK
ICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsKKyAgICB2b2lk
IHN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBkZXN0cm95UmVuZGVyaW5nUmVzb3VyY2VzKCk7CkBAIC0zNTgsNiArMzU5LDcgQEAg
cHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fcGFnZXNJbldpbmRvd3M7CiAgICAg
V2ViQ29yZTo6VGltZXIgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lcjsKKyAgICBXZWJD
b3JlOjpUaW1lciBtX3N0YXRpc3RpY3NDaGFuZ2VkVGltZXI7CiAKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTk3MDYxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTYtMDItMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5j
b20+CisKKyAgICAgICAgW1dLMl0gR2F0aGVyIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjc4CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yNDcwMjg5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xs
ZXIubToKKyAgICAgICAgKC1bU2V0dGluZ3NDb250cm9sbGVyIF9wb3B1bGF0ZU1lbnVdKTogTW92
ZSBzZXR0aW5nIGZyb20gV0sxLW9ubHkgdG8gYmUKKyAgICAgICAgdW5pdmVyc2FsbHkgYXBwbGlj
YWJsZS4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIubToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgZGlkQ2hhbmdlU2V0
dGluZ3NdKTogUmVjb2duaXplIHdoZW4gdGhlCisgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlz
dGljcyBmbGFnIGhhcyBjaGFuZ2VkLgorCiAyMDE2LTAyLTI0ICBOaWtvcyBBbmRyb25pa29zICA8
bmlrb3MuYW5kcm9uaWtvcy13ZWJraXRAY2lzcmEuY2Fub24uY29tLmF1PgogCiAgICAgICAgIFt3
ZWItYW5pbWF0aW9uc10gQWRkIEFuaW1hdGlvblRpbWVsaW5lLCBEb2N1bWVudFRpbWVsaW5lIGFu
ZCBhZGQgZXh0ZW5zaW9ucyB0byBEb2N1bWVudCBpbnRlcmZhY2UKSW5kZXg6IFRvb2xzL01pbmlC
cm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2Vy
L21hYy9BcHBEZWxlZ2F0ZS5tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBUb29scy9NaW5pQnJvd3Nl
ci9tYWMvQXBwRGVsZWdhdGUubQkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBzdGF0
aWMgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqZGVmYXVsdENvCiAgICAgfQogCiAgICAgY29uZmln
dXJhdGlvbi5zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcgPSBbU2V0dGluZ3NDb250cm9s
bGVyIHNoYXJlZF0uaW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2VkOworICAgIGNvbmZpZ3Vy
YXRpb24uX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gW1NldHRpbmdzQ29udHJvbGxl
ciBzaGFyZWRdLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogICAgIHJldHVybiBjb25m
aWd1cmF0aW9uOwogfQogI2VuZGlmCkluZGV4OiBUb29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGlu
Z3NDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRp
bmdzQ29udHJvbGxlci5tCShyZXZpc2lvbiAxOTY4MjEpCisrKyBUb29scy9NaW5pQnJvd3Nlci9t
YWMvU2V0dGluZ3NDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBA
QCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlN1
cHByZXNzIEluY3JlbWVudGFsIFJlbmRlcmluZyBpbiBOZXcgV2luZG93cyIgYWN0aW9uOkBzZWxl
Y3Rvcih0b2dnbGVJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzZWQ6KSBpbmRlbnRlZDpOT107
CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgQWNjZWxlcmF0ZWQgRHJhd2lu
ZyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOikgaW5k
ZW50ZWQ6Tk9dOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIERpc3BsYXkg
TGlzdCBEcmF3aW5nIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZURpc3BsYXlMaXN0RHJhd2luZ0Vu
YWJsZWQ6KSBpbmRlbnRlZDpOT107CisgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFi
bGUgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOwogCiAgICAgW3NlbGYgX2Fk
ZEhlYWRlcldpdGhUaXRsZTpAIldlYktpdDItb25seSBTZXR0aW5ncyJdOwogCkBAIC0xNDEsNyAr
MTQyLDYgQEAgLSAodm9pZClfcG9wdWxhdGVNZW51CiAKICAgICBbc2VsZiBfYWRkSGVhZGVyV2l0
aFRpdGxlOkAiV2ViS2l0MS1vbmx5IFNldHRpbmdzIl07CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRo
VGl0bGU6QCJFbmFibGUgU3VicGl4ZWwgQ1NTT00gTWV0cmljcyIgYWN0aW9uOkBzZWxlY3Rvcih0
b2dnbGVFbmFibGVTdWJQaXhlbENTU09NTWV0cmljczopIGluZGVudGVkOllFU107Ci0gICAgW3Nl
bGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIiBh
Y3Rpb246QHNlbGVjdG9yKHRvZ2dsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgaW5k
ZW50ZWQ6Tk9dOwogfQogCiAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVudUl0ZW0gKilt
ZW51SXRlbQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDE5NjgyMSkKKysrIFRvb2xzL01pbmlCcm93c2Vy
L21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tGcmFtZUluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9X
S05hdmlnYXRpb25EZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1VJRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1
cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KQEAg
LTM0NSw2ICszNDYsOCBAQCAtICh2b2lkKWRpZENoYW5nZVNldHRpbmdzCiAgICAgcHJlZmVyZW5j
ZXMuX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSA9IHNldHRpbmdzLnJlc291cmNlVXNhZ2VP
dmVybGF5VmlzaWJsZTsKICAgICBwcmVmZXJlbmNlcy5fZGlzcGxheUxpc3REcmF3aW5nRW5hYmxl
ZCA9IHNldHRpbmdzLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ7CiAKKyAgICBfd2ViVmlldy5j
b25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHNldHRpbmdzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOworCiAgICAgQk9PTCB1c2VUcmFuc3BhcmVudFdp
bmRvd3MgPSBzZXR0aW5ncy51c2VUcmFuc3BhcmVudFdpbmRvd3M7CiAgICAgaWYgKHVzZVRyYW5z
cGFyZW50V2luZG93cyAhPSAhX3dlYlZpZXcuX2RyYXdzQmFja2dyb3VuZCkgewogICAgICAgICBb
c2VsZi53aW5kb3cgc2V0T3BhcXVlOiF1c2VUcmFuc3BhcmVudFdpbmRvd3NdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272773</attachid>
            <date>2016-03-03 13:34:08 -0800</date>
            <delta_ts>2016-03-03 13:37:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154278-20160303133353.patch</filename>
            <type>text/plain</type>
            <size>127100</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE2LTAzLTAzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgU3BsaXQgcGFydCBvZiB0aGUgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgaW50byBhIG5l
dyBjbGFzcyAoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKQorICAgICAgICB0aGF0IG1hbmFn
ZXMgdGhlIGNvbGxlY3Rpb24gb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljIG9iamVjdHMsIGFuZCB0
aGF0IGNhbiBiZSB1c2VkCisgICAgICAgIGluIHRoZSBVSVByb2Nlc3Mgd2l0aG91dCB0b3VjaGlu
ZyB2YXJpb3VzIFdlYlByb2Nlc3Mtc3BlY2lmaWMgV2ViQ29yZSBjbGFzc2VzLgorCisgICAgICAg
IEhhdmUgdGhlIFdlYlByb2Nlc3Mgb25seSBmaXJlIGEgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNz
IGlmIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQuIE90aGVyd2lzZSwKKyAgICAgICAgbm8gbWVzc2Fn
ZXMgc2hvdWxkIGJlIHNlbnQuIFdoZW4gbmV3IGRhdGEgaXMgZW5jb3VudGVyZWQsIHN0YXJ0IGEg
NSBzZWNvbmQgdGltZXIuIElmIG1vcmUKKyAgICAgICAgZGF0YSBpcyBmb3VuZCBkdXJpbmcgdGhp
cyBkZWxheSwganVzdCBhY2N1bXVsYXRlIGl0LiBXaGVuIHRoZSB0aW1lciBmaXJlcywgYWxsIGRh
dGEgaXMgc2VudAorICAgICAgICBhbmQgdGhlIHRpbWVyIHN0b3BzIHVudGlsIGEgbmV3IGJhdGNo
IG9mIGRhdGEgYXJyaXZlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgdGhlIG5l
dyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xhc3MuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGp1c3QgdmlzaWJpbGl0eSBvZiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIGhlYWRlciwKKyAgICAgICAgYW5kIGFkZCBuZXcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIGNsYXNzLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOiBUZWxs
IHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgdG8gZmlyZSBpdHMgJ2RhdGEgY2hhbmdl
ZCcKKyAgICAgICAgaGFuZGxlciBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cHJpbWFyeURvbWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0Zv
ck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQcmV2
YWxlbnRSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaXNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0
aXN0aWNzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cGVyc2lzdGVudFN0b3JhZ2VQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNy
ZWF0ZURlY29kZXJGcm9tRGlzayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6d3JpdGVFbmNvZGVyVG9EaXNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVIYXNoQ291bnRlZFNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Om1lcmdl
SGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6bWVyZ2UpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6d3JpdGVEYXRhVG9EaXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJzaXN0ZW50U3RvcmFnZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFk
RGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjcmVhdGVEZWNvZGVyRnJvbURpc2spOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rpc2spOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGFr
ZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjptZXJnZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxl
cik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNFbXB0
eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWZhdWx0
RmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorCiAyMDE2LTAzLTAyICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUwgcGFyc2VyIGluc3RhbnRpYXRl
cyBhIGN1c3RvbSBlbGVtZW50IGluc2lkZSBhIHRlbXBsYXRlIGVsZW1lbnQgd2l0aCBhIHdyb25n
IG93bmVyIGRvY3VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3NDg1
KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
MjMsNiArMTkyMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAogICAg
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAogICAg
IGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwCiAgICAgbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ1LDcgKzExNDUsNiBAQAog
CQkyRDQxNTBERTFDMUY4NjhDMDAwQTNCQTIgLyogSlNNb2NrUGFnZU92ZXJsYXkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2RjNFOTIxQzFGODU1
NTAwNjFEQkQ0IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJMkQ0NDQ2OTgxQzg0
Q0NDRjAwMjRDODg5IC8qIERPTUhUTUxNZWRpYUVsZW1lbnQuaCBpbiBDb3B5IEdlbmVyYXRlZCBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERUM2NjRFMUM4MkNG
RjYwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVtZW50LmggKi87IH07CiAJCTJENDQ0Njk5MUM4
NENDRDcwMDI0Qzg4OSAvKiBET01IVE1MVmlkZW9FbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVDNjY0QjFDODJD
RkJGMDA5OTg0NkEgLyogRE9NSFRNTFZpZGVvRWxlbWVudC5oICovOyB9OwotCQkyRDQ0NDY5QTFD
ODRDQ0UxMDAyNEM4ODkgLyogRE9NTWVkaWFDb250cm9sbGVyLmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVDNjY2OTFDODND
Q0JFMDA5OTg0NkEgLyogRE9NTWVkaWFDb250cm9sbGVyLmggKi87IH07CiAJCTJENDQ0NjlCMUM4
NENEMDUwMDI0Qzg4OSAvKiBET01NZWRpYUVycm9yLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVDNjY3NTFDODQwM0MzMDA5
OTg0NkEgLyogRE9NTWVkaWFFcnJvci5oICovOyB9OwogCQkyRDQ0NDY5RjFDODRDRDA2MDAyNEM4
ODkgLyogRE9NVGltZVJhbmdlcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFQzY2NkYxQzgzRjJBRjAwOTk4NDZBIC8qIERP
TVRpbWVSYW5nZXMuaCAqLzsgfTsKIAkJMkQ0NkYwNEUxN0I5NkZCRDAwNTY0N0YwIC8qIEludFBv
aW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NDZGMDREMTdCOTZGQkQwMDU2NDdGMCAvKiBJbnRQb2ludC5jcHAgKi87IH07CkBAIC0yNjgyLDkg
KzI2ODEsMTEgQEAKIAkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
ICovOyB9OwogCQk3QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJN0E5MjlDQTYxQzU5OEE5RTAwNERGMjI2IC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0E5MjlDQTExQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwICovOyB9OwotCQk3QTkyOUNBNzFDNTk4QUE5MDA0REYyMjYgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E5MjlDQTIxQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCAq
LzsgfTsKKwkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5
Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0E5Mzg2ODUxOERDQzE0
NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODIxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIu
Y3BwICovOyB9OwogCQk3QTkzODY4NjE4RENDMTQ1MDBCODI2M0QgLyogVlRUU2Nhbm5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODMxOERD
QzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuaCAqLzsgfTsKKwkJN0E5M0E4MDMxQzg3N0RDMTAw
RTM1RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTdDQzgzNjFDODc1MDY4MDAzNjYyNDMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLzsgfTsKKwkJN0E5M0E4MDQxQzg3
N0REMDAwRTM1RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3Q0M4MzcxQzg3NTA2ODAwMzY2
MjQzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAv
KiBUaWxlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUEzQTY5NTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3Bw
ICovOyB9OwogCQk3QUEzQTY5QTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTNBNjk2MTk0
QTY0RTcwMDFDQkQyNCAvKiBUaWxlQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTNBNjlCMTk0QTY0RTcwMDFDQkQyNCAvKiBU
aWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUEzQTY5NzE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUdyaWQuY3BwICovOyB9OwpAQCAtODY2
MywxNiArODY2NCwxNiBAQAogCQkyREU3MDAyMjE5MkZFODJBMDBCMDk3NUMgLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVD
NjY0QjFDODJDRkJGMDA5OTg0NkEgLyogRE9NSFRNTFZpZGVvRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MVmlkZW9FbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJERUM2NjRDMUM4MkNGQkYwMDk5ODQ2QSAvKiBET01IVE1MVmlk
ZW9FbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTFZpZGVvRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2
NEQxQzgyQ0ZCRjAwOTk4NDZBIC8qIERPTUhUTUxWaWRlb0VsZW1lbnRJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01IVE1MVmlkZW9FbGVtZW50SW50ZXJuYWwu
aDsgcGF0aCA9IERPTUhUTUxWaWRlb0VsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyREVDNjY0RDFDODJDRkJGMDA5OTg0NkEgLyogRE9NSFRNTFZpZGVvRWxl
bWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxW
aWRlb0VsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVD
NjY0RTFDODJDRkY2MDA5OTg0NkEgLyogRE9NSFRNTE1lZGlhRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MTWVkaWFFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJERUM2NjRGMUM4MkNGRjYwMDk5ODQ2QSAvKiBET01IVE1MTWVk
aWFFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTE1lZGlhRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2
NTAxQzgyRDAwODAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnRJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01IVE1MTWVkaWFFbGVtZW50SW50ZXJuYWwu
aDsgcGF0aCA9IERPTUhUTUxNZWRpYUVsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyREVDNjY1MDFDODJEMDA4MDA5OTg0NkEgLyogRE9NSFRNTE1lZGlhRWxl
bWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxN
ZWRpYUVsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVD
NjY2RjFDODNGMkFGMDA5OTg0NkEgLyogRE9NVGltZVJhbmdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01UaW1lUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJERUM2NjcwMUM4M0YyQUYwMDk5ODQ2QSAvKiBET01UaW1lUmFuZ2VzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVGltZVJhbmdlcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2NzExQzgzRjJBRjAwOTk4NDZBIC8qIERP
TVRpbWVSYW5nZXNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
T01UaW1lUmFuZ2VzSW50ZXJuYWwuaDsgcGF0aCA9IERPTVRpbWVSYW5nZXNJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREVDNjY3MTFDODNGMkFGMDA5OTg0NkEgLyog
RE9NVGltZVJhbmdlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTVRpbWVSYW5nZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REVDNjY3NTFDODQwM0MzMDA5OTg0NkEgLyogRE9NTWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01NZWRpYUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJERUM2Njc2MUM4NDAzQzMwMDk5ODQ2QSAvKiBET01NZWRpYUVycm9yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTWVkaWFFcnJvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2NzcxQzg0MDNDMzAwOTk4NDZBIC8q
IERPTU1lZGlhRXJyb3JJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBET01NZWRpYUVycm9ySW50ZXJuYWwuaDsgcGF0aCA9IERPTU1lZGlhRXJyb3JJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREVDNjY3NzFDODQwM0MzMDA5OTg0NkEg
LyogRE9NTWVkaWFFcnJvckludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTU1lZGlhRXJyb3JJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRTA4ODhDMzExNDg4M0E5MDBBRjQyNjUgLyogRE9NRm9ybURhdGEuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IERPTUZvcm1EYXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkUwODg4RDIxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Gb3JtRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMDg4OEQzMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZv
cm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRm9ybURhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMjk2LDYgKzEwMjk3LDggQEAKIAkJ
N0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNCOTEwMTgzOUE2
MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QTdDQzgzNjFDODc1MDY4MDAzNjYyNDMgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdBN0NDODM3MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTI5Q0ExMUM1OTgzNzgw
MDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTkyOUNBMjFDNTk4Mzc4MDA0REYyMjYgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTM4Njgy
MThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFZUVFNjYW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjI3MjEsNiArMjI3MjQsOCBAQAogCQkJCTZCNjkzQTJEMUM1MUE4MkUwMEIwM0JFRiAv
KiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovLAogCQkJCTdBOTI5Q0ExMUM1OTgzNzgwMDRERjIy
NiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLywKIAkJCQk3QTkyOUNBMjFDNTk4Mzc4
MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oICovLAorCQkJCTdBN0NDODM2MUM4
NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAorCQkJ
CTdBN0NDODM3MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCAqLywKIAkJCQk1MTMyN0Q1RjExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCAq
LywKIAkJCQk1MTMyN0Q1RTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmggKi8sCiAJ
CQkJRDAwMEVEMjUxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmNwcCAqLywKQEAg
LTI0OTEzLDYgKzI0OTE4LDcgQEAKIAkJCQkyOUE4MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyogQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzMwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjlBODEyM0IwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyQzBGQkI5QzFE
MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgx
MjQzMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjlBODEyNDIwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTM4LDcgKzI1MTQ0LDYgQEAKIAkJCQk5OUND
MEI0RjE4QkU5ODQ5MDA2Q0VCQ0MgLyogQ2FwdHVyaW5nSW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzczNDE1MTk3Nzg5NkQwMDQ2QkZDNSAvKiBDQVJpbmdCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1NTBCNjlFMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAotCQkJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU4QjVFRDFBNjk3NzczMDBC
NEI2NkEgLyogQ0RNUHJpdmF0ZUNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMxODYy
MzE5OUYxRTJBMDAzMEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RERDU3MTUxOEI1N0E4MjAwQTk0RkNCIC8qIENETVNlc3Npb24uaCBp
biBIZWFkZXJzICovLApAQCAtMjYzNTQsNiArMjYzNTksNyBAQAogCQkJCTBGMDNDMDc1MTg4NDgw
NTUwMEE1RjhDQSAvKiBJbnNwZWN0b3JPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjZG
REQ2NTEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OUNDMEI2NzE4QkU5RjE1MDA2Q0VCQ0MgLyogSW5zcGVjdG9yUmVwbGF5QWdlbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTdBOTNBODA0MUM4NzdERDAwMEUzNUZENiAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgyQUIxNzc0MTI1Qzgy
NjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU5M0NGOEIxODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFn
ZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTgyMCw2ICsyOTgyNiw3IEBACiAJCQkJQThF
QTc5RjgwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxNZW51RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyQkU4RTJDOTEyQTU4QTAxMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQzI3MEExNTIwNTcwMEIxMkE2OCAvKiBIVE1M
TWV0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E5M0E4MDMxQzg3N0RDMTAwRTM1
RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDRDlEODI3NTFDN0FFNTM1MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YubW0gaW4gU291cmNl
cyAqLywKIAkJCQlBNDU0NDI0QTExOUIzNjYxMDA5QkU5MTIgLyogSFRNTE1ldGVyRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjdBOTBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTE1v
ZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTAxNiw3ICszMTAyMyw3IEBACiAJCQkJ
NDQ3OTU4MDUxNjQzQjRCMjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY1NUIzREM5MTI1MUYxMkQwMDNFRjI2OSAvKiBQYXNzd29yZElucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREVDNjY3MzFDODNGMkFGMDA5OTg0NkEgLyogRE9N
VGltZVJhbmdlcy5tbSBpbiBTb3VyY2VzICovLAotICAgICAgICAgICAgICAgIDJERUM2NjU2MUM4
MkQwNDQwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJMkRFQzY2NTYxQzgyRDA0NDAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnQubW0gaW4g
U291cmNlcyAqLywKIAkJCQlFNDUzOTAxRTBFQUZDQUNBMDAzNjk1QzggLyogUGFzdGVib2FyZElP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTRCMjcwOTgzMEFGMkU1RTAwMDY1MTI3RiAvKiBQYXN0
ZWJvYXJkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0YwQjA1MzgxNDAwMkNFNjRG
IC8qIFBhdGguY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2VydmVyLmgiCiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCkBAIC0zOSw4ICszOSw2IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jZGVmaW5lIExP
R19TVEFUSVNUSUNTX1RPX0ZJTEUgMAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlc291cmNl
TG9hZE9ic2VydmVyJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKQpAQCAt
NDgsNyArNDYsMjIgQEAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2Vydgog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRPYnNlcnZlcj4gcmVzb3VyY2VM
b2FkT2JzZXJ2ZXI7CiAgICAgcmV0dXJuIHJlc291cmNlTG9hZE9ic2VydmVyOwogfQotICAgIAor
Cit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChib29sIGVuYWJsZWQpCit7CisgICAgU2V0dGluZ3M6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNldHRp
bmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOworfQorCit2b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZT4mJiBzdG9yZSkKK3sKKyAgICBtX3N0YXRpc3RpY3MgPSBXVEZNb3ZlKHN0b3JlKTsK
K30KKwogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKGJvb2wg
aXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBi
b29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCkKIHsKICAgICBpZiAoIVNl
dHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKQpAQCAtNzEsNyArODQsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBhdXRvIHRhcmdldE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
dGFyZ2V0VVJMKTsKLSAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gcmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKKyAgICBhdXRvJiB0YXJn
ZXRTdGF0aXN0aWNzID0gbV9zdGF0aXN0aWNzLT5yZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwogICAgIAogICAgIGlmIChpc01haW5GcmFtZSkK
ICAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUb0JlZm9y
ZSA9IHRydWU7CkBAIC04Myw5ICs5Niw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z0ZyYW1lTmF2aWcKICAgICB9CiAgICAgCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKLSAgICAgICAg
YXV0byYgcmVkaXJlY3RpbmdPcmlnaW5SZXNvdXJjZVN0YXRpc3RpY3MgPSByZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4pOworICAgICAgICBhdXRv
JiByZWRpcmVjdGluZ09yaWdpblJlc291cmNlU3RhdGlzdGljcyA9IG1fc3RhdGlzdGljcy0+cmVz
b3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKICAg
ICAgICAgCi0gICAgICAgIGlmIChpc1ByZXZhbGVudFJlc291cmNlKHRhcmdldFByaW1hcnlEb21h
aW4pKQorICAgICAgICBpZiAobV9zdGF0aXN0aWNzLT5pc1ByZXZhbGVudFJlc291cmNlKHRhcmdl
dFByaW1hcnlEb21haW4pKQogICAgICAgICAgICAgcmVkaXJlY3RpbmdPcmlnaW5SZXNvdXJjZVN0
YXRpc3RpY3MucmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMuYWRkKHRh
cmdldFByaW1hcnlEb21haW4pOwogICAgICAgICAKICAgICAgICAgaWYgKGlzTWFpbkZyYW1lKSB7
CkBAIC0xMDUsNyArMTE4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVO
YXZpZwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICsrdGFyZ2V0U3RhdGlzdGlj
cy5zdWJmcmFtZVN1YlJlc291cmNlQ291bnQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBhdXRvJiBzb3VyY2VPcmlnaW5SZXNvdXJjZVN0YXRpc3RpY3MgPSByZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4pOworICAgICAgICAgICAgYXV0
byYgc291cmNlT3JpZ2luUmVzb3VyY2VTdGF0aXN0aWNzID0gbV9zdGF0aXN0aWNzLT5yZXNvdXJj
ZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4pOwogCiAgICAg
ICAgICAgICBpZiAoaXNNYWluRnJhbWUpIHsKICAgICAgICAgICAgICAgICArK3NvdXJjZU9yaWdp
blJlc291cmNlU3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tOwpAQCAtMTE3
LDcgKzEzMCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZh
bGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKTsK
KyAgICB0YXJnZXRTdGF0aXN0aWNzLmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVj
ZXNzYXJ5KG1fc3RhdGlzdGljcy0+c2l6ZSgpKTsKKyAgICBtX3N0YXRpc3RpY3MtPmZpcmVEYXRh
TW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogICAgIAogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGJvb2wgaXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3Vy
Y2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCkKQEAg
LTEzOCwxNSArMTUyLDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291
cmMKICAgICBpZiAodGFyZ2V0UHJpbWFyeURvbWFpbiA9PSBtYWluRnJhbWVQcmltYXJ5RG9tYWlu
IHx8IHRhcmdldFByaW1hcnlEb21haW4gPT0gc291cmNlUHJpbWFyeURvbWFpbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IHJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CisgICAgYXV0byYgdGFyZ2V0
U3RhdGlzdGljcyA9IG1fc3RhdGlzdGljcy0+cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKIAogICAgIGF1dG8gbWFpbkZyYW1lT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJhbWVVUkwpOwogICAgIHRhcmdldFN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQobWFpbkZyYW1lUHJpbWFyeURv
bWFpbik7CiAKICAgICBpZiAoaXNSZWRpcmVjdCkgewotICAgICAgICBhdXRvJiByZWRpcmVjdGlu
Z09yaWdpblN0YXRpc3RpY3MgPSByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNv
dXJjZVByaW1hcnlEb21haW4pOworICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRp
c3RpY3MgPSBtX3N0YXRpc3RpY3MtPnJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4o
c291cmNlUHJpbWFyeURvbWFpbik7CiAgICAgICAgIAotICAgICAgICBpZiAoaXNQcmV2YWxlbnRS
ZXNvdXJjZSh0YXJnZXRQcmltYXJ5RG9tYWluKSkKKyAgICAgICAgaWYgKG1fc3RhdGlzdGljcy0+
aXNQcmV2YWxlbnRSZXNvdXJjZSh0YXJnZXRQcmltYXJ5RG9tYWluKSkKICAgICAgICAgICAgIHJl
ZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291
cmNlT3JpZ2lucy5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbik7CiAgICAgICAgIAogICAgICAgICAr
K3JlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVk
RnJvbTsKQEAgLTE2Nyw3ICsxODEsOCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dT
dWJyZXNvdXJjCiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3Vi
cmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCA9IHN0YXRp
Y19jYXN0PGRvdWJsZT4odGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNv
dXJjZUNvdW50KSAvIHRvdGFsVmlzaXRlZDsKICAgICB9CiAgICAgCi0gICAgdGFyZ2V0U3RhdGlz
dGljcy5jaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeShtX3Jlc291cmNl
U3RhdGlzdGljc01hcC5zaXplKCkpOworICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRB
c1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9zdGF0aXN0aWNzLT5zaXplKCkpOworICAg
IG1fc3RhdGlzdGljcy0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAgICAgCiB2
b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50KQpAQCAtMTc1LDI3ICsxOTAsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nVXNlckludGVyYQogICAgIGlmICghU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4oZG9jdW1l
bnQudXJsKCkpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdGF0aXN0aWNzLT5yZXNvdXJj
ZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4oZG9jdW1lbnQudXJsKCkp
KTsKICAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgbV9zdGF0
aXN0aWNzLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KICAgICAKLWJvb2wgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwcmlt
YXJ5RG9tYWluKSBjb25zdAotewotICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlz
dGljc01hcC5maW5kKHByaW1hcnlEb21haW4pOwotICAgIGlmIChtYXBFbnRyeSA9PSBtX3Jlc291
cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIG1hcEVudHJ5LT52YWx1ZS5pc1ByZXZhbGVudFJlc291cmNlOwotfQotICAgIAotUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKQotewotICAgIGlm
ICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpCi0gICAg
ICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChwcmltYXJ5RG9tYWluLCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpOwotICAgIAotICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5maW5kKHByaW1hcnlEb21haW4pLT52YWx1ZTsKLX0KLQogU3RyaW5nIFJlc291cmNlTG9hZE9i
c2VydmVyOjpwcmltYXJ5RG9tYWluKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyBob3N0
ID0gdXJsLmhvc3QoKTsKQEAgLTIzOCwxMzYgKzIzNyw5IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cHJpbWFyeURvbWEKICAgICByZXR1cm4gcHJpbWFyeURvbWFpbjsKIH0KIAotdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OktleVZhbHVlUGFp
clR5cGUgU3RhdGlzdGljc1ZhbHVlOwotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjp3cml0
ZURhdGFUb0Rpc2soKQotewotICAgIGlmICghU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGVuY29kZXIgPSBL
ZXllZEVuY29kZXI6OmVuY29kZXIoKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoIm9yaWdp
bnNWaXNpdGVkIiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKTsKLSAgICAKLSAgICBl
bmNvZGVyLT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwgW3RoaXNd
KEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBjb25zdCBTdGF0aXN0aWNzVmFsdWUmIG9yaWdp
bikgewotICAgICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lciwgb3JpZ2luLmtl
eSk7Ci0gICAgfSk7Ci0gICAgCi0gICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgp
LCAiZnVsbF9icm93c2luZ19zZXNzaW9uIik7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OndyaXRlRGF0YVRvRGlzayhjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzKSBjb25zdAotewotICAgIGlmICghU2V0
dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwotICAgIGVuY29k
ZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zpc2l0ZWQiLCAxKTsKLSAgICAKLSAgICBlbmNvZGVy
LT5lbmNvZGVPYmplY3Qob3JpZ2luLCByZXNvdXJjZVN0YXRpc3RpY3MsIFt0aGlzLCAmb3JpZ2lu
XShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJl
c291cmNlU3RhdGlzdGljcykgewotICAgICAgICByZXNvdXJjZVN0YXRpc3RpY3MuZW5jb2RlKGVu
Y29kZXIsIG9yaWdpbik7Ci0gICAgfSk7Ci0gICAgCi0gICAgU3RyaW5nIGxhYmVsID0gb3JpZ2lu
OwotICAgIGxhYmVsLnJlcGxhY2UoJy8nLCAnXycpOwotICAgIGxhYmVsLnJlcGxhY2UoJzonLCAn
KycpOwotICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgbGFiZWwpOwotfQot
Ci12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgbV9zdG9yYWdlUGF0aCA9IHBhdGg7Ci19Ci0K
LVN0cmluZyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cGVyc2lzdGVudFN0b3JhZ2VQYXRoKGNvbnN0
IFN0cmluZyYgbGFiZWwpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc3RvcmFnZVBhdGguaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIC8vIFRPRE8gRGVjaWRlIHdo
YXQgdG8gY2FsbCB0aGlzIGZpbGUKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fc3RvcmFnZVBhdGgsIGxhYmVsICsgIl9yZXNvdXJjZUxvZy5wbGlzdCIpOwotfQotCi12b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKQotewotICAg
IGlmICghU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGF1dG8gZGVjb2RlciA9IGNyZWF0ZURlY29kZXJGcm9tRGlzaygi
ZnVsbF9icm93c2luZ19zZXNzaW9uIik7Ci0gICAgaWYgKCFkZWNvZGVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICB1bnNpZ25lZCB2aXNpdGVkT3JpZ2lucyA9IDA7Ci0gICAgZGVjb2Rlci0+ZGVj
b2RlVUludDMyKCJvcmlnaW5zVmlzaXRlZCIsIHZpc2l0ZWRPcmlnaW5zKTsKLSAgICAgICAgCi0g
ICAgVmVjdG9yPFN0cmluZz4gbG9hZGVkT3JpZ2luczsKLSAgICBkZWNvZGVyLT5kZWNvZGVPYmpl
Y3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBsb2FkZWRPcmlnaW5zLCBbdGhpc10oS2V5ZWREZWNv
ZGVyJiBkZWNvZGVySW5uZXIsIFN0cmluZyYgb3JpZ2luKSB7Ci0gICAgICAgIGlmICghZGVjb2Rl
cklubmVyLmRlY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBvcmlnaW4pKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mgc3RhdGlzdGljczsKLSAgICAgICAgaWYgKCFzdGF0aXN0aWNzLmRlY29kZShkZWNvZGVySW5u
ZXIsIG9yaWdpbikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgbV9yZXNv
dXJjZVN0YXRpc3RpY3NNYXAuc2V0KG9yaWdpbiwgc3RhdGlzdGljcyk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0gICAgICAgIAotICAgIEFTU0VSVCh2aXNp
dGVkT3JpZ2lucyA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvYWRlZE9yaWdpbnMuc2l6ZSgpKSk7
Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IFJlc291cmNlTG9hZE9ic2VydmVy
OjpjcmVhdGVEZWNvZGVyRnJvbURpc2soY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QKLXsKLSAg
ICBTdHJpbmcgcmVzb3VyY2VMb2cgPSBwZXJzaXN0ZW50U3RvcmFnZVBhdGgobGFiZWwpOwotICAg
IGlmIChyZXNvdXJjZUxvZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJhd0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZUxvZyk7Ci0gICAgaWYgKCFyYXdEYXRhKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4gS2V5ZWREZWNvZGVyOjpkZWNv
ZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJhd0RhdGEtPmRhdGEoKSksIHJh
d0RhdGEtPnNpemUoKSk7Ci19Ci0gICAgCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjp3cml0
ZUVuY29kZXJUb0Rpc2soS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVs
KSBjb25zdAotewotI2lmIExPR19TVEFUSVNUSUNTX1RPX0ZJTEUKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByYXdEYXRhID0gZW5jb2Rlci5maW5pc2hFbmNvZGluZygpOwotICAgIGlmICghcmF3
RGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFN0cmluZyByZXNvdXJjZUxvZyA9IHBl
cnNpc3RlbnRTdG9yYWdlUGF0aChsYWJlbCk7Ci0gICAgaWYgKHJlc291cmNlTG9nLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkK
LSAgICAgICAgbWFrZUFsbERpcmVjdG9yaWVzKG1fc3RvcmFnZVBhdGgpOwotCi0gICAgYXV0byBo
YW5kbGUgPSBvcGVuRmlsZShyZXNvdXJjZUxvZywgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAoIWhh
bmRsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGludDY0X3Qgd3JpdHRlbkJ5dGVzID0g
d3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRhKCksIHJhd0RhdGEtPnNpemUoKSk7Ci0g
ICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgCi0gICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihyYXdEYXRhLT5zaXplKCkpKQotICAgICAgICBXVEZMb2dBbHdheXMo
IlJlc291cmNlTG9hZFN0YXRpc3RpY3M6IFdlIG9ubHkgd3JvdGUgJWxsZCBvdXQgb2YgJWQgYnl0
ZXMgdG8gZGlzayIsIHdyaXR0ZW5CeXRlcywgcmF3RGF0YS0+c2l6ZSgpKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGVuY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Ci0jZW5kaWYK
LX0KLQogU3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yT3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luKQogewotICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAu
Y29udGFpbnMob3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgCi0g
ICAgYXV0byYgc3RhdGlzdGljcyA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQob3JpZ2lu
KS0+dmFsdWU7Ci0gICAgcmV0dXJuICJTdGF0aXN0aWNzIGZvciAiICsgb3JpZ2luICsgIjpcbiIg
KyBzdGF0aXN0aWNzLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fc3RhdGlzdGljcy0+c3RhdGlz
dGljc0Zvck9yaWdpbihvcmlnaW4pOwogfQotICAgIAorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkocmV2aXNpb24gMTk3NDg1KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDE0ICsyNiwxMyBAQAogI2lmbmRlZiBSZXNvdXJjZUxvYWRPYnNlcnZlcl9oCiAj
ZGVmaW5lIFJlc291cmNlTG9hZE9ic2VydmVyX2gKIAorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1l
bnQ7Ci1jbGFzcyBLZXllZERlY29kZXI7Ci1jbGFzcyBLZXllZEVuY29kZXI7CiBjbGFzcyBVUkw7
CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNDcsMjkgKzQ2LDE4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhib29sIGlzUmVkaXJlY3QsIGNv
bnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWlu
RnJhbWVVUkwpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IERvY3VtZW50Jik7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlRGF0YVRvRGlzaygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXRpc3RpY3NTdG9yZShSZWY8UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0
aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CisKIHByaXZh
dGU6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJp
bWFyeURvbWFpbihjb25zdCBTdHJpbmcmKTsKLSAgICAKICAgICBzdGF0aWMgU3RyaW5nIHByaW1h
cnlEb21haW4oY29uc3QgVVJMJik7CiAKLSAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29u
c3QgU3RyaW5nJikgY29uc3Q7Ci0KLSAgICBTdHJpbmcgcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGNv
bnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0OwotCi0gICAgdm9pZCB3cml0ZURhdGFUb0Rpc2soY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsK
LQotICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZWF0ZURlY29kZXJGcm9tRGlz
ayhjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKLSAgICB2b2lkIHdyaXRlRW5jb2RlclRvRGlz
ayhLZXllZEVuY29kZXImLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKLQorICAgIFJlZlB0
cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fc3RhdGlzdGljczsKICAgICBIYXNoTWFw
PFN0cmluZywgc2l6ZV90PiBtX29yaWdpbnNWaXNpdGVkTWFwOwotICAgIEhhc2hNYXA8U3RyaW5n
LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKLSAgICBT
dHJpbmcgbV9zdG9yYWdlUGF0aDsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Y3BwCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDkgKzc2LDkgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWRFbgogICAgIH0pOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFN0cmluZyYgb3JpZ2luKSBjb25zdAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNv
ZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlU3Ry
aW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIG9yaWdpbik7CisgICAgZW5jb2Rlci5lbmNv
ZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgaGlnaExldmVsRG9tYWluKTsKICAg
ICAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgZW5jb2Rlci5lbmNvZGVCb29sKCJoYWRV
c2VySW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pOwpAQCAtMTMwLDE0ICsxMzAsMTEg
QEAgc3RhdGljIHZvaWQgZGVjb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWREZQogICAgIH0pOwogfQog
Ci1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29k
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpk
ZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFN0cmluZyBzdG9yZWRPcmlnaW47
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4i
LCBzdG9yZWRPcmlnaW4pKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVu
dFJlc291cmNlT3JpZ2luIiwgaGlnaExldmVsRG9tYWluKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIEFTU0VSVF9VTlVTRUQob3JpZ2luLCBzdG9yZWRPcmlnaW4gPT0gb3JpZ2lu
KTsKLSAgICAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUJvb2woImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTMwNyw0ICszMDQsNDcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OnRvU3RyaW5nKAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgbWVyZ2VIYXNoQ291bnRlZFNldChI
YXNoQ291bnRlZFNldDxUPiYgdG8sIGNvbnN0IEhhc2hDb3VudGVkU2V0PFQ+JiBmcm9tKQorewor
ICAgIGZvciAoYXV0byYgZW50cnkgOiBmcm9tKQorICAgICAgICB0by5hZGQoZW50cnkua2V5LCBl
bnRyeS52YWx1ZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6bWVyZ2UoY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyLmhp
Z2hMZXZlbERvbWFpbiA9PSBoaWdoTGV2ZWxEb21haW4pOworCisgICAgaGFkVXNlckludGVyYWN0
aW9uIHw9IG90aGVyLmhhZFVzZXJJbnRlcmFjdGlvbjsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUg
c3RhdHMKKyAgICB0b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8gKz0gb3RoZXIudG9wRnJhbWVI
YXNCZWVuUmVkaXJlY3RlZFRvOworICAgIHRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tICs9
IG90aGVyLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIHRvcEZyYW1lSW5pdGlh
bExvYWRDb3VudCArPSBvdGhlci50b3BGcmFtZUluaXRpYWxMb2FkQ291bnQ7CisgICAgdG9wRnJh
bWVIYXNCZWVuTmF2aWdhdGVkVG8gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87
CisgICAgdG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbSArPSBvdGhlci50b3BGcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRGcm9tOworICAgIHRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlIHw9
IG90aGVyLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlOworICAgIAorICAgIC8vIFN1
YmZyYW1lIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zLCBvdGhlci5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKKyAgICBzdWJm
cmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3Rl
ZFRvOworICAgIHN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tICs9IG90aGVyLnN1YmZyYW1l
SGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3ViZnJhbWVV
bmlxdWVSZWRpcmVjdHNUbywgb3RoZXIuc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAg
c3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50ICs9IG90aGVyLnN1YmZyYW1lU3ViUmVzb3VyY2VDb3Vu
dDsKKyAgICBzdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbyArPSBvdGhlci5zdWJmcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRUbzsKKyAgICBzdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tICs9IG90aGVy
LnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgc3ViZnJhbWVIYXNCZWVuTG9hZGVk
QmVmb3JlIHw9IG90aGVyLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZTsKKyAgICAKKyAgICAv
LyBTdWJyZXNvdXJjZSBzdGF0cworICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
cyk7CisgICAgc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCArPSBvdGhlci5zdWJy
ZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50OworICAgIHN1YnJlc291cmNlSGFzQmVlblJl
ZGlyZWN0ZWRGcm9tICs9IG90aGVyLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tOwor
ICAgIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBvdGhlci5zdWJyZXNvdXJjZUhh
c0JlZW5SZWRpcmVjdGVkVG87CisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvLCBvdGhlci5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAg
ICAKKyAgICAvLyBQcmV2YWxlbnQgcmVzb3VyY2Ugc3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVk
U2V0KHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLCBvdGhlci5yZWRp
cmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucyk7CisgICAgaXNQcmV2YWxlbnRS
ZXNvdXJjZSB8PSBvdGhlci5pc1ByZXZhbGVudFJlc291cmNlOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHJldmlzaW9u
IDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwyOSBAQCBjbGFzcyBLZXllZERlY29kZXI7
CiBjbGFzcyBLZXllZEVuY29kZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsK
KyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikK
KyAgICAgICAgOiBoaWdoTGV2ZWxEb21haW4ocHJpbWFyeURvbWFpbikKKyAgICB7CisgICAgfQor
CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCisgICAgeworICAgIH0KKwogICAgIGJvb2wg
Y2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkodW5zaWduZWQgb3JpZ2lu
c1Zpc2l0ZWRTb0Zhcik7CiAKICAgICBib29sIGhhc1ByZXZhbGVudFJlZGlyZWN0aW9uKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0
OwogCi0gICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
IGNvbnN0OwotICAgIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKTsKKyAgICB2b2lkIGVuY29kZShLZXllZEVuY29kZXImKSBjb25zdDsKKyAgICBib29sIGRl
Y29kZShLZXllZERlY29kZXImKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCisg
ICAgdm9pZCBtZXJnZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CisKKyAgICBTdHJp
bmcgaGlnaExldmVsRG9tYWluOworCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAgIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgiCisKKyNpbmNsdWRlICJLZXllZENvZGluZy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisKKyNkZWZpbmUgTE9HX1NUQVRJU1RJQ1NfVE9fRklMRSAwCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KSk7Cit9CisKK1JlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSk7Cit9CisgICAgCitSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCisgICAgOiBtX3N0b3JhZ2VQYXRoKHJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCit7Cit9CisgICAgCitib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHByaW1hcnlE
b21haW4pIGNvbnN0Cit7CisgICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLmZpbmQocHJpbWFyeURvbWFpbik7CisgICAgaWYgKG1hcEVudHJ5ID09IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
bWFwRW50cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisgICAgCitSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKQoreworICAg
IGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpIHsK
KyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBuZXdTdGF0aXN0aWNzKHByaW1hcnlEb21h
aW4pOworICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQocHJpbWFyeURvbWFpbiwg
bmV3U3RhdGlzdGljcyk7CisgICAgfQorICAgIAorICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlz
dGljc01hcC5maW5kKHByaW1hcnlEb21haW4pLT52YWx1ZTsKK30KKwordHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OktleVZhbHVlUGFpclR5cGUgU3RhdGlz
dGljc1ZhbHVlOworCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVEYXRh
VG9EaXNrKCkKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoIm9yaWdpbnNWaXNpdGVkIiwgbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAuc2l6ZSgpKTsKKyAgICAKKyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJi
cm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5iZWdpbigpLCBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwgW3RoaXNdKEtleWVkRW5jb2RlciYgZW5jb2Rlcklu
bmVyLCBjb25zdCBTdGF0aXN0aWNzVmFsdWUmIG9yaWdpbikgeworICAgICAgICBvcmlnaW4udmFs
dWUuZW5jb2RlKGVuY29kZXJJbm5lcik7CisgICAgfSk7CisgICAgCisgICAgd3JpdGVFbmNvZGVy
VG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVsbF9icm93c2luZ19zZXNzaW9uIik7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZURhdGFUb0Rpc2soY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlz
dGljcykgY29uc3QKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIo
KTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoIm9yaWdpbnNWaXNpdGVkIiwgMSk7CisgICAg
CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0KG9yaWdpbiwgcmVzb3VyY2VTdGF0aXN0aWNzLCBb
dGhpc10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiByZXNvdXJjZVN0YXRpc3RpY3MpIHsKKyAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWNzLmVuY29k
ZShlbmNvZGVyKTsKKyAgICB9KTsKKyAgICAKKyAgICBTdHJpbmcgbGFiZWwgPSBvcmlnaW47Cisg
ICAgbGFiZWwucmVwbGFjZSgnLycsICdfJyk7CisgICAgbGFiZWwucmVwbGFjZSgnOicsICcrJyk7
CisgICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCBsYWJlbCk7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbV9zdG9yYWdlUGF0aCA9IHBhdGg7Cisg
ICAgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Cit9CisKK1N0cmluZyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnBlcnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVs
KSBjb25zdAoreworICAgIGlmIChtX3N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICAvLyBUT0RPIERlY2lkZSB3aGF0IHRvIGNhbGwgdGhp
cyBmaWxlCisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VQYXRo
LCBsYWJlbCArICJfcmVzb3VyY2VMb2cucGxpc3QiKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpCit7CisgICAgaWYgKG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBkZWNvZGVyID0gY3JlYXRlRGVjb2RlckZyb21EaXNrKCJmdWxsX2Jyb3dzaW5nX3Nlc3Npb24i
KTsKKyAgICBpZiAoIWRlY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHZp
c2l0ZWRPcmlnaW5zID0gMDsKKyAgICBkZWNvZGVyLT5kZWNvZGVVSW50MzIoIm9yaWdpbnNWaXNp
dGVkIiwgdmlzaXRlZE9yaWdpbnMpOworICAgICAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiBsb2Fk
ZWRPcmlnaW5zOworICAgIGRlY29kZXItPmRlY29kZU9iamVjdHMoImJyb3dzaW5nU3RhdGlzdGlj
cyIsIGxvYWRlZE9yaWdpbnMsIFt0aGlzXShLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgU3Ry
aW5nJiBvcmlnaW4pIHsKKyAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKCJQ
cmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIG9yaWdpbikpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdGF0aXN0aWNzKG9yaWdpbik7
CisgICAgICAgIGlmICghc3RhdGlzdGljcy5kZWNvZGUoZGVjb2RlcklubmVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQo
b3JpZ2luLCBzdGF0aXN0aWNzKTsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9KTsKKyAgICAgICAgCisgICAgQVNTRVJUKHZpc2l0ZWRPcmlnaW5zID09IHN0YXRpY19j
YXN0PHNpemVfdD4obG9hZGVkT3JpZ2lucy5zaXplKCkpKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PEtleWVkRGVjb2Rlcj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGVEZWNvZGVy
RnJvbURpc2soY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcmVzb3Vy
Y2VMb2cgPSBwZXJzaXN0ZW50U3RvcmFnZVBhdGgobGFiZWwpOworICAgIGlmIChyZXNvdXJjZUxv
Zy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJhd0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShyZXNvdXJjZUxvZyk7CisgICAgaWYgKCFyYXdEYXRhKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAKKyAgICByZXR1cm4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJhd0RhdGEtPmRhdGEoKSksIHJhd0RhdGEtPnNpemUoKSk7
Cit9CisgICAgCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVFbmNvZGVy
VG9EaXNrKEtleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QK
K3sKKyNpZiBMT0dfU1RBVElTVElDU19UT19GSUxFCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmF3RGF0YSA9IGVuY29kZXIuZmluaXNoRW5jb2RpbmcoKTsKKyAgICBpZiAoIXJhd0RhdGEpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBTdHJpbmcgcmVzb3VyY2VMb2cgPSBwZXJzaXN0ZW50
U3RvcmFnZVBhdGgobGFiZWwpOworICAgIGlmIChyZXNvdXJjZUxvZy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghbV9zdG9yYWdlUGF0aC5pc0VtcHR5KCkpCisgICAgICAg
IG1ha2VBbGxEaXJlY3RvcmllcyhtX3N0b3JhZ2VQYXRoKTsKKworICAgIGF1dG8gaGFuZGxlID0g
b3BlbkZpbGUocmVzb3VyY2VMb2csIE9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFoYW5kbGUpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IHdyaXRlVG9G
aWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5zaXplKCkpOworICAgIGNsb3Nl
RmlsZShoYW5kbGUpOworICAgIAorICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4ocmF3RGF0YS0+c2l6ZSgpKSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOiBXZSBvbmx5IHdyb3RlICVsbGQgb3V0IG9mICVkIGJ5dGVzIHRvIGRp
c2siLCB3cml0dGVuQnl0ZXMsIHJhd0RhdGEtPnNpemUoKSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShlbmNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworI2VuZGlmCit9CisKK1N0
cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN0YXRpc3RpY3NGb3JPcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgaWYgKCFtX3Jlc291cmNlU3RhdGlzdGljc01hcC5j
b250YWlucyhvcmlnaW4pKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAKKyAg
ICBhdXRvJiBzdGF0aXN0aWNzID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChvcmlnaW4p
LT52YWx1ZTsKKyAgICByZXR1cm4gIlN0YXRpc3RpY3MgZm9yICIgKyBvcmlnaW4gKyAiOlxuIiAr
IHN0YXRpc3RpY3MudG9TdHJpbmcoKTsKK30KKworVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGFrZVN0YXRpc3RpY3MoKQoreworICAg
IFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOworICAgIHN0YXRpc3Rp
Y3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkp
OworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFs
dWVzKCkpCisgICAgICAgIHN0YXRpc3RpY3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoc3RhdGlz
dGljKSk7CisKKyAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOworCisgICAgcmV0
dXJuIHN0YXRpc3RpY3M7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpt
ZXJnZVN0YXRpc3RpY3MoY29uc3QgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiBzdGF0
aXN0aWNzKQoreworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogc3RhdGlzdGljcykgeworICAg
ICAgICBhdXRvIGl0ZXIgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHN0YXRpc3RpYy5o
aWdoTGV2ZWxEb21haW4pOworICAgICAgICBpZiAoaXRlciA9PSBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC5lbmQoKSkgeworICAgICAgICAgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2V0KHN0
YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4sIHN0YXRpc3RpYyk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaXRlci0+dmFsdWUubWVyZ2Uoc3RhdGlz
dGljKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRO
b3RpZmljYXRpb25DYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gaGFuZGxlcikKK3sKKyAg
ICBtX2RhdGFBZGRlZEhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOworfQorCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKK3sK
KyAgICBtX2RhdGFBZGRlZEhhbmRsZXIoKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlX2gKKyNkZWZpbmUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlX2gKKworI2luY2x1ZGUg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBLZXllZERlY29kZXI7CitjbGFzcyBLZXllZEVuY29kZXI7CitjbGFzcyBVUkw7CisKK3N0cnVj
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOworCitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IHsK
K3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IGNyZWF0ZSgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZURh
dGFUb0Rpc2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWREYXRhRnJvbURpc2tJZk5l
ZWRlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhdGlz
dGljc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQorICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpOyB9
CisKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNl
KGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWVy
Z2VTdGF0aXN0aWNzKGNvbnN0IFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlz
dGljcygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROb3RpZmljYXRpb25DYWxsYmFj
ayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gaGFuZGxlcik7CisKKyAgICB2b2lkIGZpcmVEYXRhTW9k
aWZpY2F0aW9uSGFuZGxlcigpOworCitwcml2YXRlOgorICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSgpCisgICAgeworICAgIH0KKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICBTdHJp
bmcgcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0OworCisg
ICAgdm9pZCB3cml0ZURhdGFUb0Rpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERl
Y29kZXI+IGNyZWF0ZURlY29kZXJGcm9tRGlzayhjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsK
KyAgICB2b2lkIHdyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImLCBjb25zdCBTdHJpbmcm
IGxhYmVsKSBjb25zdDsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKKyAgICBTdHJpbmcgbV9zdG9yYWdlUGF0aDsK
KyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9kYXRhQWRkZWRIYW5kbGVyOworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZV9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTAgQEAKKzIwMTYt
MDMtMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dL
Ml0gR2F0aGVyIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNDcwMjg5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZXZpc2UgdGhlIFdlYlByb2Nlc3MgdG8gbm90aWZ5IHRoZSBVSVByb2Nlc3MgYWJvdXQg
cmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzLiBUaGVzZQorICAgICAgICB1cGRhdGVzIGFyZSBub3Qg
dGltZS1jcml0aWNhbCwgYW5kIGRvIG5vdCBuZWVkIHRvIGJlIGRvbmUgaW4gY29uY2VydCB3aXRo
IHRoZSBhY3R1YWwKKyAgICAgICAgbG9hZC4gQXMgcmVzb3VyY2UgbG9hZHMgYXJlIG1hZGUsIGVh
Y2ggV2ViUHJvY2VzcyBub3RpZmllcyB0aGUgVUlQcm9jZXNzIG9mIHRoZSBuZXcKKyAgICAgICAg
bG9hZCBjb3VudHMsIHRoZW4gY2xlYXJzIGl0cyBsb2NhbCBzdGF0ZS4gVGhlc2Ugc3RhdGlzdGlj
cyBhcmUgdGhlbiBhZ2dyZWdhdGVkIGluCisgICAgICAgIHRoZSBVSVByb2Nlc3MuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUg
ZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogRGl0dG8uCisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6IFVwZGF0ZSB0byBzdXBwb3J0
IEhhc2hDb3VudGVkU2V0cy4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIG5ldyBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogUGxh
dGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOiBEaXR0
by4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOiBBZGQgbmV3IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgdHlwZS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEV4Y2VwdGlvbkRldGFpbHM+Ojpk
ZWNvZGUpOiBTdXBwb3J0IG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHR5cGUuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZSk6IEFk
ZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+
OjpkZWNvZGUpOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOiBI
YW5kbGUgJ3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkJyBmbGFnLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOiBEaXR0by4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOiBB
ZGQgc3RvcmFnZSBsb2NhdGlvbiBmb3IgdGhlCisgICAgICAgIHJlc291cmNlIGxvYWQgc3RhdGlz
dGljcy4KKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KTogSGFu
ZGxlIHRoZSBuZXcgc3RvcmFnZSBsb2NhdGlvbiBhbmQgdGhlIGZlYXR1cmUgZmxhZy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KTogQWRkZWQgc3R1Yi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBBZGRlZCBzdXBwb3J0IGZv
ciB0aGUgbmV3IHJlc291cmNlCisgICAgICAgIGxvYWQgc3RhdGlzdGljcyBzdG9yYWdlIGxvY2F0
aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRdKTog
QWRkIG1ldGhvZCB0byByZWxheSBzZXR0aW5nIHRvIHVuZGVybHlpbmcKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOl0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGluaXRdKTogQWRkIGZsYWcgZm9yIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdXBwb3J0Lgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKTogSGFuZGxl
IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdXBwb3J0IGZsYWcuCisgICAgICAgICgtW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXSk6IEFkZGVk
LgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXSk6IEFkZGVkLgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRdKTogQWRkZWQuCisgICAgICAgICgtW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKTogQ2hlY2sgdXNlciBzZXR0aW5nIGZvciBzdGF0ZQorICAgICAgICBvZiBy
ZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgc3VwcG9ydC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
TmV3V2ViUHJvY2Vzcyk6IEhhbmRsZSBuZXcgZmxhZyBmb3IgZW5hYmxpbmcgcmVzb3VyY2UKKyAg
ICAgICAgbG9hZCBzdGF0aXN0aWNzLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y29y
ZVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBSZWdpc3RlciBhIHRlcm1pbmF0aW9uIGhh
bmRsZXIKKyAgICAgICAgdG8gY2xvc2UgZG93biB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNz
IHN0b3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybURlc3Ry
b3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6
IEluaXRpYWxpemUgdGhlIG5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUKKyAgICAg
ICAgbWVtYmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNz
V2lsbE9wZW5Db25uZWN0aW9uKTogUmVnaXN0ZXIgdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZQorICAgICAgICBvYmplY3QgYXMgYSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29u
bmVjdGlvbik6IFVucmVnaXN0ZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6
IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRk
IG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmlsZXMgdG8gYnVpbGQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBUYWtlIGludG8gYWNjb3VudCB0aGUgbmV3IHBhcmFt
ZXRlcgorICAgICAgICBzcGVjaWZ5aW5nIHdoZXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNz
IGFyZSBiZWluZyBjYXB0dXJlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJv
Y2Vzcyk6IEluaXRpYWxpemVkIHN0YXRpc3RpY3MgY2hhbmdlZCBub3RpZmljYXRpb24gdGltZXIu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJl
ZCk6IEFkZGVkLiBTZW5kIGJ1bmRsZXMgb2Ygc2l0ZSBsb2FkCisgICAgICAgIHN0YXRpc3RpY3Mg
dG8gdGhlIFVJUHJvY2VzcyBvbiBhIHNldCBpbnRlcnZhbC4gQ2xlYXIgb3V0IGxvY2FsIGNhY2hl
IGFmdGVyIGVhY2ggc2VuZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
IEFkZCBuZXcgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgbWVzc2FnZS4KKwogMjAx
Ni0wMy0wMSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUg
dGhlIG1lZGlhIGVsZW1lbnQncyBwcmVzZW50YXRpb24gbW9kZSBwcm9wZXJseSBhZnRlciBnb2lu
ZyBpbiBhbmQgb3V0IG9mIGZ1bGwgc2NyZWVuIHZpYSB0aGUgRnVsbCBTY3JlZW4gQVBJCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY2Nyw2ICs2NjcsNyBAQCBzZXQoV2Vi
S2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
bWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KICAg
ICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9X
ZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9jZXNzL0RhdGFiYXNlcy9E
YXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpJbmRleDogU291cmNlL1dlYktpdDIvRGVy
aXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAgICAgV2ViUHJvY2Vzc1Bvb2wgXAogICAgIFdlYlByb2Nlc3NQcm94eSBcCiAg
ICAgV2ViUmVzb3VyY2VMb2FkZXIgXAorICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSBcCiAgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKICAgICBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSBcCiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciBcCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAorICAgIFVJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RhdGUuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS1ZpZXcuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCShyZXZp
c2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAg
ICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29k
aW5nTm9uZS5jcHAKKyAgICBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNw
cAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEz
Nyw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9tYWMvV2ViSGl0
VGVzdFJlc3VsdERhdGEubW0KICAgICBTaGFyZWQvbWFjL1dlYk1lbW9yeVNhbXBsZXIubWFjLm1t
CiAKKyAgICBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0YXRlLmNwcAogICAgIFVJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCiAKICAgICBVSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxp
dHk+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRT
ZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgpAQCAtMzAwLDYgKzMwMSw0NyBAQCB0ZW1wbGF0
ZTx0eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIEhhc2hBCiAgICAgfQogfTsKIAordGVtcGxhdGU8
dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+
IHN0cnVjdCBBcmd1bWVudENvZGVyPEhhc2hDb3VudGVkU2V0PEtleUFyZywgSGFzaEFyZywgS2V5
VHJhaXRzQXJnPj4geworICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8S2V5QXJnLCBIYXNoQXJn
LCBLZXlUcmFpdHNBcmc+IEhhc2hDb3VudGVkU2V0VHlwZTsKKyAgICAKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIYXNoQ291bnRlZFNldFR5
cGUmIGhhc2hDb3VudGVkU2V0KQorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50NjRfdD4oaGFzaENvdW50ZWRTZXQuc2l6ZSgpKTsKKyAgICAgICAgCisgICAgICAgIGZv
ciAoYXV0byBlbnRyeSA6IGhhc2hDb3VudGVkU2V0KSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8
IGVudHJ5LmtleTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZW50cnkudmFsdWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYg
ZGVjb2RlciwgSGFzaENvdW50ZWRTZXRUeXBlJiBoYXNoQ291bnRlZFNldCkKKyAgICB7CisgICAg
ICAgIHVpbnQ2NF90IGhhc2hDb3VudGVkU2V0U2l6ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShoYXNoQ291bnRlZFNldFNpemUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAKKyAgICAgICAgSGFzaENvdW50ZWRTZXRUeXBlIHRlbXBIYXNoQ291bnRlZFNldDsKKyAg
ICAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGhhc2hDb3VudGVkU2V0U2l6ZTsgKytpKSB7
CisgICAgICAgICAgICBLZXlBcmcga2V5OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShrZXkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgdW5zaWduZWQgY291bnQ7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvdW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmICghdGVtcEhhc2hDb3VudGVkU2V0LmFkZChrZXksIGNvdW50KS5pc05ld0Vu
dHJ5KSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggY291bnRlZCBzZXQgYWxyZWFkeSBo
YXMgdGhlIHNwZWNpZmllZCBrZXksIGJhaWwuCisgICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJr
SW52YWxpZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaGFzaENvdW50ZWRTZXQuc3dhcCh0ZW1wSGFz
aENvdW50ZWRTZXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3Qg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCYpOwogICAgIHN0YXRpYyBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXImLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUyLDYgKzUyLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg+CkBAIC0yMDQ0LDQgKzIwNDUs
MTI1IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxFeGNlcHRpb25EZXRhaWxzPjo6ZGUKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAordm9pZCBBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+
OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGlzdGlj
cy5oaWdoTGV2ZWxEb21haW47CisgICAgCisgICAgLy8gVXNlciBpbnRlcmFjdGlvbgorICAgIGVu
Y29kZXIgPDwgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb247CisgICAgCisgICAgLy8gVG9w
IGZyYW1lIHN0YXRzCisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5h
dmlnYXRlZFRvQmVmb3JlOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0Jl
ZW5SZWRpcmVjdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVl
blJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUluaXRp
YWxMb2FkQ291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5h
dmlnYXRlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZp
Z2F0ZWRGcm9tOworICAgIAorICAgIC8vIFN1YmZyYW1lIHN0YXRzCisgICAgZW5jb2RlciA8PCBz
dGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvOworICAgIGVuY29kZXIgPDwgc3Rh
dGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3Muc3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50OworICAgIGVuY29kZXIgPDwgc3RhdGlz
dGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zOworICAgIGVuY29kZXIgPDwgc3RhdGlz
dGljcy5zdWJmcmFtZVVuaXF1ZVJlZGlyZWN0c1RvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGlj
cy5zdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Mu
c3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsKKyAgICAKKyAgICAvLyBTdWJyZXNvdXJjZSBz
dGF0cworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVj
dGVkRnJvbTsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuUmVk
aXJlY3RlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5T
dWJyZXNvdXJjZUNvdW50OworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhh
c0JlZW5TdWJyZXNvdXJjZUNvdW50RGl2aWRlZEJ5VG90YWxOdW1iZXJPZk9yaWdpbnNWaXNpdGVk
OworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW5zOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0
c1RvOworICAgIAorICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQorICAgIGVuY29kZXIgPDwgc3Rh
dGlzdGljcy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2luczsKKyAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNvdXJjZTsKK30KKworYm9vbCBBcmd1
bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKQor
eworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5oaWdoTGV2ZWxEb21haW4pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gVXNlciBpbnRlcmFjdGlvbgorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24pKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVm
b3JlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZy
YW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZUluaXRpYWxMb2FkQ291
bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFt
ZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IC8vIFN1YmZyYW1lIHN0YXRzCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1
YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuUmVkaXJl
Y3RlZFRvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Mu
c3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0aXN0aWNzLnN1YmZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1l
SGFzQmVlbk5hdmlnYXRlZFRvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9t
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRz
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJl
ZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkVG8pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0
aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJl
c291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2lu
c1Zpc2l0ZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Mu
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICAvLyBQcmV2YWxlbnQgUmVzb3VyY2UKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRpc3RpY3MucmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0
aWNzLmlzUHJldmFsZW50UmVzb3VyY2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgSVBDCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCShyZXZpc2lvbiAxOTc0
ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MC0yMDExLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODAsNiArODAsNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZElt
YWdlOwogc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50Owogc3RydWN0IFBsdWdpbkluZm87CiBz
dHJ1Y3QgUmVjZW50U2VhcmNoOworc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3M7CiBzdHJ1
Y3QgU2Nyb2xsYWJsZUFyZWFQYXJhbWV0ZXJzOwogc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsK
IHN0cnVjdCBUZXh0SW5kaWNhdG9yRGF0YTsKQEAgLTQ1NSw2ICs0NTYsMTEgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOgogICAgIHN0YXRpYyBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJik7CiB9OwogCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7Cit9Owor
CiB9IC8vIG5hbWVzcGFjZSBJUEMKIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEyLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtOTYsNiArOTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmVuY29kCiAgICAgZW5jb2RlciA8PCBzaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxv
Z2dpbmc7CiAgICAgZW5jb2RlciA8PCBzaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxl
cjsKICAgICBlbmNvZGVyIDw8IHNob3VsZFVzZUZvbnRTbW9vdGhpbmc7CisgICAgZW5jb2RlciA8
PCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGZvbnRXaGl0
ZWxpc3Q7CiAgICAgZW5jb2RlciA8PCBpY29uRGF0YWJhc2VFbmFibGVkOwogICAgIGVuY29kZXIg
PDwgc2hvdWxkUmV3cml0ZUNvbnN0QXNWYXI7CkBAIC0yMTMsNiArMjE0LDggQEAgYm9vbCBXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhpbmcp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5mb250V2hpdGVsaXN0KSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5p
Y29uRGF0YWJhc2VFbmFibGVkKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTk3NDg1KQorKysg
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTIsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDcsNiArMTA3LDcgQEAgc3RydWN0IFdlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkRW5hYmxlTWVtb3J5UHJl
c3N1cmVSZWxpZWZMb2dnaW5nOwogICAgIGJvb2wgc2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIgeyBmYWxzZSB9OwogICAgIGJvb2wgc2hvdWxkVXNlRm9udFNtb290aGluZzsKKyAg
ICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsgZmFsc2UgfTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGZvbnRXaGl0ZWxpc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLAogICAgICAgICBQbHVnaW5TaXRl
RGF0YU1hbmFnZXIsCiAgICAgICAgIFByZWZlcmVuY2VzLAorICAgICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUsCiAgICAgICAgIFJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbFJlc3Vs
dExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0QWxlcnRSZXN1bHRMaXN0ZW5lciwKICAg
ICAgICAgUnVuSmF2YVNjcmlwdENvbmZpcm1SZXN1bHRMaXN0ZW5lciwKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkocmV2aXNpb24gMTk3NDg1KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIw
MTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9M
YW5ndWFnZS5oPgpAQCAtNTgyLDYgKzU4Myw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vz
c1Bvb2w6OmNyZWF0ZU4KIAogICAgIHBhcmFtZXRlcnMuc2hvdWxkQWx3YXlzVXNlQ29tcGxleFRl
eHRDb2RlUGF0aCA9IG1fYWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGg7CiAgICAgcGFyYW1l
dGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nID0gbV9zaG91bGRVc2VGb250U21vb3RoaW5nOwor
ICAgIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBtX2NvbmZpZ3Vy
YXRpb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CiAKICAgICAvLyBGSVhNRTog
VGhpcyBsZWF2ZXMgVUkgcHJvY2VzcyBhbmQgV2ViUHJvY2VzcyBkaXNhZ3JlZWluZyBhYm91dCB0
aGUgc3RhdGUgaWYgdGhlIGNsaWVudCBoYXNuJ3Qgc2V0IHRoZSBwYXRoLgogICAgIC8vIGljb25E
YXRhYmFzZVBhdGggaXMgbm9uLWVtcHR5IGJ5IGRlZmF1bHQsIGJ1dCBtX2ljb25EYXRhYmFzZSBp
c24ndCBlbmFibGVkIGluIFVJIHByb2Nlc3MgdW5sZXNzIHNldERhdGFiYXNlUGF0aCBpcyBjYWxs
ZWQgZXhwbGljaXRseS4KQEAgLTk3MSw2ICs5NzMsMjEgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6
c2V0RGVmYXVsdFJlcXVlc3RUaQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6U2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwodGltZW91dEludGVydmFs
KSk7CiB9CiAKK2Jvb2wgV2ViUHJvY2Vzc1Bvb2w6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKCkKK3sKKyAgICBBU1NFUlQobV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3Jl
KCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCktPnJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKCkgPT0gbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCgpKTsKKyAgICByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCgpOworfQorCit2b2lkIFdlYlByb2Nlc3NQb29sOjpzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9jb25maWd1cmF0aW9uLT5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKyAgICBpZiAobV93ZWJzaXRl
RGF0YVN0b3JlKQorICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUo
KS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoZW5hYmxlZCk7CisKKyAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpKTsKK30K
KwogRG93bmxvYWRQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZURvd25sb2FkUHJveHkoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBlbnN1cmVOZXR3b3Jr
UHJvY2VzcygpLmNyZWF0ZURvd25sb2FkUHJveHkocmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkocmV2aXNpb24gMTk3NDg1KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0y
MDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtODQsNiArODQsNyBAQCBjbGFzcyBXZWJDb250ZXh0U3VwcGxl
bWVudDsKIGNsYXNzIFdlYkljb25EYXRhYmFzZTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNz
IFdlYlBhZ2VQcm94eTsKK2NsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIHN0
cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBTdGF0aXN0aWNz
RGF0YTsKIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwpAQCAtMjExLDYgKzIx
Miw4IEBAIHB1YmxpYzoKICAgICBDYWNoZU1vZGVsIGNhY2hlTW9kZWwoKSBjb25zdCB7IHJldHVy
biBtX2NvbmZpZ3VyYXRpb24tPmNhY2hlTW9kZWwoKTsgfQogCiAgICAgdm9pZCBzZXREZWZhdWx0
UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUpOworICAgIGJvb2wgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoKTsKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKGJvb2wpOwogCiAgICAgdm9pZCBzdGFydE1lbW9yeVNhbXBsZXIoY29uc3QgZG91YmxlIGlu
dGVydmFsKTsKICAgICB2b2lkIHN0b3BNZW1vcnlTYW1wbGVyKCk7CkBAIC0yMjgsNiArMjMxLDcg
QEAgcHVibGljOgogICAgIFdlYkNvbnRleHRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xp
ZW50OyB9CiAKICAgICBXZWJJY29uRGF0YWJhc2UqIGljb25EYXRhYmFzZSgpIGNvbnN0IHsgcmV0
dXJuIG1faWNvbkRhdGFiYXNlLmdldCgpOyB9CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSBjb25zdCB7IHJldHVybiBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7IH0KIAogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsK
ICAgICAgICAgdW5zaWduZWQgd2tWaWV3Q291bnQ7CkBAIC00NzMsNiArNDc3LDcgQEAgcHJpdmF0
ZToKICAgICBkb3VibGUgbV9tZW1vcnlTYW1wbGVySW50ZXJ2YWw7CiAKICAgICBSZWZQdHI8V2Vi
SWNvbkRhdGFiYXNlPiBtX2ljb25EYXRhYmFzZTsKKyAgICBSZWZQdHI8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlPiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3M7CiAKICAgICBjb25zdCBS
ZWZQdHI8QVBJOjpXZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKKworI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU+IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSkpOworfQorCitXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkpCisgICAgOiBtX3Jlc291cmNlU3RhdGlzdGljc1N0b3JlKFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkpKQoreworfQorCitXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKQoreworfQorCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiBvcmlnaW5zKQor
eworICAgIGNvcmVTdG9yZSgpLm1lcmdlU3RhdGlzdGljcyhvcmlnaW5zKTsKK30KKwordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoZW5hYmxlZCA9PSBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkID0gZW5hYmxlZDsKKworICAgIHJlYWREYXRhRnJvbURpc2tJZk5l
ZWRlZCgpOworfQorCitib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGNvcmVTdG9y
ZSgpLnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVUb0Rpc2soKQoreworICAgIGlmICghbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGNvcmVTdG9y
ZSgpLndyaXRlRGF0YVRvRGlzaygpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6YXBwbGljYXRpb25XaWxsVGVybWluYXRlKCkKK3sKKyAgICBpZiAoIW1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1F
KDE1NDY0Mik6IFRFTVBPUkFSWSBDT0RFOiBUaGlzIHNob3VsZCBub3QgYmUgZG9uZSBpbiBvbmUg
bG9uZyBvcGVyYXRpb24gd2hlbiBleGl0aW5nLgorICAgIHdyaXRlVG9EaXNrKCk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVfaAorI2RlZmluZSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmVfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K3N0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CisKK2NsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZl
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIH5XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUoKTsKKyAgICAKKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGJvb2wpOworICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
KSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgb3JpZ2lucyk7CisK
KyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOworCisgICAgdm9pZCB3cml0ZVRv
RGlzaygpOworICAgIHZvaWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7CisKKyAgICB2b2lk
IG1lcmdlU3RhdGlzdGljcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlz
dGljcz4mKTsKKworICAgIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgY29y
ZVN0b3JlKCkgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
Y29uc3QgU3RyaW5nJik7CisgICAgCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNz
YWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIAorICAgIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU+IG1fcmVzb3VyY2VTdGF0aXN0aWNzU3RvcmU7CisgICAgYm9vbCBt
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCittZXNzYWdlcyAtPiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgeworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVk
KFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBvcmlnaW5zKQorfQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC02MSw2ICs2MSw3IEBAIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6UHJvY2Vz
c1Bvb2xDb24KICAgICAsIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKSkKICAgICAsIG1fd2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCkpCiAgICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSkKKyAgICAsIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSgpKQogewogfQogCkBAIC04Myw5ICs4NCwxMSBAQCBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vCiAgICAgY29weS0+bV9sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5t
X21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3Rvcnk7CiAgICAgY29weS0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2Vi
U1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgY29weS0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5ID0gdGhpcy0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAg
IGNvcHktPm1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgPSB0aGlzLT5tX2NhY2hlUGFydGl0
aW9uZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVz
ID0gdGhpcy0+bV9hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXM7CiAgICAgY29weS0+bV9mdWxs
eVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcgPSB0aGlzLT5tX2Z1bGx5U3luY2hy
b25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZzsKKyAgICBjb3B5LT5tX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkID0gdGhpcy0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsK
ICAgICBjb3B5LT5tX292ZXJyaWRlTGFuZ3VhZ2VzID0gdGhpcy0+bV9vdmVycmlkZUxhbmd1YWdl
czsKICAgICAKICAgICByZXR1cm4gY29weTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2
aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6
CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkpIHsgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeTsgfQogCisgICAgY29uc3QgV1RGOjpTdHJpbmcmIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoY29uc3QgV1RGOjpTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpIHsg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeTsgfQorCiAgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgY2FjaGVQYXJ0
aXRpb25lZFVSTFNjaGVtZXMoKSB7IHJldHVybiBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
OyB9CiAgICAgdm9pZCBzZXRDYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyhWZWN0b3I8V1RGOjpT
dHJpbmc+JiYgY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMpIHsgbV9jYWNoZVBhcnRpdGlvbmVk
VVJMU2NoZW1lcyA9IFdURk1vdmUoY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMpOyB9CiAKQEAg
LTg2LDYgKzg5LDkgQEAgcHVibGljOgogICAgIGJvb2wgZnVsbHlTeW5jaHJvbm91c01vZGVJc0Fs
bG93ZWRGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9mdWxseVN5bmNocm9ub3VzTW9kZUlz
QWxsb3dlZEZvclRlc3Rpbmc7IH0KICAgICB2b2lkIHNldEZ1bGx5U3luY2hyb25vdXNNb2RlSXNB
bGxvd2VkRm9yVGVzdGluZyhib29sIGFsbG93ZWQpIHsgbV9mdWxseVN5bmNocm9ub3VzTW9kZUlz
QWxsb3dlZEZvclRlc3RpbmcgPSBhbGxvd2VkOyB9CiAKKyAgICBib29sIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9v
bCBlbmFibGVkKSB7IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9
CisKICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJpbmc+JiBvdmVycmlkZUxhbmd1YWdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVMYW5ndWFnZXM7IH0KICAgICB2b2lkIHNldE92ZXJyaWRl
TGFuZ3VhZ2VzKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBsYW5ndWFnZXMpIHsgbV9vdmVycmlkZUxh
bmd1YWdlcyA9IFdURk1vdmUobGFuZ3VhZ2VzKTsgfQogCkBAIC0xMDMsOSArMTA5LDExIEBAIHBy
aXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgV1RG
OjpTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX21l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgV1RGOjpTdHJpbmcgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jYWNoZVBhcnRp
dGlvbmVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzOwogICAgIGJvb2wgbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dl
ZEZvclRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX292ZXJyaWRlTGFu
Z3VhZ2VzOwogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMjAsNiArMTIwLDEyIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5k
ZXhlZEQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgLy8gRklY
TUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKICNlbmRpZgogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRh
U3RvcmUuaAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDYgKzUxLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwog
ICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAg
ICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOworICAgIHN0
YXRpYyBTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKIAog
cHJpdmF0ZToKICAgICBXZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
Q29uZmlndXJhdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNp
b24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDYgKzc3LDExIEBAIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGEKICAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYlNRTCIpOwogfQogCitTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNl
bnRhdGlvbigiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOworfQorCiBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnlOYW1lKQogewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRv
a2VuOwpAQCAtMTQzLDYgKzE0OCw3IEBAIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmln
dXJhdGlvbiAKICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29u
ZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwog
CiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAxOTc0
ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsyNjksMTYgQEAgLSAodm9pZClfc2V0QXV0b21h
dGlvbkRlbGVnYXRlOihpZCA8X1dLQQogICAgIF9wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6QXV0b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0
b21hdGlvbkRlbGVnYXRlKSk7CiB9CiAKKy0gKEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkCit7CisgICAgcmV0dXJuIF9wcm9jZXNzUG9vbC0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoKTsKK30KKworLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIF9wcm9jZXNzUG9vbC0+c2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIC0gKHZvaWQpX3dhcm1Jbml0aWFsUHJvY2Vz
cwogewogICAgIF9wcm9jZXNzUG9vbC0+d2FybUluaXRpYWxQcm9jZXNzKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUz
LDYgKzUzLDcgQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93
bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0
ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxl
Z2F0ZTopIGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tf
QVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworQHByb3BlcnR5IChub25hdG9taWMs
IHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RC
QSk7CiAKICsgKE5TVVJMICopX3dlYnNpdGVEYXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDooTlNV
UkwgKiljb250YWluZXJVUkw7CiArIChOU1VSTCAqKV93ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5l
cldpdGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMIGJ1bmRsZUlkZW50aWZpZXJJZk5vdEluQ29u
dGFpbmVyOihOU1N0cmluZyAqKWJ1bmRsZUlkZW50aWZpZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLm1tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV0tQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92aWRlclJl
Z2lzdHJ5LmgiCisjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgiCiAjaW1wb3J0
ICJXZWFrT2JqQ1B0ci5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtQcm92aWRlci5oIgogI2lt
cG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCkBAIC05Nyw2ICs5OCw3IEBAIHBy
aXZhdGU6CiAgICAgQk9PTCBfYWxsb3dzSmF2YVNjcmlwdE1hcmt1cDsKICAgICBCT09MIF9jb252
ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHk7CiAgICAgQk9PTCBfYWxsb3dzTWV0YVJlZnJlc2g7Cisg
ICAgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiAKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgTGF6eUluaXRpYWxpemVkPFJldGFpblB0cjxXS1dlYlZpZXdDb250ZW50UHJvdmlk
ZXJSZWdpc3RyeT4+IF9jb250ZW50UHJvdmlkZXJSZWdpc3RyeTsKQEAgLTE1MSw2ICsxNTMsNyBA
QCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIF9hbGxvd3NKYXZhU2NyaXB0TWFya3VwID0gWUVT
OwogICAgIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHkgPSBOTzsKICAgICBfYWxsb3dzTWV0
YVJlZnJlc2ggPSBZRVM7CisgICAgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gTk87
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTIzMiw2ICsyMzUsNyBAQCAtIChpZCljb3B5V2l0
aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0aW9uLT5fYWxsb3dzSmF2YVNjcmlw
dE1hcmt1cCA9IHNlbGYtPl9hbGxvd3NKYXZhU2NyaXB0TWFya3VwOwogICAgIGNvbmZpZ3VyYXRp
b24tPl9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHkgPSBzZWxmLT5fY29udmVydHNQb3NpdGlv
blN0eWxlT25Db3B5OwogICAgIGNvbmZpZ3VyYXRpb24tPl9hbGxvd3NNZXRhUmVmcmVzaCA9IHNl
bGYtPl9hbGxvd3NNZXRhUmVmcmVzaDsKKyAgICBjb25maWd1cmF0aW9uLT5fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQgPSBzZWxmLT5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7
CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgY29uZmlndXJhdGlvbi0+X2FsbG93c0lubGluZU1l
ZGlhUGxheWJhY2sgPSBzZWxmLT5fYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjazsKQEAgLTQ5Niw2
ICs1MDAsMTggQEAgLSAodm9pZClfc2V0QWxsb3dzTWV0YVJlZnJlc2g6KEJPT0wpYWxsbwogICAg
IF9hbGxvd3NNZXRhUmVmcmVzaCA9IGFsbG93c01ldGFSZWZyZXNoOwogfQogCistIChCT09MKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAoreworICAgIEFTU0VSVChzZWxmLndlYnNpdGVE
YXRhU3RvcmUuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID09IF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCk7CisgICAgcmV0dXJuIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDsKK30KKworLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJP
T0wpZW5hYmxlZAoreworICAgIHNlbGYud2Vic2l0ZURhdGFTdG9yZS5fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOworICAgIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCA9IGVuYWJsZWQ7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiAtIChCT09MKV9hbHdheXNS
dW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmgJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC00OSw2ICs0OSw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRB
bGxvd3NKYXZhU2NyaXB0TWFya3VwOikgQk9PTCBfYWxsb3dzSmF2YVNjcmlwdE1hcmt1cCBXS19B
VkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRDb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHk6KSBCT09MIF9jb252ZXJ0c1Bv
c2l0aW9uU3R5bGVPbkNvcHkgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwog
QHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzTWV0YVJlZnJlc2g6KSBCT09M
IF9hbGxvd3NNZXRhUmVmcmVzaCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZDopIEJPT0wgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIFdLX0FWQUlMQUJM
RShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0
eTopIEJPT0wgX2Fsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eSBXS19BVkFJTEFCTEUoTkEs
IDlfMCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0
ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKQEAgLTE2NCw2ICsxNjUsMTYgQEAgLSAodm9pZClf
ZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KFdLX1NFVAogICAgIH0pOwogfQogCistIChCT09MKV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAoreworICAgIHJldHVybiBfd2Vic2l0ZURhdGFT
dG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpLT5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOworfQorCistICh2b2lkKV9zZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKS0+
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIEBlbmQKIAog
I2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1dlYnNpdAogCiAtICh2b2lk
KV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooV0tfU0VUKE5TU3RyaW5nICopICopZGF0YVR5cGVz
IHdpdGhPcHRpb25zOihfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKW9wdGlvbnMgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLX0FSUkFZKFdLV2Vic2l0ZURhdGFSZWNvcmQgKikg
KikpY29tcGxldGlvbkhhbmRsZXI7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworCiBAZW5k
CiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2
ICszNiw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogQHByb3BlcnR5IChub25h
dG9taWMpIE5TSW50ZWdlciBkaXNrQ2FjaGVTaXplT3ZlcnJpZGUgV0tfQVZBSUxBQkxFKDEwXzEx
LCA5XzApOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXkgKmNhY2hlUGFydGl0
aW9uZWRVUkxTY2hlbWVzOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIFdLX0FSUkFZKE5T
U3RyaW5nICopICphbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMgV0tfQVZBSUxBQkxFKFdLX01B
Q19UQkEsIFdLX0lPU19UQkEpOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEp
OwogCiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCShyZXZp
c2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODIsNiArODIsMTYgQEAg
LSAodm9pZClzZXREaXNrQ2FjaGVTaXplT3ZlcnJpZGU6KE5TSW50ZQogICAgIF9wcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24tPnNldERpc2tDYWNoZVNpemVPdmVycmlkZShzaXplKTsKIH0KIAorLSAo
Qk9PTClyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAoreworICAgIHJldHVybiBfcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOworfQor
CistICh2b2lkKXNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQK
K3sKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChlbmFibGVkKTsKK30KKwogLSAoTlNBcnJheSAqKWNhY2hlUGFydGl0aW9uZWRV
UkxTY2hlbWVzCiB7CiAgICAgYXV0byBzY2hlbWVzID0gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi0+Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lv
biAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCBXZWJLaXROZXR3b3JrQ2FjCiAjZW5kaWYKIAogc3RhdGljIE5TU3RyaW5nICogY29u
c3QgV2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXJEZWZhdWx0c0tleSA9IEAiV2Vi
S2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIiOwotCitzdGF0aWMgTlNTdHJpbmcgKiBj
b25zdCBXZWJLaXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZERlZmF1bHRzS2V5ID0gQCJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCI7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogTlNT
dHJpbmcgKlNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbk5hbWUg
PSBAIldlYktpdFNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVnaXN0ZXJlZE5vdGlmaWNhdGlvbiI7
CkBAIC0xNzgsNiArMTc4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplVwogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlRlRMSklUID0gW2RlZmF1bHRzIGJvb2xG
b3JLZXk6V2ViS2l0SlNDRlRMSklURW5hYmxlZERlZmF1bHRzS2V5XTsKICAgICBwYXJhbWV0ZXJz
LnNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZyA9IFtkZWZhdWx0cyBib29s
Rm9yS2V5OkAiTG9nTWVtb3J5SmV0c2FtRGV0YWlscyJdOwogICAgIHBhcmFtZXRlcnMuc2hvdWxk
U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpXZWJL
aXRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlckRlZmF1bHRzS2V5XTsKKyAgICBwYXJhbWV0
ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6
V2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWREZWZhdWx0c0tleV07CiAKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZXdyaXRlQ29uc3RBc1ZhciA9IGFw
cGxpY2F0aW9uSXNJQm9va3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDE5
NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIk5ldHdv
cmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5o
PgpAQCAtNzYsNyArNzgsOSBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKENv
bmZpCiAgICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0
aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpKQogICAgICwgbV93ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpKQog
ICAgICwgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJhdGlvbi5t
ZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSkKKyAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSkpCiAgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUo
V1RGTW92ZShjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSkpKQorICAgICwgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3Jl
YXRlKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpCiAgICAgLCBtX3F1ZXVlKFdv
cmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYnNpdGVEYXRhU3RvcmUiKSkKIHsK
ICAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTk3Niw2ICs5ODAsOCBAQCB2b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OndlYlByb2Nlc3NXaWxsT3BlCiB7CiAgICAgaWYgKG1fc3RvcmFnZU1hbmFn
ZXIpCiAgICAgICAgIG1fc3RvcmFnZU1hbmFnZXItPnByb2Nlc3NXaWxsT3BlbkNvbm5lY3Rpb24o
d2ViUHJvY2Vzc1Byb3h5LCBjb25uZWN0aW9uKTsKKworICAgIGNvbm5lY3Rpb24uYWRkV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgJm1fcXVldWUuZ2V0KCksIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5nZXQoKSk7CiB9CiAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6d2ViUGFnZVdp
bGxPcGVuQ29ubmVjdGlvbihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uKQpAQCAtOTkyLDYgKzk5OCw4IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6d2ViUGFnZURpZENsb3NlQ28KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNz
RGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB7CisgICAgY29ubmVjdGlvbi5yZW1vdmVXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKKwogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyKQog
ICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyLT5wcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKHdlYlBy
b2Nlc3NQcm94eSwgY29ubmVjdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9u
IDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBTdG9yYWdlTWFuYWdlcjsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdl
YlByb2Nlc3NQb29sOworY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogZW51
bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uOwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YVR5
cGU7CiBzdHJ1Y3QgV2Vic2l0ZURhdGFSZWNvcmQ7CkBAIC02Myw2ICs2NCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcg
bG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeTsKKyAgICAgICAgU3RyaW5nIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
CiAgICAgfTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNp
c3RlbnQoKTsKICAgICBzdGF0aWMgUmVmPFdlYnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShDb25maWd1
cmF0aW9uKTsKQEAgLTgwLDYgKzgyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRGF0YShP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgY29uc3QgVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3Jk
PiYsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpOwogCiAgICAgU3Rv
cmFnZU1hbmFnZXIqIHN0b3JhZ2VNYW5hZ2VyKCkgeyByZXR1cm4gbV9zdG9yYWdlTWFuYWdlci5n
ZXQoKTsgfQorICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKCkgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmdldCgp
OyB9CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZShXZWJDb3JlOjpT
ZXNzaW9uSUQpOwpAQCAtMTE1LDcgKzExOCw5IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBTdHJp
bmcgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb25zdCBTdHJpbmcgbV9tZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5OworICAgIGNvbnN0IFN0cmluZyBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3Rvcnk7CiAgICAgY29uc3QgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPiBtX3N0b3Jh
Z2VNYW5hZ2VyOworICAgIGNvbnN0IFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVl
dWU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29h
L1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZp
c2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKIAogI2ltcG9ydCAiU3RvcmFnZU1hbmFnZXIu
aCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCA8
V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2NvYS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAKQEAgLTYxLDExICs2MiwxNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRm
b3JtSW5pdGlhbGl6CiAgICAgICAgIHRlcm1pbmF0aW9uT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpub3RpZmljYXRpb25O
YW1lIG9iamVjdDpuaWwgcXVldWU6bmlsIHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90
ZSkgewogICAgICAgICAgICAgZm9yIChhdXRvJiBkYXRhU3RvcmUgOiBkYXRhU3RvcmVzV2l0aFN0
b3JhZ2VNYW5hZ2VycygpKQogICAgICAgICAgICAgICAgIGRhdGFTdG9yZS0+bV9zdG9yYWdlTWFu
YWdlci0+YXBwbGljYXRpb25XaWxsVGVybWluYXRlKCk7CisKKyAgICAgICAgICAgIG1fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy0+YXBwbGljYXRpb25XaWxsVGVybWluYXRlKCk7CiAgICAgICAgIH1d
OwogICAgIH0KIAogICAgIEFTU0VSVCghZGF0YVN0b3Jlc1dpdGhTdG9yYWdlTWFuYWdlcnMoKS5j
b250YWlucyh0aGlzKSk7CiAgICAgZGF0YVN0b3Jlc1dpdGhTdG9yYWdlTWFuYWdlcnMoKS5hcHBl
bmQodGhpcyk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5yZWFkRGF0YUZyb21EaXNr
SWZOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybURlc3Ryb3ko
KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQwLDYgKzEwNDAsOSBA
QAogCQk3NUE4RDJFMTE4N0RFQzFBMDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyREUxODdERTg3NDAwQzM5
QzlFIC8qIEFQSVNlc3Npb24uaCAqLzsgfTsKIAkJNzVBOEQyRTIxODdERUMxRTAwQzM5QzlFIC8q
IEFQSVNlc3Npb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzVBOEQyREQxODdERTg3NDAwQzM5QzlFIC8qIEFQSVNlc3Npb24uY3BwICovOyB9Owog
CQk3NjJCNzQ4RDEyMEJDNzVDMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MkI3NDg0MTIw
QkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0
QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjkx
QzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CisJCTdBNzkxRUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggKi87IH07CisJCTdBNzkxRUZDMUM3
RDA4QzUwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5Q0Q4QzAxQzc3OTg0
OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi87IH07CiAJ
CTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE2MTczQjBC
Q0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLzsgfTsKIAkJN0MxMzVBQTkx
NzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAv
KiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0MxMzVBQUMxNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9y
bWF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0MxMzVBQUExNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tICov
OyB9OwpAQCAtMzA0MSw2ICszMDQ0LDEyIEBACiAJCTc1QThEMkRFMTg3REU4NzQwMEMzOUM5RSAv
KiBBUElTZXNzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFQSVNlc3Np
b24uaDsgcGF0aCA9IFVJUHJvY2Vzcy9BUEkvQVBJU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTc2MkI3NDgxMTIwQkJBMDEwMDgxOTMzOSAvKiBGb250U21vb3RoaW5n
TGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udFNtb290aGluZ0xl
dmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MkI3NDg0MTIwQkJBMkQwMDgx
OTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworICAgICAgICAKKwkJN0E5Q0Q4
QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTlDRDhDMTFD
Nzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2
QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5p
bjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQkI5QTgxOERDREU4OTAwMDZDMDg2
IC8qIFdlYkNvbnRlbnQtaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueG1sOyBwYXRoID0gIldlYkNvbnRlbnQtaU9T
LmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMEJCOUE5MThE
Q0RGNUEwMDA2QzA4NiAvKiBOZXR3b3JrLWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9ICJOZXR3
b3JrLWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzEz
NUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3OTgsNiArNTgwNyw5IEBACiAJCQkJODZFNjdB
MjIxOTBGNDExODAwMDA0QUI3IC8qIFByb2Nlc3NUaHJvdHRsZXIuY3BwICovLAogCQkJCTg2RTY3
QTIxMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNzVGhyb3R0bGVyLmggKi8sCiAJCQkJODMwNDhB
RTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAqLywKKwkJCQk3
QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCAqLywKKwkJCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmggKi8sCisJCQkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzExMUIw
ODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEz
MDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1
MUE0RDVBODE2Q0FDNEZGMDAwRTYxNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICovLApAQCAt
NjgxOSw2ICs2ODMxLDggQEAKIAkJCQkxQUMxMzM4NDE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3Rl
T2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oICovLAogCQkJCTBGNTk0N0E1MTg3QjUxNzYwMDQzNzg1
NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJ
CQkJMEY1OTQ3QTYxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
TWVzc2FnZXMuaCAqLywKKwkJCQk3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk3QTc5MUVG
ODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2Fn
ZXMuaCAqLywKIAkJCQlFMThFNjkxMTE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1NZXNz
YWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUxOEU2OTEyMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJ
dGVtU2hpbU1lc3NhZ2VzLmggKi8sCiAJCQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNl
Y0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovLApAQCAtNzQzMCw2ICs3NDQ0LDcg
QEAKIAkJCQkxQTBFQzc1RTEyNEJDN0IyMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTA0M0I1RTEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJv
Y2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDQzREMxMTI0RkY4NzUw
MEZGQkZCNSAvKiBQbHVnaW5Qcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0E3OTFFRkIxQzdD
RkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQThFRkE3MTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJv
eHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0QTlGMzMxMkI4NDRFMjAwOEZFOTg0
IC8qIFBsdWdpblF1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NENjIyNzgxNzM5RDg2MzAw
NUJEN0ZGIC8qIFBsdWdpblNhbmRib3hQcm9maWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTg4NDAs
NiArODg1NSw3IEBACiAJCQkJMUEyRDg0QTQxMjdGNkFEMTAwMUVCOTYyIC8qIE5QVmFyaWFudERh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4QUNBMTQxNjY3MEQ4OTAwNEMxOTQxIC8qIE9i
akNPYmplY3RHcmFwaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDQ0Y2NzMzMTJDN0YxNUMwMDhG
OUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E3OTFF
RkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzM4NzQzNDE3MkY1NjE1MDAxQkQ4
OEEgLyogUGFnZUJhbm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzA1MkYyNjFDNkQzQkQz
MDA3NkU5MTkgLyogQXV0aGVudGljYXRpb25NYW5hZ2VyQ29jb2EubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3QzZEMzdGQzE3MkY1NTVGMDA5RDI4NDcgLyogUGFnZUJhbm5lck1hYy5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtOTIxOSw2ICs5MjM1LDcgQEAKIAkJCQlFRENBNzFCNzEyOEREQThDMDAyMDFC
MjYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYwQzU3
QTEyNDBBNTQ2MDA4QzVFMjkgLyogV0tCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzE0REY5RTEyMEI2MzVGMDA4MjZDMEMgLyogV0tCdW5kbGVTY3JpcHRXb3JsZC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEy
MUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJD
NDA3NUY1MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0NlcnRpZmljYXRlSW5mby5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlCQzQwNzYyODEyNEZGMDQwMDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm9N
YWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAsIDIwMTIsIDIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtODYs
NiArODcsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdp
c3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE2NSw2ICsx
NjksOCBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1faGFzUmljaENvbnRlbnRT
ZXJ2aWNlcyhmYWxzZSkKICNlbmRpZgogICAgICwgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBU
aW1lcigqdGhpcywgJldlYlByb2Nlc3M6Om5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmly
ZWQpCisgICAgLCBtX3N0YXRpc3RpY3NDaGFuZ2VkVGltZXIoKnRoaXMsICZXZWJQcm9jZXNzOjpz
dGF0aXN0aWNzQ2hhbmdlZFRpbWVyRmlyZWQpCisgICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCkp
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICwgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIoKnRo
aXMpCiAjZW5kaWYKQEAgLTE5Nyw2ICsyMDMsMTQgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vzcygp
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxk
Q2xlYXJCYWNraW5nU3RvcmVzKHRydWUpOwogI2VuZGlmCisKKyAgICBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzU3RvcmUobV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmFnZS5jb3B5UmVmKCkpOworICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JhZ2UtPnNldE5vdGlmaWNhdGlvbkNhbGxiYWNrKFt0aGlzXSB7CisgICAgICAgIGlmICht
X3N0YXRpc3RpY3NDaGFuZ2VkVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgCisgICAgICAgIG1fc3RhdGlzdGljc0NoYW5nZWRUaW1lci5zdGFydE9uZVNob3Qo
c3RkOjpjaHJvbm86OnNlY29uZHMoNSkpOworICAgIH0pOwogfQogCiBXZWJQcm9jZXNzOjp+V2Vi
UHJvY2VzcygpCkBAIC0zMjAsNiArMzM0LDggQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXpl
V2ViUHJvY2VzcyhXZQogCiAgICAgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwocGFy
YW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk7CiAKKyAgICBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKTsKKwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0
Q29kZVBhdGgpCiAgICAgICAgIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKHRydWUp
OwogCkBAIC0zNjYsNiArMzgyLDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJv
Y2VzcyhXZQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAocGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKKyAgICAgICAgc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQodHJ1ZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkKQEAgLTEyNzgsNiArMTI5NywyNyBAQCB2b2lkIFdlYlByb2Nl
c3M6Om5vblZpc2libGVQcm9jZXNzQ2xlYW51CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNz
Ojpub3RpZnlOZXdTdGF0aXN0aWNzQWRkZWQoKQoreworICAgIGlmIChtX3N0YXRpc3RpY3NDaGFu
Z2VkVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGF0aXN0aWNz
Q2hhbmdlZFRpbWVyLnN0YXJ0T25lU2hvdChzdGQ6OmNocm9ubzo6c2Vjb25kcyg1KSk7Cit9CisK
K3ZvaWQgV2ViUHJvY2Vzczo6c3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVkKCkKK3sKKyAgICBp
ZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZS0+aXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRh
dGVkKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JhZ2UtPnRha2VTdGF0aXN0aWNzKCkpLCAw
KTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIFJl
ZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vzczo6dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyhB
UEk6Ok9iamVjdCogb2JqZWN0KQogewogICAgIHN0cnVjdCBUcmFuc2Zvcm1lciBmaW5hbCA6IFVz
ZXJEYXRhOjpUcmFuc2Zvcm1lciB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJWaWV3
VXBkYXRlRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGUuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0h5c3RlcmVzaXNBY3Rpdml0eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
QEAgLTE2OSw2ICsxNzAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93
KHVpbnQ2NF90IHBhZ2VJRCk7CiAKICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRp
bWVyRmlyZWQoKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCgpOworICAg
IHZvaWQgbm90aWZ5TmV3U3RhdGlzdGljc0FkZGVkKCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICB2b2lkIGRlc3Ryb3lSZW5kZXJpbmdSZXNvdXJjZXMoKTsKQEAgLTIzMSw2ICsyMzQsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwoZG91
YmxlKTsKICAgICB2b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wpOwog
ICAgIHZvaWQgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKKyAgICB2b2lkIHNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgdXNlclByZWZlcnJl
ZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKICAgICB2b2lk
IGZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5h
YmxlZCk7CiAKQEAgLTM2MSwxMSArMzY1LDE0IEBAIHByaXZhdGU6CiAKICAgICBIYXNoU2V0PHVp
bnQ2NF90PiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fbm9uVmlzaWJs
ZVByb2Nlc3NDbGVhbnVwVGltZXI7CisgICAgV2ViQ29yZTo6VGltZXIgbV9zdGF0aXN0aWNzQ2hh
bmdlZFRpbWVyOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJh
Y2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgogCisgICAgUmVmPFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmFnZTsKKwogICAgIFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kIG1fc2hv
dWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ7CiAgICAgYm9vbCBtX3N1cHByZXNzTWVt
b3J5UHJlc3N1cmVIYW5kbGVyIHsgZmFsc2UgfTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxOTc0ODUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQyLDYgKzQyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAgICAgU2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRpbWVvdXRJbnRl
cnZhbCkKICAgICBTZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29sIGFsd2F5c1Vz
ZUNvbXBsZXhUZXh0KQogICAgIFNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9vbCB1c2VGb250
U21vb3RoaW5nKQorICAgIFNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwogICAgIFVzZXJQcmVmZXJyZWRMYW5ndWFnZXND
aGFuZ2VkKFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKICAgICBGdWxsS2V5Ym9hcmRBY2Nlc3NN
b2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTAzLTAzICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNvdXJj
ZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dpdGNoIHRvIG1h
aW50YWluaW5nIGEgZ2xvYmFsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBp
biB0aGUgV2ViS2l0IHByb2Nlc3MsCisgICAgICAgIGFuZCBoYW5kIGl0IG9mZiB0byB0aGUgV2Vi
Q29yZSBsYXllciB0byB1c2UgZHVyaW5nIGRhdGEgZ2F0aGVyaW5nLiBUaGUgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlCisgICAgICAgIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgcmVhZGluZy93
cml0aW5nIHRvIGRpc2ssIGFuZCB0cmFja2luZyB0aGUgY29sbGVjdGlvbiBvZiBsb2FkIGRhdGEu
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChXZWJLaXRJbml0aWFs
aXplQXBwbGljYXRpb25TdGF0aXN0aWNzU3RvcmFnZVBhdGhJZk5lY2Vzc2FyeSk6IEluaXRpYWxp
emUgc2luZ2xldG9uCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBvYmplY3Qg
Zm9yIHRyYWNraW5nIHN0YXRlLgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5n
ZWQ6XSk6IFJldmlzZSBmb3IgbmV3IHNpbmdsZXRvbi4KKyAgICAgICAgKCtbV2ViVmlldyBfYXBw
bGljYXRpb25XaWxsVGVybWluYXRlXSk6IERpdHRvLgorCiAyMDE2LTAyLTI5ICBBZGEgQ2hhbiAg
PGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IHRoZSBuZXcgdmVyc2lvbiBvZiBB
Vk91dHB1dERldmljZU1lbnVDb250cm9sbGVyJ3Mgc2hvd01lbnVGb3JSZWN0IG1ldGhvZC4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE5NzQ4NSkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjUyLDYgKzI1Miw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL01vYmlsZUdlc3RhbHRTUEkuaD4KICNp
bXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0YXRlTm90aWZpZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1TY3JlZW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TbWFydFJl
cGxhY2UuaD4KQEAgLTYwNiw2ICs2MDgsNyBAQCBlbnVtIHsgV2ViVmlld1ZlcnNpb24gPSA0IH07
CiAjZGVmaW5lIHRpbWVkTGF5b3V0U2l6ZSA0MDk2CiAKIHN0YXRpYyBOU011dGFibGVTZXQgKnNj
aGVtZXNXaXRoUmVwcmVzZW50YXRpb25zU2V0Oworc3RhdGljIFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSAqcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogCiAjaWYgIVBM
QVRGT1JNKElPUykKIE5TU3RyaW5nICpfV2ViQ2FuR29CYWNrS2V5ID0gICAgICAgICAgICBAImNh
bkdvQmFjayI7CkBAIC03NjQsNyArNzY3LDEwIEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxp
emVBcHBsaWNhdGlvblMKICAgICBBU1NFUlQoYXBwTmFtZSk7CiAgICAgCiAgICAgTlNTdHJpbmcg
KnN1cHBvcnREaXJlY3RvcnkgPSBbTlNTdHJpbmcgX3dlYmtpdF9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnlXaXRoQnVuZGxlSWRlbnRpZmllcjphcHBOYW1lXTsKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShzdXBwb3J0
RGlyZWN0b3J5KTsKKworICAgIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IHN0YXRpc3RpY3NTdG9yZSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y3JlYXRlKHN1cHBvcnREaXJlY3RvcnkpOworICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSA9ICZzdGF0aXN0aWNzU3RvcmUuZ2V0KCk7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZE9ic2VydmVyKCkuc2V0U3RhdGlzdGljc1N0b3JlKFdURk1vdmUoc3RhdGlzdGljc1N0
b3JlKSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZWQgPSBZRVM7CiB9CkBAIC0yNDcyLDcgKzI0Nzgs
NyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAgICAgc2V0dGlu
Z3Muc2V0SGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkKFtwcmVmZXJlbmNl
cyBoaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWRdKTsKIAogICAgIHNldHRp
bmdzLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFtwcmVmZXJlbmNlcyByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOwotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFy
ZWRPYnNlcnZlcigpLnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOworICAgIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS0+cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7CiAKICNpZiBFTkFC
TEUoR0FNRVBBRCkKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnNldEdhbWVwYWRzRW5hYmxlZChbcHJlZmVyZW5jZXMgZ2FtZXBhZHNFbmFibGVkXSk7CkBAIC00
ODQyLDcgKzQ4NDgsNyBAQCArICh2b2lkKV9hcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUKIHsgICAK
ICAgICBhcHBsaWNhdGlvbklzVGVybWluYXRpbmcgPSBZRVM7CiAKLSAgICBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS53cml0ZURhdGFUb0Rpc2soKTsKKyAgICByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUtPndyaXRlRGF0YVRvRGlzaygpOwogCiAgICAgaWYgKGZhc3RE
b2N1bWVudFRlYXJkb3duRW5hYmxlZCgpKQogICAgICAgICBbc2VsZiBjbG9zZUFsbFdlYlZpZXdz
XTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE5NzUxMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIwIEBACisyMDE2LTAzLTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDI3OAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubToK
KyAgICAgICAgKGRlZmF1bHRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9t
YWMvU2V0dGluZ3NDb250cm9sbGVyLm06CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBf
cG9wdWxhdGVNZW51XSk6IE1vdmUgc2V0dGluZyBmcm9tIFdLMS1vbmx5IHRvIGJlCisgICAgICAg
IHVuaXZlcnNhbGx5IGFwcGxpY2FibGUuCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyIGRpZENoYW5nZVNldHRpbmdzXSk6IFJlY29nbml6ZSB3aGVuIHRoZQorICAgICAgICBS
ZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MgZmxhZyBoYXMgY2hhbmdlZC4KKwogMjAxNi0wMy0wMyAg
Q29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE5NzQ0Mi4KSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9B
cHBEZWxlZ2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxl
Z2F0ZS5tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVs
ZWdhdGUubQkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBzdGF0aWMgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiAqZGVmYXVsdENvCiAgICAgfQogCiAgICAgY29uZmlndXJhdGlvbi5zdXBw
cmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcgPSBbU2V0dGluZ3NDb250cm9sbGVyIHNoYXJlZF0u
aW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2VkOworICAgIGNvbmZpZ3VyYXRpb24uX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gW1NldHRpbmdzQ29udHJvbGxlciBzaGFyZWRdLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwog
fQogI2VuZGlmCkluZGV4OiBUb29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVy
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxl
ci5tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBUb29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3ND
b250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCAtICh2b2lkKV9w
b3B1bGF0ZU1lbnUKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlN1cHByZXNzIEluY3Jl
bWVudGFsIFJlbmRlcmluZyBpbiBOZXcgV2luZG93cyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVJ
bmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzZWQ6KSBpbmRlbnRlZDpOT107CiAgICAgW3NlbGYg
X2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgQWNjZWxlcmF0ZWQgRHJhd2luZyIgYWN0aW9uOkBz
ZWxlY3Rvcih0b2dnbGVBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOwog
ICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIERpc3BsYXkgTGlzdCBEcmF3aW5n
IiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZURpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ6KSBpbmRl
bnRlZDpOT107CisgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgUmVzb3VyY2Ug
TG9hZCBTdGF0aXN0aWNzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOwogCiAgICAgW3NlbGYgX2FkZEhlYWRlcldpdGhU
aXRsZTpAIldlYktpdDItb25seSBTZXR0aW5ncyJdOwogCkBAIC0xNDEsNyArMTQyLDYgQEAgLSAo
dm9pZClfcG9wdWxhdGVNZW51CiAKICAgICBbc2VsZiBfYWRkSGVhZGVyV2l0aFRpdGxlOkAiV2Vi
S2l0MS1vbmx5IFNldHRpbmdzIl07CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFi
bGUgU3VicGl4ZWwgQ1NTT00gTWV0cmljcyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVFbmFibGVT
dWJQaXhlbENTU09NTWV0cmljczopIGluZGVudGVkOllFU107Ci0gICAgW3NlbGYgX2FkZEl0ZW1X
aXRoVGl0bGU6QCJFbmFibGUgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIiBhY3Rpb246QHNlbGVj
dG9yKHRvZ2dsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOwog
fQogCiAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQpJbmRl
eDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0JKHJldmlzaW9uIDE5NzQ4NSkKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93
c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW1w
b3J0IDxXZWJLaXQvV0tGcmFtZUluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25E
ZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJ
RGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KQEAgLTM0Niw2ICszNDcs
OCBAQCAtICh2b2lkKWRpZENoYW5nZVNldHRpbmdzCiAgICAgcHJlZmVyZW5jZXMuX3Jlc291cmNl
VXNhZ2VPdmVybGF5VmlzaWJsZSA9IHNldHRpbmdzLnJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJs
ZTsKICAgICBwcmVmZXJlbmNlcy5fZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCA9IHNldHRpbmdz
LmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ7CiAKKyAgICBfd2ViVmlldy5jb25maWd1cmF0aW9u
LnByb2Nlc3NQb29sLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHNldHRpbmdzLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOworCiAgICAgQk9PTCB1c2VUcmFuc3BhcmVudFdp
bmRvd3MgPSBzZXR0aW5ncy51c2VUcmFuc3BhcmVudFdpbmRvd3M7CiAgICAgaWYgKHVzZVRyYW5z
cGFyZW50V2luZG93cyAhPSAhX3dlYlZpZXcuX2RyYXdzQmFja2dyb3VuZCkgewogICAgICAgICBb
c2VsZi53aW5kb3cgc2V0T3BhcXVlOiF1c2VUcmFuc3BhcmVudFdpbmRvd3NdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272774</attachid>
            <date>2016-03-03 13:37:23 -0800</date>
            <delta_ts>2016-03-03 23:55:10 -0800</delta_ts>
            <desc>Patch (v2)</desc>
            <filename>bug-154278-20160303133708.patch</filename>
            <type>text/plain</type>
            <size>127071</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE2LTAzLTAzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgU3BsaXQgcGFydCBvZiB0aGUgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgaW50byBhIG5l
dyBjbGFzcyAoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKQorICAgICAgICB0aGF0IG1hbmFn
ZXMgdGhlIGNvbGxlY3Rpb24gb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljIG9iamVjdHMsIGFuZCB0
aGF0IGNhbiBiZSB1c2VkCisgICAgICAgIGluIHRoZSBVSVByb2Nlc3Mgd2l0aG91dCB0b3VjaGlu
ZyB2YXJpb3VzIFdlYlByb2Nlc3Mtc3BlY2lmaWMgV2ViQ29yZSBjbGFzc2VzLgorCisgICAgICAg
IEhhdmUgdGhlIFdlYlByb2Nlc3Mgb25seSBmaXJlIGEgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNz
IGlmIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQuIE90aGVyd2lzZSwKKyAgICAgICAgbm8gbWVzc2Fn
ZXMgc2hvdWxkIGJlIHNlbnQuIFdoZW4gbmV3IGRhdGEgaXMgZW5jb3VudGVyZWQsIHN0YXJ0IGEg
NSBzZWNvbmQgdGltZXIuIElmIG1vcmUKKyAgICAgICAgZGF0YSBpcyBmb3VuZCBkdXJpbmcgdGhp
cyBkZWxheSwganVzdCBhY2N1bXVsYXRlIGl0LiBXaGVuIHRoZSB0aW1lciBmaXJlcywgYWxsIGRh
dGEgaXMgc2VudAorICAgICAgICBhbmQgdGhlIHRpbWVyIHN0b3BzIHVudGlsIGEgbmV3IGJhdGNo
IG9mIGRhdGEgYXJyaXZlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgdGhlIG5l
dyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xhc3MuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGp1c3QgdmlzaWJpbGl0eSBvZiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIGhlYWRlciwKKyAgICAgICAgYW5kIGFkZCBuZXcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIGNsYXNzLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOiBUZWxs
IHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgdG8gZmlyZSBpdHMgJ2RhdGEgY2hhbmdl
ZCcKKyAgICAgICAgaGFuZGxlciBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cHJpbWFyeURvbWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0Zv
ck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQcmV2
YWxlbnRSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaXNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0
aXN0aWNzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cGVyc2lzdGVudFN0b3JhZ2VQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNy
ZWF0ZURlY29kZXJGcm9tRGlzayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6d3JpdGVFbmNvZGVyVG9EaXNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVIYXNoQ291bnRlZFNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Om1lcmdl
SGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6bWVyZ2UpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6d3JpdGVEYXRhVG9EaXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJzaXN0ZW50U3RvcmFnZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFk
RGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjcmVhdGVEZWNvZGVyRnJvbURpc2spOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rpc2spOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGFr
ZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjptZXJnZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxl
cik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNFbXB0
eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWZhdWx0
RmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorCiAyMDE2LTAzLTAyICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUwgcGFyc2VyIGluc3RhbnRpYXRl
cyBhIGN1c3RvbSBlbGVtZW50IGluc2lkZSBhIHRlbXBsYXRlIGVsZW1lbnQgd2l0aCBhIHdyb25n
IG93bmVyIGRvY3VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3NDg1
KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
MjMsNiArMTkyMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAogICAg
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAogICAg
IGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwCiAgICAgbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ1LDcgKzExNDUsNiBAQAog
CQkyRDQxNTBERTFDMUY4NjhDMDAwQTNCQTIgLyogSlNNb2NrUGFnZU92ZXJsYXkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2RjNFOTIxQzFGODU1
NTAwNjFEQkQ0IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJMkQ0NDQ2OTgxQzg0
Q0NDRjAwMjRDODg5IC8qIERPTUhUTUxNZWRpYUVsZW1lbnQuaCBpbiBDb3B5IEdlbmVyYXRlZCBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERUM2NjRFMUM4MkNG
RjYwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVtZW50LmggKi87IH07CiAJCTJENDQ0Njk5MUM4
NENDRDcwMDI0Qzg4OSAvKiBET01IVE1MVmlkZW9FbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVDNjY0QjFDODJD
RkJGMDA5OTg0NkEgLyogRE9NSFRNTFZpZGVvRWxlbWVudC5oICovOyB9OwotCQkyRDQ0NDY5QTFD
ODRDQ0UxMDAyNEM4ODkgLyogRE9NTWVkaWFDb250cm9sbGVyLmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVDNjY2OTFDODND
Q0JFMDA5OTg0NkEgLyogRE9NTWVkaWFDb250cm9sbGVyLmggKi87IH07CiAJCTJENDQ0NjlCMUM4
NENEMDUwMDI0Qzg4OSAvKiBET01NZWRpYUVycm9yLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVDNjY3NTFDODQwM0MzMDA5
OTg0NkEgLyogRE9NTWVkaWFFcnJvci5oICovOyB9OwogCQkyRDQ0NDY5RjFDODRDRDA2MDAyNEM4
ODkgLyogRE9NVGltZVJhbmdlcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFQzY2NkYxQzgzRjJBRjAwOTk4NDZBIC8qIERP
TVRpbWVSYW5nZXMuaCAqLzsgfTsKIAkJMkQ0NkYwNEUxN0I5NkZCRDAwNTY0N0YwIC8qIEludFBv
aW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NDZGMDREMTdCOTZGQkQwMDU2NDdGMCAvKiBJbnRQb2ludC5jcHAgKi87IH07CkBAIC0yNjgyLDkg
KzI2ODEsMTEgQEAKIAkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
ICovOyB9OwogCQk3QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJN0E5MjlDQTYxQzU5OEE5RTAwNERGMjI2IC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0E5MjlDQTExQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwICovOyB9OwotCQk3QTkyOUNBNzFDNTk4QUE5MDA0REYyMjYgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E5MjlDQTIxQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCAq
LzsgfTsKKwkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5
Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0E5Mzg2ODUxOERDQzE0
NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODIxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIu
Y3BwICovOyB9OwogCQk3QTkzODY4NjE4RENDMTQ1MDBCODI2M0QgLyogVlRUU2Nhbm5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODMxOERD
QzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuaCAqLzsgfTsKKwkJN0E5M0E4MDMxQzg3N0RDMTAw
RTM1RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTdDQzgzNjFDODc1MDY4MDAzNjYyNDMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLzsgfTsKKwkJN0E5M0E4MDQxQzg3
N0REMDAwRTM1RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3Q0M4MzcxQzg3NTA2ODAwMzY2
MjQzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAv
KiBUaWxlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUEzQTY5NTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3Bw
ICovOyB9OwogCQk3QUEzQTY5QTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTNBNjk2MTk0
QTY0RTcwMDFDQkQyNCAvKiBUaWxlQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTNBNjlCMTk0QTY0RTcwMDFDQkQyNCAvKiBU
aWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUEzQTY5NzE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUdyaWQuY3BwICovOyB9OwpAQCAtODY2
MywxNiArODY2NCwxNiBAQAogCQkyREU3MDAyMjE5MkZFODJBMDBCMDk3NUMgLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVD
NjY0QjFDODJDRkJGMDA5OTg0NkEgLyogRE9NSFRNTFZpZGVvRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MVmlkZW9FbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJERUM2NjRDMUM4MkNGQkYwMDk5ODQ2QSAvKiBET01IVE1MVmlk
ZW9FbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTFZpZGVvRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2
NEQxQzgyQ0ZCRjAwOTk4NDZBIC8qIERPTUhUTUxWaWRlb0VsZW1lbnRJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01IVE1MVmlkZW9FbGVtZW50SW50ZXJuYWwu
aDsgcGF0aCA9IERPTUhUTUxWaWRlb0VsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyREVDNjY0RDFDODJDRkJGMDA5OTg0NkEgLyogRE9NSFRNTFZpZGVvRWxl
bWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxW
aWRlb0VsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVD
NjY0RTFDODJDRkY2MDA5OTg0NkEgLyogRE9NSFRNTE1lZGlhRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MTWVkaWFFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJERUM2NjRGMUM4MkNGRjYwMDk5ODQ2QSAvKiBET01IVE1MTWVk
aWFFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTE1lZGlhRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2
NTAxQzgyRDAwODAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnRJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01IVE1MTWVkaWFFbGVtZW50SW50ZXJuYWwu
aDsgcGF0aCA9IERPTUhUTUxNZWRpYUVsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyREVDNjY1MDFDODJEMDA4MDA5OTg0NkEgLyogRE9NSFRNTE1lZGlhRWxl
bWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxN
ZWRpYUVsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVD
NjY2RjFDODNGMkFGMDA5OTg0NkEgLyogRE9NVGltZVJhbmdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01UaW1lUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJERUM2NjcwMUM4M0YyQUYwMDk5ODQ2QSAvKiBET01UaW1lUmFuZ2VzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVGltZVJhbmdlcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2NzExQzgzRjJBRjAwOTk4NDZBIC8qIERP
TVRpbWVSYW5nZXNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
T01UaW1lUmFuZ2VzSW50ZXJuYWwuaDsgcGF0aCA9IERPTVRpbWVSYW5nZXNJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREVDNjY3MTFDODNGMkFGMDA5OTg0NkEgLyog
RE9NVGltZVJhbmdlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTVRpbWVSYW5nZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REVDNjY3NTFDODQwM0MzMDA5OTg0NkEgLyogRE9NTWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01NZWRpYUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJERUM2Njc2MUM4NDAzQzMwMDk5ODQ2QSAvKiBET01NZWRpYUVycm9yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTWVkaWFFcnJvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2NzcxQzg0MDNDMzAwOTk4NDZBIC8q
IERPTU1lZGlhRXJyb3JJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBET01NZWRpYUVycm9ySW50ZXJuYWwuaDsgcGF0aCA9IERPTU1lZGlhRXJyb3JJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREVDNjY3NzFDODQwM0MzMDA5OTg0NkEg
LyogRE9NTWVkaWFFcnJvckludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTU1lZGlhRXJyb3JJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRTA4ODhDMzExNDg4M0E5MDBBRjQyNjUgLyogRE9NRm9ybURhdGEuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IERPTUZvcm1EYXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkUwODg4RDIxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Gb3JtRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMDg4OEQzMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZv
cm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRm9ybURhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMjk2LDYgKzEwMjk3LDggQEAKIAkJ
N0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNCOTEwMTgzOUE2
MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QTdDQzgzNjFDODc1MDY4MDAzNjYyNDMgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdBN0NDODM3MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTI5Q0ExMUM1OTgzNzgw
MDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTkyOUNBMjFDNTk4Mzc4MDA0REYyMjYgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTM4Njgy
MThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFZUVFNjYW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjI3MjEsNiArMjI3MjQsOCBAQAogCQkJCTZCNjkzQTJEMUM1MUE4MkUwMEIwM0JFRiAv
KiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovLAogCQkJCTdBOTI5Q0ExMUM1OTgzNzgwMDRERjIy
NiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLywKIAkJCQk3QTkyOUNBMjFDNTk4Mzc4
MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oICovLAorCQkJCTdBN0NDODM2MUM4
NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAorCQkJ
CTdBN0NDODM3MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCAqLywKIAkJCQk1MTMyN0Q1RjExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCAq
LywKIAkJCQk1MTMyN0Q1RTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmggKi8sCiAJ
CQkJRDAwMEVEMjUxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmNwcCAqLywKQEAg
LTI0OTEzLDYgKzI0OTE4LDcgQEAKIAkJCQkyOUE4MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyogQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzMwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjlBODEyM0IwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyQzBGQkI5QzFE
MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgx
MjQzMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjlBODEyNDIwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTM4LDcgKzI1MTQ0LDYgQEAKIAkJCQk5OUND
MEI0RjE4QkU5ODQ5MDA2Q0VCQ0MgLyogQ2FwdHVyaW5nSW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzczNDE1MTk3Nzg5NkQwMDQ2QkZDNSAvKiBDQVJpbmdCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1NTBCNjlFMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAotCQkJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU4QjVFRDFBNjk3NzczMDBC
NEI2NkEgLyogQ0RNUHJpdmF0ZUNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMxODYy
MzE5OUYxRTJBMDAzMEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RERDU3MTUxOEI1N0E4MjAwQTk0RkNCIC8qIENETVNlc3Npb24uaCBp
biBIZWFkZXJzICovLApAQCAtMjYzNTQsNiArMjYzNTksNyBAQAogCQkJCTBGMDNDMDc1MTg4NDgw
NTUwMEE1RjhDQSAvKiBJbnNwZWN0b3JPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjZG
REQ2NTEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OUNDMEI2NzE4QkU5RjE1MDA2Q0VCQ0MgLyogSW5zcGVjdG9yUmVwbGF5QWdlbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTdBOTNBODA0MUM4NzdERDAwMEUzNUZENiAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgyQUIxNzc0MTI1Qzgy
NjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU5M0NGOEIxODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFn
ZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTgyMCw2ICsyOTgyNiw3IEBACiAJCQkJQThF
QTc5RjgwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxNZW51RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyQkU4RTJDOTEyQTU4QTAxMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQzI3MEExNTIwNTcwMEIxMkE2OCAvKiBIVE1M
TWV0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E5M0E4MDMxQzg3N0RDMTAwRTM1
RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDRDlEODI3NTFDN0FFNTM1MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YubW0gaW4gU291cmNl
cyAqLywKIAkJCQlBNDU0NDI0QTExOUIzNjYxMDA5QkU5MTIgLyogSFRNTE1ldGVyRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjdBOTBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTE1v
ZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTAxNiw3ICszMTAyMyw3IEBACiAJCQkJ
NDQ3OTU4MDUxNjQzQjRCMjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY1NUIzREM5MTI1MUYxMkQwMDNFRjI2OSAvKiBQYXNzd29yZElucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREVDNjY3MzFDODNGMkFGMDA5OTg0NkEgLyogRE9N
VGltZVJhbmdlcy5tbSBpbiBTb3VyY2VzICovLAotICAgICAgICAgICAgICAgIDJERUM2NjU2MUM4
MkQwNDQwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJMkRFQzY2NTYxQzgyRDA0NDAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnQubW0gaW4g
U291cmNlcyAqLywKIAkJCQlFNDUzOTAxRTBFQUZDQUNBMDAzNjk1QzggLyogUGFzdGVib2FyZElP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTRCMjcwOTgzMEFGMkU1RTAwMDY1MTI3RiAvKiBQYXN0
ZWJvYXJkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0YwQjA1MzgxNDAwMkNFNjRG
IC8qIFBhdGguY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2VydmVyLmgiCiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCkBAIC0zOSw4ICszOSw2IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jZGVmaW5lIExP
R19TVEFUSVNUSUNTX1RPX0ZJTEUgMAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlc291cmNl
TG9hZE9ic2VydmVyJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKQpAQCAt
NDgsNyArNDYsMjIgQEAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2Vydgog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRPYnNlcnZlcj4gcmVzb3VyY2VM
b2FkT2JzZXJ2ZXI7CiAgICAgcmV0dXJuIHJlc291cmNlTG9hZE9ic2VydmVyOwogfQotICAgIAor
Cit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChib29sIGVuYWJsZWQpCit7CisgICAgU2V0dGluZ3M6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNldHRp
bmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOworfQorCit2b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZT4mJiBzdG9yZSkKK3sKKyAgICBtX3N0YXRpc3RpY3MgPSBXVEZNb3ZlKHN0b3JlKTsK
K30KKwogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKGJvb2wg
aXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBi
b29sIGlzTWFpbkZyYW1lLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCkKIHsKICAgICBpZiAoIVNl
dHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKQpAQCAtNzEsNyArODQsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBhdXRvIHRhcmdldE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUo
dGFyZ2V0VVJMKTsKLSAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gcmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKKyAgICBhdXRvJiB0YXJn
ZXRTdGF0aXN0aWNzID0gbV9zdGF0aXN0aWNzLT5yZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5
RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwogICAgIAogICAgIGlmIChpc01haW5GcmFtZSkK
ICAgICAgICAgdGFyZ2V0U3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUb0JlZm9y
ZSA9IHRydWU7CkBAIC04Myw5ICs5Niw5IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omxv
Z0ZyYW1lTmF2aWcKICAgICB9CiAgICAgCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKLSAgICAgICAg
YXV0byYgcmVkaXJlY3RpbmdPcmlnaW5SZXNvdXJjZVN0YXRpc3RpY3MgPSByZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4pOworICAgICAgICBhdXRv
JiByZWRpcmVjdGluZ09yaWdpblJlc291cmNlU3RhdGlzdGljcyA9IG1fc3RhdGlzdGljcy0+cmVz
b3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKICAg
ICAgICAgCi0gICAgICAgIGlmIChpc1ByZXZhbGVudFJlc291cmNlKHRhcmdldFByaW1hcnlEb21h
aW4pKQorICAgICAgICBpZiAobV9zdGF0aXN0aWNzLT5pc1ByZXZhbGVudFJlc291cmNlKHRhcmdl
dFByaW1hcnlEb21haW4pKQogICAgICAgICAgICAgcmVkaXJlY3RpbmdPcmlnaW5SZXNvdXJjZVN0
YXRpc3RpY3MucmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMuYWRkKHRh
cmdldFByaW1hcnlEb21haW4pOwogICAgICAgICAKICAgICAgICAgaWYgKGlzTWFpbkZyYW1lKSB7
CkBAIC0xMDUsNyArMTE4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVO
YXZpZwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICsrdGFyZ2V0U3RhdGlzdGlj
cy5zdWJmcmFtZVN1YlJlc291cmNlQ291bnQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBhdXRvJiBzb3VyY2VPcmlnaW5SZXNvdXJjZVN0YXRpc3RpY3MgPSByZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4pOworICAgICAgICAgICAgYXV0
byYgc291cmNlT3JpZ2luUmVzb3VyY2VTdGF0aXN0aWNzID0gbV9zdGF0aXN0aWNzLT5yZXNvdXJj
ZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4pOwogCiAgICAg
ICAgICAgICBpZiAoaXNNYWluRnJhbWUpIHsKICAgICAgICAgICAgICAgICArK3NvdXJjZU9yaWdp
blJlc291cmNlU3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tOwpAQCAtMTE3
LDcgKzEzMCw4IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZh
bGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKTsK
KyAgICB0YXJnZXRTdGF0aXN0aWNzLmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVj
ZXNzYXJ5KG1fc3RhdGlzdGljcy0+c2l6ZSgpKTsKKyAgICBtX3N0YXRpc3RpY3MtPmZpcmVEYXRh
TW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogICAgIAogdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGJvb2wgaXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3Vy
Y2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCkKQEAg
LTEzOCwxNSArMTUyLDE1IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291
cmMKICAgICBpZiAodGFyZ2V0UHJpbWFyeURvbWFpbiA9PSBtYWluRnJhbWVQcmltYXJ5RG9tYWlu
IHx8IHRhcmdldFByaW1hcnlEb21haW4gPT0gc291cmNlUHJpbWFyeURvbWFpbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IHJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CisgICAgYXV0byYgdGFyZ2V0
U3RhdGlzdGljcyA9IG1fc3RhdGlzdGljcy0+cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKIAogICAgIGF1dG8gbWFpbkZyYW1lT3JpZ2luID0g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYWluRnJhbWVVUkwpOwogICAgIHRhcmdldFN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucy5hZGQobWFpbkZyYW1lUHJpbWFyeURv
bWFpbik7CiAKICAgICBpZiAoaXNSZWRpcmVjdCkgewotICAgICAgICBhdXRvJiByZWRpcmVjdGlu
Z09yaWdpblN0YXRpc3RpY3MgPSByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNv
dXJjZVByaW1hcnlEb21haW4pOworICAgICAgICBhdXRvJiByZWRpcmVjdGluZ09yaWdpblN0YXRp
c3RpY3MgPSBtX3N0YXRpc3RpY3MtPnJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4o
c291cmNlUHJpbWFyeURvbWFpbik7CiAgICAgICAgIAotICAgICAgICBpZiAoaXNQcmV2YWxlbnRS
ZXNvdXJjZSh0YXJnZXRQcmltYXJ5RG9tYWluKSkKKyAgICAgICAgaWYgKG1fc3RhdGlzdGljcy0+
aXNQcmV2YWxlbnRSZXNvdXJjZSh0YXJnZXRQcmltYXJ5RG9tYWluKSkKICAgICAgICAgICAgIHJl
ZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291
cmNlT3JpZ2lucy5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbik7CiAgICAgICAgIAogICAgICAgICAr
K3JlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVk
RnJvbTsKQEAgLTE2Nyw3ICsxODEsOCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dT
dWJyZXNvdXJjCiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3Vi
cmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCA9IHN0YXRp
Y19jYXN0PGRvdWJsZT4odGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNv
dXJjZUNvdW50KSAvIHRvdGFsVmlzaXRlZDsKICAgICB9CiAgICAgCi0gICAgdGFyZ2V0U3RhdGlz
dGljcy5jaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeShtX3Jlc291cmNl
U3RhdGlzdGljc01hcC5zaXplKCkpOworICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRB
c1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9zdGF0aXN0aWNzLT5zaXplKCkpOworICAg
IG1fc3RhdGlzdGljcy0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAgICAgCiB2
b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgRG9jdW1l
bnQmIGRvY3VtZW50KQpAQCAtMTc1LDI3ICsxOTAsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6bG9nVXNlckludGVyYQogICAgIGlmICghU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHN0YXRpc3RpY3Mg
PSByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4oZG9jdW1l
bnQudXJsKCkpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdGF0aXN0aWNzLT5yZXNvdXJj
ZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4oZG9jdW1lbnQudXJsKCkp
KTsKICAgICBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgbV9zdGF0
aXN0aWNzLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KICAgICAKLWJvb2wgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwcmlt
YXJ5RG9tYWluKSBjb25zdAotewotICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlz
dGljc01hcC5maW5kKHByaW1hcnlEb21haW4pOwotICAgIGlmIChtYXBFbnRyeSA9PSBtX3Jlc291
cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIG1hcEVudHJ5LT52YWx1ZS5pc1ByZXZhbGVudFJlc291cmNlOwotfQotICAgIAotUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlc291cmNlU3RhdGlzdGlj
c0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKQotewotICAgIGlm
ICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpCi0gICAg
ICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChwcmltYXJ5RG9tYWluLCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKCkpOwotICAgIAotICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01h
cC5maW5kKHByaW1hcnlEb21haW4pLT52YWx1ZTsKLX0KLQogU3RyaW5nIFJlc291cmNlTG9hZE9i
c2VydmVyOjpwcmltYXJ5RG9tYWluKGNvbnN0IFVSTCYgdXJsKQogewogICAgIFN0cmluZyBob3N0
ID0gdXJsLmhvc3QoKTsKQEAgLTIzOCwxMzYgKzIzNyw5IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cHJpbWFyeURvbWEKICAgICByZXR1cm4gcHJpbWFyeURvbWFpbjsKIH0KIAotdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OktleVZhbHVlUGFp
clR5cGUgU3RhdGlzdGljc1ZhbHVlOwotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjp3cml0
ZURhdGFUb0Rpc2soKQotewotICAgIGlmICghU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGVuY29kZXIgPSBL
ZXllZEVuY29kZXI6OmVuY29kZXIoKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoIm9yaWdp
bnNWaXNpdGVkIiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKTsKLSAgICAKLSAgICBl
bmNvZGVyLT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwgW3RoaXNd
KEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBjb25zdCBTdGF0aXN0aWNzVmFsdWUmIG9yaWdp
bikgewotICAgICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lciwgb3JpZ2luLmtl
eSk7Ci0gICAgfSk7Ci0gICAgCi0gICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgp
LCAiZnVsbF9icm93c2luZ19zZXNzaW9uIik7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OndyaXRlRGF0YVRvRGlzayhjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzKSBjb25zdAotewotICAgIGlmICghU2V0
dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6ZW5jb2RlcigpOwotICAgIGVuY29k
ZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zpc2l0ZWQiLCAxKTsKLSAgICAKLSAgICBlbmNvZGVy
LT5lbmNvZGVPYmplY3Qob3JpZ2luLCByZXNvdXJjZVN0YXRpc3RpY3MsIFt0aGlzLCAmb3JpZ2lu
XShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJl
c291cmNlU3RhdGlzdGljcykgewotICAgICAgICByZXNvdXJjZVN0YXRpc3RpY3MuZW5jb2RlKGVu
Y29kZXIsIG9yaWdpbik7Ci0gICAgfSk7Ci0gICAgCi0gICAgU3RyaW5nIGxhYmVsID0gb3JpZ2lu
OwotICAgIGxhYmVsLnJlcGxhY2UoJy8nLCAnXycpOwotICAgIGxhYmVsLnJlcGxhY2UoJzonLCAn
KycpOwotICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgbGFiZWwpOwotfQot
Ci12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0gICAgbV9zdG9yYWdlUGF0aCA9IHBhdGg7Ci19Ci0K
LVN0cmluZyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cGVyc2lzdGVudFN0b3JhZ2VQYXRoKGNvbnN0
IFN0cmluZyYgbGFiZWwpIGNvbnN0Ci17Ci0gICAgaWYgKG1fc3RvcmFnZVBhdGguaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLQotICAgIC8vIFRPRE8gRGVjaWRlIHdo
YXQgdG8gY2FsbCB0aGlzIGZpbGUKLSAgICByZXR1cm4gcGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KG1fc3RvcmFnZVBhdGgsIGxhYmVsICsgIl9yZXNvdXJjZUxvZy5wbGlzdCIpOwotfQotCi12b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKQotewotICAg
IGlmICghU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGF1dG8gZGVjb2RlciA9IGNyZWF0ZURlY29kZXJGcm9tRGlzaygi
ZnVsbF9icm93c2luZ19zZXNzaW9uIik7Ci0gICAgaWYgKCFkZWNvZGVyKQotICAgICAgICByZXR1
cm47Ci0KLSAgICB1bnNpZ25lZCB2aXNpdGVkT3JpZ2lucyA9IDA7Ci0gICAgZGVjb2Rlci0+ZGVj
b2RlVUludDMyKCJvcmlnaW5zVmlzaXRlZCIsIHZpc2l0ZWRPcmlnaW5zKTsKLSAgICAgICAgCi0g
ICAgVmVjdG9yPFN0cmluZz4gbG9hZGVkT3JpZ2luczsKLSAgICBkZWNvZGVyLT5kZWNvZGVPYmpl
Y3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBsb2FkZWRPcmlnaW5zLCBbdGhpc10oS2V5ZWREZWNv
ZGVyJiBkZWNvZGVySW5uZXIsIFN0cmluZyYgb3JpZ2luKSB7Ci0gICAgICAgIGlmICghZGVjb2Rl
cklubmVyLmRlY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBvcmlnaW4pKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3Mgc3RhdGlzdGljczsKLSAgICAgICAgaWYgKCFzdGF0aXN0aWNzLmRlY29kZShkZWNvZGVySW5u
ZXIsIG9yaWdpbikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgbV9yZXNv
dXJjZVN0YXRpc3RpY3NNYXAuc2V0KG9yaWdpbiwgc3RhdGlzdGljcyk7Ci0gICAgICAgICAgICAK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSk7Ci0gICAgICAgIAotICAgIEFTU0VSVCh2aXNp
dGVkT3JpZ2lucyA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvYWRlZE9yaWdpbnMuc2l6ZSgpKSk7
Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IFJlc291cmNlTG9hZE9ic2VydmVy
OjpjcmVhdGVEZWNvZGVyRnJvbURpc2soY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QKLXsKLSAg
ICBTdHJpbmcgcmVzb3VyY2VMb2cgPSBwZXJzaXN0ZW50U3RvcmFnZVBhdGgobGFiZWwpOwotICAg
IGlmIChyZXNvdXJjZUxvZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IAotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJhd0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZVdpdGhDb250ZW50c09mRmlsZShyZXNvdXJjZUxvZyk7Ci0gICAgaWYgKCFyYXdEYXRhKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICByZXR1cm4gS2V5ZWREZWNvZGVyOjpkZWNv
ZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJhd0RhdGEtPmRhdGEoKSksIHJh
d0RhdGEtPnNpemUoKSk7Ci19Ci0gICAgCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjp3cml0
ZUVuY29kZXJUb0Rpc2soS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVs
KSBjb25zdAotewotI2lmIExPR19TVEFUSVNUSUNTX1RPX0ZJTEUKLSAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiByYXdEYXRhID0gZW5jb2Rlci5maW5pc2hFbmNvZGluZygpOwotICAgIGlmICghcmF3
RGF0YSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFN0cmluZyByZXNvdXJjZUxvZyA9IHBl
cnNpc3RlbnRTdG9yYWdlUGF0aChsYWJlbCk7Ci0gICAgaWYgKHJlc291cmNlTG9nLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX3N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkK
LSAgICAgICAgbWFrZUFsbERpcmVjdG9yaWVzKG1fc3RvcmFnZVBhdGgpOwotCi0gICAgYXV0byBo
YW5kbGUgPSBvcGVuRmlsZShyZXNvdXJjZUxvZywgT3BlbkZvcldyaXRlKTsKLSAgICBpZiAoIWhh
bmRsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGludDY0X3Qgd3JpdHRlbkJ5dGVzID0g
d3JpdGVUb0ZpbGUoaGFuZGxlLCByYXdEYXRhLT5kYXRhKCksIHJhd0RhdGEtPnNpemUoKSk7Ci0g
ICAgY2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgCi0gICAgaWYgKHdyaXR0ZW5CeXRlcyAhPSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihyYXdEYXRhLT5zaXplKCkpKQotICAgICAgICBXVEZMb2dBbHdheXMo
IlJlc291cmNlTG9hZFN0YXRpc3RpY3M6IFdlIG9ubHkgd3JvdGUgJWxsZCBvdXQgb2YgJWQgYnl0
ZXMgdG8gZGlzayIsIHdyaXR0ZW5CeXRlcywgcmF3RGF0YS0+c2l6ZSgpKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGVuY29kZXIpOwotICAgIFVOVVNFRF9QQVJBTShsYWJlbCk7Ci0jZW5kaWYK
LX0KLQogU3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpzdGF0aXN0aWNzRm9yT3JpZ2luKGNv
bnN0IFN0cmluZyYgb3JpZ2luKQogewotICAgIGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAu
Y29udGFpbnMob3JpZ2luKSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgCi0g
ICAgYXV0byYgc3RhdGlzdGljcyA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQob3JpZ2lu
KS0+dmFsdWU7Ci0gICAgcmV0dXJuICJTdGF0aXN0aWNzIGZvciAiICsgb3JpZ2luICsgIjpcbiIg
KyBzdGF0aXN0aWNzLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fc3RhdGlzdGljcy0+c3RhdGlz
dGljc0Zvck9yaWdpbihvcmlnaW4pOwogfQotICAgIAorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkocmV2aXNpb24gMTk3NDg1KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDE0ICsyNiwxMyBAQAogI2lmbmRlZiBSZXNvdXJjZUxvYWRPYnNlcnZlcl9oCiAj
ZGVmaW5lIFJlc291cmNlTG9hZE9ic2VydmVyX2gKIAorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1l
bnQ7Ci1jbGFzcyBLZXllZERlY29kZXI7Ci1jbGFzcyBLZXllZEVuY29kZXI7CiBjbGFzcyBVUkw7
CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNDcsMjkgKzQ2LDE4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhib29sIGlzUmVkaXJlY3QsIGNv
bnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWlu
RnJhbWVVUkwpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IERvY3VtZW50Jik7
CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlRGF0YVRvRGlzaygpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXRpc3RpY3NTdG9yZShSZWY8UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0
aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CisKIHByaXZh
dGU6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJp
bWFyeURvbWFpbihjb25zdCBTdHJpbmcmKTsKLSAgICAKICAgICBzdGF0aWMgU3RyaW5nIHByaW1h
cnlEb21haW4oY29uc3QgVVJMJik7CiAKLSAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29u
c3QgU3RyaW5nJikgY29uc3Q7Ci0KLSAgICBTdHJpbmcgcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGNv
bnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0OwotCi0gICAgdm9pZCB3cml0ZURhdGFUb0Rpc2soY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsK
LQotICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZWF0ZURlY29kZXJGcm9tRGlz
ayhjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKLSAgICB2b2lkIHdyaXRlRW5jb2RlclRvRGlz
ayhLZXllZEVuY29kZXImLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKLQorICAgIFJlZlB0
cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fc3RhdGlzdGljczsKICAgICBIYXNoTWFw
PFN0cmluZywgc2l6ZV90PiBtX29yaWdpbnNWaXNpdGVkTWFwOwotICAgIEhhc2hNYXA8U3RyaW5n
LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKLSAgICBT
dHJpbmcgbV9zdG9yYWdlUGF0aDsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Y3BwCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDkgKzc2LDkgQEAgc3RhdGlj
IHZvaWQgZW5jb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWRFbgogICAgIH0pOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFN0cmluZyYgb3JpZ2luKSBjb25zdAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNv
ZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIuZW5jb2RlU3Ry
aW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIG9yaWdpbik7CisgICAgZW5jb2Rlci5lbmNv
ZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgaGlnaExldmVsRG9tYWluKTsKICAg
ICAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgZW5jb2Rlci5lbmNvZGVCb29sKCJoYWRV
c2VySW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pOwpAQCAtMTMwLDE0ICsxMzAsMTEg
QEAgc3RhdGljIHZvaWQgZGVjb2RlSGFzaENvdW50ZWRTZXQoS2V5ZWREZQogICAgIH0pOwogfQog
Ci1ib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZShLZXllZERlY29kZXImIGRlY29k
ZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpk
ZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyKQogewotICAgIFN0cmluZyBzdG9yZWRPcmlnaW47
Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4i
LCBzdG9yZWRPcmlnaW4pKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVu
dFJlc291cmNlT3JpZ2luIiwgaGlnaExldmVsRG9tYWluKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIEFTU0VSVF9VTlVTRUQob3JpZ2luLCBzdG9yZWRPcmlnaW4gPT0gb3JpZ2lu
KTsKLSAgICAKICAgICAvLyBVc2VyIGludGVyYWN0aW9uCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUJvb2woImhhZFVzZXJJbnRlcmFjdGlvbiIsIGhhZFVzZXJJbnRlcmFjdGlvbikpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTMwNyw0ICszMDQsNDcgQEAgU3RyaW5nIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OnRvU3RyaW5nKAogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIHZvaWQgbWVyZ2VIYXNoQ291bnRlZFNldChI
YXNoQ291bnRlZFNldDxUPiYgdG8sIGNvbnN0IEhhc2hDb3VudGVkU2V0PFQ+JiBmcm9tKQorewor
ICAgIGZvciAoYXV0byYgZW50cnkgOiBmcm9tKQorICAgICAgICB0by5hZGQoZW50cnkua2V5LCBl
bnRyeS52YWx1ZSk7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6bWVyZ2UoY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyLmhp
Z2hMZXZlbERvbWFpbiA9PSBoaWdoTGV2ZWxEb21haW4pOworCisgICAgaGFkVXNlckludGVyYWN0
aW9uIHw9IG90aGVyLmhhZFVzZXJJbnRlcmFjdGlvbjsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUg
c3RhdHMKKyAgICB0b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8gKz0gb3RoZXIudG9wRnJhbWVI
YXNCZWVuUmVkaXJlY3RlZFRvOworICAgIHRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tICs9
IG90aGVyLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIHRvcEZyYW1lSW5pdGlh
bExvYWRDb3VudCArPSBvdGhlci50b3BGcmFtZUluaXRpYWxMb2FkQ291bnQ7CisgICAgdG9wRnJh
bWVIYXNCZWVuTmF2aWdhdGVkVG8gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87
CisgICAgdG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbSArPSBvdGhlci50b3BGcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRGcm9tOworICAgIHRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlIHw9
IG90aGVyLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlOworICAgIAorICAgIC8vIFN1
YmZyYW1lIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zLCBvdGhlci5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKTsKKyAgICBzdWJm
cmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3Rl
ZFRvOworICAgIHN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tICs9IG90aGVyLnN1YmZyYW1l
SGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3ViZnJhbWVV
bmlxdWVSZWRpcmVjdHNUbywgb3RoZXIuc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAg
c3ViZnJhbWVTdWJSZXNvdXJjZUNvdW50ICs9IG90aGVyLnN1YmZyYW1lU3ViUmVzb3VyY2VDb3Vu
dDsKKyAgICBzdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbyArPSBvdGhlci5zdWJmcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRUbzsKKyAgICBzdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tICs9IG90aGVy
LnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgc3ViZnJhbWVIYXNCZWVuTG9hZGVk
QmVmb3JlIHw9IG90aGVyLnN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZTsKKyAgICAKKyAgICAv
LyBTdWJyZXNvdXJjZSBzdGF0cworICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3VyY2VV
bmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
cyk7CisgICAgc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCArPSBvdGhlci5zdWJy
ZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50OworICAgIHN1YnJlc291cmNlSGFzQmVlblJl
ZGlyZWN0ZWRGcm9tICs9IG90aGVyLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tOwor
ICAgIHN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbyArPSBvdGhlci5zdWJyZXNvdXJjZUhh
c0JlZW5SZWRpcmVjdGVkVG87CisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChzdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvLCBvdGhlci5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKTsKKyAg
ICAKKyAgICAvLyBQcmV2YWxlbnQgcmVzb3VyY2Ugc3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVk
U2V0KHJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLCBvdGhlci5yZWRp
cmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucyk7CisgICAgaXNQcmV2YWxlbnRS
ZXNvdXJjZSB8PSBvdGhlci5pc1ByZXZhbGVudFJlc291cmNlOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgJKHJldmlzaW9u
IDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDE2ICszNSwyOSBAQCBjbGFzcyBLZXllZERlY29kZXI7
CiBjbGFzcyBLZXllZEVuY29kZXI7CiAKIHN0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHsK
KyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikK
KyAgICAgICAgOiBoaWdoTGV2ZWxEb21haW4ocHJpbWFyeURvbWFpbikKKyAgICB7CisgICAgfQor
CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygpCisgICAgeworICAgIH0KKwogICAgIGJvb2wg
Y2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkodW5zaWduZWQgb3JpZ2lu
c1Zpc2l0ZWRTb0Zhcik7CiAKICAgICBib29sIGhhc1ByZXZhbGVudFJlZGlyZWN0aW9uKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNQcmV2YWxlbnRSZXNvdXJjZUNoYXJhY3RlcmlzdGljcygpIGNvbnN0
OwogCi0gICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4p
IGNvbnN0OwotICAgIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKTsKKyAgICB2b2lkIGVuY29kZShLZXllZEVuY29kZXImKSBjb25zdDsKKyAgICBib29sIGRl
Y29kZShLZXllZERlY29kZXImKTsKIAogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCisg
ICAgdm9pZCBtZXJnZShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CisKKyAgICBTdHJp
bmcgaGlnaExldmVsRG9tYWluOworCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAgIGJvb2wg
aGFkVXNlckludGVyYWN0aW9uIHsgZmFsc2UgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgiCisKKyNpbmNsdWRlICJLZXllZENvZGluZy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CisKKyNkZWZpbmUgTE9HX1NUQVRJU1RJQ1NfVE9fRklMRSAwCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KSk7Cit9CisKK1JlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSk7Cit9CisgICAgCitSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCisgICAgOiBtX3N0b3JhZ2VQYXRoKHJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCit7Cit9CisgICAgCitib29sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHByaW1hcnlE
b21haW4pIGNvbnN0Cit7CisgICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLmZpbmQocHJpbWFyeURvbWFpbik7CisgICAgaWYgKG1hcEVudHJ5ID09IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
bWFwRW50cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2U7Cit9CisgICAgCitSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4oY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKQoreworICAg
IGlmICghbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuY29udGFpbnMocHJpbWFyeURvbWFpbikpIHsK
KyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBuZXdTdGF0aXN0aWNzKHByaW1hcnlEb21h
aW4pOworICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQocHJpbWFyeURvbWFpbiwg
bmV3U3RhdGlzdGljcyk7CisgICAgfQorICAgIAorICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlz
dGljc01hcC5maW5kKHByaW1hcnlEb21haW4pLT52YWx1ZTsKK30KKwordHlwZWRlZiBIYXNoTWFw
PFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OktleVZhbHVlUGFpclR5cGUgU3RhdGlz
dGljc1ZhbHVlOworCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVEYXRh
VG9EaXNrKCkKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsK
KyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoIm9yaWdpbnNWaXNpdGVkIiwgbV9yZXNvdXJjZVN0
YXRpc3RpY3NNYXAuc2l6ZSgpKTsKKyAgICAKKyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJi
cm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5iZWdpbigpLCBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwgW3RoaXNdKEtleWVkRW5jb2RlciYgZW5jb2Rlcklu
bmVyLCBjb25zdCBTdGF0aXN0aWNzVmFsdWUmIG9yaWdpbikgeworICAgICAgICBvcmlnaW4udmFs
dWUuZW5jb2RlKGVuY29kZXJJbm5lcik7CisgICAgfSk7CisgICAgCisgICAgd3JpdGVFbmNvZGVy
VG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVsbF9icm93c2luZ19zZXNzaW9uIik7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZURhdGFUb0Rpc2soY29uc3QgU3Ry
aW5nJiBvcmlnaW4sIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHJlc291cmNlU3RhdGlz
dGljcykgY29uc3QKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIo
KTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoIm9yaWdpbnNWaXNpdGVkIiwgMSk7CisgICAg
CisgICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0KG9yaWdpbiwgcmVzb3VyY2VTdGF0aXN0aWNzLCBb
dGhpc10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiByZXNvdXJjZVN0YXRpc3RpY3MpIHsKKyAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWNzLmVuY29k
ZShlbmNvZGVyKTsKKyAgICB9KTsKKyAgICAKKyAgICBTdHJpbmcgbGFiZWwgPSBvcmlnaW47Cisg
ICAgbGFiZWwucmVwbGFjZSgnLycsICdfJyk7CisgICAgbGFiZWwucmVwbGFjZSgnOicsICcrJyk7
CisgICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCBsYWJlbCk7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbV9zdG9yYWdlUGF0aCA9IHBhdGg7Cisg
ICAgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Cit9CisKK1N0cmluZyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnBlcnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVs
KSBjb25zdAoreworICAgIGlmIChtX3N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICAvLyBUT0RPIERlY2lkZSB3aGF0IHRvIGNhbGwgdGhp
cyBmaWxlCisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VQYXRo
LCBsYWJlbCArICJfcmVzb3VyY2VMb2cucGxpc3QiKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpCit7CisgICAgaWYgKG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBkZWNvZGVyID0gY3JlYXRlRGVjb2RlckZyb21EaXNrKCJmdWxsX2Jyb3dzaW5nX3Nlc3Npb24i
KTsKKyAgICBpZiAoIWRlY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHVuc2lnbmVkIHZp
c2l0ZWRPcmlnaW5zID0gMDsKKyAgICBkZWNvZGVyLT5kZWNvZGVVSW50MzIoIm9yaWdpbnNWaXNp
dGVkIiwgdmlzaXRlZE9yaWdpbnMpOworICAgICAgICAKKyAgICBWZWN0b3I8U3RyaW5nPiBsb2Fk
ZWRPcmlnaW5zOworICAgIGRlY29kZXItPmRlY29kZU9iamVjdHMoImJyb3dzaW5nU3RhdGlzdGlj
cyIsIGxvYWRlZE9yaWdpbnMsIFt0aGlzXShLZXllZERlY29kZXImIGRlY29kZXJJbm5lciwgU3Ry
aW5nJiBvcmlnaW4pIHsKKyAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2RlU3RyaW5nKCJQ
cmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIG9yaWdpbikpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdGF0aXN0aWNzKG9yaWdpbik7
CisgICAgICAgIGlmICghc3RhdGlzdGljcy5kZWNvZGUoZGVjb2RlcklubmVyKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zZXQo
b3JpZ2luLCBzdGF0aXN0aWNzKTsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9KTsKKyAgICAgICAgCisgICAgQVNTRVJUKHZpc2l0ZWRPcmlnaW5zID09IHN0YXRpY19j
YXN0PHNpemVfdD4obG9hZGVkT3JpZ2lucy5zaXplKCkpKTsKK30KKworc3RkOjp1bmlxdWVfcHRy
PEtleWVkRGVjb2Rlcj4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGVEZWNvZGVy
RnJvbURpc2soY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QKK3sKKyAgICBTdHJpbmcgcmVzb3Vy
Y2VMb2cgPSBwZXJzaXN0ZW50U3RvcmFnZVBhdGgobGFiZWwpOworICAgIGlmIChyZXNvdXJjZUxv
Zy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIFJlZlB0cjxT
aGFyZWRCdWZmZXI+IHJhd0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZVdpdGhDb250ZW50c09m
RmlsZShyZXNvdXJjZUxvZyk7CisgICAgaWYgKCFyYXdEYXRhKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAKKyAgICByZXR1cm4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJhd0RhdGEtPmRhdGEoKSksIHJhd0RhdGEtPnNpemUoKSk7
Cit9CisgICAgCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVFbmNvZGVy
VG9EaXNrKEtleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QK
K3sKKyNpZiBMT0dfU1RBVElTVElDU19UT19GSUxFCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
cmF3RGF0YSA9IGVuY29kZXIuZmluaXNoRW5jb2RpbmcoKTsKKyAgICBpZiAoIXJhd0RhdGEpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBTdHJpbmcgcmVzb3VyY2VMb2cgPSBwZXJzaXN0ZW50
U3RvcmFnZVBhdGgobGFiZWwpOworICAgIGlmIChyZXNvdXJjZUxvZy5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghbV9zdG9yYWdlUGF0aC5pc0VtcHR5KCkpCisgICAgICAg
IG1ha2VBbGxEaXJlY3RvcmllcyhtX3N0b3JhZ2VQYXRoKTsKKworICAgIGF1dG8gaGFuZGxlID0g
b3BlbkZpbGUocmVzb3VyY2VMb2csIE9wZW5Gb3JXcml0ZSk7CisgICAgaWYgKCFoYW5kbGUpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IHdyaXRlVG9G
aWxlKGhhbmRsZSwgcmF3RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5zaXplKCkpOworICAgIGNsb3Nl
RmlsZShoYW5kbGUpOworICAgIAorICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nhc3Q8
aW50NjRfdD4ocmF3RGF0YS0+c2l6ZSgpKSkKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOiBXZSBvbmx5IHdyb3RlICVsbGQgb3V0IG9mICVkIGJ5dGVzIHRvIGRp
c2siLCB3cml0dGVuQnl0ZXMsIHJhd0RhdGEtPnNpemUoKSk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShlbmNvZGVyKTsKKyAgICBVTlVTRURfUEFSQU0obGFiZWwpOworI2VuZGlmCit9CisKK1N0
cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN0YXRpc3RpY3NGb3JPcmlnaW4oY29u
c3QgU3RyaW5nJiBvcmlnaW4pCit7CisgICAgaWYgKCFtX3Jlc291cmNlU3RhdGlzdGljc01hcC5j
b250YWlucyhvcmlnaW4pKQorICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICAKKyAg
ICBhdXRvJiBzdGF0aXN0aWNzID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChvcmlnaW4p
LT52YWx1ZTsKKyAgICByZXR1cm4gIlN0YXRpc3RpY3MgZm9yICIgKyBvcmlnaW4gKyAiOlxuIiAr
IHN0YXRpc3RpY3MudG9TdHJpbmcoKTsKK30KKworVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGFrZVN0YXRpc3RpY3MoKQoreworICAg
IFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOworICAgIHN0YXRpc3Rp
Y3MucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkp
OworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAudmFs
dWVzKCkpCisgICAgICAgIHN0YXRpc3RpY3MudW5jaGVja2VkQXBwZW5kKFdURk1vdmUoc3RhdGlz
dGljKSk7CisKKyAgICBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jbGVhcigpOworCisgICAgcmV0
dXJuIHN0YXRpc3RpY3M7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpt
ZXJnZVN0YXRpc3RpY3MoY29uc3QgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiBzdGF0
aXN0aWNzKQoreworICAgIGZvciAoYXV0byYgc3RhdGlzdGljIDogc3RhdGlzdGljcykgeworICAg
ICAgICBhdXRvIGl0ZXIgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHN0YXRpc3RpYy5o
aWdoTGV2ZWxEb21haW4pOworICAgICAgICBpZiAoaXRlciA9PSBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC5lbmQoKSkgeworICAgICAgICAgICAgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2V0KHN0
YXRpc3RpYy5oaWdoTGV2ZWxEb21haW4sIHN0YXRpc3RpYyk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaXRlci0+dmFsdWUubWVyZ2Uoc3RhdGlz
dGljKTsKKyAgICB9Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRO
b3RpZmljYXRpb25DYWxsYmFjayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gaGFuZGxlcikKK3sKKyAg
ICBtX2RhdGFBZGRlZEhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpOworfQorCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCkKK3sK
KyAgICBtX2RhdGFBZGRlZEhhbmRsZXIoKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlX2gKKyNkZWZpbmUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlX2gKKworI2luY2x1ZGUg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBLZXllZERlY29kZXI7CitjbGFzcyBLZXllZEVuY29kZXI7CitjbGFzcyBVUkw7CisKK3N0cnVj
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOworCitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IHsK
K3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IGNyZWF0ZSgpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZURh
dGFUb0Rpc2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWREYXRhRnJvbURpc2tJZk5l
ZWRlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJl
Y3RvcnkoY29uc3QgU3RyaW5nJik7CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RhdGlz
dGljc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsgfQorICAgIHNpemVf
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpOyB9
CisKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmlt
YXJ5RG9tYWluKGNvbnN0IFN0cmluZyYpOworCisgICAgYm9vbCBpc1ByZXZhbGVudFJlc291cmNl
KGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgbWVy
Z2VTdGF0aXN0aWNzKGNvbnN0IFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYpOworICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlz
dGljcygpOworCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXROb3RpZmljYXRpb25DYWxsYmFj
ayhzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gaGFuZGxlcik7CisKKyAgICB2b2lkIGZpcmVEYXRhTW9k
aWZpY2F0aW9uSGFuZGxlcigpOworCitwcml2YXRlOgorICAgIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSgpCisgICAgeworICAgIH0KKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTsKKyAgICBTdHJp
bmcgcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0OworCisg
ICAgdm9pZCB3cml0ZURhdGFUb0Rpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERl
Y29kZXI+IGNyZWF0ZURlY29kZXJGcm9tRGlzayhjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsK
KyAgICB2b2lkIHdyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImLCBjb25zdCBTdHJpbmcm
IGxhYmVsKSBjb25zdDsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKKyAgICBTdHJpbmcgbV9zdG9yYWdlUGF0aDsK
KyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9kYXRhQWRkZWRIYW5kbGVyOworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZV9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMTAgQEAKKzIwMTYt
MDMtMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dL
Ml0gR2F0aGVyIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNDcwMjg5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBSZXZpc2UgdGhlIFdlYlByb2Nlc3MgdG8gbm90aWZ5IHRoZSBVSVByb2Nlc3MgYWJvdXQg
cmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzLiBUaGVzZQorICAgICAgICB1cGRhdGVzIGFyZSBub3Qg
dGltZS1jcml0aWNhbCwgYW5kIGRvIG5vdCBuZWVkIHRvIGJlIGRvbmUgaW4gY29uY2VydCB3aXRo
IHRoZSBhY3R1YWwKKyAgICAgICAgbG9hZC4gQXMgcmVzb3VyY2UgbG9hZHMgYXJlIG1hZGUsIGVh
Y2ggV2ViUHJvY2VzcyBub3RpZmllcyB0aGUgVUlQcm9jZXNzIG9mIHRoZSBuZXcKKyAgICAgICAg
bG9hZCBjb3VudHMsIHRoZW4gY2xlYXJzIGl0cyBsb2NhbCBzdGF0ZS4gVGhlc2Ugc3RhdGlzdGlj
cyBhcmUgdGhlbiBhZ2dyZWdhdGVkIGluCisgICAgICAgIHRoZSBVSVByb2Nlc3MuCisKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUg
ZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogRGl0dG8uCisg
ICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6IFVwZGF0ZSB0byBzdXBwb3J0
IEhhc2hDb3VudGVkU2V0cy4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTogQWRkIG5ldyBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogUGxh
dGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOiBEaXR0
by4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOiBBZGQgbmV3IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MgdHlwZS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEV4Y2VwdGlvbkRldGFpbHM+Ojpk
ZWNvZGUpOiBTdXBwb3J0IG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHR5cGUuCisgICAgICAg
IChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZSk6IEFk
ZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+
OjpkZWNvZGUpOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Lmg6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOiBI
YW5kbGUgJ3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkJyBmbGFnLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOiBEaXR0by4KKyAgICAg
ICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQ
STo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOiBB
ZGQgc3RvcmFnZSBsb2NhdGlvbiBmb3IgdGhlCisgICAgICAgIHJlc291cmNlIGxvYWQgc3RhdGlz
dGljcy4KKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KTogSGFu
ZGxlIHRoZSBuZXcgc3RvcmFnZSBsb2NhdGlvbiBhbmQgdGhlIGZlYXR1cmUgZmxhZy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KTogQWRkZWQgc3R1Yi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3Rv
cmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBBZGRlZCBzdXBwb3J0IGZv
ciB0aGUgbmV3IHJlc291cmNlCisgICAgICAgIGxvYWQgc3RhdGlzdGljcyBzdG9yYWdlIGxvY2F0
aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRdKTog
QWRkIG1ldGhvZCB0byByZWxheSBzZXR0aW5nIHRvIHVuZGVybHlpbmcKKyAgICAgICAgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOl0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGluaXRdKTogQWRkIGZsYWcgZm9yIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdXBwb3J0Lgor
ICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKTogSGFuZGxl
IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdXBwb3J0IGZsYWcuCisgICAgICAgICgtW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXSk6IEFkZGVk
LgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3Rv
cmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXSk6IEFkZGVkLgorICAgICAgICAoLVtX
S1dlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRdKTogQWRkZWQuCisgICAgICAgICgtW19X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKTogQ2hlY2sgdXNlciBzZXR0aW5nIGZvciBzdGF0ZQorICAgICAgICBvZiBy
ZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgc3VwcG9ydC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
TmV3V2ViUHJvY2Vzcyk6IEhhbmRsZSBuZXcgZmxhZyBmb3IgZW5hYmxpbmcgcmVzb3VyY2UKKyAg
ICAgICAgbG9hZCBzdGF0aXN0aWNzLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzc1Bvb2w6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y29y
ZVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBSZWdpc3RlciBhIHRlcm1pbmF0aW9uIGhh
bmRsZXIKKyAgICAgICAgdG8gY2xvc2UgZG93biB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNz
IHN0b3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybURlc3Ry
b3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6
IEluaXRpYWxpemUgdGhlIG5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUKKyAgICAg
ICAgbWVtYmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNz
V2lsbE9wZW5Db25uZWN0aW9uKTogUmVnaXN0ZXIgdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZQorICAgICAgICBvYmplY3QgYXMgYSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29u
bmVjdGlvbik6IFVucmVnaXN0ZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6
IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRk
IG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmlsZXMgdG8gYnVpbGQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBUYWtlIGludG8gYWNjb3VudCB0aGUgbmV3IHBhcmFt
ZXRlcgorICAgICAgICBzcGVjaWZ5aW5nIHdoZXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNz
IGFyZSBiZWluZyBjYXB0dXJlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJv
Y2Vzcyk6IEluaXRpYWxpemVkIHN0YXRpc3RpY3MgY2hhbmdlZCBub3RpZmljYXRpb24gdGltZXIu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJl
ZCk6IEFkZGVkLiBTZW5kIGJ1bmRsZXMgb2Ygc2l0ZSBsb2FkCisgICAgICAgIHN0YXRpc3RpY3Mg
dG8gdGhlIFVJUHJvY2VzcyBvbiBhIHNldCBpbnRlcnZhbC4gQ2xlYXIgb3V0IGxvY2FsIGNhY2hl
IGFmdGVyIGVhY2ggc2VuZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46
IEFkZCBuZXcgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgbWVzc2FnZS4KKwogMjAx
Ni0wMy0wMSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUg
dGhlIG1lZGlhIGVsZW1lbnQncyBwcmVzZW50YXRpb24gbW9kZSBwcm9wZXJseSBhZnRlciBnb2lu
ZyBpbiBhbmQgb3V0IG9mIGZ1bGwgc2NyZWVuIHZpYSB0aGUgRnVsbCBTY3JlZW4gQVBJCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY2Nyw2ICs2NjcsNyBAQCBzZXQoV2Vi
S2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHku
bWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KICAg
ICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9X
ZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9jZXNzL0RhdGFiYXNlcy9E
YXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpJbmRleDogU291cmNlL1dlYktpdDIvRGVy
aXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291
cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcgQEAgTUVTU0FHRV9SRUNF
SVZFUlMgPSBcCiAgICAgV2ViUHJvY2Vzc1Bvb2wgXAogICAgIFdlYlByb2Nlc3NQcm94eSBcCiAg
ICAgV2ViUmVzb3VyY2VMb2FkZXIgXAorICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSBcCiAgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKICAgICBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSBcCiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlciBcCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAgbGlz
dChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAK
ICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9M
ZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAorICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RL
LmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCShy
ZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkod29y
a2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMK
ICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRl
Q29kaW5nTm9uZS5jcHAKKyAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8u
Y3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAxOTc0ODUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM4
LDYgKzEzOCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFNoYXJlZC9tYWMv
V2ViTWVtb3J5U2FtcGxlci5tYWMubW0KIAogICAgIFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwCisgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKIAogICAgIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAko
cmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50
Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBcmd1bWVu
dEVuY29kZXIuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4K
QEAgLTMwMCw2ICszMDEsNDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBI
YXNoQQogICAgIH0KIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlwZW5hbWUgSGFz
aEFyZywgdHlwZW5hbWUgS2V5VHJhaXRzQXJnPiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxIYXNoQ291
bnRlZFNldDxLZXlBcmcsIEhhc2hBcmcsIEtleVRyYWl0c0FyZz4+IHsKKyAgICB0eXBlZGVmIEhh
c2hDb3VudGVkU2V0PEtleUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPiBIYXNoQ291bnRlZFNl
dFR5cGU7CisgICAgCisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgY29uc3QgSGFzaENvdW50ZWRTZXRUeXBlJiBoYXNoQ291bnRlZFNldCkKKyAgICB7Cisg
ICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGhhc2hDb3VudGVkU2V0LnNp
emUoKSk7CisgICAgICAgIAorICAgICAgICBmb3IgKGF1dG8gZW50cnkgOiBoYXNoQ291bnRlZFNl
dCkgeworICAgICAgICAgICAgZW5jb2RlciA8PCBlbnRyeS5rZXk7CisgICAgICAgICAgICBlbmNv
ZGVyIDw8IGVudHJ5LnZhbHVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEhhc2hDb3VudGVkU2V0VHlwZSYg
aGFzaENvdW50ZWRTZXQpCisgICAgeworICAgICAgICB1aW50NjRfdCBoYXNoQ291bnRlZFNldFNp
emU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzaENvdW50ZWRTZXRTaXplKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIEhhc2hDb3VudGVkU2V0
VHlwZSB0ZW1wSGFzaENvdW50ZWRTZXQ7CisgICAgICAgIGZvciAodWludDY0X3QgaSA9IDA7IGkg
PCBoYXNoQ291bnRlZFNldFNpemU7ICsraSkgeworICAgICAgICAgICAgS2V5QXJnIGtleTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIGNvdW50OworICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb3VudCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRlbXBIYXNoQ291bnRl
ZFNldC5hZGQoa2V5LCBjb3VudCkuaXNOZXdFbnRyeSkgeworICAgICAgICAgICAgICAgIC8vIFRo
ZSBoYXNoIGNvdW50ZWQgc2V0IGFscmVhZHkgaGFzIHRoZSBzcGVjaWZpZWQga2V5LCBiYWlsLgor
ICAgICAgICAgICAgICAgIGRlY29kZXIubWFya0ludmFsaWQoKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGhhc2hDb3VudGVkU2V0LnN3YXAodGVtcEhhc2hDb3VudGVkU2V0KTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxzdGQ6
OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50PiB7CiAgICAgc3RhdGljIHZvaWQgZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQmKTsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCYpOwpJbmRleDogU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHJldmlzaW9uIDE5NzQ4
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm90ZWN0aW9u
U3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdDb25z
dHJhaW50cy5oPgpAQCAtMjA0NCw0ICsyMDQ1LDEyNSBAQCBib29sIEFyZ3VtZW50Q29kZXI8RXhj
ZXB0aW9uRGV0YWlscz46OmRlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRD
b2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5j
b2RlciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgc3RhdGlzdGljcykK
K3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MuaGlnaExldmVsRG9tYWluOworICAgIAorICAg
IC8vIFVzZXIgaW50ZXJhY3Rpb24KKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MuaGFkVXNlcklu
dGVyYWN0aW9uOworICAgIAorICAgIC8vIFRvcCBmcmFtZSBzdGF0cworICAgIGVuY29kZXIgPDwg
c3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUb0JlZm9yZTsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvOworICAgIGVuY29kZXIg
PDwgc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpc3RpY3MudG9wRnJhbWVJbml0aWFsTG9hZENvdW50OworICAgIGVuY29kZXIgPDwg
c3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbzsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsKKyAgICAKKyAgICAvLyBTdWJm
cmFtZSBzdGF0cworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5Mb2Fk
ZWRCZWZvcmU7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlblJlZGly
ZWN0ZWRUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuUmVkaXJl
Y3RlZEZyb207CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lU3ViUmVzb3VyY2VD
b3VudDsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2luczsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNU
bzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87
CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207
CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb207CisgICAgZW5jb2RlciA8PCBzdGF0
aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudDsKKyAgICBlbmNvZGVy
IDw8IHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRC
eVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZDsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Mu
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luczsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKKyAgICAKKyAgICAvLyBQcmV2YWxlbnQg
UmVzb3VyY2UKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MucmVkaXJlY3RlZFRvT3RoZXJQcmV2
YWxlbnRSZXNvdXJjZU9yaWdpbnM7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmlzUHJldmFs
ZW50UmVzb3VyY2U7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgc3RhdGlzdGljcykKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRpc3RpY3MuaGlnaExldmVsRG9tYWluKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3Rp
Y3MuaGFkVXNlckludGVyYWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IC8vIFRvcCBmcmFtZSBzdGF0cworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50
b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUb0JlZm9yZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVu
UmVkaXJlY3RlZFRvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRp
c3RpY3MudG9wRnJhbWVJbml0aWFsTG9hZENvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy50b3BGcmFtZUhhc0JlZW5O
YXZpZ2F0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBTdWJmcmFtZSBzdGF0cworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5Mb2FkZWRCZWZvcmUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0
aXN0aWNzLnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNC
ZWVuUmVkaXJlY3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lU3ViUmVzb3VyY2VDb3VudCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRp
c3RpY3Muc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZVVuaXF1ZVJl
ZGlyZWN0c1RvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUbykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Mu
c3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAKKyAgICAvLyBTdWJyZXNvdXJjZSBzdGF0cworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3Rh
dGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVz
b3VyY2VIYXNCZWVuUmVkaXJlY3RlZFRvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5TdWJy
ZXNvdXJjZUNvdW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5TdWJyZXNvdXJjZUNvdW50
RGl2aWRlZEJ5VG90YWxOdW1iZXJPZk9yaWdpbnNWaXNpdGVkKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gUHJldmFsZW50IFJlc291cmNl
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnJlZGlyZWN0ZWRUb090aGVyUHJl
dmFsZW50UmVzb3VyY2VPcmlnaW5zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCisKIH0gLy8g
bmFtZXNwYWNlIElQQwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSwgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTgwLDYg
KzgwLDcgQEAgc3RydWN0IFBhc3RlYm9hcmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudDsKIHN0cnVjdCBQbHVnaW5JbmZvOwogc3RydWN0IFJlY2VudFNlYXJjaDsKK3N0cnVjdCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwogc3RydWN0IFNjcm9sbGFibGVBcmVhUGFyYW1ldGVyczsK
IHN0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CiBzdHJ1Y3QgVGV4dEluZGljYXRvckRhdGE7CkBA
IC00NTUsNiArNDU2LDExIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZToKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6RXhj
ZXB0aW9uRGV0YWlscyYpOwogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpOworfTsKKwogfSAvLyBuYW1lc3BhY2UgSVBDCiAKICNpZiBV
U0UoQVBQTEVfSU5URVJOQUxfU0RLKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMTk3NDg1
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAtMjAxMiwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDYgKzk2LDcgQEAgdm9pZCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZAogICAgIGVuY29kZXIgPDwgc2hvdWxk
RW5hYmxlTWVtb3J5UHJlc3N1cmVSZWxpZWZMb2dnaW5nOwogICAgIGVuY29kZXIgPDwgc2hvdWxk
U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXI7CiAgICAgZW5jb2RlciA8PCBzaG91bGRVc2VG
b250U21vb3RoaW5nOworICAgIGVuY29kZXIgPDwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQ7CiAgICAgZW5jb2RlciA8PCBmb250V2hpdGVsaXN0OwogICAgIGVuY29kZXIgPDwgaWNvbkRh
dGFiYXNlRW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IHNob3VsZFJld3JpdGVDb25zdEFzVmFyOwpA
QCAtMjEzLDYgKzIxNCw4IEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5zaG91bGRVc2VGb250U21vb3RoaW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
cmFtZXRlcnMuZm9udFdoaXRlbGlzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuaWNvbkRhdGFiYXNlRW5hYmxlZCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmgJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEyLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTA3LDYgKzEwNyw3IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAg
ICBib29sIHNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZzsKICAgICBib29s
IHNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyIHsgZmFsc2UgfTsKICAgICBib29s
IHNob3VsZFVzZUZvbnRTbW9vdGhpbmc7CisgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCB7IGZhbHNlIH07CiAKICAgICBWZWN0b3I8U3RyaW5nPiBmb250V2hpdGVsaXN0Owog
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDE5NzQ4
NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEzOCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiwKICAgICAgICAgUGx1Z2luU2l0ZURhdGFNYW5hZ2VyLAogICAgICAgICBQcmVmZXJl
bmNlcywKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLAogICAgICAgICBSdW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWxSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgUnVuSmF2YVNj
cmlwdEFsZXJ0UmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3JpcHRDb25maXJtUmVz
dWx0TGlzdGVuZXIsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDEzLCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTksNiArNTksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2UuaD4KQEAgLTU4Miw2ICs1ODMsNyBA
QCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOCiAKICAgICBwYXJhbWV0
ZXJzLnNob3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGggPSBtX2Fsd2F5c1VzZXNDb21w
bGV4VGV4dENvZGVQYXRoOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZyA9
IG1fc2hvdWxkVXNlRm9udFNtb290aGluZzsKKyAgICBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkID0gbV9jb25maWd1cmF0aW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCgpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgbGVhdmVzIFVJIHByb2Nlc3MgYW5kIFdl
YlByb2Nlc3MgZGlzYWdyZWVpbmcgYWJvdXQgdGhlIHN0YXRlIGlmIHRoZSBjbGllbnQgaGFzbid0
IHNldCB0aGUgcGF0aC4KICAgICAvLyBpY29uRGF0YWJhc2VQYXRoIGlzIG5vbi1lbXB0eSBieSBk
ZWZhdWx0LCBidXQgbV9pY29uRGF0YWJhc2UgaXNuJ3QgZW5hYmxlZCBpbiBVSSBwcm9jZXNzIHVu
bGVzcyBzZXREYXRhYmFzZVBhdGggaXMgY2FsbGVkIGV4cGxpY2l0bHkuCkBAIC05NzEsNiArOTcz
LDIxIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldERlZmF1bHRSZXF1ZXN0VGkKICAgICBzZW5k
VG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldERlZmF1bHRSZXF1ZXN0VGlt
ZW91dEludGVydmFsKHRpbWVvdXRJbnRlcnZhbCkpOwogfQogCitib29sIFdlYlByb2Nlc3NQb29s
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpCit7CisgICAgQVNTRVJUKG1fd2Vic2l0
ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSgpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpID09IG1fY29uZmlndXJhdGlvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSk7CisgICAgcmV0dXJuIG1fY29uZmlndXJh
dGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQor
eworICAgIG1fY29uZmlndXJhdGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
ZW5hYmxlZCk7CisgICAgaWYgKG1fd2Vic2l0ZURhdGFTdG9yZSkKKyAgICAgICAgbV93ZWJzaXRl
RGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KCktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworCisgICAgc2Vu
ZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChlbmFibGVkKSk7Cit9CisKIERvd25sb2FkUHJveHkqIFdlYlByb2Nlc3NQ
b29sOjpjcmVhdGVEb3dubG9hZFByb3h5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
IHsKICAgICByZXR1cm4gZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5jcmVhdGVEb3dubG9hZFByb3h5
KHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDYgKzg0
LDcgQEAgY2xhc3MgV2ViQ29udGV4dFN1cHBsZW1lbnQ7CiBjbGFzcyBXZWJJY29uRGF0YWJhc2U7
CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQYWdlUHJveHk7CitjbGFzcyBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM7CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczsKQEAgLTIxMSw2ICsyMTIsOCBAQCBwdWJsaWM6CiAgICAgQ2FjaGVNb2Rl
bCBjYWNoZU1vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5jYWNoZU1vZGVs
KCk7IH0KIAogICAgIHZvaWQgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwoZG91Ymxl
KTsKKyAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7CisgICAgdm9pZCBz
ZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKIAogICAgIHZvaWQgc3RhcnRN
ZW1vcnlTYW1wbGVyKGNvbnN0IGRvdWJsZSBpbnRlcnZhbCk7CiAgICAgdm9pZCBzdG9wTWVtb3J5
U2FtcGxlcigpOwpAQCAtMjI4LDYgKzIzMSw3IEBAIHB1YmxpYzoKICAgICBXZWJDb250ZXh0Q2xp
ZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQogCiAgICAgV2ViSWNvbkRhdGFiYXNl
KiBpY29uRGF0YWJhc2UoKSBjb25zdCB7IHJldHVybiBtX2ljb25EYXRhYmFzZS5nZXQoKTsgfQor
ICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSogcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmdldCgpOyB9
CiAKICAgICBzdHJ1Y3QgU3RhdGlzdGljcyB7CiAgICAgICAgIHVuc2lnbmVkIHdrVmlld0NvdW50
OwpAQCAtNDczLDYgKzQ3Nyw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbWVtb3J5U2FtcGxl
ckludGVydmFsOwogCiAgICAgUmVmUHRyPFdlYkljb25EYXRhYmFzZT4gbV9pY29uRGF0YWJhc2U7
CisgICAgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOwogCiAgICAgY29uc3QgUmVmUHRyPEFQSTo6V2Vic2l0ZURhdGFTdG9yZT4g
bV93ZWJzaXRlRGF0YVN0b3JlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgiCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpKTsKK30KKworV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQorICAgIDog
bV9yZXNvdXJjZVN0YXRpc3RpY3NTdG9yZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNyZWF0ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSkKK3sKK30KKwor
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKCkKK3sKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYgb3JpZ2lucykKK3sKKyAgICBjb3JlU3RvcmUoKS5tZXJnZVN0YXRp
c3RpY3Mob3JpZ2lucyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAg
aWYgKGVuYWJsZWQgPT0gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7
CisKKyAgICByZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKK30KKworYm9vbCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKK30KKwor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURpc2tJZk5l
ZWRlZCgpCit7CisgICAgaWYgKCFtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBjb3JlU3RvcmUoKS5yZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQo
KTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlVG9EaXNr
KCkKK3sKKyAgICBpZiAoIW1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBjb3JlU3RvcmUoKS53cml0ZURhdGFUb0Rpc2soKTsKK30KKwor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFwcGxpY2F0aW9uV2lsbFRlcm1p
bmF0ZSgpCit7CisgICAgaWYgKCFtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRSgxNTQ2NDIpOiBURU1QT1JBUlkgQ09ERTogVGhp
cyBzaG91bGQgbm90IGJlIGRvbmUgaW4gb25lIGxvbmcgb3BlcmF0aW9uIHdoZW4gZXhpdGluZy4K
KyAgICB3cml0ZVRvRGlzaygpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlX2gKKyNkZWZpbmUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlX2gKKworI2luY2x1
ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlByb2Nlc3NQb29sOworCitj
bGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgOiBwdWJsaWMgSVBDOjpDb25uZWN0
aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJik7Cisg
ICAgdmlydHVhbCB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CisgICAgCisgICAg
dm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBib29sIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpOworCisgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJt
aW5hdGUoKTsKKworICAgIHZvaWQgd3JpdGVUb0Rpc2soKTsKKyAgICB2b2lkIHJlYWREYXRhRnJv
bURpc2tJZk5lZWRlZCgpOworCisgICAgdm9pZCBtZXJnZVN0YXRpc3RpY3MoY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+Jik7CisKKyAgICBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIGNvcmVTdG9yZSgpIHsgcmV0dXJuIG1fcmVzb3VyY2VT
dGF0aXN0aWNzU3RvcmUuZ2V0KCk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYpOworICAgIAorICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKyAgICAK
KyAgICBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3Jlc291cmNl
U3RhdGlzdGljc1N0b3JlOworICAgIGJvb2wgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisjIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHsKKyAgICBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gb3JpZ2lucykKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAJKHJl
dmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsNiArNjEsNyBAQCBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uCiAgICAgLCBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKQogICAgICwgbV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCkpCisgICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKIHsKIH0K
IApAQCAtODMsOSArODQsMTEgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vz
c1BvbwogICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9sb2NhbFN0
b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
dGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fd2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OworICAgIGNv
cHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHRoaXMtPm1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBjb3B5LT5t
X2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxpZGF0ZWRV
UkxTY2hlbWVzOwogICAgIGNvcHktPm1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JU
ZXN0aW5nID0gdGhpcy0+bV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3Rpbmc7
CisgICAgY29weS0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHRoaXMtPm1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiAgICAgY29weS0+bV9vdmVycmlkZUxhbmd1YWdl
cyA9IHRoaXMtPm1fb3ZlcnJpZGVMYW5ndWFnZXM7CiAgICAgCiAgICAgcmV0dXJuIGNvcHk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTc3LDYgKzc3LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSB7IG1fbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7IH0KIAorICAgIGNvbnN0
IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OyB9CisgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KKwogICAgIGNvbnN0IFZl
Y3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKCkgeyByZXR1cm4g
bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZvaWQgc2V0Q2FjaGVQYXJ0aXRp
b25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKGNhY2hlUGFy
dGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC04Niw2ICs4OSw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGZ1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0
dXJuIG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nOyB9CiAgICAgdm9p
ZCBzZXRGdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcoYm9vbCBhbGxvd2Vk
KSB7IG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nID0gYWxsb3dlZDsg
fQogCisgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkID0gZW5hYmxlZDsgfQorCiAgICAgY29uc3QgVmVjdG9yPFdURjo6U3Ry
aW5nPiYgb3ZlcnJpZGVMYW5ndWFnZXMoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlTGFuZ3Vh
Z2VzOyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZUxhbmd1YWdlcyhWZWN0b3I8V1RGOjpTdHJpbmc+
JiYgbGFuZ3VhZ2VzKSB7IG1fb3ZlcnJpZGVMYW5ndWFnZXMgPSBXVEZNb3ZlKGxhbmd1YWdlcyk7
IH0KIApAQCAtMTAzLDkgKzEwOSwxMSBAQCBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1fbG9j
YWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OworICAg
IFdURjo6U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBWZWN0
b3I8V1RGOjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CiAgICAgVmVjdG9y
PFdURjo6U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lczsKICAgICBib29sIG1f
ZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIFZlY3Rv
cjxXVEY6OlN0cmluZz4gbV9vdmVycmlkZUxhbmd1YWdlczsKIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAko
cmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIwLDYgKzEyMCwxMiBAQCBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWRECiAgICAgcmV0dXJuIFN0cmluZygpOwog
fQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCiAjZW5kaWYKIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDE5NzQ4NSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1
bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAKIHByaXZhdGU6CiAgICAgV2Vic2l0ZURhdGFTdG9y
ZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC03Nyw2ICs3NywxMSBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFdl
YlNRTERhCiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2Vu
dGF0aW9uKCJXZWJTUUwiKTsKIH0KIAorU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gd2Vic2l0ZURh
dGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MiKTsKK30KKwogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSkKIHsKICAgICBz
dGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKQEAgLTE0Myw2ICsxNDgsNyBAQCBXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gCiAgICAgY29uZmlndXJhdGlvbi53
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgp
OwogICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSA9IGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgY29uZmln
dXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKIAogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNiAr
MjY5LDE2IEBAIC0gKHZvaWQpX3NldEF1dG9tYXRpb25EZWxlZ2F0ZTooaWQgPF9XS0EKICAgICBf
cHJvY2Vzc1Bvb2wtPnNldEF1dG9tYXRpb25DbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxXZWJLaXQ6
OkF1dG9tYXRpb25DbGllbnQ+KHNlbGYsIGF1dG9tYXRpb25EZWxlZ2F0ZSkpOwogfQogCistIChC
T09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAoreworICAgIHJldHVybiBfcHJvY2Vz
c1Bvb2wtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Cit9CisKKy0gKHZvaWQpX3Nl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBfcHJv
Y2Vzc1Bvb2wtPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworfQor
CiAtICh2b2lkKV93YXJtSW5pdGlhbFByb2Nlc3MKIHsKICAgICBfcHJvY2Vzc1Bvb2wtPndhcm1J
bml0aWFsUHJvY2VzcygpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkocmV2aXNpb24gMTk3NDg1
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxv
YWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vh
aywgc2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVn
YXRlPiBfYXV0b21hdGlvbkRlbGVnYXRlIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1Nf
VEJBKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVZB
SUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCiArIChOU1VSTCAqKV93ZWJzaXRlRGF0
YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJMOwogKyAoTlNVUkwg
Kilfd2Vic2l0ZURhdGFVUkxGb3JDb250YWluZXJXaXRoVVJMOihOU1VSTCAqKWNvbnRhaW5lclVS
TCBidW5kbGVJZGVudGlmaWVySWZOb3RJbkNvbnRhaW5lcjooTlNTdHJpbmcgKilidW5kbGVJZGVu
dGlmaWVyOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMTk3NDg1KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIldLUHJv
Y2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldLVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgorI2ltcG9ydCAiV0tXZWJzaXRl
RGF0YVN0b3JlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKICNpbXBvcnQgIl9X
S1Zpc2l0ZWRMaW5rUHJvdmlkZXIuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVJbnRl
cm5hbC5oIgpAQCAtOTcsNiArOTgsNyBAQCBwcml2YXRlOgogICAgIEJPT0wgX2FsbG93c0phdmFT
Y3JpcHRNYXJrdXA7CiAgICAgQk9PTCBfY29udmVydHNQb3NpdGlvblN0eWxlT25Db3B5OwogICAg
IEJPT0wgX2FsbG93c01ldGFSZWZyZXNoOworICAgIEJPT0wgX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIExhenlJbml0aWFsaXplZDxSZXRh
aW5QdHI8V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnk+PiBfY29udGVudFByb3ZpZGVy
UmVnaXN0cnk7CkBAIC0xNTEsNiArMTUzLDcgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICBf
YWxsb3dzSmF2YVNjcmlwdE1hcmt1cCA9IFlFUzsKICAgICBfY29udmVydHNQb3NpdGlvblN0eWxl
T25Db3B5ID0gTk87CiAgICAgX2FsbG93c01ldGFSZWZyZXNoID0gWUVTOworICAgIF9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IE5POwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0y
MzIsNiArMjM1LDcgQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAgICAgY29u
ZmlndXJhdGlvbi0+X2FsbG93c0phdmFTY3JpcHRNYXJrdXAgPSBzZWxmLT5fYWxsb3dzSmF2YVNj
cmlwdE1hcmt1cDsKICAgICBjb25maWd1cmF0aW9uLT5fY29udmVydHNQb3NpdGlvblN0eWxlT25D
b3B5ID0gc2VsZi0+X2NvbnZlcnRzUG9zaXRpb25TdHlsZU9uQ29weTsKICAgICBjb25maWd1cmF0
aW9uLT5fYWxsb3dzTWV0YVJlZnJlc2ggPSBzZWxmLT5fYWxsb3dzTWV0YVJlZnJlc2g7CisgICAg
Y29uZmlndXJhdGlvbi0+X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gc2VsZi0+X3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGNv
bmZpZ3VyYXRpb24tPl9hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gc2VsZi0+X2FsbG93c0lu
bGluZU1lZGlhUGxheWJhY2s7CkBAIC00OTYsNiArNTAwLDE4IEBAIC0gKHZvaWQpX3NldEFsbG93
c01ldGFSZWZyZXNoOihCT09MKWFsbG8KICAgICBfYWxsb3dzTWV0YVJlZnJlc2ggPSBhbGxvd3NN
ZXRhUmVmcmVzaDsKIH0KIAorLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQK
K3sKKyAgICBBU1NFUlQoc2VsZi53ZWJzaXRlRGF0YVN0b3JlLl9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCA9PSBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOworICAgIHJldHVy
biBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7Cit9CisKKy0gKHZvaWQpX3NldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBzZWxmLndlYnNp
dGVEYXRhU3RvcmUuX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZW5hYmxlZDsKKyAg
ICBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOworfQorCiAjaWYgUExB
VEZPUk0oSU9TKQogLSAoQk9PTClfYWx3YXlzUnVuc0F0Rm9yZWdyb3VuZFByaW9yaXR5CiB7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTc0ODUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDksNiArNDksNyBAQAogQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzSmF2YVNjcmlwdE1hcmt1cDopIEJPT0wg
X2FsbG93c0phdmFTY3JpcHRNYXJrdXAgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19U
QkEpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q29udmVydHNQb3NpdGlvblN0
eWxlT25Db3B5OikgQk9PTCBfY29udmVydHNQb3NpdGlvblN0eWxlT25Db3B5IFdLX0FWQUlMQUJM
RShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldEFsbG93c01ldGFSZWZyZXNoOikgQk9PTCBfYWxsb3dzTWV0YVJlZnJlc2ggV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAK
ICNpZiBUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRB
bHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHk6KSBCT09MIF9hbHdheXNSdW5zQXRGb3JlZ3Jv
dW5kUHJpb3JpdHkgV0tfQVZBSUxBQkxFKE5BLCA5XzApOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0J
KHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw2ICszMCw3IEBACiAKICNp
bXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFs
LmgiCisjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQg
IldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCkBA
IC0xNjQsNiArMTY1LDE2IEBAIC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihXS19T
RVQKICAgICB9KTsKIH0KIAorLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQK
K3sKKyAgICByZXR1cm4gX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKS0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
KTsKK30KKworLSAodm9pZClfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wp
ZW5hYmxlZAoreworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCktPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKGVuYWJsZWQpOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJ
bnRlZ2VyLCBfV0tXZWJzaXQKIAogLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KFdL
X1NFVChOU1N0cmluZyAqKSAqKWRhdGFUeXBlcyB3aXRoT3B0aW9uczooX1dLV2Vic2l0ZURhdGFT
dG9yZUZldGNoT3B0aW9ucylvcHRpb25zIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS19B
UlJBWShXS1dlYnNpdGVEYXRhUmVjb3JkICopICopKWNvbXBsZXRpb25IYW5kbGVyOwogCitAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZDopIEJPT0wgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIFdLX0FWQUlMQUJMRShXS19N
QUNfVEJBLCBXS19JT1NfVEJBKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMTk3NDg1KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzYsNiArMzYsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUo
MTBfMTAsIDhfMCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU0ludGVnZXIgZGlza0NhY2hlU2l6
ZU92ZXJyaWRlIFdLX0FWQUlMQUJMRSgxMF8xMSwgOV8wKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSBOU0FycmF5ICpjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSBXS19BUlJBWShOU1N0cmluZyAqKSAqYWx3YXlzUmV2YWxpZGF0ZWRV
UkxTY2hlbWVzIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkIFdLX0FWQUlM
QUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIAogQGVuZAogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTgyLDYgKzgyLDE2IEBAIC0gKHZvaWQpc2V0RGlza0NhY2hlU2l6ZU92ZXJy
aWRlOihOU0ludGUKICAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXREaXNrQ2FjaGVT
aXplT3ZlcnJpZGUoc2l6ZSk7CiB9CiAKKy0gKEJPT0wpcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQKK3sKKyAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKK30KKworLSAodm9pZClzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIC0g
KE5TQXJyYXkgKiljYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcwogewogICAgIGF1dG8gc2NoZW1l
cyA9IF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVz
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg1
LDcgKzg1LDcgQEAgc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0TmV0d29ya0NhYwogI2Vu
ZGlmCiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFdlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1
cmVIYW5kbGVyRGVmYXVsdHNLZXkgPSBAIldlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5k
bGVyIjsKLQorc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWREZWZhdWx0c0tleSA9IEAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQi
OwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIE5TU3RyaW5nICpTY2hlbWVGb3JDdXN0b21Qcm90b2Nv
bFJlZ2lzdGVyZWROb3RpZmljYXRpb25OYW1lID0gQCJXZWJLaXRTY2hlbWVGb3JDdXN0b21Qcm90
b2NvbFJlZ2lzdGVyZWROb3RpZmljYXRpb24iOwpAQCAtMTc4LDYgKzE3OCw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVcKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVu
YWJsZUZUTEpJVCA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdEpTQ0ZUTEpJVEVuYWJsZWRE
ZWZhdWx0c0tleV07CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJl
bGllZkxvZ2dpbmcgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpAIkxvZ01lbW9yeUpldHNhbURldGFp
bHMiXTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVy
ID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRs
ZXJEZWZhdWx0c0tleV07CisgICAgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkRGVmYXVsdHNLZXldOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHBhcmFtZXRlcnMu
c2hvdWxkUmV3cml0ZUNvbnN0QXNWYXIgPSBhcHBsaWNhdGlvbklzSUJvb2tzKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMx
LDYgKzMxLDggQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorI2luY2x1ZGUgIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KQEAgLTc2LDcgKzc4LDkgQEAgV2Vic2l0ZURh
dGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZShDb25maQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KSkKICAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KSkKICAgICAsIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkpCisg
ICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0
aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpKQogICAgICwgbV9zdG9yYWdlTWFu
YWdlcihTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbi5sb2NhbFN0
b3JhZ2VEaXJlY3RvcnkpKSkKKyAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyhXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkpKQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YktpdC5XZWJzaXRlRGF0YVN0b3JlIikpCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBA
IC05NzYsNiArOTgwLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNzV2lsbE9w
ZQogewogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyKQogICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vy
LT5wcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHdlYlByb2Nlc3NQcm94eSwgY29ubmVjdGlvbik7
CisKKyAgICBjb25uZWN0aW9uLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICZt
X3F1ZXVlLmdldCgpLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCkpOwogfQogCiB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OndlYlBhZ2VXaWxsT3BlbkNvbm5lY3Rpb24oV2ViUGFnZVByb3h5
JiB3ZWJQYWdlUHJveHksIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTk5Miw2ICs5
OTgsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OndlYlBhZ2VEaWRDbG9zZUNvCiAKIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNz
UHJveHkmIHdlYlByb2Nlc3NQcm94eSwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewor
ICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisK
ICAgICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgbV9zdG9yYWdlTWFuYWdlci0+cHJv
Y2Vzc0RpZENsb3NlQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIGNvbm5lY3Rpb24pOwogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU3RvcmFnZU1hbmFnZXI7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlv
bjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IFdlYnNpdGVEYXRhUmVjb3Jk
OwpAQCAtNjMsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICAg
ICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIFN0cmluZyByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIH07CiAgICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJhdGlvbik7CkBAIC04MCw2ICs4Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNv
bnN0IFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNv
bXBsZXRpb25IYW5kbGVyKTsKIAogICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigp
IHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KKyAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpIHsgcmV0dXJuIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTExNSw3ICsxMTgsOSBA
QCBwcml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7
CiAgICAgY29uc3QgU3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKKyAgICBjb25z
dCBTdHJpbmcgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIGNvbnN0IFJl
ZlB0cjxTdG9yYWdlTWFuYWdlcj4gbV9zdG9yYWdlTWFuYWdlcjsKKyAgICBjb25zdCBSZWZQdHI8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3M7
CiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJzaXRlRGF0YVN0b3JlLmgi
CiAKICNpbXBvcnQgIlN0b3JhZ2VNYW5hZ2VyLmgiCisjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgPFdlYkNvcmUvU2VhcmNoUG9wdXBNZW51Q29jb2Eu
aD4KICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC02MSwxMSArNjIsMTQgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybUluaXRpYWxpegogICAgICAgICB0ZXJtaW5h
dGlvbk9ic2VydmVyID0gW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRP
YnNlcnZlckZvck5hbWU6bm90aWZpY2F0aW9uTmFtZSBvYmplY3Q6bmlsIHF1ZXVlOm5pbCB1c2lu
Z0Jsb2NrOl4oTlNOb3RpZmljYXRpb24gKm5vdGUpIHsKICAgICAgICAgICAgIGZvciAoYXV0byYg
ZGF0YVN0b3JlIDogZGF0YVN0b3Jlc1dpdGhTdG9yYWdlTWFuYWdlcnMoKSkKICAgICAgICAgICAg
ICAgICBkYXRhU3RvcmUtPm1fc3RvcmFnZU1hbmFnZXItPmFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0
ZSgpOworCisgICAgICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPmFwcGxpY2F0aW9u
V2lsbFRlcm1pbmF0ZSgpOwogICAgICAgICB9XTsKICAgICB9CiAKICAgICBBU1NFUlQoIWRhdGFT
dG9yZXNXaXRoU3RvcmFnZU1hbmFnZXJzKCkuY29udGFpbnModGhpcykpOwogICAgIGRhdGFTdG9y
ZXNXaXRoU3RvcmFnZU1hbmFnZXJzKCkuYXBwZW5kKHRoaXMpOworICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy0+cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7CiB9CiAKIHZvaWQgV2Vic2l0
ZURhdGFTdG9yZTo6cGxhdGZvcm1EZXN0cm95KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE5NzQ4NSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTA0MCw2ICsxMDQwLDkgQEAKIAkJNzVBOEQyRTExODdERUMxQTAwQzM5QzlF
IC8qIEFQSVNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc1QThEMkRFMTg3REU4NzQwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmggKi87IH07CiAJ
CTc1QThEMkUyMTg3REVDMUUwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1QThEMkREMTg3REU4NzQwMEMzOUM5
RSAvKiBBUElTZXNzaW9uLmNwcCAqLzsgfTsKIAkJNzYyQjc0OEQxMjBCQzc1QzAwODE5MzM5IC8q
IFdLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNl
c1JlZlByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk3QTc5MUVG
QjFDN0NGRDAxMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBNzkx
RUY4MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNz
YWdlcy5oICovOyB9OworCQk3QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwICovOyB9OwogCQk3QzEzNUFBODE3M0IwQkNBMDA1ODZBRTIgLyog
V0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1h
dGlvbi5jcHAgKi87IH07CiAJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbklu
Zm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzEzNUFBNzE3M0IwQkNBMDA1ODZBRTIgLyogV0tQbHVnaW5JbmZvcm1hdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMTM1QUFDMTcz
QjBDRkYwMDU4NkFFMiAvKiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUFBMTczQjBDRkYwMDU4NkFFMiAv
KiBQbHVnaW5JbmZvcm1hdGlvbk1hYy5tbSAqLzsgfTsKQEAgLTMwNDEsNiArMzA0NCwxMiBAQAog
CQk3NUE4RDJERTE4N0RFODc0MDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBBUElTZXNzaW9uLmg7IHBhdGggPSBVSVByb2Nlc3MvQVBJL0FQ
SVNlc3Npb24uaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk3NjJCNzQ4MTEyMEJC
QTAxMDA4MTkzMzkgLyogRm9udFNtb290aGluZ0xldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEZvbnRTbW9vdGhpbmdMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3NjJCNzQ4NDEyMEJCQTJEMDA4MTkzMzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQcmVmZXJlbmNlc1JlZlBy
aXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E3OTFFRjgxQzdDRkIxMDAw
QzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNzkxRUY5MUM3Q0ZC
MzcwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKyAgICAgICAgCisJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDMEJCOUE4MThEQ0RFODkwMDA2QzA4NiAvKiBXZWJDb250ZW50LWlPUy5lbnRpdGxlbWVu
dHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhtbDsgcGF0aCA9ICJXZWJDb250ZW50LWlPUy5lbnRpdGxlbWVudHMiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzBCQjlBOTE4RENERjVBMDAwNkMwODYgLyogTmV0d29yay1pT1Mu
ZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54bWw7IHBhdGggPSAiTmV0d29yay1pT1MuZW50aXRsZW1lbnRzIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tQbHVnaW5JbmZvcm1hdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
Nzk4LDYgKzU4MDcsOSBAQAogCQkJCTg2RTY3QTIyMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9jZXNz
VGhyb3R0bGVyLmNwcCAqLywKIAkJCQk4NkU2N0EyMTE5MEY0MTE4MDAwMDRBQjcgLyogUHJvY2Vz
c1Rocm90dGxlci5oICovLAogCQkJCTgzMDQ4QUU1MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNz
VGhyb3R0bGVyQ2xpZW50LmggKi8sCisJCQkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCisJCQkJN0E5Q0Q4QzExQzc3OTg0
OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAorCQkJCTdB
OUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
bWVzc2FnZXMuaW4gKi8sCiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAwMzM3QkFCIC8qIFJlc3BvbnNp
dmVuZXNzVGltZXIuY3BwICovLAogCQkJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNw
b25zaXZlbmVzc1RpbWVyLmggKi8sCiAJCQkJNTFBNEQ1QTgxNkNBQzRGRjAwMEU2MTVFIC8qIFN0
YXRpc3RpY3NSZXF1ZXN0LmNwcCAqLywKQEAgLTY4MTksNiArNjgzMSw4IEBACiAJCQkJMUFDMTMz
ODQxODU5MEM0NjAwRjNFQzA1IC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5TWVzc2FnZXMuaCAqLywK
IAkJCQkwRjU5NDdBNTE4N0I1MTc2MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCTBGNTk0N0E2MTg3QjUxNzYwMDQzNzg1NyAv
KiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvck1lc3NhZ2VzLmggKi8sCisJCQkJN0E3OTFFRjkx
QzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8sCisJCQkJN0E3OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggKi8sCiAJCQkJRTE4RTY5MTExNjlCNjY3
QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQlFMThF
NjkxMjE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1NZXNzYWdlcy5oICovLAogCQkJCUUx
OEU2OTEzMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCAqLywKQEAgLTc0MzAsNiArNzQ0NCw3IEBACiAJCQkJMUEwRUM3NUUxMjRCQzdCMjAwN0VG
NEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNCNUUx
MjRENUU5RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTA0M0RDMTEyNEZGODc1MDBGRkJGQjUgLyogUGx1Z2luUHJveHkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTdBNzkxRUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4RUZBNzEx
MjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNEE5RjMzMTJCODQ0RTIwMDhGRTk4NCAvKiBQbHVnaW5RdWlya3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDRDYyMjc4MTczOUQ4NjMwMDVCRDdGRiAvKiBQbHVnaW5TYW5kYm94UHJvZmls
ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC04ODQwLDYgKzg4NTUsNyBAQAogCQkJCTFBMkQ4NEE0MTI3
RjZBRDEwMDFFQjk2MiAvKiBOUFZhcmlhbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
OEFDQTE0MTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGgubW0gaW4gU291cmNlcyAq
LywKIAkJCQlCQ0NGNjczMzEyQzdGMTVDMDA4RjlDMzUgLyogT3JpZ2luQW5kRGF0YWJhc2VzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0MzODc0MzQxNzJGNTYxNTAwMUJEODhBIC8qIFBhZ2VCYW5uZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMwNTJGMjYxQzZEM0JEMzAwNzZFOTE5IC8qIEF1dGhlbnRpY2F0aW9uTWFu
YWdlckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M2RDM3RkMxNzJGNTU1RjAwOUQyODQ3
IC8qIFBhZ2VCYW5uZXJNYWMubW0gaW4gU291cmNlcyAqLywKQEAgLTkyMTksNiArOTIzNSw3IEBA
CiAJCQkJRURDQTcxQjcxMjhEREE4QzAwMjAxQjI2IC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2MEM1N0ExMjQwQTU0NjAwOEM1RTI5IC8qIFdLQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxNERGOUUxMjBCNjM1RjAwODI2
QzBDIC8qIFdLQnVuZGxlU2NyaXB0V29ybGQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E3OTFF
RkMxQzdEMDhDNTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjcxMjFDMjNGODlFMDBENDExODMgLyogRG93bmxvYWRN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzVGNTEyNEZGMDI3MDA2OEYyMEEgLyogV0tD
ZXJ0aWZpY2F0ZUluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc2MjgxMjRGRjA0MDAw
NjhGMjBBIC8qIFdLQ2VydGlmaWNhdGVJbmZvTWFjLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDE5NzQ4NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEy
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwLCAyMDEyLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTgsNiArNTgsNyBAQAogI2lu
Y2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0xvY2suaD4KQEAgLTg2LDYgKzg3LDkgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VHcm91cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1NZWRpYVNlc3Npb25NYW5h
Z2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luLmg+CkBAIC0xNjUsNiArMTY5LDggQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vz
cygpCiAgICAgLCBtX2hhc1JpY2hDb250ZW50U2VydmljZXMoZmFsc2UpCiAjZW5kaWYKICAgICAs
IG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXIoKnRoaXMsICZXZWJQcm9jZXNzOjpub25W
aXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKQorICAgICwgbV9zdGF0aXN0aWNzQ2hhbmdl
ZFRpbWVyKCp0aGlzLCAmV2ViUHJvY2Vzczo6c3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVkKQor
ICAgICwgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1f
d2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKCp0aGlzKQogI2VuZGlmCkBAIC0xOTcsNiArMjAzLDE0
IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKElPUykKICAgICBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnNldFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICNl
bmRpZgorCisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3Rh
dGlzdGljc1N0b3JlKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JhZ2UuY29weVJlZigpKTsK
KyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yYWdlLT5zZXROb3RpZmljYXRpb25DYWxs
YmFjayhbdGhpc10geworICAgICAgICBpZiAobV9zdGF0aXN0aWNzQ2hhbmdlZFRpbWVyLmlzQWN0
aXZlKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBtX3N0YXRpc3Rp
Y3NDaGFuZ2VkVGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDUpKTsKKyAg
ICB9KTsKIH0KIAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3MoKQpAQCAtMzIwLDYgKzMzNCw4IEBA
IHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKIAogICAgIHNldERlZmF1
bHRSZXF1ZXN0VGltZW91dEludGVydmFsKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0
SW50ZXJ2YWwpOwogCisgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CisKICAgICBpZiAocGFyYW1ldGVy
cy5zaG91bGRBbHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKQogICAgICAgICBzZXRBbHdheXNV
c2VzQ29tcGxleFRleHRDb2RlUGF0aCh0cnVlKTsKIApAQCAtMzY2LDYgKzM4Miw5IEBAIHZvaWQg
V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICAgICAgfQogICAgIH0KICNl
bmRpZgorCisgICAgaWYgKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQp
CisgICAgICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHRydWUpOwogfQogCiB2
b2lkIFdlYlByb2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCkBAIC0xMjc4
LDYgKzEyOTcsMjcgQEAgdm9pZCBXZWJQcm9jZXNzOjpub25WaXNpYmxlUHJvY2Vzc0NsZWFudQog
I2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6bm90aWZ5TmV3U3RhdGlzdGljc0FkZGVkKCkK
K3sKKyAgICBpZiAobV9zdGF0aXN0aWNzQ2hhbmdlZFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fc3RhdGlzdGljc0NoYW5nZWRUaW1lci5zdGFydE9uZVNob3Qoc3Rk
OjpjaHJvbm86OnNlY29uZHMoNSkpOworfQorCit2b2lkIFdlYlByb2Nlc3M6OnN0YXRpc3RpY3ND
aGFuZ2VkVGltZXJGaXJlZCgpCit7CisgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JhZ2UtPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yYWdlLT50YWtlU3RhdGlzdGljcygpKSwgMCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGVuYWJsZWQpOworfQorCiBSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYlByb2Nlc3M6
OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3QqIG9iamVjdCkKIHsKICAgICBz
dHJ1Y3QgVHJhbnNmb3JtZXIgZmluYWwgOiBVc2VyRGF0YTo6VHJhbnNmb3JtZXIgewpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDE5NzQ4NSkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIuaCIKICNpbmNsdWRl
ICJWaXNpdGVkTGlua1RhYmxlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZp
dHkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNjksNiArMTcwLDggQEAgcHVibGljOgog
ICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogCiAgICAgdm9p
ZCBub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzdGF0aXN0
aWNzQ2hhbmdlZFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIG5vdGlmeU5ld1N0YXRpc3RpY3NBZGRl
ZCgpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkZXN0cm95UmVuZGVyaW5nUmVz
b3VyY2VzKCk7CkBAIC0yMzEsNiArMjM0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERlZmF1
bHRSZXF1ZXN0VGltZW91dEludGVydmFsKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRBbHdheXNVc2Vz
Q29tcGxleFRleHRDb2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFVzZUZvbnRTbW9v
dGhpbmcoYm9vbCk7CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChi
b29sKTsKICAgICB2b2lkIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JikgY29uc3Q7CiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdl
ZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpOwogCkBAIC0zNjEsMTEgKzM2NSwxNCBA
QCBwcml2YXRlOgogCiAgICAgSGFzaFNldDx1aW50NjRfdD4gbV9wYWdlc0luV2luZG93czsKICAg
ICBXZWJDb3JlOjpUaW1lciBtX25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyOworICAgIFdl
YkNvcmU6OlRpbWVyIG1fc3RhdGlzdGljc0NoYW5nZWRUaW1lcjsKIAogI2lmIFBMQVRGT1JNKElP
UykKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNr
ZXI7CiAjZW5kaWYKIAorICAgIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JhZ2U7CisKICAgICBTaG91bGRBY2tub3ds
ZWRnZVdoZW5SZWFkeVRvU3VzcGVuZCBtX3Nob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNw
ZW5kOwogICAgIGJvb2wgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07
CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAot
IyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2ICs0Miw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldERlZmF1bHRSZXF1ZXN0VGltZW91
dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCiAgICAgU2V0QWx3YXlzVXNlc0NvbXBs
ZXhUZXh0Q29kZVBhdGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dCkKICAgICBTZXRTaG91bGRV
c2VGb250U21vb3RoaW5nKGJvb2wgdXNlRm9udFNtb290aGluZykKKyAgICBTZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsK
ICAgICBVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChWZWN0b3I8U3RyaW5nPiBsYW5ndWFn
ZXMpCiAgICAgRnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRB
Y2Nlc3NFbmFibGVkKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc0ODUpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MSBAQAorMjAxNi0wMy0wMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV0syXSBHYXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNzgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI0NzAyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFN3aXRjaCB0byBtYWludGFpbmluZyBhIGdsb2JhbCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgaW4gdGhlIFdlYktpdCBwcm9jZXNzLAorICAgICAg
ICBhbmQgaGFuZCBpdCBvZmYgdG8gdGhlIFdlYkNvcmUgbGF5ZXIgdG8gdXNlIGR1cmluZyBkYXRh
IGdhdGhlcmluZy4gVGhlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBpcyBu
b3cgcmVzcG9uc2libGUgZm9yIHJlYWRpbmcvd3JpdGluZyB0byBkaXNrLCBhbmQgdHJhY2tpbmcg
dGhlIGNvbGxlY3Rpb24gb2YgbG9hZCBkYXRhLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoV2ViS2l0SW5pdGlhbGl6ZUFwcGxpY2F0aW9uU3RhdGlzdGljc1N0b3Jh
Z2VQYXRoSWZOZWNlc3NhcnkpOiBJbml0aWFsaXplIHNpbmdsZXRvbgorICAgICAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgb2JqZWN0IGZvciB0cmFja2luZyBzdGF0ZS4KKyAgICAgICAg
KC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOiBSZXZpc2UgZm9yIG5ldyBzaW5nbGV0
b24uCisgICAgICAgICgrW1dlYlZpZXcgX2FwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZV0pOiBEaXR0
by4KKwogMjAxNi0wMi0yOSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZG9wdCB0aGUgbmV3IHZlcnNpb24gb2YgQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlcidz
IHNob3dNZW51Rm9yUmVjdCBtZXRob2QuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI1Miw2ICsyNTIsOCBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9Nb2JpbGVHZXN0YWx0U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdGF0ZU5v
dGlmaWVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0lPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aD4KICNpbXBvcnQgPFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+CkBAIC02MDYsNiArNjA4LDcgQEAg
ZW51bSB7IFdlYlZpZXdWZXJzaW9uID0gNCB9OwogI2RlZmluZSB0aW1lZExheW91dFNpemUgNDA5
NgogCiBzdGF0aWMgTlNNdXRhYmxlU2V0ICpzY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldDsK
K3N0YXRpYyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgKnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTsKIAogI2lmICFQTEFURk9STShJT1MpCiBOU1N0cmluZyAqX1dlYkNh
bkdvQmFja0tleSA9ICAgICAgICAgICAgQCJjYW5Hb0JhY2siOwpAQCAtNzY0LDcgKzc2NywxMCBA
QCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplQXBwbGljYXRpb25TCiAgICAgQVNTRVJUKGFw
cE5hbWUpOwogICAgIAogICAgIE5TU3RyaW5nICpzdXBwb3J0RGlyZWN0b3J5ID0gW05TU3RyaW5n
IF93ZWJraXRfbG9jYWxTdG9yYWdlRGlyZWN0b3J5V2l0aEJ1bmRsZUlkZW50aWZpZXI6YXBwTmFt
ZV07Ci0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3RhdGlz
dGljc1N0b3JhZ2VEaXJlY3Rvcnkoc3VwcG9ydERpcmVjdG9yeSk7CisKKyAgICBSZWY8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBzdGF0aXN0aWNzU3RvcmUgPSBXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShzdXBwb3J0RGlyZWN0b3J5KTsK
KyAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgPSAmc3RhdGlzdGljc1N0b3JlLmdldCgp
OworICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN0YXRpc3Rp
Y3NTdG9yZShXVEZNb3ZlKHN0YXRpc3RpY3NTdG9yZSkpOwogICAgIAogICAgIGluaXRpYWxpemVk
ID0gWUVTOwogfQpAQCAtMjQ3Miw3ICsyNDc4LDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFu
Z2VkOihXZWJQcmVmZXJlbgogICAgIHNldHRpbmdzLnNldEhpZGRlblBhZ2VDU1NBbmltYXRpb25T
dXNwZW5zaW9uRW5hYmxlZChbcHJlZmVyZW5jZXMgaGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3Bl
bnNpb25FbmFibGVkXSk7CiAKICAgICBzZXR0aW5ncy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZChbcHJlZmVyZW5jZXMgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRdKTsKLSAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5yZWFkRGF0YUZyb21EaXNr
SWZOZWVkZWQoKTsKKyAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPnJlYWREYXRhRnJv
bURpc2tJZk5lZWRlZCgpOwogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAgICAgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRHYW1lcGFkc0VuYWJsZWQoW3ByZWZlcmVu
Y2VzIGdhbWVwYWRzRW5hYmxlZF0pOwpAQCAtNDg0Miw3ICs0ODQ4LDcgQEAgKyAodm9pZClfYXBw
bGljYXRpb25XaWxsVGVybWluYXRlCiB7ICAgCiAgICAgYXBwbGljYXRpb25Jc1Rlcm1pbmF0aW5n
ID0gWUVTOwogCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkud3Jp
dGVEYXRhVG9EaXNrKCk7CisgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT53cml0ZURh
dGFUb0Rpc2soKTsKIAogICAgIGlmIChmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKSkKICAg
ICAgICAgW3NlbGYgY2xvc2VBbGxXZWJWaWV3c107CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc1MTMpCisrKyBUb29scy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wMy0wMyAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBHYXRoZXIg
cmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTQyNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzAyODky
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlu
aUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm06CisgICAgICAgIChkZWZhdWx0Q29uZmlndXJhdGlv
bik6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tOgorICAg
ICAgICAoLVtTZXR0aW5nc0NvbnRyb2xsZXIgX3BvcHVsYXRlTWVudV0pOiBNb3ZlIHNldHRpbmcg
ZnJvbSBXSzEtb25seSB0byBiZQorICAgICAgICB1bml2ZXJzYWxseSBhcHBsaWNhYmxlLgorICAg
ICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAg
ICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkaWRDaGFuZ2VTZXR0aW5nc10pOiBS
ZWNvZ25pemUgd2hlbiB0aGUKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIGZsYWcg
aGFzIGNoYW5nZWQuCisKIDIwMTYtMDMtMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxOTc0NDIuCklu
ZGV4OiBUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQkocmV2aXNpb24gMTk3NDg1KQorKysg
VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0JKHdvcmtpbmcgY29weSkKQEAgLTgz
LDYgKzgzLDcgQEAgc3RhdGljIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmRlZmF1bHRDbwogICAg
IH0KIAogICAgIGNvbmZpZ3VyYXRpb24uc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nID0g
W1NldHRpbmdzQ29udHJvbGxlciBzaGFyZWRdLmluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Nl
ZDsKKyAgICBjb25maWd1cmF0aW9uLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IFtT
ZXR0aW5nc0NvbnRyb2xsZXIgc2hhcmVkXS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsK
ICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KICNlbmRpZgpJbmRleDogVG9vbHMvTWluaUJy
b3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlC
cm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQkocmV2aXNpb24gMTk3NDg1KQorKysgVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTMsNiArMTEzLDcgQEAgLSAodm9pZClfcG9wdWxhdGVNZW51CiAgICAgW3NlbGYgX2FkZEl0
ZW1XaXRoVGl0bGU6QCJTdXBwcmVzcyBJbmNyZW1lbnRhbCBSZW5kZXJpbmcgaW4gTmV3IFdpbmRv
d3MiIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlSW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2Vk
OikgaW5kZW50ZWQ6Tk9dOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIEFj
Y2VsZXJhdGVkIERyYXdpbmciIGFjdGlvbjpAc2VsZWN0b3IodG9nZ2xlQWNjZWxlcmF0ZWREcmF3
aW5nRW5hYmxlZDopIGluZGVudGVkOk5PXTsKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpA
IkVuYWJsZSBEaXNwbGF5IExpc3QgRHJhd2luZyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVEaXNw
bGF5TGlzdERyYXdpbmdFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOworICAgIFtzZWxmIF9hZGRJdGVt
V2l0aFRpdGxlOkAiRW5hYmxlIFJlc291cmNlIExvYWQgU3RhdGlzdGljcyIgYWN0aW9uOkBzZWxl
Y3Rvcih0b2dnbGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIGluZGVudGVkOk5PXTsK
IAogICAgIFtzZWxmIF9hZGRIZWFkZXJXaXRoVGl0bGU6QCJXZWJLaXQyLW9ubHkgU2V0dGluZ3Mi
XTsKIApAQCAtMTQxLDcgKzE0Miw2IEBAIC0gKHZvaWQpX3BvcHVsYXRlTWVudQogCiAgICAgW3Nl
bGYgX2FkZEhlYWRlcldpdGhUaXRsZTpAIldlYktpdDEtb25seSBTZXR0aW5ncyJdOwogICAgIFtz
ZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIFN1YnBpeGVsIENTU09NIE1ldHJpY3MiIGFj
dGlvbjpAc2VsZWN0b3IodG9nZ2xlRW5hYmxlU3ViUGl4ZWxDU1NPTU1ldHJpY3M6KSBpbmRlbnRl
ZDpZRVNdOwotICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIFJlc291cmNlIExv
YWQgU3RhdGlzdGljcyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDopIGluZGVudGVkOk5PXTsKIH0KIAogLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVt
OihOU01lbnVJdGVtICopbWVudUl0ZW0KSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2Vy
L21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBU
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLRnJhbWVJbmZvLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CkBAIC0zNDYsNiArMzQ3LDggQEAgLSAodm9pZClkaWRDaGFuZ2VTZXR0aW5n
cwogICAgIHByZWZlcmVuY2VzLl9yZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGUgPSBzZXR0aW5n
cy5yZXNvdXJjZVVzYWdlT3ZlcmxheVZpc2libGU7CiAgICAgcHJlZmVyZW5jZXMuX2Rpc3BsYXlM
aXN0RHJhd2luZ0VuYWJsZWQgPSBzZXR0aW5ncy5kaXNwbGF5TGlzdERyYXdpbmdFbmFibGVkOwog
CisgICAgX3dlYlZpZXcuY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbC5fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgPSBzZXR0aW5ncy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsK
KwogICAgIEJPT0wgdXNlVHJhbnNwYXJlbnRXaW5kb3dzID0gc2V0dGluZ3MudXNlVHJhbnNwYXJl
bnRXaW5kb3dzOwogICAgIGlmICh1c2VUcmFuc3BhcmVudFdpbmRvd3MgIT0gIV93ZWJWaWV3Ll9k
cmF3c0JhY2tncm91bmQpIHsKICAgICAgICAgW3NlbGYud2luZG93IHNldE9wYXF1ZTohdXNlVHJh
bnNwYXJlbnRXaW5kb3dzXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272838</attachid>
            <date>2016-03-03 23:55:14 -0800</date>
            <delta_ts>2016-03-04 00:02:28 -0800</delta_ts>
            <desc>Patch (v3)</desc>
            <filename>bug-154278-20160303235459.patch</filename>
            <type>text/plain</type>
            <size>127166</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE2LTAzLTAzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgU3BsaXQgcGFydCBvZiB0aGUgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgaW50byBhIG5l
dyBjbGFzcyAoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKQorICAgICAgICB0aGF0IG1hbmFn
ZXMgdGhlIGNvbGxlY3Rpb24gb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljIG9iamVjdHMsIGFuZCB0
aGF0IGNhbiBiZSB1c2VkCisgICAgICAgIGluIHRoZSBVSVByb2Nlc3Mgd2l0aG91dCB0b3VjaGlu
ZyB2YXJpb3VzIFdlYlByb2Nlc3Mtc3BlY2lmaWMgV2ViQ29yZSBjbGFzc2VzLgorCisgICAgICAg
IEhhdmUgdGhlIFdlYlByb2Nlc3Mgb25seSBmaXJlIGEgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNz
IGlmIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQuIE90aGVyd2lzZSwKKyAgICAgICAgbm8gbWVzc2Fn
ZXMgc2hvdWxkIGJlIHNlbnQuIFdoZW4gbmV3IGRhdGEgaXMgZW5jb3VudGVyZWQsIHN0YXJ0IGEg
NSBzZWNvbmQgdGltZXIuIElmIG1vcmUKKyAgICAgICAgZGF0YSBpcyBmb3VuZCBkdXJpbmcgdGhp
cyBkZWxheSwganVzdCBhY2N1bXVsYXRlIGl0LiBXaGVuIHRoZSB0aW1lciBmaXJlcywgYWxsIGRh
dGEgaXMgc2VudAorICAgICAgICBhbmQgdGhlIHRpbWVyIHN0b3BzIHVudGlsIGEgbmV3IGJhdGNo
IG9mIGRhdGEgYXJyaXZlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgdGhlIG5l
dyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xhc3MuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGp1c3QgdmlzaWJpbGl0eSBvZiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIGhlYWRlciwKKyAgICAgICAgYW5kIGFkZCBuZXcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIGNsYXNzLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOiBUZWxs
IHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgdG8gZmlyZSBpdHMgJ2RhdGEgY2hhbmdl
ZCcKKyAgICAgICAgaGFuZGxlciBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cHJpbWFyeURvbWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0Zv
ck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQcmV2
YWxlbnRSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaXNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0
aXN0aWNzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cGVyc2lzdGVudFN0b3JhZ2VQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNy
ZWF0ZURlY29kZXJGcm9tRGlzayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6d3JpdGVFbmNvZGVyVG9EaXNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVIYXNoQ291bnRlZFNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Om1lcmdl
SGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6bWVyZ2UpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6d3JpdGVEYXRhVG9EaXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJzaXN0ZW50U3RvcmFnZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFk
RGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjcmVhdGVEZWNvZGVyRnJvbURpc2spOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rpc2spOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGFr
ZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjptZXJnZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxl
cik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNFbXB0
eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWZhdWx0
RmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorCiAyMDE2LTAzLTAyICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUwgcGFyc2VyIGluc3RhbnRpYXRl
cyBhIGN1c3RvbSBlbGVtZW50IGluc2lkZSBhIHRlbXBsYXRlIGVsZW1lbnQgd2l0aCBhIHdyb25n
IG93bmVyIGRvY3VtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3NDg1
KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5
MjMsNiArMTkyMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2FkZXIvUmVzb3VyY2VM
b2FkTm90aWZpZXIuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAogICAg
IGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorICAgIGxvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAogICAg
IGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwCiAgICAgbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ1LDcgKzExNDUsNiBAQAog
CQkyRDQxNTBERTFDMUY4NjhDMDAwQTNCQTIgLyogSlNNb2NrUGFnZU92ZXJsYXkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ2RjNFOTIxQzFGODU1
NTAwNjFEQkQ0IC8qIEpTTW9ja1BhZ2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJMkQ0NDQ2OTgxQzg0
Q0NDRjAwMjRDODg5IC8qIERPTUhUTUxNZWRpYUVsZW1lbnQuaCBpbiBDb3B5IEdlbmVyYXRlZCBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERUM2NjRFMUM4MkNG
RjYwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVtZW50LmggKi87IH07CiAJCTJENDQ0Njk5MUM4
NENDRDcwMDI0Qzg4OSAvKiBET01IVE1MVmlkZW9FbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVDNjY0QjFDODJD
RkJGMDA5OTg0NkEgLyogRE9NSFRNTFZpZGVvRWxlbWVudC5oICovOyB9OwotCQkyRDQ0NDY5QTFD
ODRDQ0UxMDAyNEM4ODkgLyogRE9NTWVkaWFDb250cm9sbGVyLmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVDNjY2OTFDODND
Q0JFMDA5OTg0NkEgLyogRE9NTWVkaWFDb250cm9sbGVyLmggKi87IH07CiAJCTJENDQ0NjlCMUM4
NENEMDUwMDI0Qzg4OSAvKiBET01NZWRpYUVycm9yLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREVDNjY3NTFDODQwM0MzMDA5
OTg0NkEgLyogRE9NTWVkaWFFcnJvci5oICovOyB9OwogCQkyRDQ0NDY5RjFDODRDRDA2MDAyNEM4
ODkgLyogRE9NVGltZVJhbmdlcy5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFQzY2NkYxQzgzRjJBRjAwOTk4NDZBIC8qIERP
TVRpbWVSYW5nZXMuaCAqLzsgfTsKIAkJMkQ0NkYwNEUxN0I5NkZCRDAwNTY0N0YwIC8qIEludFBv
aW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
NDZGMDREMTdCOTZGQkQwMDU2NDdGMCAvKiBJbnRQb2ludC5jcHAgKi87IH07CkBAIC0yNjgyLDkg
KzI2ODEsMTEgQEAKIAkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
ICovOyB9OwogCQk3QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJN0E5MjlDQTYxQzU5OEE5RTAwNERGMjI2IC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0E5MjlDQTExQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwICovOyB9OwotCQk3QTkyOUNBNzFDNTk4QUE5MDA0REYyMjYgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E5MjlDQTIxQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCAq
LzsgfTsKKwkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5
Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0E5Mzg2ODUxOERDQzE0
NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODIxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIu
Y3BwICovOyB9OwogCQk3QTkzODY4NjE4RENDMTQ1MDBCODI2M0QgLyogVlRUU2Nhbm5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODMxOERD
QzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuaCAqLzsgfTsKKwkJN0E5M0E4MDMxQzg3N0RDMTAw
RTM1RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTdDQzgzNjFDODc1MDY4MDAzNjYyNDMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLzsgfTsKKwkJN0E5M0E4MDQxQzg3
N0REMDAwRTM1RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3Q0M4MzcxQzg3NTA2ODAwMzY2
MjQzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAv
KiBUaWxlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUEzQTY5NTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3Bw
ICovOyB9OwogCQk3QUEzQTY5QTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTNBNjk2MTk0
QTY0RTcwMDFDQkQyNCAvKiBUaWxlQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTNBNjlCMTk0QTY0RTcwMDFDQkQyNCAvKiBU
aWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUEzQTY5NzE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUdyaWQuY3BwICovOyB9OwpAQCAtODY2
MywxNiArODY2NCwxNiBAQAogCQkyREU3MDAyMjE5MkZFODJBMDBCMDk3NUMgLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVD
NjY0QjFDODJDRkJGMDA5OTg0NkEgLyogRE9NSFRNTFZpZGVvRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MVmlkZW9FbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJERUM2NjRDMUM4MkNGQkYwMDk5ODQ2QSAvKiBET01IVE1MVmlk
ZW9FbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTFZpZGVvRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2
NEQxQzgyQ0ZCRjAwOTk4NDZBIC8qIERPTUhUTUxWaWRlb0VsZW1lbnRJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01IVE1MVmlkZW9FbGVtZW50SW50ZXJuYWwu
aDsgcGF0aCA9IERPTUhUTUxWaWRlb0VsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyREVDNjY0RDFDODJDRkJGMDA5OTg0NkEgLyogRE9NSFRNTFZpZGVvRWxl
bWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxW
aWRlb0VsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVD
NjY0RTFDODJDRkY2MDA5OTg0NkEgLyogRE9NSFRNTE1lZGlhRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MTWVkaWFFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJERUM2NjRGMUM4MkNGRjYwMDk5ODQ2QSAvKiBET01IVE1MTWVk
aWFFbGVtZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9N
SFRNTE1lZGlhRWxlbWVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2
NTAxQzgyRDAwODAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnRJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01IVE1MTWVkaWFFbGVtZW50SW50ZXJuYWwu
aDsgcGF0aCA9IERPTUhUTUxNZWRpYUVsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkyREVDNjY1MDFDODJEMDA4MDA5OTg0NkEgLyogRE9NSFRNTE1lZGlhRWxl
bWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxN
ZWRpYUVsZW1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREVD
NjY2RjFDODNGMkFGMDA5OTg0NkEgLyogRE9NVGltZVJhbmdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01UaW1lUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJERUM2NjcwMUM4M0YyQUYwMDk5ODQ2QSAvKiBET01UaW1lUmFuZ2VzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NVGltZVJhbmdlcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2NzExQzgzRjJBRjAwOTk4NDZBIC8qIERP
TVRpbWVSYW5nZXNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
T01UaW1lUmFuZ2VzSW50ZXJuYWwuaDsgcGF0aCA9IERPTVRpbWVSYW5nZXNJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREVDNjY3MTFDODNGMkFGMDA5OTg0NkEgLyog
RE9NVGltZVJhbmdlc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERPTVRpbWVSYW5nZXNJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REVDNjY3NTFDODQwM0MzMDA5OTg0NkEgLyogRE9NTWVkaWFFcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01NZWRpYUVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJERUM2Njc2MUM4NDAzQzMwMDk5ODQ2QSAvKiBET01NZWRpYUVycm9yLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NTWVkaWFFcnJvci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRFQzY2NzcxQzg0MDNDMzAwOTk4NDZBIC8q
IERPTU1lZGlhRXJyb3JJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBET01NZWRpYUVycm9ySW50ZXJuYWwuaDsgcGF0aCA9IERPTU1lZGlhRXJyb3JJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREVDNjY3NzFDODQwM0MzMDA5OTg0NkEg
LyogRE9NTWVkaWFFcnJvckludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTU1lZGlhRXJyb3JJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRTA4ODhDMzExNDg4M0E5MDBBRjQyNjUgLyogRE9NRm9ybURhdGEuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IERPTUZvcm1EYXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkUwODg4RDIxMTQ4ODQ4QTAwQUY0MjY1IC8qIEpTRE9NRm9ybURhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01Gb3JtRGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMDg4OEQzMTE0ODg0OEEwMEFGNDI2NSAvKiBKU0RPTUZv
cm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NRm9ybURhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMjk2LDYgKzEwMjk3LDggQEAKIAkJ
N0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNCOTEwMTgzOUE2
MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JG
cm9udGVuZEhvc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QTdDQzgzNjFDODc1MDY4MDAzNjYyNDMgLyogUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdBN0NDODM3MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTI5Q0ExMUM1OTgzNzgw
MDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTkyOUNBMjFDNTk4Mzc4MDA0REYyMjYgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTM4Njgy
MThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFZUVFNjYW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjI3MjEsNiArMjI3MjQsOCBAQAogCQkJCTZCNjkzQTJEMUM1MUE4MkUwMEIwM0JFRiAv
KiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovLAogCQkJCTdBOTI5Q0ExMUM1OTgzNzgwMDRERjIy
NiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLywKIAkJCQk3QTkyOUNBMjFDNTk4Mzc4
MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oICovLAorCQkJCTdBN0NDODM2MUM4
NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAorCQkJ
CTdBN0NDODM3MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aCAqLywKIAkJCQk1MTMyN0Q1RjExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmNwcCAq
LywKIAkJCQk1MTMyN0Q1RTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50LmggKi8sCiAJ
CQkJRDAwMEVEMjUxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmNwcCAqLywKQEAg
LTI0OTEzLDYgKzI0OTE4LDcgQEAKIAkJCQkyOUE4MTIyRTBGQkI5QzFEMDA1MTAyOTMgLyogQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzMwRkJC
OUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMjlBODEyM0IwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bmsuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIyQzBGQkI5QzFE
MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgx
MjQzMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjlBODEyNDIwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94
T3B0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI1MTM4LDcgKzI1MTQ0LDYgQEAKIAkJCQk5OUND
MEI0RjE4QkU5ODQ5MDA2Q0VCQ0MgLyogQ2FwdHVyaW5nSW5wdXRDdXJzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQzczNDE1MTk3Nzg5NkQwMDQ2QkZDNSAvKiBDQVJpbmdCdWZmZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1NTBCNjlFMDk5REYwMjcwMDkwRDc4MSAvKiBDREFUQVNlY3Rpb24u
aCBpbiBIZWFkZXJzICovLAotCQkJCTdBOTI5Q0E3MUM1OThBQTkwMDRERjIyNiAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDREU4QjVFRDFBNjk3NzczMDBC
NEI2NkEgLyogQ0RNUHJpdmF0ZUNsZWFyS2V5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMxODYy
MzE5OUYxRTJBMDAzMEEwRjcgLyogQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQ0RERDU3MTUxOEI1N0E4MjAwQTk0RkNCIC8qIENETVNlc3Npb24uaCBp
biBIZWFkZXJzICovLApAQCAtMjYzNTQsNiArMjYzNTksNyBAQAogCQkJCTBGMDNDMDc1MTg4NDgw
NTUwMEE1RjhDQSAvKiBJbnNwZWN0b3JPdmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjZG
REQ2NTEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OUNDMEI2NzE4QkU5RjE1MDA2Q0VCQ0MgLyogSW5zcGVjdG9yUmVwbGF5QWdlbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTdBOTNBODA0MUM4NzdERDAwMEUzNUZENiAvKiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTgyQUIxNzc0MTI1Qzgy
NjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHlsZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyogSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU5M0NGOEIxODQwNTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFn
ZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTgyMCw2ICsyOTgyNiw3IEBACiAJCQkJQThF
QTc5RjgwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxNZW51RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyQkU4RTJDOTEyQTU4QTAxMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4NzFEQzI3MEExNTIwNTcwMEIxMkE2OCAvKiBIVE1M
TWV0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E5M0E4MDMxQzg3N0RDMTAwRTM1
RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlDRDlEODI3NTFDN0FFNTM1MDA2RkYwNjYgLyogVGV4dHVyZUNhY2hlQ1YubW0gaW4gU291cmNl
cyAqLywKIAkJCQlBNDU0NDI0QTExOUIzNjYxMDA5QkU5MTIgLyogSFRNTE1ldGVyRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjdBOTBBMTU2OTc4MDAwQTQyMzQgLyogSFRNTE1v
ZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTAxNiw3ICszMTAyMyw3IEBACiAJCQkJ
NDQ3OTU4MDUxNjQzQjRCMjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY1NUIzREM5MTI1MUYxMkQwMDNFRjI2OSAvKiBQYXNzd29yZElucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREVDNjY3MzFDODNGMkFGMDA5OTg0NkEgLyogRE9N
VGltZVJhbmdlcy5tbSBpbiBTb3VyY2VzICovLAotICAgICAgICAgICAgICAgIDJERUM2NjU2MUM4
MkQwNDQwMDk5ODQ2QSAvKiBET01IVE1MTWVkaWFFbGVtZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJMkRFQzY2NTYxQzgyRDA0NDAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnQubW0gaW4g
U291cmNlcyAqLywKIAkJCQlFNDUzOTAxRTBFQUZDQUNBMDAzNjk1QzggLyogUGFzdGVib2FyZElP
Uy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTRCMjcwOTgzMEFGMkU1RTAwMDY1MTI3RiAvKiBQYXN0
ZWJvYXJkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0YwQjA1MzgxNDAwMkNFNjRG
IC8qIFBhdGguY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2VydmVyLmgiCiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIktleWVkQ29kaW5nLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCkBAIC0zOSw4ICszOSw2IEBACiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0jZGVmaW5lIExP
R19TVEFUSVNUSUNTX1RPX0ZJTEUgMAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlc291cmNl
TG9hZE9ic2VydmVyJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKQpAQCAt
NDgsNyArNDYsMjIgQEAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9hZE9ic2Vydgog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRPYnNlcnZlcj4gcmVzb3VyY2VM
b2FkT2JzZXJ2ZXI7CiAgICAgcmV0dXJuIHJlc291cmNlTG9hZE9ic2VydmVyOwogfQotICAgIAor
Cit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChib29sIGVuYWJsZWQpCit7CisgICAgU2V0dGluZ3M6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFJlc291cmNlTG9hZE9ic2VydmVyOjpy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFNldHRp
bmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOworfQorCit2b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZT4mJiBzdG9yZSkKK3sKKyAgICBtX3N0b3JlID0gV1RGTW92ZShzdG9yZSk7Cit9CisK
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWdhdGlvbihib29sIGlzUmVk
aXJlY3QsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBVUkwmIHRhcmdldFVSTCwgYm9vbCBp
c01haW5GcmFtZSwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwpCiB7CiAgICAgaWYgKCFTZXR0aW5n
czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkKQEAgLTcxLDcgKzg0LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogICAgICAgICByZXR1cm47CiAg
ICAgCiAgICAgYXV0byB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRhcmdl
dFVSTCk7Ci0gICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IHJlc291cmNlU3RhdGlzdGljc0Zv
clByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CisgICAgYXV0byYgdGFyZ2V0U3Rh
dGlzdGljcyA9IG1fc3RvcmUtPnJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFy
Z2V0UHJpbWFyeURvbWFpbik7CiAgICAgCiAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICB0
YXJnZXRTdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3JlID0gdHJ1ZTsK
QEAgLTgzLDkgKzk2LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZp
ZwogICAgIH0KICAgICAKICAgICBpZiAoaXNSZWRpcmVjdCkgewotICAgICAgICBhdXRvJiByZWRp
cmVjdGluZ09yaWdpblJlc291cmNlU3RhdGlzdGljcyA9IHJlc291cmNlU3RhdGlzdGljc0ZvclBy
aW1hcnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7CisgICAgICAgIGF1dG8mIHJlZGlyZWN0
aW5nT3JpZ2luUmVzb3VyY2VTdGF0aXN0aWNzID0gbV9zdG9yZS0+cmVzb3VyY2VTdGF0aXN0aWNz
Rm9yUHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKICAgICAgICAgCi0gICAgICAg
IGlmIChpc1ByZXZhbGVudFJlc291cmNlKHRhcmdldFByaW1hcnlEb21haW4pKQorICAgICAgICBp
ZiAobV9zdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZSh0YXJnZXRQcmltYXJ5RG9tYWluKSkKICAg
ICAgICAgICAgIHJlZGlyZWN0aW5nT3JpZ2luUmVzb3VyY2VTdGF0aXN0aWNzLnJlZGlyZWN0ZWRU
b090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLmFkZCh0YXJnZXRQcmltYXJ5RG9tYWluKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChpc01haW5GcmFtZSkgewpAQCAtMTA1LDcgKzExOCw3IEBA
IHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICArK3RhcmdldFN0YXRpc3RpY3Muc3ViZnJhbWVTdWJSZXNvdXJj
ZUNvdW50OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byYgc291cmNlT3JpZ2lu
UmVzb3VyY2VTdGF0aXN0aWNzID0gcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihz
b3VyY2VQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgIGF1dG8mIHNvdXJjZU9yaWdpblJlc291
cmNlU3RhdGlzdGljcyA9IG1fc3RvcmUtPnJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4oc291cmNlUHJpbWFyeURvbWFpbik7CiAKICAgICAgICAgICAgIGlmIChpc01haW5GcmFtZSkg
ewogICAgICAgICAgICAgICAgICsrc291cmNlT3JpZ2luUmVzb3VyY2VTdGF0aXN0aWNzLnRvcEZy
YW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CkBAIC0xMTcsNyArMTMwLDggQEAgdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogICAgICAgICB9CiAgICAgfQogCi0gICAgdGFy
Z2V0U3RhdGlzdGljcy5jaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeSht
X3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpOworICAgIHRhcmdldFN0YXRpc3RpY3MuY2hl
Y2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9zdG9yZS0+c2l6ZSgpKTsK
KyAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KICAgICAKIHZv
aWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhib29sIGlzUmVk
aXJlY3QsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3Qg
VVJMJiBtYWluRnJhbWVVUkwpCkBAIC0xMzgsMTUgKzE1MiwxNSBAQCB2b2lkIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAgICAgaWYgKHRhcmdldFByaW1hcnlEb21haW4gPT0g
bWFpbkZyYW1lUHJpbWFyeURvbWFpbiB8fCB0YXJnZXRQcmltYXJ5RG9tYWluID09IHNvdXJjZVBy
aW1hcnlEb21haW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHRhcmdldFN0YXRpc3Rp
Y3MgPSByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21h
aW4pOworICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBtX3N0b3JlLT5yZXNvdXJjZVN0YXRp
c3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwogCiAgICAgYXV0byBt
YWluRnJhbWVPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1haW5GcmFtZVVSTCk7CiAg
ICAgdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zLmFkZCht
YWluRnJhbWVQcmltYXJ5RG9tYWluKTsKIAogICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAg
IGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IHJlc291cmNlU3RhdGlzdGljc0Zv
clByaW1hcnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7CisgICAgICAgIGF1dG8mIHJlZGly
ZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IG1fc3RvcmUtPnJlc291cmNlU3RhdGlzdGljc0ZvclBy
aW1hcnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7CiAgICAgICAgIAotICAgICAgICBpZiAo
aXNQcmV2YWxlbnRSZXNvdXJjZSh0YXJnZXRQcmltYXJ5RG9tYWluKSkKKyAgICAgICAgaWYgKG1f
c3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UodGFyZ2V0UHJpbWFyeURvbWFpbikpCiAgICAgICAg
ICAgICByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MucmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxl
bnRSZXNvdXJjZU9yaWdpbnMuYWRkKHRhcmdldFByaW1hcnlEb21haW4pOwogICAgICAgICAKICAg
ICAgICAgKytyZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuUmVk
aXJlY3RlZEZyb207CkBAIC0xNjcsNyArMTgxLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nU3VicmVzb3VyYwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlSGFz
QmVlblN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVu
U3VicmVzb3VyY2VDb3VudCkgLyB0b3RhbFZpc2l0ZWQ7CiAgICAgfQogICAgIAotICAgIHRhcmdl
dFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9y
ZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKTsKKyAgICB0YXJnZXRTdGF0aXN0aWNzLmNoZWNr
QW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KG1fc3RvcmUtPnNpemUoKSk7Cisg
ICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAgICAgCiB2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgRG9jdW1lbnQm
IGRvY3VtZW50KQpAQCAtMTc1LDI3ICsxOTAsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nVXNlckludGVyYQogICAgIGlmICghU2V0dGluZ3M6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBy
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4oZG9jdW1lbnQu
dXJsKCkpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+cmVzb3VyY2VTdGF0aXN0
aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKGRvY3VtZW50LnVybCgpKSk7CiAgICAg
c3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOworICAgIG1fc3RvcmUtPmZpcmVE
YXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogICAgIAotYm9vbCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pIGNv
bnN0Ci17Ci0gICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQo
cHJpbWFyeURvbWFpbik7Ci0gICAgaWYgKG1hcEVudHJ5ID09IG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbWFwRW50cnkt
PnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2U7Ci19Ci0gICAgCi1SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURv
bWFpbihjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pCi17Ci0gICAgaWYgKCFtX3Jlc291cmNl
U3RhdGlzdGljc01hcC5jb250YWlucyhwcmltYXJ5RG9tYWluKSkKLSAgICAgICAgbV9yZXNvdXJj
ZVN0YXRpc3RpY3NNYXAuc2V0KHByaW1hcnlEb21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
KSk7Ci0gICAgCi0gICAgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQocHJpbWFy
eURvbWFpbiktPnZhbHVlOwotfQotCiBTdHJpbmcgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnByaW1h
cnlEb21haW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgp
OwpAQCAtMjM4LDEzNiArMjM3LDkgQEAgU3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpwcmlt
YXJ5RG9tYQogICAgIHJldHVybiBwcmltYXJ5RG9tYWluOwogfQogCi10eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6S2V5VmFsdWVQYWlyVHlwZSBTdGF0aXN0
aWNzVmFsdWU7Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OndyaXRlRGF0YVRvRGlzaygp
Ci17Ci0gICAgaWYgKCFTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZW5jb2RlciA9IEtleWVkRW5jb2Rlcjo6
ZW5jb2RlcigpOwotICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zpc2l0ZWQiLCBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpOwotICAgIAotICAgIGVuY29kZXItPmVuY29k
ZU9iamVjdHMoImJyb3dzaW5nU3RhdGlzdGljcyIsIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmJl
Z2luKCksIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpLCBbdGhpc10oS2V5ZWRFbmNvZGVy
JiBlbmNvZGVySW5uZXIsIGNvbnN0IFN0YXRpc3RpY3NWYWx1ZSYgb3JpZ2luKSB7Ci0gICAgICAg
IG9yaWdpbi52YWx1ZS5lbmNvZGUoZW5jb2RlcklubmVyLCBvcmlnaW4ua2V5KTsKLSAgICB9KTsK
LSAgICAKLSAgICB3cml0ZUVuY29kZXJUb0Rpc2soKmVuY29kZXIuZ2V0KCksICJmdWxsX2Jyb3dz
aW5nX3Nlc3Npb24iKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRh
VG9EaXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiByZXNvdXJjZVN0YXRpc3RpY3MpIGNvbnN0Ci17Ci0gICAgaWYgKCFTZXR0aW5nczo6cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBl
bmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVUlu
dDMyKCJvcmlnaW5zVmlzaXRlZCIsIDEpOwotICAgIAotICAgIGVuY29kZXItPmVuY29kZU9iamVj
dChvcmlnaW4sIHJlc291cmNlU3RhdGlzdGljcywgW3RoaXMsICZvcmlnaW5dKEtleWVkRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0
aWNzKSB7Ci0gICAgICAgIHJlc291cmNlU3RhdGlzdGljcy5lbmNvZGUoZW5jb2Rlciwgb3JpZ2lu
KTsKLSAgICB9KTsKLSAgICAKLSAgICBTdHJpbmcgbGFiZWwgPSBvcmlnaW47Ci0gICAgbGFiZWwu
cmVwbGFjZSgnLycsICdfJyk7Ci0gICAgbGFiZWwucmVwbGFjZSgnOicsICcrJyk7Ci0gICAgd3Jp
dGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCBsYWJlbCk7Ci19Ci0KLXZvaWQgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCkKLXsKLSAgICBtX3N0b3JhZ2VQYXRoID0gcGF0aDsKLX0KLQotU3RyaW5nIFJlc291
cmNlTG9hZE9ic2VydmVyOjpwZXJzaXN0ZW50U3RvcmFnZVBhdGgoY29uc3QgU3RyaW5nJiBsYWJl
bCkgY29uc3QKLXsKLSAgICBpZiAobV9zdG9yYWdlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgLy8gVE9ETyBEZWNpZGUgd2hhdCB0byBjYWxsIHRo
aXMgZmlsZQotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlUGF0
aCwgbGFiZWwgKyAiX3Jlc291cmNlTG9nLnBsaXN0Iik7Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpCi17Ci0gICAgaWYgKCFTZXR0aW5n
czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgYXV0byBkZWNvZGVyID0gY3JlYXRlRGVjb2RlckZyb21EaXNrKCJmdWxsX2Jyb3dzaW5n
X3Nlc3Npb24iKTsKLSAgICBpZiAoIWRlY29kZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVu
c2lnbmVkIHZpc2l0ZWRPcmlnaW5zID0gMDsKLSAgICBkZWNvZGVyLT5kZWNvZGVVSW50MzIoIm9y
aWdpbnNWaXNpdGVkIiwgdmlzaXRlZE9yaWdpbnMpOwotICAgICAgICAKLSAgICBWZWN0b3I8U3Ry
aW5nPiBsb2FkZWRPcmlnaW5zOwotICAgIGRlY29kZXItPmRlY29kZU9iamVjdHMoImJyb3dzaW5n
U3RhdGlzdGljcyIsIGxvYWRlZE9yaWdpbnMsIFt0aGlzXShLZXllZERlY29kZXImIGRlY29kZXJJ
bm5lciwgU3RyaW5nJiBvcmlnaW4pIHsKLSAgICAgICAgaWYgKCFkZWNvZGVySW5uZXIuZGVjb2Rl
U3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIG9yaWdpbikpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBzdGF0aXN0aWNz
OwotICAgICAgICBpZiAoIXN0YXRpc3RpY3MuZGVjb2RlKGRlY29kZXJJbm5lciwgb3JpZ2luKSkK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC5zZXQob3JpZ2luLCBzdGF0aXN0aWNzKTsKLSAgICAgICAgICAgIAotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9KTsKLSAgICAgICAgCi0gICAgQVNTRVJUKHZpc2l0ZWRPcmlnaW5zID09
IHN0YXRpY19jYXN0PHNpemVfdD4obG9hZGVkT3JpZ2lucy5zaXplKCkpKTsKLX0KLQotc3RkOjp1
bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNyZWF0ZURlY29k
ZXJGcm9tRGlzayhjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdAotewotICAgIFN0cmluZyByZXNv
dXJjZUxvZyA9IHBlcnNpc3RlbnRTdG9yYWdlUGF0aChsYWJlbCk7Ci0gICAgaWYgKHJlc291cmNl
TG9nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gcmF3RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0aENvbnRlbnRz
T2ZGaWxlKHJlc291cmNlTG9nKTsKLSAgICBpZiAoIXJhd0RhdGEpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIAotICAgIHJldHVybiBLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmF3RGF0YS0+ZGF0YSgpKSwgcmF3RGF0YS0+c2l6ZSgp
KTsKLX0KLSAgICAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OndyaXRlRW5jb2RlclRvRGlz
ayhLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Ci17Ci0j
aWYgTE9HX1NUQVRJU1RJQ1NfVE9fRklMRQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJhd0Rh
dGEgPSBlbmNvZGVyLmZpbmlzaEVuY29kaW5nKCk7Ci0gICAgaWYgKCFyYXdEYXRhKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgU3RyaW5nIHJlc291cmNlTG9nID0gcGVyc2lzdGVudFN0b3Jh
Z2VQYXRoKGxhYmVsKTsKLSAgICBpZiAocmVzb3VyY2VMb2cuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBpZiAoIW1fc3RvcmFnZVBhdGguaXNFbXB0eSgpKQotICAgICAgICBtYWtl
QWxsRGlyZWN0b3JpZXMobV9zdG9yYWdlUGF0aCk7Ci0KLSAgICBhdXRvIGhhbmRsZSA9IG9wZW5G
aWxlKHJlc291cmNlTG9nLCBPcGVuRm9yV3JpdGUpOwotICAgIGlmICghaGFuZGxlKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZSho
YW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKLSAgICBjbG9zZUZpbGUo
aGFuZGxlKTsKLSAgICAKLSAgICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0
X3Q+KHJhd0RhdGEtPnNpemUoKSkpCi0gICAgICAgIFdURkxvZ0Fsd2F5cygiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczogV2Ugb25seSB3cm90ZSAlbGxkIG91dCBvZiAlZCBieXRlcyB0byBkaXNrIiwg
d3JpdHRlbkJ5dGVzLCByYXdEYXRhLT5zaXplKCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
ZW5jb2Rlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKLSNlbmRpZgotfQotCiBTdHJpbmcg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW4pCiB7Ci0gICAgaWYgKCFtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jb250YWlucyhvcmln
aW4pKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAKLSAgICBhdXRvJiBzdGF0
aXN0aWNzID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChvcmlnaW4pLT52YWx1ZTsKLSAg
ICByZXR1cm4gIlN0YXRpc3RpY3MgZm9yICIgKyBvcmlnaW4gKyAiOlxuIiArIHN0YXRpc3RpY3Mu
dG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbV9zdG9yZS0+c3RhdGlzdGljc0Zvck9yaWdpbihvcmln
aW4pOwogfQotICAgIAorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuaAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE0ICsyNiwx
MyBAQAogI2lmbmRlZiBSZXNvdXJjZUxvYWRPYnNlcnZlcl9oCiAjZGVmaW5lIFJlc291cmNlTG9h
ZE9ic2VydmVyX2gKIAorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFzcyBLZXllZERl
Y29kZXI7Ci1jbGFzcyBLZXllZEVuY29kZXI7CiBjbGFzcyBVUkw7CiAKIHN0cnVjdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOwpAQCAtNDcsMjkgKzQ2LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGxv
Z1N1YnJlc291cmNlTG9hZGluZyhib29sIGlzUmVkaXJlY3QsIGNvbnN0IFVSTCYgc291cmNlVVJM
LCBjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwpOwogICAgIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IERvY3VtZW50Jik7CiAKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlRGF0YVRvRGlzaygpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVh
ZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0
aXN0aWNzU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFN0YXRpc3RpY3NTdG9yZShSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
PiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yT3JpZ2luKGNv
bnN0IFN0cmluZyYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CisKIHByaXZhdGU6Ci0gICAgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBT
dHJpbmcmKTsKLSAgICAKICAgICBzdGF0aWMgU3RyaW5nIHByaW1hcnlEb21haW4oY29uc3QgVVJM
Jik7CiAKLSAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJikgY29uc3Q7
Ci0KLSAgICBTdHJpbmcgcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgbGFiZWwp
IGNvbnN0OwotCi0gICAgdm9pZCB3cml0ZURhdGFUb0Rpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKLQotICAgIHN0ZDo6dW5pcXVl
X3B0cjxLZXllZERlY29kZXI+IGNyZWF0ZURlY29kZXJGcm9tRGlzayhjb25zdCBTdHJpbmcmIGxh
YmVsKSBjb25zdDsKLSAgICB2b2lkIHdyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImLCBj
b25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKLQorICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IG1fc3RvcmU7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4gbV9vcmln
aW5zVmlzaXRlZE1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7Ci0gICAgU3RyaW5nIG1fc3RvcmFnZVBhdGg7CiB9
OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTk3NDg1KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Niw5ICs3Niw5IEBAIHN0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3VudGVk
U2V0KEtleWVkRW4KICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpl
bmNvZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgY29uc3QK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlKEtleWVkRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VP
cmlnaW4iLCBvcmlnaW4pOworICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNv
dXJjZU9yaWdpbiIsIGhpZ2hMZXZlbERvbWFpbik7CiAgICAgCiAgICAgLy8gVXNlciBpbnRlcmFj
dGlvbgogICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNl
ckludGVyYWN0aW9uKTsKQEAgLTEzMCwxNCArMTMwLDExIEBAIHN0YXRpYyB2b2lkIGRlY29kZUhh
c2hDb3VudGVkU2V0KEtleWVkRGUKICAgICB9KTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
bikKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVj
b2RlcikKIHsKLSAgICBTdHJpbmcgc3RvcmVkT3JpZ2luOwotICAgIGlmICghZGVjb2Rlci5kZWNv
ZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgc3RvcmVkT3JpZ2luKSkKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIGhpZ2hM
ZXZlbERvbWFpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBBU1NFUlRfVU5V
U0VEKG9yaWdpbiwgc3RvcmVkT3JpZ2luID09IG9yaWdpbik7Ci0gICAgCiAgICAgLy8gVXNlciBp
bnRlcmFjdGlvbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJoYWRVc2VySW50ZXJhY3Rp
b24iLCBoYWRVc2VySW50ZXJhY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDcs
NCArMzA0LDQ3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZygKICAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K
K3N0YXRpYyB2b2lkIG1lcmdlSGFzaENvdW50ZWRTZXQoSGFzaENvdW50ZWRTZXQ8VD4mIHRvLCBj
b25zdCBIYXNoQ291bnRlZFNldDxUPiYgZnJvbSkKK3sKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDog
ZnJvbSkKKyAgICAgICAgdG8uYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworfQorCit2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlci5oaWdoTGV2ZWxEb21haW4gPT0gaGlnaExl
dmVsRG9tYWluKTsKKworICAgIGhhZFVzZXJJbnRlcmFjdGlvbiB8PSBvdGhlci5oYWRVc2VySW50
ZXJhY3Rpb247CisgICAgCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgdG9wRnJhbWVIYXNC
ZWVuUmVkaXJlY3RlZFRvICs9IG90aGVyLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAg
ICB0b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSArPSBvdGhlci50b3BGcmFtZUhhc0JlZW5S
ZWRpcmVjdGVkRnJvbTsKKyAgICB0b3BGcmFtZUluaXRpYWxMb2FkQ291bnQgKz0gb3RoZXIudG9w
RnJhbWVJbml0aWFsTG9hZENvdW50OworICAgIHRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvICs9
IG90aGVyLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvOworICAgIHRvcEZyYW1lSGFzQmVlbk5h
dmlnYXRlZEZyb20gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsKKyAgICB0
b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUb0JlZm9yZSB8PSBvdGhlci50b3BGcmFtZUhhc0JlZW5O
YXZpZ2F0ZWRUb0JlZm9yZTsKKyAgICAKKyAgICAvLyBTdWJmcmFtZSBzdGF0cworICAgIG1lcmdl
SGFzaENvdW50ZWRTZXQoc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2lucyk7CisgICAgc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRv
ICs9IG90aGVyLnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBzdWJmcmFtZUhhc0Jl
ZW5SZWRpcmVjdGVkRnJvbSArPSBvdGhlci5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsK
KyAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHN1YmZyYW1lVW5pcXVlUmVkaXJlY3RzVG8sIG90aGVy
LnN1YmZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOworICAgIHN1YmZyYW1lU3ViUmVzb3VyY2VDb3Vu
dCArPSBvdGhlci5zdWJmcmFtZVN1YlJlc291cmNlQ291bnQ7CisgICAgc3ViZnJhbWVIYXNCZWVu
TmF2aWdhdGVkVG8gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87CisgICAgc3Vi
ZnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbSArPSBvdGhlci5zdWJmcmFtZUhhc0JlZW5OYXZpZ2F0
ZWRGcm9tOworICAgIHN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZSB8PSBvdGhlci5zdWJmcmFt
ZUhhc0JlZW5Mb2FkZWRCZWZvcmU7CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAg
ICBtZXJnZUhhc2hDb3VudGVkU2V0KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMsIG90
aGVyLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMpOworICAgIHN1YnJlc291cmNlSGFz
QmVlblN1YnJlc291cmNlQ291bnQgKz0gb3RoZXIuc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3Vy
Y2VDb3VudDsKKyAgICBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSArPSBvdGhlci5z
dWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAgICBzdWJyZXNvdXJjZUhhc0JlZW5S
ZWRpcmVjdGVkVG8gKz0gb3RoZXIuc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZFRvOworICAg
IG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgb3RoZXIu
c3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgCisgICAgLy8gUHJldmFsZW50IHJl
c291cmNlIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChyZWRpcmVjdGVkVG9PdGhlclBy
ZXZhbGVudFJlc291cmNlT3JpZ2lucywgb3RoZXIucmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRS
ZXNvdXJjZU9yaWdpbnMpOworICAgIGlzUHJldmFsZW50UmVzb3VyY2UgfD0gb3RoZXIuaXNQcmV2
YWxlbnRSZXNvdXJjZTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSwxNiArMzUsMjcgQEAgY2xhc3MgS2V5ZWREZWNvZGVyOwogY2xhc3MgS2V5ZWRFbmNvZGVyOwog
CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7CisgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyhjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pCisgICAgICAgIDogaGlnaExldmVsRG9t
YWluKHByaW1hcnlEb21haW4pCisgICAgeworICAgIH0KKworICAgIFJlc291cmNlTG9hZFN0YXRp
c3RpY3MoKSA9IGRlZmF1bHQ7CisKICAgICBib29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNv
dXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpOwogCiAgICAgYm9v
bCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaGFzUHJldmFsZW50
UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBjb25zdDsKIAotICAgIHZvaWQgZW5jb2RlKEtleWVk
RW5jb2RlciYsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBjb25zdDsKLSAgICBib29sIGRlY29kZShL
ZXllZERlY29kZXImLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CisgICAgdm9pZCBlbmNvZGUoS2V5
ZWRFbmNvZGVyJikgY29uc3Q7CisgICAgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJik7CiAKICAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIAorICAgIHZvaWQgbWVyZ2UoY29uc3QgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYpOworCisgICAgU3RyaW5nIGhpZ2hMZXZlbERvbWFpbjsKKwogICAg
IC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiB7IGZhbHNl
IH07CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorCisjaW5jbHVkZSAiS2V5ZWRDb2Rp
bmcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjZGVm
aW5lIExPR19TVEFUSVNUSUNTX1RPX0ZJTEUgMAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkK
K3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpOworfQorCitSZWY8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkp
OworfQorICAgIAorUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
KQorICAgIDogbV9zdG9yYWdlUGF0aChyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQor
eworfQorICAgIAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50
UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKSBjb25zdAoreworICAgIGF1dG8g
bWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHByaW1hcnlEb21haW4pOwor
ICAgIGlmIChtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1hcEVudHJ5LT52YWx1ZS5pc1ByZXZhbGVu
dFJlc291cmNlOworfQorICAgIAorUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0
IFN0cmluZyYgcHJpbWFyeURvbWFpbikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVzb3Vy
Y2VTdGF0aXN0aWNzTWFwLmVuc3VyZShwcmltYXJ5RG9tYWluLCBbJnByaW1hcnlEb21haW5dIHsK
KyAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3MocHJpbWFyeURvbWFpbik7Cisg
ICAgfSk7CisKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwordHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OktleVZhbHVlUGFp
clR5cGUgU3RhdGlzdGljc1ZhbHVlOworCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6d3JpdGVEYXRhVG9EaXNrKCkKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6
OmVuY29kZXIoKTsKKyAgICAKKyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0
YXRpc3RpY3MiLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3Rh
dGlzdGljc01hcC5lbmQoKSwgW3RoaXNdKEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBjb25z
dCBTdGF0aXN0aWNzVmFsdWUmIG9yaWdpbikgeworICAgICAgICBvcmlnaW4udmFsdWUuZW5jb2Rl
KGVuY29kZXJJbm5lcik7CisgICAgfSk7CisgICAgCisgICAgd3JpdGVFbmNvZGVyVG9EaXNrKCpl
bmNvZGVyLmdldCgpLCAiZnVsbF9icm93c2luZ19zZXNzaW9uIik7Cit9CisKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmIHBhdGgpCit7CisgICAgbV9zdG9yYWdlUGF0aCA9IHBhdGg7CisgICAgcmVhZERh
dGFGcm9tRGlza0lmTmVlZGVkKCk7Cit9CisKK1N0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnBlcnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdAor
eworICAgIGlmIChtX3N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5
U3RyaW5nKCk7CisKKyAgICAvLyBUT0RPIERlY2lkZSB3aGF0IHRvIGNhbGwgdGhpcyBmaWxlCisg
ICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VQYXRoLCBsYWJlbCAr
ICJfcmVzb3VyY2VMb2cucGxpc3QiKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkZWNvZGVy
ID0gY3JlYXRlRGVjb2RlckZyb21EaXNrKCJmdWxsX2Jyb3dzaW5nX3Nlc3Npb24iKTsKKyAgICBp
ZiAoIWRlY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiBsb2FkZWRTdGF0aXN0aWNzOworICAgIGJvb2wgc3VjY2VlZGVkID0gZGVjb2Rl
ci0+ZGVjb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbG9hZGVkU3RhdGlzdGljcywg
W3RoaXNdKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
JiBzdGF0aXN0aWNzKSB7CisgICAgICAgIHJldHVybiBzdGF0aXN0aWNzLmRlY29kZShkZWNvZGVy
SW5uZXIpOworICAgIH0pOworCisgICAgaWYgKCFzdWNjZWVkZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoYXV0byYgc3RhdGlzdGljcyA6IGxvYWRlZFN0YXRpc3RpY3MpCisgICAgICAg
IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbiwg
c3RhdGlzdGljcyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRGVjb2RlckZyb21EaXNrKGNvbnN0IFN0cmluZyYg
bGFiZWwpIGNvbnN0Cit7CisgICAgU3RyaW5nIHJlc291cmNlTG9nID0gcGVyc2lzdGVudFN0b3Jh
Z2VQYXRoKGxhYmVsKTsKKyAgICBpZiAocmVzb3VyY2VMb2cuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByYXdEYXRhID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2VMb2cpOworICAg
IGlmICghcmF3RGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgcmV0dXJu
IEtleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihy
YXdEYXRhLT5kYXRhKCkpLCByYXdEYXRhLT5zaXplKCkpOworfQorICAgIAordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImIGVu
Y29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Cit7CisjaWYgTE9HX1NUQVRJU1RJQ1Nf
VE9fRklMRQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJhd0RhdGEgPSBlbmNvZGVyLmZpbmlz
aEVuY29kaW5nKCk7CisgICAgaWYgKCFyYXdEYXRhKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgU3RyaW5nIHJlc291cmNlTG9nID0gcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGxhYmVsKTsKKyAg
ICBpZiAocmVzb3VyY2VMb2cuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IW1fc3RvcmFnZVBhdGguaXNFbXB0eSgpKQorICAgICAgICBtYWtlQWxsRGlyZWN0b3JpZXMobV9z
dG9yYWdlUGF0aCk7CisKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHJlc291cmNlTG9nLCBP
cGVuRm9yV3JpdGUpOworICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRh
dGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKKyAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAKKyAg
ICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHJhd0RhdGEtPnNpemUo
KSkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVzb3VyY2VMb2FkU3RhdGlzdGljczogV2Ugb25s
eSB3cm90ZSAlbGxkIG91dCBvZiAlZCBieXRlcyB0byBkaXNrIiwgd3JpdHRlbkJ5dGVzLCByYXdE
YXRhLT5zaXplKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5jb2Rlcik7CisgICAgVU5V
U0VEX1BBUkFNKGxhYmVsKTsKKyNlbmRpZgorfQorCitTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpzdGF0aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKQorewor
ICAgIGF1dG8gaXRlciA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQob3JpZ2luKTsKKyAg
ICBpZiAoaXRlciA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgCisgICAgcmV0dXJuICJTdGF0aXN0aWNzIGZvciAiICsg
b3JpZ2luICsgIjpcbiIgKyBpdGVyLT52YWx1ZS50b1N0cmluZygpOworfQorCitWZWN0b3I8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0YWtlU3Rh
dGlzdGljcygpCit7CisgICAgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRpc3Rp
Y3M7CisgICAgc3RhdGlzdGljcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNl
U3RhdGlzdGljc01hcC52YWx1ZXMoKSkKKyAgICAgICAgc3RhdGlzdGljcy51bmNoZWNrZWRBcHBl
bmQoV1RGTW92ZShzdGF0aXN0aWMpKTsKKworICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNs
ZWFyKCk7CisKKyAgICByZXR1cm4gc3RhdGlzdGljczsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljcyhjb25zdCBWZWN0b3I8UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4mIHN0YXRpc3RpY3MpCit7CisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBz
dGF0aXN0aWNzKSB7CisgICAgICAgIAorICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmVuc3VyZShzdGF0aXN0aWMuaGlnaExldmVsRG9tYWluLCBbJnN0YXRpc3Rp
Y10geworICAgICAgICAgICAgcmV0dXJuIHN0YXRpc3RpYzsKKyAgICAgICAgfSk7CisgICAgICAg
IAorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1lcmdlKHN0YXRpc3RpYyk7CisgICAg
fQorfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0Tm90aWZpY2F0aW9u
Q2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGhhbmRsZXIpCit7CisgICAgbV9kYXRhQWRk
ZWRIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCit7CisgICAgbV9kYXRh
QWRkZWRIYW5kbGVyKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZV9oCisjZGVm
aW5lIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZV9oCisKKyNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgS2V5ZWREZWNv
ZGVyOworY2xhc3MgS2V5ZWRFbmNvZGVyOworY2xhc3MgVVJMOworCitzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljczsKKworY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiB7CitwdWJsaWM6Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
PiBjcmVhdGUoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVEYXRhVG9EaXNrKCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JPcmln
aW4oY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKTsgfQorCisgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihj
b25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJp
bmcmKSBjb25zdDsKKyAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1lcmdlU3RhdGlzdGlj
cyhjb25zdCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKKwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGhhbmRsZXIpOworCisgICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlvbkhh
bmRsZXIoKTsKKworcHJpdmF0ZToKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSA9
IGRlZmF1bHQ7CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgU3RyaW5nIHBlcnNpc3RlbnRT
dG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKKworICAgIHN0ZDo6dW5pcXVl
X3B0cjxLZXllZERlY29kZXI+IGNyZWF0ZURlY29kZXJGcm9tRGlzayhjb25zdCBTdHJpbmcmIGxh
YmVsKSBjb25zdDsKKyAgICB2b2lkIHdyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImLCBj
b25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKKyAgICBTdHJpbmcgbV9z
dG9yYWdlUGF0aDsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9kYXRhQWRkZWRIYW5kbGVy
OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZV9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc0ODUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MTAgQEAKKzIwMTYtMDMtMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dLMl0gR2F0aGVyIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjc4CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8yNDcwMjg5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZXZpc2UgdGhlIFdlYlByb2Nlc3MgdG8gbm90aWZ5IHRoZSBVSVBy
b2Nlc3MgYWJvdXQgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzLiBUaGVzZQorICAgICAgICB1cGRh
dGVzIGFyZSBub3QgdGltZS1jcml0aWNhbCwgYW5kIGRvIG5vdCBuZWVkIHRvIGJlIGRvbmUgaW4g
Y29uY2VydCB3aXRoIHRoZSBhY3R1YWwKKyAgICAgICAgbG9hZC4gQXMgcmVzb3VyY2UgbG9hZHMg
YXJlIG1hZGUsIGVhY2ggV2ViUHJvY2VzcyBub3RpZmllcyB0aGUgVUlQcm9jZXNzIG9mIHRoZSBu
ZXcKKyAgICAgICAgbG9hZCBjb3VudHMsIHRoZW4gY2xlYXJzIGl0cyBsb2NhbCBzdGF0ZS4gVGhl
c2Ugc3RhdGlzdGljcyBhcmUgdGhlbiBhZ2dyZWdhdGVkIGluCisgICAgICAgIHRoZSBVSVByb2Nl
c3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RhdGUgZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmg6IFVwZGF0
ZSB0byBzdXBwb3J0IEhhc2hDb3VudGVkU2V0cy4KKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZTogQWRkIG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmlsZXMgdG8gYnVpbGQuCisg
ICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBsYXRmb3JtTWFj
LmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOiBBZGQgbmV3
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdHlwZS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEV4Y2VwdGlv
bkRldGFpbHM+OjpkZWNvZGUpOiBTdXBwb3J0IG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHR5
cGUuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46
OmVuY29kZSk6IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+OjpkZWNvZGUpOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUpOiBIYW5kbGUgJ3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkJyBmbGFnLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOiBE
aXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoK
KyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24pOiBBZGQgc3RvcmFnZSBsb2NhdGlvbiBmb3IgdGhlCisgICAgICAgIHJlc291cmNl
IGxvYWQgc3RhdGlzdGljcy4KKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Ojpjb3B5KTogSGFuZGxlIHRoZSBuZXcgc3RvcmFnZSBsb2NhdGlvbiBhbmQgdGhlIGZlYXR1cmUg
ZmxhZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6Cisg
ICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KTogQWRkZWQgc3R1Yi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBBZGRl
ZCBzdXBwb3J0IGZvciB0aGUgbmV3IHJlc291cmNlCisgICAgICAgIGxvYWQgc3RhdGlzdGljcyBz
dG9yYWdlIGxvY2F0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWRdKTogQWRkIG1ldGhvZCB0byByZWxheSBzZXR0aW5nIHRvIHVuZGVybHlpbmcKKyAg
ICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3NldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGluaXRdKTogQWRkIGZsYWcgZm9yIHJlc291cmNlIGxvYWQgc3RhdGlzdGlj
cyBzdXBwb3J0LgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9u
ZTpdKTogSGFuZGxlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdXBwb3J0IGZsYWcuCisgICAg
ICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkXSk6IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF9zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dl
YnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXSk6IEFkZGVkLgor
ICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkOl0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRdKTogQWRkZWQuCisg
ICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogQ2hlY2sgdXNlciBzZXR0aW5nIGZvciBzdGF0ZQor
ICAgICAgICBvZiByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgc3VwcG9ydC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6IEhhbmRsZSBuZXcgZmxhZyBmb3IgZW5hYmxpbmcg
cmVzb3VyY2UKKyAgICAgICAgbG9hZCBzdGF0aXN0aWNzLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlVG9EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphcHBsaWNhdGlvbldpbGxU
ZXJtaW5hdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y29yZVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBSZWdpc3RlciBhIHRl
cm1pbmF0aW9uIGhhbmRsZXIKKyAgICAgICAgdG8gY2xvc2UgZG93biB0aGUgcmVzb3VyY2UgbG9h
ZCBzdGF0aXN0aWNzIHN0b3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpw
bGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0
ZURhdGFTdG9yZSk6IEluaXRpYWxpemUgdGhlIG5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUKKyAgICAgICAgbWVtYmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Ojp3ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKTogUmVnaXN0ZXIgdGhlIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBvYmplY3QgYXMgYSB3b3JrIHF1ZXVlIG1lc3Nh
Z2UgcmVjZWl2ZXIKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vz
c0RpZENsb3NlQ29ubmVjdGlvbik6IFVucmVnaXN0ZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSk6IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajogQWRkIG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmlsZXMgdG8gYnVp
bGQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBUYWtlIGludG8gYWNjb3VudCB0
aGUgbmV3IHBhcmFtZXRlcgorICAgICAgICBzcGVjaWZ5aW5nIHdoZXRoZXIgcmVzb3VyY2UgbG9h
ZCBzdGF0aXN0aWNzIGFyZSBiZWluZyBjYXB0dXJlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6V2ViUHJvY2Vzcyk6IEluaXRpYWxpemVkIHN0YXRpc3RpY3MgY2hhbmdlZCBub3RpZmlj
YXRpb24gdGltZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFu
Z2VkVGltZXJGaXJlZCk6IEFkZGVkLiBTZW5kIGJ1bmRsZXMgb2Ygc2l0ZSBsb2FkCisgICAgICAg
IHN0YXRpc3RpY3MgdG8gdGhlIFVJUHJvY2VzcyBvbiBhIHNldCBpbnRlcnZhbC4gQ2xlYXIgb3V0
IGxvY2FsIGNhY2hlIGFmdGVyIGVhY2ggc2VuZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46IEFkZCBuZXcgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgbWVz
c2FnZS4KKwogMjAxNi0wMy0wMSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBVcGRhdGUgdGhlIG1lZGlhIGVsZW1lbnQncyBwcmVzZW50YXRpb24gbW9kZSBwcm9wZXJs
eSBhZnRlciBnb2luZyBpbiBhbmQgb3V0IG9mIGZ1bGwgc2NyZWVuIHZpYSB0aGUgRnVsbCBTY3Jl
ZW4gQVBJCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3NDg1KQorKysgU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY2Nyw2ICs2Njcs
NyBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFVJUHJvY2Vzcy9XZWJQYXN0
ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wubWVz
c2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisgICAg
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbgogICAg
IFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9jZXNz
L0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpJbmRleDogU291cmNl
L1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcgQEAg
TUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViUHJvY2Vzc1Bvb2wgXAogICAgIFdlYlByb2Nl
c3NQcm94eSBcCiAgICAgV2ViUmVzb3VyY2VMb2FkZXIgXAorICAgIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSBcCiAgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKICAgICBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ciBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTk3NDg1KQorKysg
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYg
KzY2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0JhY2tp
bmdTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogICAg
IFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAorICAgIFVJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJ
L0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
R1RLLmNtYWtlCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUdU
Sy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAogICAg
IFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvTGVnYWN5
U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKyAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNvbkRh
dGFiYXNlQ2Fpcm8uY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lv
biAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAg
IFNoYXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0KIAogICAgIFVJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1lbnRD
b2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2RlcnMuaAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
SVBDL0FyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL09w
dGlvblNldC5oPgpAQCAtMzAwLDYgKzMwMSw0NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlBcmcs
IHR5cGVuYW1lIEhhc2hBCiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJnLCB0
eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPEhhc2hDb3VudGVkU2V0PEtleUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPj4geworICAg
IHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8S2V5QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+IEhh
c2hDb3VudGVkU2V0VHlwZTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIYXNoQ291bnRlZFNldFR5cGUmIGhhc2hDb3VudGVkU2V0
KQorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oaGFzaENv
dW50ZWRTZXQuc2l6ZSgpKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6IGhh
c2hDb3VudGVkU2V0KSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGVudHJ5LmtleTsKKyAgICAg
ICAgICAgIGVuY29kZXIgPDwgZW50cnkudmFsdWU7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSGFzaENvdW50
ZWRTZXRUeXBlJiBoYXNoQ291bnRlZFNldCkKKyAgICB7CisgICAgICAgIHVpbnQ2NF90IGhhc2hD
b3VudGVkU2V0U2l6ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNoQ291bnRlZFNl
dFNpemUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgSGFz
aENvdW50ZWRTZXRUeXBlIHRlbXBIYXNoQ291bnRlZFNldDsKKyAgICAgICAgZm9yICh1aW50NjRf
dCBpID0gMDsgaSA8IGhhc2hDb3VudGVkU2V0U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBLZXlB
cmcga2V5OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShrZXkpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5zaWduZWQg
Y291bnQ7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvdW50KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghdGVt
cEhhc2hDb3VudGVkU2V0LmFkZChrZXksIGNvdW50KS5pc05ld0VudHJ5KSB7CisgICAgICAgICAg
ICAgICAgLy8gVGhlIGhhc2ggY291bnRlZCBzZXQgYWxyZWFkeSBoYXMgdGhlIHNwZWNpZmllZCBr
ZXksIGJhaWwuCisgICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgaGFzaENvdW50ZWRTZXQuc3dhcCh0ZW1wSGFzaENvdW50ZWRTZXQpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3Qgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXImLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50Jik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAkocmV2
aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
b2xsaW5nQ29uc3RyYWludHMuaD4KQEAgLTIwNDQsNCArMjA0NSwxMjUgQEAgYm9vbCBBcmd1bWVu
dENvZGVyPEV4Y2VwdGlvbkRldGFpbHM+OjpkZQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lk
IEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZShBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0
YXRpc3RpY3MpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbjsK
KyAgICAKKyAgICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNz
LmhhZFVzZXJJbnRlcmFjdGlvbjsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmU7Cisg
ICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAg
ICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207Cisg
ICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSW5pdGlhbExvYWRDb3VudDsKKyAgICBl
bmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87CisgICAgZW5j
b2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAgCisg
ICAgLy8gU3ViZnJhbWUgc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJhbWVI
YXNCZWVuTG9hZGVkQmVmb3JlOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZUhh
c0JlZW5SZWRpcmVjdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFz
QmVlblJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZVN1
YlJlc291cmNlQ291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnM7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5pcXVl
UmVkaXJlY3RzVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5h
dmlnYXRlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5OYXZp
Z2F0ZWRGcm9tOworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCisgICAgZW5jb2RlciA8
PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29k
ZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgZW5j
b2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQ7Cisg
ICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291
bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQ7CisgICAgZW5jb2RlciA8PCBz
dGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnM7CisgICAgZW5jb2RlciA8
PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87CisgICAgCisgICAgLy8g
UHJldmFsZW50IFJlc291cmNlCisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnJlZGlyZWN0ZWRU
b090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGlj
cy5pc1ByZXZhbGVudFJlc291cmNlOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MpCit7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZy
YW1lSGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3Rl
ZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSW5pdGlhbExvYWRDb3VudCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJh
bWVIYXNCZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZy
b20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3ViZnJhbWUgc3RhdHMK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTG9hZGVk
QmVmb3JlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8pKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1
YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZVN1YlJlc291cmNl
Q291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJh
bWVVbmlxdWVSZWRpcmVjdHNUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG8p
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb20pKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb20pKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0
aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VI
YXNCZWVuU3VicmVzb3VyY2VDb3VudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVz
b3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Mu
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1ZVJl
ZGlyZWN0c1RvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIFByZXZhbGVu
dCBSZXNvdXJjZQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5yZWRpcmVjdGVk
VG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucykpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRSZXNv
dXJjZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworCiB9IC8vIG5hbWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
MCw2ICs4MCw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2FyZFdl
YkNvbnRlbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBSZWNlbnRTZWFyY2g7CitzdHJ1
Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFtZXRl
cnM7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0IFRleHRJbmRpY2F0b3JEYXRh
OwpAQCAtNDU1LDYgKzQ1NiwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIElQQwogCiAj
aWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE5
NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IHNob3VsZEVu
YWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZzsKICAgICBlbmNvZGVyIDw8IHNob3VsZFN1
cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkVXNlRm9u
dFNtb290aGluZzsKKyAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
OwogICAgIGVuY29kZXIgPDwgZm9udFdoaXRlbGlzdDsKICAgICBlbmNvZGVyIDw8IGljb25EYXRh
YmFzZUVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZXdyaXRlQ29uc3RBc1ZhcjsKQEAg
LTIxMyw2ICsyMTQsOCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2hvdWxkVXNlRm9udFNtb290aGluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmZvbnRXaGl0ZWxpc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQpKQpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNyw2ICsx
MDcsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9vbCBz
aG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmc7CiAgICAgYm9vbCBzaG91bGRT
dXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91bGRV
c2VGb250U21vb3RoaW5nOworICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQg
eyBmYWxzZSB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gZm9udFdoaXRlbGlzdDsKIApJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCShyZXZpc2lvbiAxOTc0ODUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzgsNiArMTM4LDcgQEAgcHVibGljOgogICAgICAgICBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24s
CiAgICAgICAgIFBsdWdpblNpdGVEYXRhTWFuYWdlciwKICAgICAgICAgUHJlZmVyZW5jZXMsCisg
ICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwKICAgICAgICAgUnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3JpcHRBbGVy
dFJlc3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExpc3Rl
bmVyLApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDYgKzU5LDcgQEAK
ICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9y
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CkBAIC01ODIsNiArNTgzLDcgQEAgV2ViUHJvY2Vzc1By
b3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogCiAgICAgcGFyYW1ldGVycy5zaG91bGRBbHdh
eXNVc2VDb21wbGV4VGV4dENvZGVQYXRoID0gbV9hbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0
aDsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSBtX3Nob3VsZFVzZUZv
bnRTbW9vdGhpbmc7CisgICAgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCA9IG1fY29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKIAog
ICAgIC8vIEZJWE1FOiBUaGlzIGxlYXZlcyBVSSBwcm9jZXNzIGFuZCBXZWJQcm9jZXNzIGRpc2Fn
cmVlaW5nIGFib3V0IHRoZSBzdGF0ZSBpZiB0aGUgY2xpZW50IGhhc24ndCBzZXQgdGhlIHBhdGgu
CiAgICAgLy8gaWNvbkRhdGFiYXNlUGF0aCBpcyBub24tZW1wdHkgYnkgZGVmYXVsdCwgYnV0IG1f
aWNvbkRhdGFiYXNlIGlzbid0IGVuYWJsZWQgaW4gVUkgcHJvY2VzcyB1bmxlc3Mgc2V0RGF0YWJh
c2VQYXRoIGlzIGNhbGxlZCBleHBsaWNpdGx5LgpAQCAtOTcxLDYgKzk3MywyMSBAQCB2b2lkIFdl
YlByb2Nlc3NQb29sOjpzZXREZWZhdWx0UmVxdWVzdFRpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCh0
aW1lb3V0SW50ZXJ2YWwpKTsKIH0KIAorYm9vbCBXZWJQcm9jZXNzUG9vbDo6cmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoKQoreworICAgIEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUtPndl
YnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKS0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoKSA9PSBtX2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkKCkpOworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2NvbmZp
Z3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworICAg
IGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+d2Vi
c2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpLT5zZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKworICAgIHNlbmRUb0FsbFByb2Nlc3Nl
cyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
ZW5hYmxlZCkpOworfQorCiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlRG93
bmxvYWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJu
IGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuY3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lvbiAx
OTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIw
MTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTEsNiArMjExLDggQEAgcHVibGljOgogICAg
IENhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+
Y2FjaGVNb2RlbCgpOyB9CiAKICAgICB2b2lkIHNldERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVy
dmFsKGRvdWJsZSk7CisgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOwor
ICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CiAKICAgICB2
b2lkIHN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBkb3VibGUgaW50ZXJ2YWwpOwogICAgIHZvaWQg
c3RvcE1lbW9yeVNhbXBsZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCIKKworI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
TWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1JlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpOworfQorCitXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCisgICAgOiBt
X3Jlc291cmNlU3RhdGlzdGljc1N0b3JlKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y3JlYXRlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpKQoreworfQorCitX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoKQoreworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiBvcmlnaW5zKQoreworICAgIGNvcmVTdG9yZSgpLm1lcmdlU3RhdGlz
dGljcyhvcmlnaW5zKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBp
ZiAoZW5hYmxlZCA9PSBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZW5hYmxlZDsK
KworICAgIHJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOworfQorCitib29sIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25z
dAoreworICAgIHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOworfQorCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lmTmVl
ZGVkKCkKK3sKKyAgICBpZiAoIW1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGNvcmVTdG9yZSgpLnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgp
OworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVUb0Rpc2so
KQoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIGNvcmVTdG9yZSgpLndyaXRlRGF0YVRvRGlzaygpOworfQorCit2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXBwbGljYXRpb25XaWxsVGVybWlu
YXRlKCkKK3sKKyAgICBpZiAoIW1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FKDE1NDY0Mik6IFRFTVBPUkFSWSBDT0RFOiBUaGlz
IHNob3VsZCBub3QgYmUgZG9uZSBpbiBvbmUgbG9uZyBvcGVyYXRpb24gd2hlbiBleGl0aW5nLgor
ICAgIHdyaXRlVG9EaXNrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmVfaAorI2RlZmluZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVfaAorCisjaW5jbHVk
ZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CisKK2Ns
YXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA6IHB1YmxpYyBJUEM6OkNvbm5lY3Rp
b246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKTsKKyAgICAKKyAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOworICAgIGJvb2wgcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiYgb3JpZ2lucyk7CisKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1p
bmF0ZSgpOworCisgICAgdm9pZCB3cml0ZVRvRGlzaygpOworICAgIHZvaWQgcmVhZERhdGFGcm9t
RGlza0lmTmVlZGVkKCk7CisKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mKTsKKworICAgIFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgY29yZVN0b3JlKCkgeyByZXR1cm4gbV9yZXNvdXJjZVN0
YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAgIAor
ICAgIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fcmVzb3VyY2VT
dGF0aXN0aWNzU3RvcmU7CisgICAgYm9vbCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
IHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCittZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgeworICAgIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiBvcmlnaW5zKQorfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkocmV2
aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSw2ICs2MSw3IEBAIFByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb24KICAgICAsIG1fbG9jYWxTdG9yYWdl
RGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KSkKICAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpCiAgICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkoKSkKKyAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQogewogfQog
CkBAIC04Myw5ICs4NCwxMSBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNz
UG9vCiAgICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSB0
aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV93ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAgY29w
eS0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gdGhpcy0+bV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIGNvcHktPm1fY2FjaGVQYXJ0aXRpb25lZFVSTFNj
aGVtZXMgPSB0aGlzLT5tX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1f
YWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9hbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZXM7CiAgICAgY29weS0+bV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRl
c3RpbmcgPSB0aGlzLT5tX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZzsK
KyAgICBjb3B5LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gdGhpcy0+bV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKICAgICBjb3B5LT5tX292ZXJyaWRlTGFuZ3VhZ2Vz
ID0gdGhpcy0+bV9vdmVycmlkZUxhbmd1YWdlczsKICAgICAKICAgICByZXR1cm4gY29weTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5c1N0b3JhZ2VE
aXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoY29uc3Qg
V1RGOjpTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpIHsgbV9tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5ID0gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQogCisgICAgY29uc3Qg
V1RGOjpTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpIHsgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5ID0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQorCiAgICAgY29uc3QgVmVj
dG9yPFdURjo6U3RyaW5nPiYgY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoKSB7IHJldHVybiBt
X2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOyB9CiAgICAgdm9pZCBzZXRDYWNoZVBhcnRpdGlv
bmVkVVJMU2NoZW1lcyhWZWN0b3I8V1RGOjpTdHJpbmc+JiYgY2FjaGVQYXJ0aXRpb25lZFVSTFNj
aGVtZXMpIHsgbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IFdURk1vdmUoY2FjaGVQYXJ0
aXRpb25lZFVSTFNjaGVtZXMpOyB9CiAKQEAgLTg2LDYgKzg5LDkgQEAgcHVibGljOgogICAgIGJv
b2wgZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1
cm4gbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3Rpbmc7IH0KICAgICB2b2lk
IHNldEZ1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZyhib29sIGFsbG93ZWQp
IHsgbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcgPSBhbGxvd2VkOyB9
CiAKKyAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9CisKICAgICBjb25zdCBWZWN0b3I8V1RGOjpTdHJp
bmc+JiBvdmVycmlkZUxhbmd1YWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVMYW5ndWFn
ZXM7IH0KICAgICB2b2lkIHNldE92ZXJyaWRlTGFuZ3VhZ2VzKFZlY3RvcjxXVEY6OlN0cmluZz4m
JiBsYW5ndWFnZXMpIHsgbV9vdmVycmlkZUxhbmd1YWdlcyA9IFdURk1vdmUobGFuZ3VhZ2VzKTsg
fQogCkBAIC0xMDMsOSArMTA5LDExIEBAIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9sb2Nh
bFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeTsKICAgICBXVEY6OlN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAg
V1RGOjpTdHJpbmcgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIFZlY3Rv
cjxXVEY6OlN0cmluZz4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBWZWN0b3I8
V1RGOjpTdHJpbmc+IG1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwogICAgIGJvb2wgbV9m
dWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcgeyBmYWxzZSB9OworICAgIGJv
b2wgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgVmVjdG9y
PFdURjo6U3RyaW5nPiBtX292ZXJyaWRlTGFuZ3VhZ2VzOwogfTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCShy
ZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjAsNiArMTIwLDEyIEBAIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZEQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9
CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4gU3Ry
aW5nKCk7Cit9CisKICNlbmRpZgogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMTk3NDg1KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVs
dExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKIAogcHJpdmF0ZToKICAgICBXZWJzaXRlRGF0YVN0b3Jl
KFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNp
dGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTc3LDYgKzc3LDExIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2Vi
U1FMRGEKICAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50
YXRpb24oIldlYlNRTCIpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyIpOworfQorCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewogICAgIHN0
YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwpAQCAtMTQzLDYgKzE0OCw3IEBAIFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiAKICAgICBjb25maWd1cmF0aW9uLndl
YlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7
CiAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxT
dG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1
cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsy
NjksMTYgQEAgLSAodm9pZClfc2V0QXV0b21hdGlvbkRlbGVnYXRlOihpZCA8X1dLQQogICAgIF9w
cm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktpdDo6
QXV0b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0b21hdGlvbkRlbGVnYXRlKSk7CiB9CiAKKy0gKEJP
T0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCit7CisgICAgcmV0dXJuIF9wcm9jZXNz
UG9vbC0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKK30KKworLSAodm9pZClfc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIF9wcm9j
ZXNzUG9vbC0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisK
IC0gKHZvaWQpX3dhcm1Jbml0aWFsUHJvY2VzcwogewogICAgIF9wcm9jZXNzUG9vbC0+d2FybUlu
aXRpYWxQcm9jZXNzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTc0ODUp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKIAogQHByb3BlcnR5IChub25h
dG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9h
ZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFr
LCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdh
dGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19U
QkEpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBXS19BVkFJ
TEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAKICsgKE5TVVJMICopX3dlYnNpdGVEYXRh
VVJMRm9yQ29udGFpbmVyV2l0aFVSTDooTlNVUkwgKiljb250YWluZXJVUkw7CiArIChOU1VSTCAq
KV93ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFpbmVyVVJM
IGJ1bmRsZUlkZW50aWZpZXJJZk5vdEluQ29udGFpbmVyOihOU1N0cmluZyAqKWJ1bmRsZUlkZW50
aWZpZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAxOTc0ODUpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV0tQcm9j
ZXNzUG9vbC5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbXBvcnQg
IldLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJXS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgogI2ltcG9ydCAiX1dL
VmlzaXRlZExpbmtQcm92aWRlci5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUludGVy
bmFsLmgiCkBAIC05Nyw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgQk9PTCBfYWxsb3dzSmF2YVNj
cmlwdE1hcmt1cDsKICAgICBCT09MIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHk7CiAgICAg
Qk9PTCBfYWxsb3dzTWV0YVJlZnJlc2g7CisgICAgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQ7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgTGF6eUluaXRpYWxpemVkPFJldGFp
blB0cjxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeT4+IF9jb250ZW50UHJvdmlkZXJS
ZWdpc3RyeTsKQEAgLTE1MSw2ICsxNTMsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAgIF9h
bGxvd3NKYXZhU2NyaXB0TWFya3VwID0gWUVTOwogICAgIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVP
bkNvcHkgPSBOTzsKICAgICBfYWxsb3dzTWV0YVJlZnJlc2ggPSBZRVM7CisgICAgX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkID0gTk87CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTIz
Miw2ICsyMzUsNyBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25m
aWd1cmF0aW9uLT5fYWxsb3dzSmF2YVNjcmlwdE1hcmt1cCA9IHNlbGYtPl9hbGxvd3NKYXZhU2Ny
aXB0TWFya3VwOwogICAgIGNvbmZpZ3VyYXRpb24tPl9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNv
cHkgPSBzZWxmLT5fY29udmVydHNQb3NpdGlvblN0eWxlT25Db3B5OwogICAgIGNvbmZpZ3VyYXRp
b24tPl9hbGxvd3NNZXRhUmVmcmVzaCA9IHNlbGYtPl9hbGxvd3NNZXRhUmVmcmVzaDsKKyAgICBj
b25maWd1cmF0aW9uLT5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBzZWxmLT5fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgY29u
ZmlndXJhdGlvbi0+X2FsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBzZWxmLT5fYWxsb3dzSW5s
aW5lTWVkaWFQbGF5YmFjazsKQEAgLTQ5Niw2ICs1MDAsMTggQEAgLSAodm9pZClfc2V0QWxsb3dz
TWV0YVJlZnJlc2g6KEJPT0wpYWxsbwogICAgIF9hbGxvd3NNZXRhUmVmcmVzaCA9IGFsbG93c01l
dGFSZWZyZXNoOwogfQogCistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAor
eworICAgIEFTU0VSVChzZWxmLndlYnNpdGVEYXRhU3RvcmUuX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkID09IF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CisgICAgcmV0dXJu
IF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKK30KKworLSAodm9pZClfc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIHNlbGYud2Vic2l0
ZURhdGFTdG9yZS5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOworICAg
IF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKICNpZiBQTEFU
Rk9STShJT1MpCiAtIChCT09MKV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDE5NzQ4NSkK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJh
dGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSw2ICs0OSw3IEBACiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NKYXZhU2NyaXB0TWFya3VwOikgQk9PTCBf
YWxsb3dzSmF2YVNjcmlwdE1hcmt1cCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RC
QSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDb252ZXJ0c1Bvc2l0aW9uU3R5
bGVPbkNvcHk6KSBCT09MIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHkgV0tfQVZBSUxBQkxF
KFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0QWxsb3dzTWV0YVJlZnJlc2g6KSBCT09MIF9hbGxvd3NNZXRhUmVmcmVzaCBXS19BVkFJTEFC
TEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVy
PV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIEJPT0wgX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKIAog
I2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFs
d2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTopIEJPT0wgX2Fsd2F5c1J1bnNBdEZvcmVncm91
bmRQcmlvcml0eSBXS19BVkFJTEFCTEUoTkEsIDlfMCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQko
cmV2aXNpb24gMTk3NDg1KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lt
cG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwu
aCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCAi
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKQEAg
LTE2NCw2ICsxNjUsMTYgQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KFdLX1NF
VAogICAgIH0pOwogfQogCistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZAor
eworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgp
OworfQorCistICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDooQk9PTCll
bmFibGVkCit7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoZW5hYmxlZCk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUlu
dGVnZXIsIF9XS1dlYnNpdAogCiAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczooV0tf
U0VUKE5TU3RyaW5nICopICopZGF0YVR5cGVzIHdpdGhPcHRpb25zOihfV0tXZWJzaXRlRGF0YVN0
b3JlRmV0Y2hPcHRpb25zKW9wdGlvbnMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLX0FS
UkFZKFdLV2Vic2l0ZURhdGFSZWNvcmQgKikgKikpY29tcGxldGlvbkhhbmRsZXI7CiAKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
OikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdLX01B
Q19UQkEsIFdLX0lPU19UQkEpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAxOTc0ODUpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgx
MF8xMCwgOF8wKQogQHByb3BlcnR5IChub25hdG9taWMpIE5TSW50ZWdlciBkaXNrQ2FjaGVTaXpl
T3ZlcnJpZGUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIE5TQXJyYXkgKmNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOwogQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIFdLX0FSUkFZKE5TU3RyaW5nICopICphbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworQHByb3BlcnR5
IChub25hdG9taWMpIEJPT0wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtODIsNiArODIsMTYgQEAgLSAodm9pZClzZXREaXNrQ2FjaGVTaXplT3ZlcnJp
ZGU6KE5TSW50ZQogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldERpc2tDYWNoZVNp
emVPdmVycmlkZShzaXplKTsKIH0KIAorLSAoQk9PTClyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZAoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCgpOworfQorCistICh2b2lkKXNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKK30KKwogLSAo
TlNBcnJheSAqKWNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzCiB7CiAgICAgYXV0byBzY2hlbWVz
ID0gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMo
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0FQSVdlYnNpdGVEYXRh
U3RvcmVFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL0FQSVdlYnNpdGVEYXRhU3RvcmVFZmwuY3BwCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9BUElXZWJzaXRlRGF0YVN0b3JlRWZsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMTEgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRXZWJTUUxEYQogICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiV2ViS2l0RWZsIiBFSU5BX1BBVEhfU0VQX1MgIkRhdGFiYXNlcyIp
OwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViS2l0RWZsIiBFSU5BX1BBVEhfU0VQX1MgIlJlc291cmNl
TG9hZFN0YXRpc3RpY3MiKTsKK30KKwogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hlRGly
ZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFt
ZSkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0cmlu
Zzo6ZnJvbVVURjgoZWZyZWV0X2NhY2hlX2hvbWVfZ2V0KCkpLCBkaXJlY3RvcnlOYW1lKTsKQEAg
LTg3LDYgKzkyLDcgQEAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIAog
ICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBkZWZhdWx0V2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVj
dG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9u
Lm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVj
dG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSA9IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAKICAgICByZXR1
cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL0FQSVdlYnNpdGVEYXRhU3RvcmVHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL0FQSVdlYnNpdGVEYXRhU3RvcmVHdGsuY3BwCShyZXZpc2lv
biAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJzaXRl
RGF0YVN0b3JlR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAgU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYQogICAgIHJldHVybiB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigid2Via2l0Z3RrIiBHX0RJUl9TRVBB
UkFUT1JfUyAiZGF0YWJhc2VzIik7CiB9CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdlYnNp
dGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJ3ZWJraXRndGsiIEdfRElS
X1NFUEFSQVRPUl9TICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKIFN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25z
dCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGdfZ2V0X3VzZXJfY2Fj
aGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKQEAgLTg1LDYgKzkwLDcgQEAgV2ViS2l0OjpXZWJz
aXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIAogICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnkgPSBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBj
b25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VE
aXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnkg
PSBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24u
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9v
bENvY29hLm1tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODUsNyArODUsNyBA
QCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXROZXR3b3JrQ2FjCiAjZW5kaWYKIAogc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXJE
ZWZhdWx0c0tleSA9IEAiV2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIiOwotCitz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZERlZmF1bHRzS2V5ID0gQCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCI7CiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogTlNTdHJpbmcgKlNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVnaXN0ZXJl
ZE5vdGlmaWNhdGlvbk5hbWUgPSBAIldlYktpdFNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVnaXN0
ZXJlZE5vdGlmaWNhdGlvbiI7CkBAIC0xNzgsNiArMTc4LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGxhdGZvcm1Jbml0aWFsaXplVwogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlRlRMSklU
ID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0SlNDRlRMSklURW5hYmxlZERlZmF1bHRzS2V5
XTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2lu
ZyA9IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiTG9nTWVtb3J5SmV0c2FtRGV0YWlscyJdOwogICAg
IHBhcmFtZXRlcnMuc2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBbZGVmYXVs
dHMgYm9vbEZvcktleTpXZWJLaXRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlckRlZmF1bHRz
S2V5XTsKKyAgICBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gW2Rl
ZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWREZWZh
dWx0c0tleV07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgcGFyYW1ldGVycy5zaG91bGRSZXdy
aXRlQ29uc3RBc1ZhciA9IGFwcGxpY2F0aW9uSXNJQm9va3MoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEsOCBA
QAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9yYWdl
TWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFiYXNlVHJhY2tlci5oPgpAQCAtNzcsNiArNzksNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpX
ZWJzaXRlRGF0YVN0b3JlKENvbmZpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdU
Rk1vdmUoY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkpCiAgICAgLCBtX21l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkpKQogICAgICwgbV9zdG9yYWdlTWFuYWdlcihTdG9yYWdlTWFuYWdlcjo6
Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSkKKyAg
ICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSkpKQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldl
YktpdC5XZWJzaXRlRGF0YVN0b3JlIikpCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBA
IC05NzYsNiArOTc5LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNzV2lsbE9w
ZQogewogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyKQogICAgICAgICBtX3N0b3JhZ2VNYW5hZ2Vy
LT5wcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHdlYlByb2Nlc3NQcm94eSwgY29ubmVjdGlvbik7
CisKKyAgICBjb25uZWN0aW9uLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICZt
X3F1ZXVlLmdldCgpLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCkpOwogfQogCiB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OndlYlBhZ2VXaWxsT3BlbkNvbm5lY3Rpb24oV2ViUGFnZVByb3h5
JiB3ZWJQYWdlUHJveHksIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTk5Miw2ICs5
OTcsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OndlYlBhZ2VEaWRDbG9zZUNvCiAKIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNz
UHJveHkmIHdlYlByb2Nlc3NQcm94eSwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewor
ICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisK
ICAgICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgbV9zdG9yYWdlTWFuYWdlci0+cHJv
Y2Vzc0RpZENsb3NlQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIGNvbm5lY3Rpb24pOwogfQpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU3RvcmFnZU1hbmFnZXI7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlv
bjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IFdlYnNpdGVEYXRhUmVjb3Jk
OwpAQCAtNjMsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICAg
ICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIFN0cmluZyByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIH07CiAgICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgc3RhdGljIFJlZjxXZWJz
aXRlRGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJhdGlvbik7CkBAIC04MCw2ICs4Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGNv
bnN0IFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNv
bXBsZXRpb25IYW5kbGVyKTsKIAogICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdlcigp
IHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KKyAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpIHsgcmV0dXJuIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTExNiw2ICsxMTksNyBA
QCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5Owog
ICAgIGNvbnN0IFN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29uc3Qg
UmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOworICAgIGNvbnN0IFJlZlB0
cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
czsKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiB9OwpJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUu
aCIKIAogI2ltcG9ydCAiU3RvcmFnZU1hbmFnZXIuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVDb2Nv
YS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYxLDExICs2MiwxNCBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtSW5pdGlhbGl6CiAgICAgICAgIHRlcm1p
bmF0aW9uT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFk
ZE9ic2VydmVyRm9yTmFtZTpub3RpZmljYXRpb25OYW1lIG9iamVjdDpuaWwgcXVldWU6bmlsIHVz
aW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90ZSkgewogICAgICAgICAgICAgZm9yIChhdXRv
JiBkYXRhU3RvcmUgOiBkYXRhU3RvcmVzV2l0aFN0b3JhZ2VNYW5hZ2VycygpKQogICAgICAgICAg
ICAgICAgIGRhdGFTdG9yZS0+bV9zdG9yYWdlTWFuYWdlci0+YXBwbGljYXRpb25XaWxsVGVybWlu
YXRlKCk7CisKKyAgICAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+YXBwbGljYXRp
b25XaWxsVGVybWluYXRlKCk7CiAgICAgICAgIH1dOwogICAgIH0KIAogICAgIEFTU0VSVCghZGF0
YVN0b3Jlc1dpdGhTdG9yYWdlTWFuYWdlcnMoKS5jb250YWlucyh0aGlzKSk7CiAgICAgZGF0YVN0
b3Jlc1dpdGhTdG9yYWdlTWFuYWdlcnMoKS5hcHBlbmQodGhpcyk7CisgICAgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzLT5yZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpwbGF0Zm9ybURlc3Ryb3koKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk3NDg1KQor
KysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDQwLDYgKzEwNDAsOSBAQAogCQk3NUE4RDJFMTE4N0RFQzFBMDBDMzlD
OUUgLyogQVBJU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzVBOEQyREUxODdERTg3NDAwQzM5QzlFIC8qIEFQSVNlc3Npb24uaCAqLzsgfTsK
IAkJNzVBOEQyRTIxODdERUMxRTAwQzM5QzlFIC8qIEFQSVNlc3Npb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyREQxODdERTg3NDAwQzM5
QzlFIC8qIEFQSVNlc3Npb24uY3BwICovOyB9OwogCQk3NjJCNzQ4RDEyMEJDNzVDMDA4MTkzMzkg
LyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVu
Y2VzUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTdBNzkx
RUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3
OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1l
c3NhZ2VzLmggKi87IH07CisJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi87IH07CiAJCTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFFMiAv
KiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9y
bWF0aW9uLmNwcCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2lu
SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxMzVBQUMx
NzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQUExNzNCMENGRjAwNTg2QUUy
IC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tICovOyB9OwpAQCAtMzA0MSw2ICszMDQ0LDEyIEBA
CiAJCTc1QThEMkRFMTg3REU4NzQwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFQSVNlc3Npb24uaDsgcGF0aCA9IFVJUHJvY2Vzcy9BUEkv
QVBJU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTc2MkI3NDgxMTIw
QkJBMDEwMDgxOTMzOSAvKiBGb250U21vb3RoaW5nTGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRm9udFNtb290aGluZ0xldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2VzUmVm
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTc5MUVGODFDN0NGQjEw
MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E3OTFFRjkxQzdD
RkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNl
aXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworICAgICAgICAKKwkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJN0MwQkI5QTgxOERDREU4OTAwMDZDMDg2IC8qIFdlYkNvbnRlbnQtaU9TLmVudGl0bGVt
ZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQueG1sOyBwYXRoID0gIldlYkNvbnRlbnQtaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdDMEJCOUE5MThEQ0RGNUEwMDA2QzA4NiAvKiBOZXR3b3JrLWlP
Uy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9ICJOZXR3b3JrLWlPUy5lbnRpdGxlbWVudHMiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyogV0tQ
bHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU3OTgsNiArNTgwNyw5IEBACiAJCQkJODZFNjdBMjIxOTBGNDExODAwMDA0QUI3IC8qIFByb2Nl
c3NUaHJvdHRsZXIuY3BwICovLAogCQkJCTg2RTY3QTIxMTkwRjQxMTgwMDAwNEFCNyAvKiBQcm9j
ZXNzVGhyb3R0bGVyLmggKi8sCiAJCQkJODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nl
c3NUaHJvdHRsZXJDbGllbnQuaCAqLywKKwkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyog
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKKwkJCQk3QTlDRDhDMTFDNzc5
ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCisJCQkJ
N0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9u
c2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8qIFJl
c3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1MUE0RDVBODE2Q0FDNEZGMDAwRTYxNUUgLyog
U3RhdGlzdGljc1JlcXVlc3QuY3BwICovLApAQCAtNjgxOSw2ICs2ODMxLDggQEAKIAkJCQkxQUMx
MzM4NDE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5oICov
LAogCQkJCTBGNTk0N0E1MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEY1OTQ3QTYxODdCNTE3NjAwNDM3ODU3
IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLywKKwkJCQk3QTc5MUVG
OTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLywKIAkJCQlFMThFNjkxMTE2OUI2
NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJCUUx
OEU2OTEyMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggKi8sCiAJCQkJ
RTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwICovLApAQCAtNzQzMCw2ICs3NDQ0LDcgQEAKIAkJCQkxQTBFQzc1RTEyNEJDN0IyMDA3
RUY0QTUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0M0I1
RTEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBMDQzREMxMTI0RkY4NzUwMEZGQkZCNSAvKiBQbHVnaW5Qcm94eS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThFRkE3
MTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE0QTlGMzMxMkI4NDRFMjAwOEZFOTg0IC8qIFBsdWdpblF1aXJrcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0NENjIyNzgxNzM5RDg2MzAwNUJEN0ZGIC8qIFBsdWdpblNhbmRib3hQcm9m
aWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTg4NDAsNiArODg1NSw3IEBACiAJCQkJMUEyRDg0QTQx
MjdGNkFEMTAwMUVCOTYyIC8qIE5QVmFyaWFudERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM4QUNBMTQxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDQ0Y2NzMzMTJDN0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzM4NzQzNDE3MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1QzA1MkYyNjFDNkQzQkQzMDA3NkU5MTkgLyogQXV0aGVudGljYXRpb25N
YW5hZ2VyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzZEMzdGQzE3MkY1NTVGMDA5RDI4
NDcgLyogUGFnZUJhbm5lck1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtOTIxOSw2ICs5MjM1LDcg
QEAKIAkJCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYwQzU3QTEyNDBBNTQ2MDA4QzVFMjkgLyogV0tCdW5k
bGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzE0REY5RTEyMEI2MzVGMDA4
MjZDMEMgLyogV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTc5
MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3dubG9h
ZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUY1MTI0RkYwMjcwMDY4RjIwQSAvKiBX
S0NlcnRpZmljYXRlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzYyODEyNEZGMDQw
MDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0gaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTk3NDg1
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIw
MTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA5LTIwMTAsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCw3IEBACiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtODYsNiArODcsOSBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lvbk1h
bmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KQEAgLTE2NSw5ICsxNjksMTEgQEAgV2ViUHJvY2Vzczo6V2ViUHJv
Y2VzcygpCiAgICAgLCBtX2hhc1JpY2hDb250ZW50U2VydmljZXMoZmFsc2UpCiAjZW5kaWYKICAg
ICAsIG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXIoKnRoaXMsICZXZWJQcm9jZXNzOjpu
b25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKQorICAgICwgbV9zdGF0aXN0aWNzQ2hh
bmdlZFRpbWVyKCp0aGlzLCAmV2ViUHJvY2Vzczo6c3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVk
KQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKCp0
aGlzKQogI2VuZGlmCisgICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yYWdlKFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCkpCiB7CiAgICAgLy8gSW5p
dGlhbGl6ZSBvdXIgcGxhdGZvcm0gc3RyYXRlZ2llcy4KICAgICBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmluaXRpYWxpemUoKTsKQEAgLTE5Nyw2ICsyMDMsMTQgQEAgV2ViUHJvY2Vzczo6V2ViUHJv
Y2VzcygpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkuc2V0
U2hvdWxkQ2xlYXJCYWNraW5nU3RvcmVzKHRydWUpOwogI2VuZGlmCisKKyAgICBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzU3RvcmUobV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmFnZS5jb3B5UmVmKCkpOworICAgIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JhZ2UtPnNldE5vdGlmaWNhdGlvbkNhbGxiYWNrKFt0aGlzXSB7CisgICAgICAg
IGlmIChtX3N0YXRpc3RpY3NDaGFuZ2VkVGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgCisgICAgICAgIG1fc3RhdGlzdGljc0NoYW5nZWRUaW1lci5zdGFydE9u
ZVNob3Qoc3RkOjpjaHJvbm86OnNlY29uZHMoNSkpOworICAgIH0pOwogfQogCiBXZWJQcm9jZXNz
Ojp+V2ViUHJvY2VzcygpCkBAIC0zMjAsNiArMzM0LDggQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0
aWFsaXplV2ViUHJvY2VzcyhXZQogCiAgICAgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2
YWwocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbCk7CiAKKyAgICBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKTsKKwogICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEFsd2F5c1VzZUNvbXBs
ZXhUZXh0Q29kZVBhdGgpCiAgICAgICAgIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRo
KHRydWUpOwogCkBAIC0zNjYsNiArMzgyLDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXpl
V2ViUHJvY2VzcyhXZQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCisKKyAgICBpZiAocGFyYW1l
dGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKKyAgICAgICAgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQodHJ1ZSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKQEAgLTEyNzgsNiArMTI5NywxOSBAQCB2b2lkIFdl
YlByb2Nlc3M6Om5vblZpc2libGVQcm9jZXNzQ2xlYW51CiAjZW5kaWYKIH0KIAordm9pZCBXZWJQ
cm9jZXNzOjpzdGF0aXN0aWNzQ2hhbmdlZFRpbWVyRmlyZWQoKQoreworICAgIGlmIChtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yYWdlLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQobV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZS0+dGFrZVN0YXRpc3RpY3MoKSksIDApOworfQorCit2
b2lkIFdlYlByb2Nlc3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKK30KKwogUmVmUHRyPEFQSTo6
T2JqZWN0PiBXZWJQcm9jZXNzOjp0cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKEFQSTo6T2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgc3RydWN0IFRyYW5zZm9ybWVyIGZpbmFsIDogVXNlckRhdGE6OlRy
YW5zZm9ybWVyIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShy
ZXZpc2lvbiAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlZpZXdVcGRhdGVEaXNw
YXRjaGVyLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtUYWJsZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvSHlzdGVyZXNpc0FjdGl2aXR5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtMTY5LDYg
KzE3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3Qg
cGFnZUlEKTsKIAogICAgIHZvaWQgbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXJGaXJlZCgp
OworICAgIHZvaWQgc3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVkKCk7CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICB2b2lkIGRlc3Ryb3lSZW5kZXJpbmdSZXNvdXJjZXMoKTsKQEAgLTIzMSw2
ICsyMzMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50
ZXJ2YWwoZG91YmxlKTsKICAgICB2b2lkIHNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRo
KGJvb2wpOwogICAgIHZvaWQgc2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sKTsKKyAgICB2
b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgdXNl
clByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3QgVmVjdG9yPFN0cmluZz4mKSBjb25zdDsK
ICAgICB2b2lkIGZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2VkKGJvb2wgZnVsbEtleWJvYXJk
QWNjZXNzRW5hYmxlZCk7CiAKQEAgLTM2MSwxMSArMzY0LDE0IEBAIHByaXZhdGU6CiAKICAgICBI
YXNoU2V0PHVpbnQ2NF90PiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVyIG1f
bm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXI7CisgICAgV2ViQ29yZTo6VGltZXIgbV9zdGF0
aXN0aWNzQ2hhbmdlZFRpbWVyOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFdlYlNRTGl0ZURh
dGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKICNlbmRpZgogCisgICAg
UmVmPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmFnZTsKKwogICAgIFNob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNw
ZW5kIG1fc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQ7CiAgICAgYm9vbCBtX3N1
cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyIHsgZmFsc2UgfTsKIH07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCShyZXZpc2lv
biAxOTc0ODUpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTQyLDYgKzQyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgU2V0RGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIHRp
bWVvdXRJbnRlcnZhbCkKICAgICBTZXRBbHdheXNVc2VzQ29tcGxleFRleHRDb2RlUGF0aChib29s
IGFsd2F5c1VzZUNvbXBsZXhUZXh0KQogICAgIFNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoYm9v
bCB1c2VGb250U21vb3RoaW5nKQorICAgIFNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwogICAgIFVzZXJQcmVmZXJyZWRM
YW5ndWFnZXNDaGFuZ2VkKFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlcykKICAgICBGdWxsS2V5Ym9h
cmRBY2Nlc3NNb2RlQ2hhbmdlZChib29sIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE2LTAzLTAzICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhl
ciByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4
OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3dp
dGNoIHRvIG1haW50YWluaW5nIGEgZ2xvYmFsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSBpbiB0aGUgV2ViS2l0IHByb2Nlc3MsCisgICAgICAgIGFuZCBoYW5kIGl0IG9mZiB0
byB0aGUgV2ViQ29yZSBsYXllciB0byB1c2UgZHVyaW5nIGRhdGEgZ2F0aGVyaW5nLiBUaGUgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlCisgICAgICAgIGlzIG5vdyByZXNwb25zaWJsZSBmb3Ig
cmVhZGluZy93cml0aW5nIHRvIGRpc2ssIGFuZCB0cmFja2luZyB0aGUgY29sbGVjdGlvbiBvZiBs
b2FkIGRhdGEuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChXZWJL
aXRJbml0aWFsaXplQXBwbGljYXRpb25TdGF0aXN0aWNzU3RvcmFnZVBhdGhJZk5lY2Vzc2FyeSk6
IEluaXRpYWxpemUgc2luZ2xldG9uCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSBvYmplY3QgZm9yIHRyYWNraW5nIHN0YXRlLgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJl
bmNlc0NoYW5nZWQ6XSk6IFJldmlzZSBmb3IgbmV3IHNpbmdsZXRvbi4KKyAgICAgICAgKCtbV2Vi
VmlldyBfYXBwbGljYXRpb25XaWxsVGVybWluYXRlXSk6IERpdHRvLgorCiAyMDE2LTAyLTI5ICBB
ZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IHRoZSBuZXcgdmVy
c2lvbiBvZiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyJ3Mgc2hvd01lbnVGb3JSZWN0IG1l
dGhvZC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE5
NzQ4NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjUyLDYgKzI1Miw4IEBACiAjaW1wb3J0IDxXZWJDb3JlL01vYmlsZUdlc3RhbHRT
UEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0YXRlTm90aWZpZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzSU9TLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TbWFydFJlcGxhY2UuaD4KQEAgLTYwNiw2ICs2MDgsNyBAQCBlbnVtIHsgV2ViVmlld1ZlcnNp
b24gPSA0IH07CiAjZGVmaW5lIHRpbWVkTGF5b3V0U2l6ZSA0MDk2CiAKIHN0YXRpYyBOU011dGFi
bGVTZXQgKnNjaGVtZXNXaXRoUmVwcmVzZW50YXRpb25zU2V0Oworc3RhdGljIFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSAqcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwog
CiAjaWYgIVBMQVRGT1JNKElPUykKIE5TU3RyaW5nICpfV2ViQ2FuR29CYWNrS2V5ID0gICAgICAg
ICAgICBAImNhbkdvQmFjayI7CkBAIC03NjQsNyArNzY3LDEwIEBAIHN0YXRpYyB2b2lkIFdlYktp
dEluaXRpYWxpemVBcHBsaWNhdGlvblMKICAgICBBU1NFUlQoYXBwTmFtZSk7CiAgICAgCiAgICAg
TlNTdHJpbmcgKnN1cHBvcnREaXJlY3RvcnkgPSBbTlNTdHJpbmcgX3dlYmtpdF9sb2NhbFN0b3Jh
Z2VEaXJlY3RvcnlXaXRoQnVuZGxlSWRlbnRpZmllcjphcHBOYW1lXTsKLSAgICBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9y
eShzdXBwb3J0RGlyZWN0b3J5KTsKKworICAgIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IHN0YXRpc3RpY3NTdG9yZSA9IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y3JlYXRlKHN1cHBvcnREaXJlY3RvcnkpOworICAgIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSA9ICZzdGF0aXN0aWNzU3RvcmUuZ2V0KCk7CisgICAgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3RhdGlzdGljc1N0b3JlKFdURk1vdmUoc3Rh
dGlzdGljc1N0b3JlKSk7CiAgICAgCiAgICAgaW5pdGlhbGl6ZWQgPSBZRVM7CiB9CkBAIC0yNDcy
LDcgKzI0NzgsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAg
ICAgc2V0dGluZ3Muc2V0SGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25FbmFibGVkKFtw
cmVmZXJlbmNlcyBoaWRkZW5QYWdlQ1NTQW5pbWF0aW9uU3VzcGVuc2lvbkVuYWJsZWRdKTsKIAog
ICAgIHNldHRpbmdzLnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKFtwcmVmZXJlbmNl
cyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZF0pOwotICAgIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpzaGFyZWRPYnNlcnZlcigpLnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOworICAgIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7CiAK
ICNpZiBFTkFCTEUoR0FNRVBBRCkKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnNldEdhbWVwYWRzRW5hYmxlZChbcHJlZmVyZW5jZXMgZ2FtZXBhZHNFbmFibGVk
XSk7CkBAIC00ODQyLDcgKzQ4NDgsNyBAQCArICh2b2lkKV9hcHBsaWNhdGlvbldpbGxUZXJtaW5h
dGUKIHsgICAKICAgICBhcHBsaWNhdGlvbklzVGVybWluYXRpbmcgPSBZRVM7CiAKLSAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS53cml0ZURhdGFUb0Rpc2soKTsKKyAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPndyaXRlRGF0YVRvRGlzaygpOwogCiAgICAg
aWYgKGZhc3REb2N1bWVudFRlYXJkb3duRW5hYmxlZCgpKQogICAgICAgICBbc2VsZiBjbG9zZUFs
bFdlYlZpZXdzXTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5NzUxMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE2LTAzLTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNvdXJjZSBsb2FkIHN0YXRp
c3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVs
ZWdhdGUubToKKyAgICAgICAgKGRlZmF1bHRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm06CisgICAgICAgICgtW1NldHRpbmdzQ29u
dHJvbGxlciBfcG9wdWxhdGVNZW51XSk6IE1vdmUgc2V0dGluZyBmcm9tIFdLMS1vbmx5IHRvIGJl
CisgICAgICAgIHVuaXZlcnNhbGx5IGFwcGxpY2FibGUuCisgICAgICAgICogTWluaUJyb3dzZXIv
bWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyIGRpZENoYW5nZVNldHRpbmdzXSk6IFJlY29nbml6ZSB3aGVuIHRoZQor
ICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3MgZmxhZyBoYXMgY2hhbmdlZC4KKwogMjAx
Ni0wMy0wMyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE5NzQ0Mi4KSW5kZXg6IFRvb2xzL01pbmlCcm93
c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL21h
Yy9BcHBEZWxlZ2F0ZS5tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBUb29scy9NaW5pQnJvd3Nlci9t
YWMvQXBwRGVsZWdhdGUubQkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBzdGF0aWMg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqZGVmYXVsdENvCiAgICAgfQogCiAgICAgY29uZmlndXJh
dGlvbi5zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcgPSBbU2V0dGluZ3NDb250cm9sbGVy
IHNoYXJlZF0uaW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2VkOworICAgIGNvbmZpZ3VyYXRp
b24uX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gW1NldHRpbmdzQ29udHJvbGxlciBz
aGFyZWRdLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOwogICAgIHJldHVybiBjb25maWd1
cmF0aW9uOwogfQogI2VuZGlmCkluZGV4OiBUb29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3ND
b250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdz
Q29udHJvbGxlci5tCShyZXZpc2lvbiAxOTc0ODUpCisrKyBUb29scy9NaW5pQnJvd3Nlci9tYWMv
U2V0dGluZ3NDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCAt
ICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlN1cHBy
ZXNzIEluY3JlbWVudGFsIFJlbmRlcmluZyBpbiBOZXcgV2luZG93cyIgYWN0aW9uOkBzZWxlY3Rv
cih0b2dnbGVJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzZWQ6KSBpbmRlbnRlZDpOT107CiAg
ICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgQWNjZWxlcmF0ZWQgRHJhd2luZyIg
YWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOikgaW5kZW50
ZWQ6Tk9dOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxlOkAiRW5hYmxlIERpc3BsYXkgTGlz
dCBEcmF3aW5nIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZURpc3BsYXlMaXN0RHJhd2luZ0VuYWJs
ZWQ6KSBpbmRlbnRlZDpOT107CisgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUg
UmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOwogCiAgICAgW3NlbGYgX2FkZEhl
YWRlcldpdGhUaXRsZTpAIldlYktpdDItb25seSBTZXR0aW5ncyJdOwogCkBAIC0xNDEsNyArMTQy
LDYgQEAgLSAodm9pZClfcG9wdWxhdGVNZW51CiAKICAgICBbc2VsZiBfYWRkSGVhZGVyV2l0aFRp
dGxlOkAiV2ViS2l0MS1vbmx5IFNldHRpbmdzIl07CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0
bGU6QCJFbmFibGUgU3VicGl4ZWwgQ1NTT00gTWV0cmljcyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dn
bGVFbmFibGVTdWJQaXhlbENTU09NTWV0cmljczopIGluZGVudGVkOllFU107Ci0gICAgW3NlbGYg
X2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIiBhY3Rp
b246QHNlbGVjdG9yKHRvZ2dsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgaW5kZW50
ZWQ6Tk9dOwogfQogCiAtIChCT09MKXZhbGlkYXRlTWVudUl0ZW06KE5TTWVudUl0ZW0gKiltZW51
SXRlbQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDE5NzQ4NSkKKysrIFRvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw2ICszMiw3
IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tGcmFtZUluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9XS05h
dmlnYXRpb25EZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1VJRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0
aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KQEAgLTM0
Niw2ICszNDcsOCBAQCAtICh2b2lkKWRpZENoYW5nZVNldHRpbmdzCiAgICAgcHJlZmVyZW5jZXMu
X3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSA9IHNldHRpbmdzLnJlc291cmNlVXNhZ2VPdmVy
bGF5VmlzaWJsZTsKICAgICBwcmVmZXJlbmNlcy5fZGlzcGxheUxpc3REcmF3aW5nRW5hYmxlZCA9
IHNldHRpbmdzLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ7CiAKKyAgICBfd2ViVmlldy5jb25m
aWd1cmF0aW9uLnByb2Nlc3NQb29sLl9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IHNl
dHRpbmdzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOworCiAgICAgQk9PTCB1c2VUcmFu
c3BhcmVudFdpbmRvd3MgPSBzZXR0aW5ncy51c2VUcmFuc3BhcmVudFdpbmRvd3M7CiAgICAgaWYg
KHVzZVRyYW5zcGFyZW50V2luZG93cyAhPSAhX3dlYlZpZXcuX2RyYXdzQmFja2dyb3VuZCkgewog
ICAgICAgICBbc2VsZi53aW5kb3cgc2V0T3BhcXVlOiF1c2VUcmFuc3BhcmVudFdpbmRvd3NdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272840</attachid>
            <date>2016-03-04 00:02:33 -0800</date>
            <delta_ts>2016-03-04 13:09:29 -0800</delta_ts>
            <desc>Patch (v4)</desc>
            <filename>bug-154278-20160304000218.patch</filename>
            <type>text/plain</type>
            <size>121430</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzU1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE2LTAzLTAzICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgU3BsaXQgcGFydCBvZiB0aGUgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgaW50byBhIG5l
dyBjbGFzcyAoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKQorICAgICAgICB0aGF0IG1hbmFn
ZXMgdGhlIGNvbGxlY3Rpb24gb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljIG9iamVjdHMsIGFuZCB0
aGF0IGNhbiBiZSB1c2VkCisgICAgICAgIGluIHRoZSBVSVByb2Nlc3Mgd2l0aG91dCB0b3VjaGlu
ZyB2YXJpb3VzIFdlYlByb2Nlc3Mtc3BlY2lmaWMgV2ViQ29yZSBjbGFzc2VzLgorCisgICAgICAg
IEhhdmUgdGhlIFdlYlByb2Nlc3Mgb25seSBmaXJlIGEgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNz
IGlmIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQuIE90aGVyd2lzZSwKKyAgICAgICAgbm8gbWVzc2Fn
ZXMgc2hvdWxkIGJlIHNlbnQuIFdoZW4gbmV3IGRhdGEgaXMgZW5jb3VudGVyZWQsIHN0YXJ0IGEg
NSBzZWNvbmQgdGltZXIuIElmIG1vcmUKKyAgICAgICAgZGF0YSBpcyBmb3VuZCBkdXJpbmcgdGhp
cyBkZWxheSwganVzdCBhY2N1bXVsYXRlIGl0LiBXaGVuIHRoZSB0aW1lciBmaXJlcywgYWxsIGRh
dGEgaXMgc2VudAorICAgICAgICBhbmQgdGhlIHRpbWVyIHN0b3BzIHVudGlsIGEgbmV3IGJhdGNo
IG9mIGRhdGEgYXJyaXZlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgdGhlIG5l
dyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xhc3MuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGp1c3QgdmlzaWJpbGl0eSBvZiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIGhlYWRlciwKKyAgICAgICAgYW5kIGFkZCBuZXcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIGNsYXNzLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9h
ZE9ic2VydmVyOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnYXRpb24pOiBUZWxs
IHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgdG8gZmlyZSBpdHMgJ2RhdGEgY2hhbmdl
ZCcKKyAgICAgICAgaGFuZGxlciBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKTogRGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cHJpbWFyeURvbWFp
bik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0Zv
ck9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6aXNQcmV2
YWxlbnRSZXNvdXJjZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaXNrKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0
aXN0aWNzU3RvcmFnZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6cGVyc2lzdGVudFN0b3JhZ2VQYXRoKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVk
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNy
ZWF0ZURlY29kZXJGcm9tRGlzayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6d3JpdGVFbmNvZGVyVG9EaXNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBs
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVIYXNoQ291bnRlZFNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVjb2RlSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3M6OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Om1lcmdl
SGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6bWVyZ2UpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzKToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50UmVzb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQ
cmltYXJ5RG9tYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6d3JpdGVEYXRhVG9EaXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6c2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3RvcnkpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJzaXN0ZW50U3RvcmFnZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFk
RGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjcmVhdGVEZWNvZGVyRnJvbURpc2spOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rpc2spOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRm9yT3Jp
Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6dGFr
ZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjptZXJnZVN0YXRpc3RpY3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpzZXROb3RpZmljYXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxl
cik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aXNFbXB0
eSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkZWZhdWx0
RmlsZW5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorCiAyMDE2LTAzLTAzICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIExldCBYQ29kZSBoYXZlIGl0cyBvd24g
d2F5IGFuZCBhbHNvIHNvcnQgdGhlIGZpbGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTE5MjMsNiArMTkyMyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBsb2Fk
ZXIvUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcAogICAgIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAorICAgIGxvYWRl
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAgICAgbG9hZGVyL1Jlc291cmNlTG9h
ZGVyLmNwcAogICAgIGxvYWRlci9TaW5rRG9jdW1lbnQuY3BwCiAgICAgbG9hZGVyL1N1YmZyYW1l
TG9hZGVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgyLDkg
KzI2ODIsMTEgQEAKIAkJN0E3NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
ICovOyB9OwogCQk3QTc0RUNCRDEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVu
ZEhvc3RDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0E3NEVDQkMxMDE4MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJN0E5MjlDQTYxQzU5OEE5RTAwNERGMjI2IC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0E5MjlDQTExQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuY3BwICovOyB9OwotCQk3QTkyOUNBNzFDNTk4QUE5MDA0REYyMjYgLyogUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0E5MjlDQTIxQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCAq
LzsgfTsKKwkJN0E5MjlDQTcxQzU5OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5
Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0E5Mzg2ODUxOERDQzE0
NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODIxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIu
Y3BwICovOyB9OwogCQk3QTkzODY4NjE4RENDMTQ1MDBCODI2M0QgLyogVlRUU2Nhbm5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODMxOERD
QzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuaCAqLzsgfTsKKwkJN0E5M0E4MDMxQzg3N0RDMTAw
RTM1RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTdDQzgzNjFDODc1MDY4MDAzNjYyNDMg
LyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLzsgfTsKKwkJN0E5M0E4MDQxQzg3
N0REMDAwRTM1RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3Q0M4MzcxQzg3NTA2ODAwMzY2
MjQzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTNBNjk5MTk0QTY0RTcwMDFDQkQyNCAv
KiBUaWxlQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUEzQTY5NTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuY3Bw
ICovOyB9OwogCQk3QUEzQTY5QTE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTNBNjk2MTk0
QTY0RTcwMDFDQkQyNCAvKiBUaWxlQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBQTNBNjlCMTk0QTY0RTcwMDFDQkQyNCAvKiBU
aWxlR3JpZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QUEzQTY5NzE5NEE2NEU3MDAxQ0JEMjQgLyogVGlsZUdyaWQuY3BwICovOyB9OwpAQCAtMTAy
OTcsNiArMTAyOTksOCBAQAogCQk3QTc0RUNCODEwMTgzOUE1MDBCRjkzOUUgLyogSW5zcGVjdG9y
RE9NU3RvcmFnZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdBNzRFQ0I5MTAxODM5QTYwMEJGOTM5RSAvKiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNzRFQ0JDMTAxODM5REEwMEJG
OTM5RSAvKiBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBN0NDODM2MUM4NzUwNjgwMDM2NjI0MyAv
KiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E3Q0M4MzcxQzg3NTA2ODAwMzY2MjQzIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0E5MjlDQTExQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTI5Q0EyMUM1OTgzNzgw
MDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0E5Mzg2ODIxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVlRUU2Nhbm5lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjcyMyw2ICsyMjcyNyw4IEBACiAJCQkJNkI2OTNB
MkQxQzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmggKi8sCiAJCQkJN0E5
MjlDQTExQzU5ODM3ODAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwICovLAog
CQkJCTdBOTI5Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgg
Ki8sCisJCQkJN0E3Q0M4MzYxQzg3NTA2ODAwMzY2MjQzIC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAgKi8sCisJCQkJN0E3Q0M4MzcxQzg3NTA2ODAwMzY2MjQzIC8qIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oICovLAogCQkJCTUxMzI3RDVGMTFBMzNBMkIwMDRGOUQ2NSAv
KiBTaW5rRG9jdW1lbnQuY3BwICovLAogCQkJCTUxMzI3RDVFMTFBMzNBMkIwMDRGOUQ2NSAvKiBT
aW5rRG9jdW1lbnQuaCAqLywKIAkJCQlEMDAwRUQyNTExQzFCOUNEMDBDNDc3MjYgLyogU3ViZnJh
bWVMb2FkZXIuY3BwICovLApAQCAtMjQ5MTQsNiArMjQ5MjAsNyBAQAogCQkJCTI5QTgxMjJFMEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyOUE4MTIzMzBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Um93LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzQjBGQkI5QzFEMDA1MTAyOTMgLyogQWNj
ZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0E5MjlDQTcxQzU5
OEFBOTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTI5QTgxMjJDMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjlBODEyNDMwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlM
aXN0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTI0MjBGQkI5QzFEMDA1MTAyOTMgLyog
QWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjYzNTUsNiAr
MjYzNjIsNyBAQAogCQkJCTBGMDNDMDc1MTg4NDgwNTUwMEE1RjhDQSAvKiBJbnNwZWN0b3JPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQk0RjZGREQ2NTEzNDFERUREMDAxRjhFRTMgLyogSW5z
cGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUNDMEI2NzE4QkU5RjE1MDA2
Q0VCQ0MgLyogSW5zcGVjdG9yUmVwbGF5QWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTdBOTNB
ODA0MUM4NzdERDAwMEUzNUZENiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTgyQUIxNzc0MTI1QzgyNjcwMEM1MDY5RCAvKiBJbnNwZWN0b3JTdHls
ZVNoZWV0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3NTQxMzNBODEwMkUwMEU4MDAwNzVEMDAgLyog
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU5M0NGOEIxODQw
NTM1MjAwQkZDRTI3IC8qIEluc3BlY3RvcldlYkFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0yOTgyOCw2ICsyOTgzNiw3IEBACiAJCQkJQThFQTc5RjgwQTE5MTZERjAwQThFRjVGIC8qIEhU
TUxNZW51RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQkU4RTJDOTEyQTU4QTAxMDBG
QUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
NzFEQzI3MEExNTIwNTcwMEIxMkE2OCAvKiBIVE1MTWV0YUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0E5M0E4MDMxQzg3N0RDMTAwRTM1RkQ2IC8qIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNDU0NDI0QTExOUIzNjYxMDA5QkU5MTIg
LyogSFRNTE1ldGVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjdBOTBBMTU2
OTc4MDAwQTQyMzQgLyogSFRNTE1vZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThE
RjNGRDUwOTdGQTBGQzAwNTI5ODFCIC8qIEhUTUxOYW1lQ29sbGVjdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTMxMDE5LDYgKzMxMDI4LDExIEBACiAJCQkJQ0RDRDQxRTcxQzNEREIwOTAwOTY1
RDk5IC8qIFBhcnNlZENvbnRlbnRSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NDc5NTgw
NTE2NDNCNEIyMDAxRTBBN0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjU1QjNEQzkxMjUxRjEyRDAwM0VGMjY5IC8qIFBhc3N3b3JkSW5wdXRUeXBlLmNwcCBp
biBTb3VyY2VzICovLAorPDw8PDw8PCAubWluZQorCQkJCTJERUM2NjczMUM4M0YyQUYwMDk5ODQ2
QSAvKiBET01UaW1lUmFuZ2VzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkRFQzY2NTYxQzgyRDA0
NDAwOTk4NDZBIC8qIERPTUhUTUxNZWRpYUVsZW1lbnQubW0gaW4gU291cmNlcyAqLywKKz09PT09
PT0KKz4+Pj4+Pj4gLnIxOTc1NTAKIAkJCQlFNDUzOTAxRTBFQUZDQUNBMDAzNjk1QzggLyogUGFz
dGVib2FyZElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTRCMjcwOTgzMEFGMkU1RTAwMDY1MTI3
RiAvKiBQYXN0ZWJvYXJkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI3NTM1N0YwQjA1Mzgx
NDAwMkNFNjRGIC8qIFBhdGguY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHJldmlzaW9uIDE5NzU1MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDExICsyNywxMSBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZE9ic2Vy
dmVyLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIktleWVkQ29kaW5nLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC0zOSw4ICszOSw2IEBACiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCi0j
ZGVmaW5lIExPR19TVEFUSVNUSUNTX1RPX0ZJTEUgMAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFJlc291cmNlTG9hZE9ic2VydmVyJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2
ZXIoKQpAQCAtNDgsNyArNDYsMjIgQEAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJlc291cmNlTG9h
ZE9ic2VydgogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRPYnNlcnZlcj4g
cmVzb3VyY2VMb2FkT2JzZXJ2ZXI7CiAgICAgcmV0dXJuIHJlc291cmNlTG9hZE9ic2VydmVyOwog
fQotICAgIAorCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgU2V0dGluZ3M6OnNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFJlc291cmNlTG9hZE9i
c2VydmVyOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIFNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOworfQorCit2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzU3RvcmUoUmVmPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZT4mJiBzdG9yZSkKK3sKKyAgICBtX3N0b3JlID0gV1RGTW92ZShzdG9y
ZSk7Cit9CisKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWdhdGlvbihi
b29sIGlzUmVkaXJlY3QsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBVUkwmIHRhcmdldFVS
TCwgYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwpCiB7CiAgICAgaWYg
KCFTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkKQEAgLTcxLDcgKzg0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogICAgICAgICBy
ZXR1cm47CiAgICAgCiAgICAgYXV0byB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHRhcmdldFVSTCk7Ci0gICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IHJlc291cmNlU3Rh
dGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CisgICAgYXV0byYg
dGFyZ2V0U3RhdGlzdGljcyA9IG1fc3RvcmUtPnJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlE
b21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CiAgICAgCiAgICAgaWYgKGlzTWFpbkZyYW1lKQog
ICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvQmVmb3Jl
ID0gdHJ1ZTsKQEAgLTgzLDkgKzk2LDkgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9n
RnJhbWVOYXZpZwogICAgIH0KICAgICAKICAgICBpZiAoaXNSZWRpcmVjdCkgewotICAgICAgICBh
dXRvJiByZWRpcmVjdGluZ09yaWdpblJlc291cmNlU3RhdGlzdGljcyA9IHJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7CisgICAgICAgIGF1dG8m
IHJlZGlyZWN0aW5nT3JpZ2luUmVzb3VyY2VTdGF0aXN0aWNzID0gbV9zdG9yZS0+cmVzb3VyY2VT
dGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKICAgICAgICAg
Ci0gICAgICAgIGlmIChpc1ByZXZhbGVudFJlc291cmNlKHRhcmdldFByaW1hcnlEb21haW4pKQor
ICAgICAgICBpZiAobV9zdG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZSh0YXJnZXRQcmltYXJ5RG9t
YWluKSkKICAgICAgICAgICAgIHJlZGlyZWN0aW5nT3JpZ2luUmVzb3VyY2VTdGF0aXN0aWNzLnJl
ZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zLmFkZCh0YXJnZXRQcmltYXJ5
RG9tYWluKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpc01haW5GcmFtZSkgewpAQCAtMTA1LDcg
KzExOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ0ZyYW1lTmF2aWcKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICArK3RhcmdldFN0YXRpc3RpY3Muc3ViZnJhbWVT
dWJSZXNvdXJjZUNvdW50OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXV0byYgc291
cmNlT3JpZ2luUmVzb3VyY2VTdGF0aXN0aWNzID0gcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgICAgIGF1dG8mIHNvdXJjZU9y
aWdpblJlc291cmNlU3RhdGlzdGljcyA9IG1fc3RvcmUtPnJlc291cmNlU3RhdGlzdGljc0ZvclBy
aW1hcnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7CiAKICAgICAgICAgICAgIGlmIChpc01h
aW5GcmFtZSkgewogICAgICAgICAgICAgICAgICsrc291cmNlT3JpZ2luUmVzb3VyY2VTdGF0aXN0
aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CkBAIC0xMTcsNyArMTMwLDggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgdGFyZ2V0U3RhdGlzdGljcy5jaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5l
Y2Vzc2FyeShtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpOworICAgIHRhcmdldFN0YXRp
c3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9zdG9yZS0+
c2l6ZSgpKTsKKyAgICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0K
ICAgICAKIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmNlTG9hZGluZyhi
b29sIGlzUmVkaXJlY3QsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBjb25zdCBVUkwmIHRhcmdldFVS
TCwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwpCkBAIC0xMzgsMTUgKzE1MiwxNSBAQCB2b2lkIFJl
c291cmNlTG9hZE9ic2VydmVyOjpsb2dTdWJyZXNvdXJjCiAgICAgaWYgKHRhcmdldFByaW1hcnlE
b21haW4gPT0gbWFpbkZyYW1lUHJpbWFyeURvbWFpbiB8fCB0YXJnZXRQcmltYXJ5RG9tYWluID09
IHNvdXJjZVByaW1hcnlEb21haW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHRhcmdl
dFN0YXRpc3RpY3MgPSByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdldFBy
aW1hcnlEb21haW4pOworICAgIGF1dG8mIHRhcmdldFN0YXRpc3RpY3MgPSBtX3N0b3JlLT5yZXNv
dXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRhcmdldFByaW1hcnlEb21haW4pOwogCiAg
ICAgYXV0byBtYWluRnJhbWVPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1haW5GcmFt
ZVVSTCk7CiAgICAgdGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW5zLmFkZChtYWluRnJhbWVQcmltYXJ5RG9tYWluKTsKIAogICAgIGlmIChpc1JlZGlyZWN0KSB7
Ci0gICAgICAgIGF1dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IHJlc291cmNlU3Rh
dGlzdGljc0ZvclByaW1hcnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7CisgICAgICAgIGF1
dG8mIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcyA9IG1fc3RvcmUtPnJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4oc291cmNlUHJpbWFyeURvbWFpbik7CiAgICAgICAgIAotICAg
ICAgICBpZiAoaXNQcmV2YWxlbnRSZXNvdXJjZSh0YXJnZXRQcmltYXJ5RG9tYWluKSkKKyAgICAg
ICAgaWYgKG1fc3RvcmUtPmlzUHJldmFsZW50UmVzb3VyY2UodGFyZ2V0UHJpbWFyeURvbWFpbikp
CiAgICAgICAgICAgICByZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3MucmVkaXJlY3RlZFRvT3Ro
ZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMuYWRkKHRhcmdldFByaW1hcnlEb21haW4pOwogICAg
ICAgICAKICAgICAgICAgKytyZWRpcmVjdGluZ09yaWdpblN0YXRpc3RpY3Muc3VicmVzb3VyY2VI
YXNCZWVuUmVkaXJlY3RlZEZyb207CkBAIC0xNjcsNyArMTgxLDggQEAgdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyYwogICAgICAgICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJl
c291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2lu
c1Zpc2l0ZWQgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3Vy
Y2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCkgLyB0b3RhbFZpc2l0ZWQ7CiAgICAgfQogICAgIAot
ICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tBbmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNl
c3NhcnkobV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKTsKKyAgICB0YXJnZXRTdGF0aXN0
aWNzLmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KG1fc3RvcmUtPnNp
emUoKSk7CisgICAgbV9zdG9yZS0+ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAg
ICAgCiB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dVc2VySW50ZXJhY3Rpb24oY29uc3Qg
RG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTc1LDI3ICsxOTAsMTEgQEAgdm9pZCBSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6bG9nVXNlckludGVyYQogICAgIGlmICghU2V0dGluZ3M6OnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8mIHN0YXRp
c3RpY3MgPSByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4o
ZG9jdW1lbnQudXJsKCkpKTsKKyAgICBhdXRvJiBzdGF0aXN0aWNzID0gbV9zdG9yZS0+cmVzb3Vy
Y2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihwcmltYXJ5RG9tYWluKGRvY3VtZW50LnVybCgp
KSk7CiAgICAgc3RhdGlzdGljcy5oYWRVc2VySW50ZXJhY3Rpb24gPSB0cnVlOworICAgIG1fc3Rv
cmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogICAgIAotYm9vbCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6aXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHByaW1hcnlE
b21haW4pIGNvbnN0Ci17Ci0gICAgYXV0byBtYXBFbnRyeSA9IG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLmZpbmQocHJpbWFyeURvbWFpbik7Ci0gICAgaWYgKG1hcEVudHJ5ID09IG1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
bWFwRW50cnktPnZhbHVlLmlzUHJldmFsZW50UmVzb3VyY2U7Ci19Ci0gICAgCi1SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pCi17Ci0gICAgaWYgKCFt
X3Jlc291cmNlU3RhdGlzdGljc01hcC5jb250YWlucyhwcmltYXJ5RG9tYWluKSkKLSAgICAgICAg
bV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2V0KHByaW1hcnlEb21haW4sIFJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSk7Ci0gICAgCi0gICAgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZp
bmQocHJpbWFyeURvbWFpbiktPnZhbHVlOwotfQotCiBTdHJpbmcgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnByaW1hcnlEb21haW4oY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgU3RyaW5nIGhvc3QgPSB1
cmwuaG9zdCgpOwpAQCAtMjM4LDEzNiArMjM3LDkgQEAgU3RyaW5nIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpwcmltYXJ5RG9tYQogICAgIHJldHVybiBwcmltYXJ5RG9tYWluOwogfQogCi10eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPjo6S2V5VmFsdWVQYWlyVHlw
ZSBTdGF0aXN0aWNzVmFsdWU7Ci0KLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OndyaXRlRGF0
YVRvRGlzaygpCi17Ci0gICAgaWYgKCFTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8gZW5jb2RlciA9IEtleWVk
RW5jb2Rlcjo6ZW5jb2RlcigpOwotICAgIGVuY29kZXItPmVuY29kZVVJbnQzMigib3JpZ2luc1Zp
c2l0ZWQiLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpOwotICAgIAotICAgIGVuY29k
ZXItPmVuY29kZU9iamVjdHMoImJyb3dzaW5nU3RhdGlzdGljcyIsIG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLmJlZ2luKCksIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuZCgpLCBbdGhpc10oS2V5
ZWRFbmNvZGVyJiBlbmNvZGVySW5uZXIsIGNvbnN0IFN0YXRpc3RpY3NWYWx1ZSYgb3JpZ2luKSB7
Ci0gICAgICAgIG9yaWdpbi52YWx1ZS5lbmNvZGUoZW5jb2RlcklubmVyLCBvcmlnaW4ua2V5KTsK
LSAgICB9KTsKLSAgICAKLSAgICB3cml0ZUVuY29kZXJUb0Rpc2soKmVuY29kZXIuZ2V0KCksICJm
dWxsX2Jyb3dzaW5nX3Nlc3Npb24iKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
d3JpdGVEYXRhVG9EaXNrKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3RpY3MpIGNvbnN0Ci17Ci0gICAgaWYgKCFTZXR0aW5n
czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjplbmNvZGVyKCk7Ci0gICAgZW5jb2Rlci0+
ZW5jb2RlVUludDMyKCJvcmlnaW5zVmlzaXRlZCIsIDEpOwotICAgIAotICAgIGVuY29kZXItPmVu
Y29kZU9iamVjdChvcmlnaW4sIHJlc291cmNlU3RhdGlzdGljcywgW3RoaXMsICZvcmlnaW5dKEtl
eWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3Vy
Y2VTdGF0aXN0aWNzKSB7Ci0gICAgICAgIHJlc291cmNlU3RhdGlzdGljcy5lbmNvZGUoZW5jb2Rl
ciwgb3JpZ2luKTsKLSAgICB9KTsKLSAgICAKLSAgICBTdHJpbmcgbGFiZWwgPSBvcmlnaW47Ci0g
ICAgbGFiZWwucmVwbGFjZSgnLycsICdfJyk7Ci0gICAgbGFiZWwucmVwbGFjZSgnOicsICcrJyk7
Ci0gICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCBsYWJlbCk7Ci19Ci0KLXZv
aWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBtX3N0b3JhZ2VQYXRoID0gcGF0aDsKLX0KLQotU3Ry
aW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpwZXJzaXN0ZW50U3RvcmFnZVBhdGgoY29uc3QgU3Ry
aW5nJiBsYWJlbCkgY29uc3QKLXsKLSAgICBpZiAobV9zdG9yYWdlUGF0aC5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotCi0gICAgLy8gVE9ETyBEZWNpZGUgd2hhdCB0
byBjYWxsIHRoaXMgZmlsZQotICAgIHJldHVybiBwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9z
dG9yYWdlUGF0aCwgbGFiZWwgKyAiX3Jlc291cmNlTG9nLnBsaXN0Iik7Ci19Ci0KLXZvaWQgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpCi17Ci0gICAgaWYg
KCFTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byBkZWNvZGVyID0gY3JlYXRlRGVjb2RlckZyb21EaXNrKCJmdWxs
X2Jyb3dzaW5nX3Nlc3Npb24iKTsKLSAgICBpZiAoIWRlY29kZXIpCi0gICAgICAgIHJldHVybjsK
LQotICAgIHVuc2lnbmVkIHZpc2l0ZWRPcmlnaW5zID0gMDsKLSAgICBkZWNvZGVyLT5kZWNvZGVV
SW50MzIoIm9yaWdpbnNWaXNpdGVkIiwgdmlzaXRlZE9yaWdpbnMpOwotICAgICAgICAKLSAgICBW
ZWN0b3I8U3RyaW5nPiBsb2FkZWRPcmlnaW5zOwotICAgIGRlY29kZXItPmRlY29kZU9iamVjdHMo
ImJyb3dzaW5nU3RhdGlzdGljcyIsIGxvYWRlZE9yaWdpbnMsIFt0aGlzXShLZXllZERlY29kZXIm
IGRlY29kZXJJbm5lciwgU3RyaW5nJiBvcmlnaW4pIHsKLSAgICAgICAgaWYgKCFkZWNvZGVySW5u
ZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIG9yaWdpbikpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBz
dGF0aXN0aWNzOwotICAgICAgICBpZiAoIXN0YXRpc3RpY3MuZGVjb2RlKGRlY29kZXJJbm5lciwg
b3JpZ2luKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBtX3Jlc291cmNl
U3RhdGlzdGljc01hcC5zZXQob3JpZ2luLCBzdGF0aXN0aWNzKTsKLSAgICAgICAgICAgIAotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9KTsKLSAgICAgICAgCi0gICAgQVNTRVJUKHZpc2l0ZWRP
cmlnaW5zID09IHN0YXRpY19jYXN0PHNpemVfdD4obG9hZGVkT3JpZ2lucy5zaXplKCkpKTsKLX0K
LQotc3RkOjp1bmlxdWVfcHRyPEtleWVkRGVjb2Rlcj4gUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmNy
ZWF0ZURlY29kZXJGcm9tRGlzayhjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdAotewotICAgIFN0
cmluZyByZXNvdXJjZUxvZyA9IHBlcnNpc3RlbnRTdG9yYWdlUGF0aChsYWJlbCk7Ci0gICAgaWYg
KHJlc291cmNlTG9nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgCi0g
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmF3RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlV2l0
aENvbnRlbnRzT2ZGaWxlKHJlc291cmNlTG9nKTsKLSAgICBpZiAoIXJhd0RhdGEpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIAotICAgIHJldHVybiBLZXllZERlY29kZXI6OmRlY29kZXIo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocmF3RGF0YS0+ZGF0YSgpKSwgcmF3RGF0
YS0+c2l6ZSgpKTsKLX0KLSAgICAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OndyaXRlRW5j
b2RlclRvRGlzayhLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwpIGNv
bnN0Ci17Ci0jaWYgTE9HX1NUQVRJU1RJQ1NfVE9fRklMRQotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IHJhd0RhdGEgPSBlbmNvZGVyLmZpbmlzaEVuY29kaW5nKCk7Ci0gICAgaWYgKCFyYXdEYXRh
KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgU3RyaW5nIHJlc291cmNlTG9nID0gcGVyc2lz
dGVudFN0b3JhZ2VQYXRoKGxhYmVsKTsKLSAgICBpZiAocmVzb3VyY2VMb2cuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fc3RvcmFnZVBhdGguaXNFbXB0eSgpKQotICAg
ICAgICBtYWtlQWxsRGlyZWN0b3JpZXMobV9zdG9yYWdlUGF0aCk7Ci0KLSAgICBhdXRvIGhhbmRs
ZSA9IG9wZW5GaWxlKHJlc291cmNlTG9nLCBPcGVuRm9yV3JpdGUpOwotICAgIGlmICghaGFuZGxl
KQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0
ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKLSAgICBj
bG9zZUZpbGUoaGFuZGxlKTsKLSAgICAKLSAgICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRpY19j
YXN0PGludDY0X3Q+KHJhd0RhdGEtPnNpemUoKSkpCi0gICAgICAgIFdURkxvZ0Fsd2F5cygiUmVz
b3VyY2VMb2FkU3RhdGlzdGljczogV2Ugb25seSB3cm90ZSAlbGxkIG91dCBvZiAlZCBieXRlcyB0
byBkaXNrIiwgd3JpdHRlbkJ5dGVzLCByYXdEYXRhLT5zaXplKCkpOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZW5jb2Rlcik7Ci0gICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKLSNlbmRpZgotfQot
CiBTdHJpbmcgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnN0YXRpc3RpY3NGb3JPcmlnaW4oY29uc3Qg
U3RyaW5nJiBvcmlnaW4pCiB7Ci0gICAgaWYgKCFtX3Jlc291cmNlU3RhdGlzdGljc01hcC5jb250
YWlucyhvcmlnaW4pKQotICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICAKLSAgICBh
dXRvJiBzdGF0aXN0aWNzID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChvcmlnaW4pLT52
YWx1ZTsKLSAgICByZXR1cm4gIlN0YXRpc3RpY3MgZm9yICIgKyBvcmlnaW4gKyAiOlxuIiArIHN0
YXRpc3RpY3MudG9TdHJpbmcoKTsKKyAgICByZXR1cm4gbV9zdG9yZS0+c3RhdGlzdGljc0Zvck9y
aWdpbihvcmlnaW4pOwogfQotICAgIAorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkocmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDE0ICsyNiwxMyBAQAogI2lmbmRlZiBSZXNvdXJjZUxvYWRPYnNlcnZlcl9oCiAjZGVmaW5lIFJl
c291cmNlTG9hZE9ic2VydmVyX2gKIAorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFz
cyBLZXllZERlY29kZXI7Ci1jbGFzcyBLZXllZEVuY29kZXI7CiBjbGFzcyBVUkw7CiAKIHN0cnVj
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOwpAQCAtNDcsMjkgKzQ2LDE4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhib29sIGlzUmVkaXJlY3QsIGNvbnN0IFVSTCYg
c291cmNlVVJMLCBjb25zdCBVUkwmIHRhcmdldFVSTCwgY29uc3QgVVJMJiBtYWluRnJhbWVVUkwp
OwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IERvY3VtZW50Jik7CiAKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlRGF0YVRvRGlzaygpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldFN0YXRpc3RpY3NTdG9yZShSZWY8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9y
T3JpZ2luKGNvbnN0IFN0cmluZyYpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29s
IHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CisKIHByaXZhdGU6Ci0gICAg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihjb25zdCBTdHJpbmcmKTsKLSAgICAKICAgICBzdGF0aWMgU3RyaW5nIHByaW1hcnlEb21haW4o
Y29uc3QgVVJMJik7CiAKLSAgICBib29sIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5n
JikgY29uc3Q7Ci0KLSAgICBTdHJpbmcgcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGNvbnN0IFN0cmlu
ZyYgbGFiZWwpIGNvbnN0OwotCi0gICAgdm9pZCB3cml0ZURhdGFUb0Rpc2soY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKSBjb25zdDsKLQotICAgIHN0
ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZWF0ZURlY29kZXJGcm9tRGlzayhjb25zdCBT
dHJpbmcmIGxhYmVsKSBjb25zdDsKLSAgICB2b2lkIHdyaXRlRW5jb2RlclRvRGlzayhLZXllZEVu
Y29kZXImLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKLQorICAgIFJlZlB0cjxSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fc3RvcmU7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVf
dD4gbV9vcmlnaW5zVmlzaXRlZE1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7Ci0gICAgU3RyaW5nIG1fc3RvcmFn
ZVBhdGg7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24g
MTk3NTUwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw5ICs3Niw5IEBAIHN0YXRpYyB2b2lkIGVuY29kZUhh
c2hDb3VudGVkU2V0KEtleWVkRW4KICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjplbmNvZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIG9yaWdp
bikgY29uc3QKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZW5jb2RlKEtleWVkRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyLmVuY29kZVN0cmluZygiUHJldmFsZW50
UmVzb3VyY2VPcmlnaW4iLCBvcmlnaW4pOworICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKCJQcmV2
YWxlbnRSZXNvdXJjZU9yaWdpbiIsIGhpZ2hMZXZlbERvbWFpbik7CiAgICAgCiAgICAgLy8gVXNl
ciBpbnRlcmFjdGlvbgogICAgIGVuY29kZXIuZW5jb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9u
IiwgaGFkVXNlckludGVyYWN0aW9uKTsKQEAgLTEzMCwxNCArMTMwLDExIEBAIHN0YXRpYyB2b2lk
IGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRGUKICAgICB9KTsKIH0KIAotYm9vbCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJp
bmcmIG9yaWdpbikKK2Jvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVj
b2RlciYgZGVjb2RlcikKIHsKLSAgICBTdHJpbmcgc3RvcmVkT3JpZ2luOwotICAgIGlmICghZGVj
b2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgc3RvcmVkT3JpZ2lu
KSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdp
biIsIGhpZ2hMZXZlbERvbWFpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBB
U1NFUlRfVU5VU0VEKG9yaWdpbiwgc3RvcmVkT3JpZ2luID09IG9yaWdpbik7Ci0gICAgCiAgICAg
Ly8gVXNlciBpbnRlcmFjdGlvbgogICAgIGlmICghZGVjb2Rlci5kZWNvZGVCb29sKCJoYWRVc2Vy
SW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJhY3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0zMDcsNCArMzA0LDQ3IEBAIFN0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0
cmluZygKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK3N0YXRpYyB2b2lkIG1lcmdlSGFzaENvdW50ZWRTZXQoSGFzaENvdW50ZWRTZXQ8
VD4mIHRvLCBjb25zdCBIYXNoQ291bnRlZFNldDxUPiYgZnJvbSkKK3sKKyAgICBmb3IgKGF1dG8m
IGVudHJ5IDogZnJvbSkKKyAgICAgICAgdG8uYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwor
fQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlci5oaWdoTGV2ZWxEb21haW4g
PT0gaGlnaExldmVsRG9tYWluKTsKKworICAgIGhhZFVzZXJJbnRlcmFjdGlvbiB8PSBvdGhlci5o
YWRVc2VySW50ZXJhY3Rpb247CisgICAgCisgICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgdG9w
RnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvICs9IG90aGVyLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0
ZWRUbzsKKyAgICB0b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSArPSBvdGhlci50b3BGcmFt
ZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAgICB0b3BGcmFtZUluaXRpYWxMb2FkQ291bnQgKz0g
b3RoZXIudG9wRnJhbWVJbml0aWFsTG9hZENvdW50OworICAgIHRvcEZyYW1lSGFzQmVlbk5hdmln
YXRlZFRvICs9IG90aGVyLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvOworICAgIHRvcEZyYW1l
SGFzQmVlbk5hdmlnYXRlZEZyb20gKz0gb3RoZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJv
bTsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUb0JlZm9yZSB8PSBvdGhlci50b3BGcmFt
ZUhhc0JlZW5OYXZpZ2F0ZWRUb0JlZm9yZTsKKyAgICAKKyAgICAvLyBTdWJmcmFtZSBzdGF0cwor
ICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucywgb3Ro
ZXIuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyk7CisgICAgc3ViZnJhbWVIYXNCZWVuUmVk
aXJlY3RlZFRvICs9IG90aGVyLnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBzdWJm
cmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSArPSBvdGhlci5zdWJmcmFtZUhhc0JlZW5SZWRpcmVj
dGVkRnJvbTsKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHN1YmZyYW1lVW5pcXVlUmVkaXJlY3Rz
VG8sIG90aGVyLnN1YmZyYW1lVW5pcXVlUmVkaXJlY3RzVG8pOworICAgIHN1YmZyYW1lU3ViUmVz
b3VyY2VDb3VudCArPSBvdGhlci5zdWJmcmFtZVN1YlJlc291cmNlQ291bnQ7CisgICAgc3ViZnJh
bWVIYXNCZWVuTmF2aWdhdGVkVG8gKz0gb3RoZXIuc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87
CisgICAgc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbSArPSBvdGhlci5zdWJmcmFtZUhhc0Jl
ZW5OYXZpZ2F0ZWRGcm9tOworICAgIHN1YmZyYW1lSGFzQmVlbkxvYWRlZEJlZm9yZSB8PSBvdGhl
ci5zdWJmcmFtZUhhc0JlZW5Mb2FkZWRCZWZvcmU7CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ug
c3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVkU2V0KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9y
aWdpbnMsIG90aGVyLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMpOworICAgIHN1YnJl
c291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQgKz0gb3RoZXIuc3VicmVzb3VyY2VIYXNCZWVu
U3VicmVzb3VyY2VDb3VudDsKKyAgICBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSAr
PSBvdGhlci5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAgICBzdWJyZXNvdXJj
ZUhhc0JlZW5SZWRpcmVjdGVkVG8gKz0gb3RoZXIuc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3Rl
ZFRvOworICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNU
bywgb3RoZXIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyk7CisgICAgCisgICAgLy8gUHJl
dmFsZW50IHJlc291cmNlIHN0YXRzCisgICAgbWVyZ2VIYXNoQ291bnRlZFNldChyZWRpcmVjdGVk
VG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucywgb3RoZXIucmVkaXJlY3RlZFRvT3RoZXJQ
cmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMpOworICAgIGlzUHJldmFsZW50UmVzb3VyY2UgfD0gb3Ro
ZXIuaXNQcmV2YWxlbnRSZXNvdXJjZTsKK30KKwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCShyZXZpc2lvbiAxOTc1NTApCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNSwxNiArMzUsMjcgQEAgY2xhc3MgS2V5ZWREZWNvZGVyOwogY2xhc3MgS2V5ZWRF
bmNvZGVyOwogCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyB7CisgICAgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhjb25zdCBTdHJpbmcmIHByaW1hcnlEb21haW4pCisgICAgICAgIDogaGln
aExldmVsRG9tYWluKHByaW1hcnlEb21haW4pCisgICAgeworICAgIH0KKworICAgIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSA9IGRlZmF1bHQ7CisKICAgICBib29sIGNoZWNrQW5kU2V0QXNQcmV2
YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVuc2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpOwog
CiAgICAgYm9vbCBoYXNQcmV2YWxlbnRSZWRpcmVjdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaGFz
UHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJpc3RpY3MoKSBjb25zdDsKIAotICAgIHZvaWQgZW5j
b2RlKEtleWVkRW5jb2RlciYsIGNvbnN0IFN0cmluZyYgb3JpZ2luKSBjb25zdDsKLSAgICBib29s
IGRlY29kZShLZXllZERlY29kZXImLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7CisgICAgdm9pZCBl
bmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7CisgICAgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVy
Jik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKIAorICAgIHZvaWQgbWVyZ2UoY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOworCisgICAgU3RyaW5nIGhpZ2hMZXZlbERvbWFp
bjsKKwogICAgIC8vIFVzZXIgaW50ZXJhY3Rpb24KICAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlv
biB7IGZhbHNlIH07CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMjExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgorCisjaW5jbHVkZSAi
S2V5ZWRDb2RpbmcuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgorCisjZGVmaW5lIExPR19TVEFUSVNUSUNTX1RPX0ZJTEUgMAorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1JlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpOworfQorCitSZWY8UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNy
ZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKCkpOworfQorICAgIAorUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KQorICAgIDogbV9zdG9yYWdlUGF0aChyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KQoreworfQorICAgIAorYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omlz
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwcmltYXJ5RG9tYWluKSBjb25zdAorewor
ICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKHByaW1hcnlE
b21haW4pOworICAgIGlmIChtYXBFbnRyeSA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1hcEVudHJ5LT52YWx1ZS5p
c1ByZXZhbGVudFJlc291cmNlOworfQorICAgIAorUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9t
YWluKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShwcmltYXJ5RG9tYWluLCBbJnByaW1hcnlE
b21haW5dIHsKKyAgICAgICAgcmV0dXJuIFJlc291cmNlTG9hZFN0YXRpc3RpY3MocHJpbWFyeURv
bWFpbik7CisgICAgfSk7CisKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsK
K30KKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz46Oktl
eVZhbHVlUGFpclR5cGUgU3RhdGlzdGljc1ZhbHVlOworCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6d3JpdGVEYXRhVG9EaXNrKCkKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBLZXll
ZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICAKKyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJi
cm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5iZWdpbigpLCBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwgW3RoaXNdKEtleWVkRW5jb2RlciYgZW5jb2Rlcklu
bmVyLCBjb25zdCBTdGF0aXN0aWNzVmFsdWUmIG9yaWdpbikgeworICAgICAgICBvcmlnaW4udmFs
dWUuZW5jb2RlKGVuY29kZXJJbm5lcik7CisgICAgfSk7CisgICAgCisgICAgd3JpdGVFbmNvZGVy
VG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVsbF9icm93c2luZ19zZXNzaW9uIik7Cit9CisKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgbV9zdG9yYWdlUGF0aCA9IHBhdGg7Cisg
ICAgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCk7Cit9CisKK1N0cmluZyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnBlcnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVs
KSBjb25zdAoreworICAgIGlmIChtX3N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICAvLyBUT0RPIERlY2lkZSB3aGF0IHRvIGNhbGwgdGhp
cyBmaWxlCisgICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VQYXRo
LCBsYWJlbCArICJfcmVzb3VyY2VMb2cucGxpc3QiKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpCit7CisgICAgaWYgKG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBkZWNvZGVyID0gY3JlYXRlRGVjb2RlckZyb21EaXNrKCJmdWxsX2Jyb3dzaW5nX3Nlc3Npb24i
KTsKKyAgICBpZiAoIWRlY29kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzPiBsb2FkZWRTdGF0aXN0aWNzOworICAgIGJvb2wgc3VjY2VlZGVk
ID0gZGVjb2Rlci0+ZGVjb2RlT2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbG9hZGVkU3Rh
dGlzdGljcywgW3RoaXNdKEtleWVkRGVjb2RlciYgZGVjb2RlcklubmVyLCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiBzdGF0aXN0aWNzKSB7CisgICAgICAgIHJldHVybiBzdGF0aXN0aWNzLmRlY29k
ZShkZWNvZGVySW5uZXIpOworICAgIH0pOworCisgICAgaWYgKCFzdWNjZWVkZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGZvciAoYXV0byYgc3RhdGlzdGljcyA6IGxvYWRlZFN0YXRpc3RpY3Mp
CisgICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNldChzdGF0aXN0aWNzLmhpZ2hMZXZl
bERvbWFpbiwgc3RhdGlzdGljcyk7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlRGVjb2RlckZyb21EaXNrKGNvbnN0
IFN0cmluZyYgbGFiZWwpIGNvbnN0Cit7CisgICAgU3RyaW5nIHJlc291cmNlTG9nID0gcGVyc2lz
dGVudFN0b3JhZ2VQYXRoKGxhYmVsKTsKKyAgICBpZiAocmVzb3VyY2VMb2cuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBy
YXdEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2VM
b2cpOworICAgIGlmICghcmF3RGF0YSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisg
ICAgcmV0dXJuIEtleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihyYXdEYXRhLT5kYXRhKCkpLCByYXdEYXRhLT5zaXplKCkpOworfQorICAgIAordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayhLZXllZEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Cit7CisjaWYgTE9HX1NU
QVRJU1RJQ1NfVE9fRklMRQorICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJhd0RhdGEgPSBlbmNv
ZGVyLmZpbmlzaEVuY29kaW5nKCk7CisgICAgaWYgKCFyYXdEYXRhKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgU3RyaW5nIHJlc291cmNlTG9nID0gcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGxh
YmVsKTsKKyAgICBpZiAocmVzb3VyY2VMb2cuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoIW1fc3RvcmFnZVBhdGguaXNFbXB0eSgpKQorICAgICAgICBtYWtlQWxsRGlyZWN0
b3JpZXMobV9zdG9yYWdlUGF0aCk7CisKKyAgICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHJlc291
cmNlTG9nLCBPcGVuRm9yV3JpdGUpOworICAgIGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIHJh
d0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6ZSgpKTsKKyAgICBjbG9zZUZpbGUoaGFuZGxlKTsK
KyAgICAKKyAgICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHJhd0Rh
dGEtPnNpemUoKSkpCisgICAgICAgIFdURkxvZ0Fsd2F5cygiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
czogV2Ugb25seSB3cm90ZSAlbGxkIG91dCBvZiAlZCBieXRlcyB0byBkaXNrIiwgd3JpdHRlbkJ5
dGVzLCByYXdEYXRhLT5zaXplKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZW5jb2Rlcik7
CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsKKyNlbmRpZgorfQorCitTdHJpbmcgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3Jp
Z2luKQoreworICAgIGF1dG8gaXRlciA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQob3Jp
Z2luKTsKKyAgICBpZiAoaXRlciA9PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisgICAgCisgICAgcmV0dXJuICJTdGF0aXN0aWNz
IGZvciAiICsgb3JpZ2luICsgIjpcbiIgKyBpdGVyLT52YWx1ZS50b1N0cmluZygpOworfQorCitW
ZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojp0YWtlU3RhdGlzdGljcygpCit7CisgICAgVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+
IHN0YXRpc3RpY3M7CisgICAgc3RhdGlzdGljcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBt
X3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1ZXMoKSkKKyAgICAgICAgc3RhdGlzdGljcy51bmNo
ZWNrZWRBcHBlbmQoV1RGTW92ZShzdGF0aXN0aWMpKTsKKworICAgIG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLmNsZWFyKCk7CisKKyAgICByZXR1cm4gc3RhdGlzdGljczsKK30KKwordm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdlU3RhdGlzdGljcyhjb25zdCBWZWN0b3I8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4mIHN0YXRpc3RpY3MpCit7CisgICAgZm9yIChhdXRvJiBzdGF0
aXN0aWMgOiBzdGF0aXN0aWNzKSB7CisgICAgICAgIAorICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3VyZShzdGF0aXN0aWMuaGlnaExldmVsRG9tYWluLCBb
JnN0YXRpc3RpY10geworICAgICAgICAgICAgcmV0dXJuIHN0YXRpc3RpYzsKKyAgICAgICAgfSk7
CisgICAgICAgIAorICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1lcmdlKHN0YXRpc3Rp
Yyk7CisgICAgfQorfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0Tm90
aWZpY2F0aW9uQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGhhbmRsZXIpCit7CisgICAg
bV9kYXRhQWRkZWRIYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKTsKK30KKwordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCit7Cisg
ICAgbV9kYXRhQWRkZWRIYW5kbGVyKCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZV9oCisjZGVmaW5lIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZV9oCisKKyNpbmNsdWRlICJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
S2V5ZWREZWNvZGVyOworY2xhc3MgS2V5ZWRFbmNvZGVyOworY2xhc3MgVVJMOworCitzdHJ1Y3Qg
UmVzb3VyY2VMb2FkU3RhdGlzdGljczsKKworY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiB7Citw
dWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiBjcmVhdGUoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVEYXRh
VG9EaXNrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkRGF0YUZyb21EaXNrSWZOZWVk
ZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpOworCisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3Rp
Y3NGb3JPcmlnaW4oY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7IH0KKyAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKTsgfQor
CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFy
eURvbWFpbihjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShj
b25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1lcmdl
U3RhdGlzdGljcyhjb25zdCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3Rp
Y3MoKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2so
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGhhbmRsZXIpOworCisgICAgdm9pZCBmaXJlRGF0YU1vZGlm
aWNhdGlvbkhhbmRsZXIoKTsKKworcHJpdmF0ZToKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUoKSA9IGRlZmF1bHQ7CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSk7CisgICAgU3RyaW5nIHBl
cnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZWF0ZURlY29kZXJGcm9tRGlzayhjb25zdCBT
dHJpbmcmIGxhYmVsKSBjb25zdDsKKyAgICB2b2lkIHdyaXRlRW5jb2RlclRvRGlzayhLZXllZEVu
Y29kZXImLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKKworICAgIEhhc2hNYXA8U3RyaW5n
LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBtX3Jlc291cmNlU3RhdGlzdGljc01hcDsKKyAgICBT
dHJpbmcgbV9zdG9yYWdlUGF0aDsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9kYXRhQWRk
ZWRIYW5kbGVyOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8q
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZV9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMTAgQEAKKzIwMTYtMDMtMDMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dLMl0gR2F0aGVyIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjc4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDcwMjg5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXZpc2UgdGhlIFdlYlByb2Nlc3MgdG8gbm90aWZ5
IHRoZSBVSVByb2Nlc3MgYWJvdXQgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzLiBUaGVzZQorICAg
ICAgICB1cGRhdGVzIGFyZSBub3QgdGltZS1jcml0aWNhbCwgYW5kIGRvIG5vdCBuZWVkIHRvIGJl
IGRvbmUgaW4gY29uY2VydCB3aXRoIHRoZSBhY3R1YWwKKyAgICAgICAgbG9hZC4gQXMgcmVzb3Vy
Y2UgbG9hZHMgYXJlIG1hZGUsIGVhY2ggV2ViUHJvY2VzcyBub3RpZmllcyB0aGUgVUlQcm9jZXNz
IG9mIHRoZSBuZXcKKyAgICAgICAgbG9hZCBjb3VudHMsIHRoZW4gY2xlYXJzIGl0cyBsb2NhbCBz
dGF0ZS4gVGhlc2Ugc3RhdGlzdGljcyBhcmUgdGhlbiBhZ2dyZWdhdGVkIGluCisgICAgICAgIHRo
ZSBVSVByb2Nlc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQWRkIG5ldyBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJz
Lmg6IFVwZGF0ZSB0byBzdXBwb3J0IEhhc2hDb3VudGVkU2V0cy4KKyAgICAgICAgKiBQbGF0Zm9y
bUVmbC5jbWFrZTogQWRkIG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmlsZXMgdG8g
YnVpbGQuCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6IERpdHRvLgorICAgICAgICAqIFBs
YXRmb3JtTWFjLmNtYWtlOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5o
OiBBZGQgbmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdHlwZS4KKworICAgICAgICAqIFNoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVy
PEV4Y2VwdGlvbkRldGFpbHM+OjpkZWNvZGUpOiBTdXBwb3J0IG5ldyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIHR5cGUuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz46OmVuY29kZSk6IEFkZGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJl
c291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUpOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzOjplbmNvZGUpOiBIYW5kbGUgJ3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
JyBmbGFnLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24pOiBBZGQgc3RvcmFnZSBsb2NhdGlvbiBmb3IgdGhlCisgICAgICAg
IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcy4KKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uOjpjb3B5KTogSGFuZGxlIHRoZSBuZXcgc3RvcmFnZSBsb2NhdGlvbiBhbmQgdGhl
IGZlYXR1cmUgZmxhZy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KTogQWRkZWQgc3R1Yi4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOiBBZGRlZC4KKyAg
ICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRp
b24pOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgbmV3IHJlc291cmNlCisgICAgICAgIGxvYWQgc3Rh
dGlzdGljcyBzdG9yYWdlIGxvY2F0aW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWRdKTogQWRkIG1ldGhvZCB0byByZWxheSBzZXR0aW5nIHRvIHVuZGVy
bHlpbmcKKyAgICAgICAgaW1wbGVtZW50YXRpb24uCisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wg
X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOl0pOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGluaXRdKTogQWRkIGZsYWcgZm9yIHJlc291cmNlIGxvYWQg
c3RhdGlzdGljcyBzdXBwb3J0LgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIGNv
cHlXaXRoWm9uZTpdKTogSGFuZGxlIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcyBzdXBwb3J0IGZs
YWcuCisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkXSk6IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKTogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAg
ICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXSk6
IEFkZGVkLgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3NldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkOl0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRdKTog
QWRkZWQuCisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogQ2hlY2sgdXNlciBzZXR0aW5nIGZv
ciBzdGF0ZQorICAgICAgICBvZiByZXNvdXJjZSBsb2FkIHN0YXRpc3RpY3Mgc3VwcG9ydC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2Vzcyk6IEhhbmRsZSBuZXcgZmxhZyBmb3Ig
ZW5hYmxpbmcgcmVzb3VyY2UKKyAgICAgICAgbG9hZCBzdGF0aXN0aWNzLgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlVG9EaXNrKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphcHBsaWNh
dGlvbldpbGxUZXJtaW5hdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6Y29yZVN0b3JlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybUluaXRpYWxpemUpOiBSZWdp
c3RlciBhIHRlcm1pbmF0aW9uIGhhbmRsZXIKKyAgICAgICAgdG8gY2xvc2UgZG93biB0aGUgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0b3JlLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpwbGF0Zm9ybURlc3Ryb3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6V2Vic2l0ZURhdGFTdG9yZSk6IEluaXRpYWxpemUgdGhlIG5ldyBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUKKyAgICAgICAgbWVtYmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjp3ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKTogUmVnaXN0ZXIgdGhlIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBvYmplY3QgYXMgYSB3b3JrIHF1
ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6
d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbik6IFVucmVnaXN0ZXIgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSk6IEFkZGVkLgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RhdGUgZmls
ZXMgdG8gYnVpbGQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBUYWtlIGludG8g
YWNjb3VudCB0aGUgbmV3IHBhcmFtZXRlcgorICAgICAgICBzcGVjaWZ5aW5nIHdoZXRoZXIgcmVz
b3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBiZWluZyBjYXB0dXJlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6IEluaXRpYWxpemVkIHN0YXRpc3RpY3MgY2hhbmdl
ZCBub3RpZmljYXRpb24gdGltZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnN0YXRp
c3RpY3NDaGFuZ2VkVGltZXJGaXJlZCk6IEFkZGVkLiBTZW5kIGJ1bmRsZXMgb2Ygc2l0ZSBsb2Fk
CisgICAgICAgIHN0YXRpc3RpY3MgdG8gdGhlIFVJUHJvY2VzcyBvbiBhIHNldCBpbnRlcnZhbC4g
Q2xlYXIgb3V0IGxvY2FsIGNhY2hlIGFmdGVyIGVhY2ggc2VuZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW46IEFkZCBuZXcgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQgbWVzc2FnZS4KKwogMjAxNi0wMy0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjE5Njc3MCk6IFVuYWJsZSB0byB1c2UgSGlwQ2hh
dCBNYWMgYXBwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3NTUwKQorKysg
U291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY2Nyw2ICs2
NjcsNyBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFVJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
bWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisg
ICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbgog
ICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdlcy5pbgogCiAgICAgVUlQcm9j
ZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpJbmRleDogU291
cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDcg
QEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViUHJvY2Vzc1Bvb2wgXAogICAgIFdlYlBy
b2Nlc3NQcm94eSBcCiAgICAgV2ViUmVzb3VyY2VMb2FkZXIgXAorICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSBcCiAgICAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyIFwKICAgICBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCiAgICAgV2ViVmlkZW9GdWxsc2NyZWVuTWFu
YWdlciBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNpb24gMTk3NTUwKQor
KysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDYgKzY2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0Jh
Y2tpbmdTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAog
ICAgIFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNwcAorICAgIFVJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAKICAgICBVSVByb2Nlc3Mv
QVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtR1RLLmNtYWtlCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bUdUSy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBsaXN0KEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAog
ICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvTGVn
YWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKyAgICBVSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL2NhaXJvL1dLSWNv
bkRhdGFiYXNlQ2Fpcm8uY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNt
YWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZp
c2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwog
ICAgIFNoYXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0KIAogICAgIFVJUHJvY2Vzcy9W
aWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uLmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJndW1l
bnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvQXJn
dW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L09wdGlvblNldC5oPgpAQCAtMzAwLDYgKzMwMSw0NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXlB
cmcsIHR5cGVuYW1lIEhhc2hBCiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgS2V5QXJn
LCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPEhhc2hDb3VudGVkU2V0PEtleUFyZywgSGFzaEFyZywgS2V5VHJhaXRzQXJnPj4gewor
ICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8S2V5QXJnLCBIYXNoQXJnLCBLZXlUcmFpdHNBcmc+
IEhhc2hDb3VudGVkU2V0VHlwZTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIYXNoQ291bnRlZFNldFR5cGUmIGhhc2hDb3VudGVk
U2V0KQorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oaGFz
aENvdW50ZWRTZXQuc2l6ZSgpKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoYXV0byBlbnRyeSA6
IGhhc2hDb3VudGVkU2V0KSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGVudHJ5LmtleTsKKyAg
ICAgICAgICAgIGVuY29kZXIgPDwgZW50cnkudmFsdWU7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSGFzaENv
dW50ZWRTZXRUeXBlJiBoYXNoQ291bnRlZFNldCkKKyAgICB7CisgICAgICAgIHVpbnQ2NF90IGhh
c2hDb3VudGVkU2V0U2l6ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShoYXNoQ291bnRl
ZFNldFNpemUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAg
SGFzaENvdW50ZWRTZXRUeXBlIHRlbXBIYXNoQ291bnRlZFNldDsKKyAgICAgICAgZm9yICh1aW50
NjRfdCBpID0gMDsgaSA8IGhhc2hDb3VudGVkU2V0U2l6ZTsgKytpKSB7CisgICAgICAgICAgICBL
ZXlBcmcga2V5OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShrZXkpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdW5zaWdu
ZWQgY291bnQ7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvdW50KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgh
dGVtcEhhc2hDb3VudGVkU2V0LmFkZChrZXksIGNvdW50KS5pc05ld0VudHJ5KSB7CisgICAgICAg
ICAgICAgICAgLy8gVGhlIGhhc2ggY291bnRlZCBzZXQgYWxyZWFkeSBoYXMgdGhlIHNwZWNpZmll
ZCBrZXksIGJhaWwuCisgICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52YWxpZCgpOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaGFzaENvdW50ZWRTZXQuc3dhcCh0ZW1wSGFzaENvdW50ZWRTZXQpOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQ+IHsKICAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3Qgc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVu
dERlY29kZXImLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50Jik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAko
cmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2Nyb2xsaW5nQ29uc3RyYWludHMuaD4KQEAgLTIwNDQsNCArMjA0NSwxMjUgQEAgYm9vbCBBcmd1
bWVudENvZGVyPEV4Y2VwdGlvbkRldGFpbHM+OjpkZQogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IHN0YXRpc3RpY3MpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFp
bjsKKyAgICAKKyAgICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgZW5jb2RlciA8PCBzdGF0aXN0
aWNzLmhhZFVzZXJJbnRlcmFjdGlvbjsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAg
ICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmU7
CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbzsK
KyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZEZyb207
CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSW5pdGlhbExvYWRDb3VudDsKKyAg
ICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87CisgICAg
ZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb207CisgICAg
CisgICAgLy8gU3ViZnJhbWUgc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3Muc3ViZnJh
bWVIYXNCZWVuTG9hZGVkQmVmb3JlOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFt
ZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1l
SGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFt
ZVN1YlJlc291cmNlQ291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5k
ZXJUb3BGcmFtZU9yaWdpbnM7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lVW5p
cXVlUmVkaXJlY3RzVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVl
bk5hdmlnYXRlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5O
YXZpZ2F0ZWRGcm9tOworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRzCisgICAgZW5jb2Rl
ciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIGVu
Y29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAg
ZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291bnQ7
CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNl
Q291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQ7CisgICAgZW5jb2RlciA8
PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnM7CisgICAgZW5jb2Rl
ciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87CisgICAgCisgICAg
Ly8gUHJldmFsZW50IFJlc291cmNlCisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnJlZGlyZWN0
ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zOworICAgIGVuY29kZXIgPDwgc3RhdGlz
dGljcy5pc1ByZXZhbGVudFJlc291cmNlOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MpCit7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbikpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmUpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRv
cEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuUmVkaXJl
Y3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSW5pdGlhbExvYWRDb3VudCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9w
RnJhbWVIYXNCZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRl
ZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3ViZnJhbWUgc3Rh
dHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTG9h
ZGVkQmVmb3JlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG8pKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNz
LnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZVN1YlJlc291
cmNlQ291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3Vi
ZnJhbWVVbmlxdWVSZWRpcmVjdHNUbykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVk
VG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb20pKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZEZyb20pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0
aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3Vy
Y2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuU3Vi
cmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIC8vIFByZXZh
bGVudCBSZXNvdXJjZQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5yZWRpcmVj
dGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MuaXNQcmV2YWxlbnRS
ZXNvdXJjZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworCiB9IC8vIG5hbWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDE5NzU1MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC04MCw2ICs4MCw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1Y3QgUGFzdGVib2Fy
ZFdlYkNvbnRlbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBSZWNlbnRTZWFyY2g7Citz
dHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIHN0cnVjdCBTY3JvbGxhYmxlQXJlYVBhcmFt
ZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0IFRleHRJbmRpY2F0b3JE
YXRhOwpAQCAtNDU1LDYgKzQ1NiwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIElQQwog
CiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHJldmlzaW9u
IDE5NzU1MCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Niw2ICs5Niw3IEBAIHZvaWQg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNvZGVyIDw8IHNob3Vs
ZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZzsKICAgICBlbmNvZGVyIDw8IHNob3Vs
ZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyOwogICAgIGVuY29kZXIgPDwgc2hvdWxkVXNl
Rm9udFNtb290aGluZzsKKyAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkOwogICAgIGVuY29kZXIgPDwgZm9udFdoaXRlbGlzdDsKICAgICBlbmNvZGVyIDw8IGljb25E
YXRhYmFzZUVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZXdyaXRlQ29uc3RBc1ZhcjsK
QEAgLTIxMyw2ICsyMTQsOCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJsZWQpKQpJbmRleDog
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNyw2
ICsxMDcsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgYm9v
bCBzaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmc7CiAgICAgYm9vbCBzaG91
bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91
bGRVc2VGb250U21vb3RoaW5nOworICAgIGJvb2wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQgeyBmYWxzZSB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gZm9udFdoaXRlbGlzdDsKIApJbmRl
eDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCShyZXZpc2lvbiAxOTc1NTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzgsNiArMTM4LDcgQEAgcHVibGljOgogICAgICAgICBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24sCiAgICAgICAgIFBsdWdpblNpdGVEYXRhTWFuYWdlciwKICAgICAgICAgUHJlZmVyZW5jZXMs
CisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwKICAgICAgICAgUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFTY3JpcHRB
bGVydFJlc3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0Q29uZmlybVJlc3VsdExp
c3RlbmVyLApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDYgKzU5LDcg
QEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFT
dG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CkBAIC01ODIsNiArNTgzLDcgQEAgV2ViUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTgogCiAgICAgcGFyYW1ldGVycy5zaG91bGRB
bHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoID0gbV9hbHdheXNVc2VzQ29tcGxleFRleHRDb2Rl
UGF0aDsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFVzZUZvbnRTbW9vdGhpbmcgPSBtX3Nob3VsZFVz
ZUZvbnRTbW9vdGhpbmc7CisgICAgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCA9IG1fY29uZmlndXJhdGlvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsK
IAogICAgIC8vIEZJWE1FOiBUaGlzIGxlYXZlcyBVSSBwcm9jZXNzIGFuZCBXZWJQcm9jZXNzIGRp
c2FncmVlaW5nIGFib3V0IHRoZSBzdGF0ZSBpZiB0aGUgY2xpZW50IGhhc24ndCBzZXQgdGhlIHBh
dGguCiAgICAgLy8gaWNvbkRhdGFiYXNlUGF0aCBpcyBub24tZW1wdHkgYnkgZGVmYXVsdCwgYnV0
IG1faWNvbkRhdGFiYXNlIGlzbid0IGVuYWJsZWQgaW4gVUkgcHJvY2VzcyB1bmxlc3Mgc2V0RGF0
YWJhc2VQYXRoIGlzIGNhbGxlZCBleHBsaWNpdGx5LgpAQCAtOTcxLDYgKzk3MywyMSBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpzZXREZWZhdWx0UmVxdWVzdFRpCiAgICAgc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZh
bCh0aW1lb3V0SW50ZXJ2YWwpKTsKIH0KIAorYm9vbCBXZWJQcm9jZXNzUG9vbDo6cmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoKQoreworICAgIEFTU0VSVChtX3dlYnNpdGVEYXRhU3RvcmUt
PndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKS0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSA9PSBtX2NvbmZpZ3VyYXRpb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKCkpOworICAgIHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPnJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2Nv
bmZpZ3VyYXRpb24tPnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGVuYWJsZWQpOwor
ICAgIGlmIChtX3dlYnNpdGVEYXRhU3RvcmUpCisgICAgICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpLT5zZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKKworICAgIHNlbmRUb0FsbFByb2Nl
c3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJs
ZWQoZW5hYmxlZCkpOworfQorCiBEb3dubG9hZFByb3h5KiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRl
RG93bmxvYWRQcm94eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0
dXJuIGVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuY3JlYXRlRG93bmxvYWRQcm94eShyZXF1ZXN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCShyZXZpc2lv
biAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAs
IDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTEsNiArMjExLDggQEAgcHVibGljOgog
ICAgIENhY2hlTW9kZWwgY2FjaGVNb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlv
bi0+Y2FjaGVNb2RlbCgpOyB9CiAKICAgICB2b2lkIHNldERlZmF1bHRSZXF1ZXN0VGltZW91dElu
dGVydmFsKGRvdWJsZSk7CisgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgp
OworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CiAKICAg
ICB2b2lkIHN0YXJ0TWVtb3J5U2FtcGxlcihjb25zdCBkb3VibGUgaW50ZXJ2YWwpOwogICAgIHZv
aWQgc3RvcE1lbW9yeVNhbXBsZXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCIKKworI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1JlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpOworfQorCitX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCisgICAg
OiBtX3Jlc291cmNlU3RhdGlzdGljc1N0b3JlKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y3JlYXRlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpKQoreworfQor
CitXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUoKQoreworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3M+JiBvcmlnaW5zKQoreworICAgIGNvcmVTdG9yZSgpLm1lcmdlU3Rh
dGlzdGljcyhvcmlnaW5zKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBpZiAoZW5hYmxlZCA9PSBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZW5hYmxl
ZDsKKworICAgIHJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOworfQorCitib29sIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOworfQor
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVhZERhdGFGcm9tRGlza0lm
TmVlZGVkKCkKK3sKKyAgICBpZiAoIW1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGNvcmVTdG9yZSgpLnJlYWREYXRhRnJvbURpc2tJZk5lZWRl
ZCgpOworfQorCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVUb0Rp
c2soKQoreworICAgIGlmICghbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGNvcmVTdG9yZSgpLndyaXRlRGF0YVRvRGlzaygpOworfQor
Cit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YXBwbGljYXRpb25XaWxsVGVy
bWluYXRlKCkKK3sKKyAgICBpZiAoIW1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FKDE1NDY0Mik6IFRFTVBPUkFSWSBDT0RFOiBU
aGlzIHNob3VsZCBub3QgYmUgZG9uZSBpbiBvbmUgbG9uZyBvcGVyYXRpb24gd2hlbiBleGl0aW5n
LgorICAgIHdyaXRlVG9EaXNrKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmVfaAorI2RlZmluZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVfaAorCisjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CisK
K2NsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSA6IHB1YmxpYyBJUEM6OkNvbm5l
Y3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlciB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIH5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKTsKKyAgICAKKyAg
ICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOworICAgIGJvb2wg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzPiYgb3JpZ2lucyk7CisKKyAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRl
cm1pbmF0ZSgpOworCisgICAgdm9pZCB3cml0ZVRvRGlzaygpOworICAgIHZvaWQgcmVhZERhdGFG
cm9tRGlza0lmTmVlZGVkKCk7CisKKyAgICB2b2lkIG1lcmdlU3RhdGlzdGljcyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mKTsKKworICAgIFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgY29yZVN0b3JlKCkgeyByZXR1cm4gbV9yZXNvdXJj
ZVN0YXRpc3RpY3NTdG9yZS5nZXQoKTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJik7CisgICAgCisgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOworICAg
IAorICAgIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fcmVzb3Vy
Y2VTdGF0aXN0aWNzU3RvcmU7CisgICAgYm9vbCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8g
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMg
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
IyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCittZXNzYWdlcyAtPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgeworICAg
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiBvcmlnaW5zKQorfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAko
cmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MSw2ICs2MSw3IEBAIFBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb24KICAgICAsIG1fbG9jYWxTdG9y
YWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rv
cnkoKSkKICAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpCiAgICAgLCBtX21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKSkKKyAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeShXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKQogewog
fQogCkBAIC04Myw5ICs4NCwxMSBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9j
ZXNzUG9vCiAgICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnkg
PSB0aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV93ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CisgICAg
Y29weS0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5ID0gdGhpcy0+bV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIGNvcHktPm1fY2FjaGVQYXJ0aXRpb25lZFVS
TFNjaGVtZXMgPSB0aGlzLT5tX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOwogICAgIGNvcHkt
Pm1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9hbHdheXNSZXZhbGlkYXRl
ZFVSTFNjaGVtZXM7CiAgICAgY29weS0+bV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZv
clRlc3RpbmcgPSB0aGlzLT5tX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGlu
ZzsKKyAgICBjb3B5LT5tX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gdGhpcy0+bV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKICAgICBjb3B5LT5tX292ZXJyaWRlTGFuZ3Vh
Z2VzID0gdGhpcy0+bV9vdmVycmlkZUxhbmd1YWdlczsKICAgICAKICAgICByZXR1cm4gY29weTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoY29u
c3QgV1RGOjpTdHJpbmcmIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpIHsgbV9tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5ID0gbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsgfQogCisgICAgY29u
c3QgV1RGOjpTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSBjb25zdCB7
IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpIHsgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5ID0gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsgfQorCiAgICAgY29uc3Qg
VmVjdG9yPFdURjo6U3RyaW5nPiYgY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoKSB7IHJldHVy
biBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOyB9CiAgICAgdm9pZCBzZXRDYWNoZVBhcnRp
dGlvbmVkVVJMU2NoZW1lcyhWZWN0b3I8V1RGOjpTdHJpbmc+JiYgY2FjaGVQYXJ0aXRpb25lZFVS
TFNjaGVtZXMpIHsgbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyA9IFdURk1vdmUoY2FjaGVQ
YXJ0aXRpb25lZFVSTFNjaGVtZXMpOyB9CiAKQEAgLTg2LDYgKzg5LDkgQEAgcHVibGljOgogICAg
IGJvb2wgZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3Rpbmc7IH0KICAgICB2
b2lkIHNldEZ1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZyhib29sIGFsbG93
ZWQpIHsgbV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcgPSBhbGxvd2Vk
OyB9CiAKKyAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9CisKICAgICBjb25zdCBWZWN0b3I8V1RGOjpT
dHJpbmc+JiBvdmVycmlkZUxhbmd1YWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVMYW5n
dWFnZXM7IH0KICAgICB2b2lkIHNldE92ZXJyaWRlTGFuZ3VhZ2VzKFZlY3RvcjxXVEY6OlN0cmlu
Zz4mJiBsYW5ndWFnZXMpIHsgbV9vdmVycmlkZUxhbmd1YWdlcyA9IFdURk1vdmUobGFuZ3VhZ2Vz
KTsgfQogCkBAIC0xMDMsOSArMTA5LDExIEBAIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV9s
b2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7Cisg
ICAgV1RGOjpTdHJpbmcgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIFZl
Y3RvcjxXVEY6OlN0cmluZz4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKICAgICBWZWN0
b3I8V1RGOjpTdHJpbmc+IG1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwogICAgIGJvb2wg
bV9mdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgVmVj
dG9yPFdURjo6U3RyaW5nPiBtX292ZXJyaWRlTGFuZ3VhZ2VzOwogfTsKIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3Bw
CShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjAsNiArMTIwLDEyIEBAIFN0cmlu
ZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZEQKICAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKICNlbmRpZgogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMTk3NTUwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRXZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKIAogcHJpdmF0ZToKICAgICBXZWJzaXRlRGF0YVN0
b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTc3LDYgKzc3LDExIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
V2ViU1FMRGEKICAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIldlYlNRTCIpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVs
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyIpOworfQorCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3RvcnlGaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQogewogICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwpAQCAtMTQzLDYgKzE0OCw3IEBAIFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiAKICAgICBjb25maWd1cmF0aW9u
LndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KCk7CiAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBjb25m
aWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sLm1tCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2
ICsyNjksMTYgQEAgLSAodm9pZClfc2V0QXV0b21hdGlvbkRlbGVnYXRlOihpZCA8X1dLQQogICAg
IF9wcm9jZXNzUG9vbC0+c2V0QXV0b21hdGlvbkNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFdlYktp
dDo6QXV0b21hdGlvbkNsaWVudD4oc2VsZiwgYXV0b21hdGlvbkRlbGVnYXRlKSk7CiB9CiAKKy0g
KEJPT0wpX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkCit7CisgICAgcmV0dXJuIF9wcm9j
ZXNzUG9vbC0+cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKTsKK30KKworLSAodm9pZClf
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIF9w
cm9jZXNzUG9vbC0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9
CisKIC0gKHZvaWQpX3dhcm1Jbml0aWFsUHJvY2VzcwogewogICAgIF9wcm9jZXNzUG9vbC0+d2Fy
bUluaXRpYWxQcm9jZXNzKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCShyZXZpc2lvbiAxOTc1
NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKIAogQHByb3BlcnR5IChu
b25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3du
bG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlkIDxfV0tBdXRvbWF0aW9uRGVs
ZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lP
U19UQkEpOworQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCBXS19B
VkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAKICsgKE5TVVJMICopX3dlYnNpdGVE
YXRhVVJMRm9yQ29udGFpbmVyV2l0aFVSTDooTlNVUkwgKiljb250YWluZXJVUkw7CiArIChOU1VS
TCAqKV93ZWJzaXRlRGF0YVVSTEZvckNvbnRhaW5lcldpdGhVUkw6KE5TVVJMICopY29udGFpbmVy
VVJMIGJ1bmRsZUlkZW50aWZpZXJJZk5vdEluQ29udGFpbmVyOihOU1N0cmluZyAqKWJ1bmRsZUlk
ZW50aWZpZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAxOTc1NTAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV0tQ
cm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbXBv
cnQgIldLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJXS1dlYnNp
dGVEYXRhU3RvcmVQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgogI2ltcG9ydCAi
X1dLVmlzaXRlZExpbmtQcm92aWRlci5oIgogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZUlu
dGVybmFsLmgiCkBAIC05Nyw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgQk9PTCBfYWxsb3dzSmF2
YVNjcmlwdE1hcmt1cDsKICAgICBCT09MIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHk7CiAg
ICAgQk9PTCBfYWxsb3dzTWV0YVJlZnJlc2g7CisgICAgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQ7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgTGF6eUluaXRpYWxpemVkPFJl
dGFpblB0cjxXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeT4+IF9jb250ZW50UHJvdmlk
ZXJSZWdpc3RyeTsKQEAgLTE1MSw2ICsxNTMsNyBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdAogICAg
IF9hbGxvd3NKYXZhU2NyaXB0TWFya3VwID0gWUVTOwogICAgIF9jb252ZXJ0c1Bvc2l0aW9uU3R5
bGVPbkNvcHkgPSBOTzsKICAgICBfYWxsb3dzTWV0YVJlZnJlc2ggPSBZRVM7CisgICAgX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gTk87CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAg
LTIzMiw2ICsyMzUsNyBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBj
b25maWd1cmF0aW9uLT5fYWxsb3dzSmF2YVNjcmlwdE1hcmt1cCA9IHNlbGYtPl9hbGxvd3NKYXZh
U2NyaXB0TWFya3VwOwogICAgIGNvbmZpZ3VyYXRpb24tPl9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVP
bkNvcHkgPSBzZWxmLT5fY29udmVydHNQb3NpdGlvblN0eWxlT25Db3B5OwogICAgIGNvbmZpZ3Vy
YXRpb24tPl9hbGxvd3NNZXRhUmVmcmVzaCA9IHNlbGYtPl9hbGxvd3NNZXRhUmVmcmVzaDsKKyAg
ICBjb25maWd1cmF0aW9uLT5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBzZWxmLT5f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAg
Y29uZmlndXJhdGlvbi0+X2FsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBzZWxmLT5fYWxsb3dz
SW5saW5lTWVkaWFQbGF5YmFjazsKQEAgLTQ5Niw2ICs1MDAsMTggQEAgLSAodm9pZClfc2V0QWxs
b3dzTWV0YVJlZnJlc2g6KEJPT0wpYWxsbwogICAgIF9hbGxvd3NNZXRhUmVmcmVzaCA9IGFsbG93
c01ldGFSZWZyZXNoOwogfQogCistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZAoreworICAgIEFTU0VSVChzZWxmLndlYnNpdGVEYXRhU3RvcmUuX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkID09IF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CisgICAgcmV0
dXJuIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDsKK30KKworLSAodm9pZClfc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KEJPT0wpZW5hYmxlZAoreworICAgIHNlbGYud2Vi
c2l0ZURhdGFTdG9yZS5fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOwor
ICAgIF9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7Cit9CisKICNpZiBQ
TEFURk9STShJT1MpCiAtIChCT09MKV9hbHdheXNSdW5zQXRGb3JlZ3JvdW5kUHJpb3JpdHkKIHsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvblByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgJKHJldmlzaW9uIDE5NzU1
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvblByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00OSw2ICs0OSw3IEBACiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NKYXZhU2NyaXB0TWFya3VwOikgQk9P
TCBfYWxsb3dzSmF2YVNjcmlwdE1hcmt1cCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9T
X1RCQSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDb252ZXJ0c1Bvc2l0aW9u
U3R5bGVPbkNvcHk6KSBCT09MIF9jb252ZXJ0c1Bvc2l0aW9uU3R5bGVPbkNvcHkgV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRl
cj1fc2V0QWxsb3dzTWV0YVJlZnJlc2g6KSBCT09MIF9hbGxvd3NNZXRhUmVmcmVzaCBXS19BVkFJ
TEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDopIEJPT0wgX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsK
IAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3Nl
dEFsd2F5c1J1bnNBdEZvcmVncm91bmRQcmlvcml0eTopIEJPT0wgX2Fsd2F5c1J1bnNBdEZvcmVn
cm91bmRQcmlvcml0eSBXS19BVkFJTEFCTEUoTkEsIDlfMCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQkocmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDcgQEAKIAog
I2ltcG9ydCAiV0tOU0FycmF5LmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJu
YWwuaCIKKyNpbXBvcnQgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9y
dCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAK
QEAgLTE2NCw2ICsxNjUsMTYgQEAgLSAodm9pZClfZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6KFdL
X1NFVAogICAgIH0pOwogfQogCistIChCT09MKV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZAoreworICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZCgpOworfQorCistICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDooQk9P
TCllbmFibGVkCit7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKS0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0Vu
YWJsZWQoZW5hYmxlZCk7Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAkocmV2aXNpb24gMTk3NTUwKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5T
VUludGVnZXIsIF9XS1dlYnNpdAogCiAtICh2b2lkKV9mZXRjaERhdGFSZWNvcmRzT2ZUeXBlczoo
V0tfU0VUKE5TU3RyaW5nICopICopZGF0YVR5cGVzIHdpdGhPcHRpb25zOihfV0tXZWJzaXRlRGF0
YVN0b3JlRmV0Y2hPcHRpb25zKW9wdGlvbnMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
X0FSUkFZKFdLV2Vic2l0ZURhdGFSZWNvcmQgKikgKikpY29tcGxldGlvbkhhbmRsZXI7CiAKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkOikgQk9PTCBfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVZBSUxBQkxFKFdL
X01BQ19UQkEsIFdLX0lPU19UQkEpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAxOTc1NTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNiw2ICszNiw3IEBAIFdLX0NMQVNTX0FWQUlMQUJM
RSgxMF8xMCwgOF8wKQogQHByb3BlcnR5IChub25hdG9taWMpIE5TSW50ZWdlciBkaXNrQ2FjaGVT
aXplT3ZlcnJpZGUgV0tfQVZBSUxBQkxFKDEwXzExLCA5XzApOwogQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIE5TQXJyYXkgKmNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOwogQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIFdLX0FSUkFZKE5TU3RyaW5nICopICphbHdheXNSZXZhbGlkYXRl
ZFVSTFNjaGVtZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgV0tfQVZB
SUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtODIsNiArODIsMTYgQEAgLSAodm9pZClzZXREaXNrQ2FjaGVTaXplT3Zl
cnJpZGU6KE5TSW50ZQogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldERpc2tDYWNo
ZVNpemVPdmVycmlkZShzaXplKTsKIH0KIAorLSAoQk9PTClyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZAoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpOworfQorCistICh2b2lkKXNldFJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkOihCT09MKWVuYWJsZWQKK3sKKyAgICBfcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLT5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKK30KKwog
LSAoTlNBcnJheSAqKWNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzCiB7CiAgICAgYXV0byBzY2hl
bWVzID0gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVt
ZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0FQSVdlYnNpdGVE
YXRhU3RvcmVFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0FQSVdlYnNpdGVEYXRhU3RvcmVFZmwuY3BwCShyZXZpc2lvbiAxOTc1NTApCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9BUElXZWJzaXRlRGF0YVN0b3JlRWZsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsMTEgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3Rv
cmU6OmRlZmF1bHRXZWJTUUxEYQogICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViS2l0RWZsIiBFSU5BX1BBVEhfU0VQX1MgIkRhdGFiYXNl
cyIpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiV2ViS2l0RWZsIiBFSU5BX1BBVEhfU0VQX1MgIlJlc291
cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKwogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
TmFtZSkKIHsKICAgICByZXR1cm4gV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KFN0
cmluZzo6ZnJvbVVURjgoZWZyZWV0X2NhY2hlX2hvbWVfZ2V0KCkpLCBkaXJlY3RvcnlOYW1lKTsK
QEAgLTg3LDYgKzkyLDcgQEAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9u
IAogICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBkZWZhdWx0V2Vi
U1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0
aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSA9IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAKICAgICBy
ZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL0FQSVdlYnNpdGVEYXRhU3RvcmVHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL0FQSVdlYnNpdGVEYXRhU3RvcmVHdGsuY3BwCShyZXZp
c2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJz
aXRlRGF0YVN0b3JlR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsMTEgQEAgU3Ry
aW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYQogICAgIHJldHVybiB3ZWJzaXRl
RGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigid2Via2l0Z3RrIiBHX0RJUl9T
RVBBUkFUT1JfUyAiZGF0YWJhc2VzIik7CiB9CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHdl
YnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJ3ZWJraXRndGsiIEdf
RElSX1NFUEFSQVRPUl9TICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKIFN0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudChXZWJDb3JlOjpmaWxlbmFtZVRvU3RyaW5nKGdfZ2V0X3VzZXJf
Y2FjaGVfZGlyKCkpLCBkaXJlY3RvcnlOYW1lKTsKQEAgLTg1LDYgKzkwLDcgQEAgV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIAogICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkgPSBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAg
ICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHRMb2NhbFN0b3Jh
Z2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnkgPSBkZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRp
b24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IGRlZmF1bHRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODUsNyArODUs
NyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXROZXR3b3JrQ2FjCiAjZW5kaWYKIAog
c3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRs
ZXJEZWZhdWx0c0tleSA9IEAiV2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIiOwot
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBXZWJLaXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZERlZmF1bHRzS2V5ID0gQCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCI7CiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogTlNTdHJpbmcgKlNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVnaXN0
ZXJlZE5vdGlmaWNhdGlvbk5hbWUgPSBAIldlYktpdFNjaGVtZUZvckN1c3RvbVByb3RvY29sUmVn
aXN0ZXJlZE5vdGlmaWNhdGlvbiI7CkBAIC0xNzgsNiArMTc4LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwogICAgIHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlRlRM
SklUID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0SlNDRlRMSklURW5hYmxlZERlZmF1bHRz
S2V5XTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9n
Z2luZyA9IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiTG9nTWVtb3J5SmV0c2FtRGV0YWlscyJdOwog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkU3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXIgPSBbZGVm
YXVsdHMgYm9vbEZvcktleTpXZWJLaXRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlckRlZmF1
bHRzS2V5XTsKKyAgICBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0g
W2RlZmF1bHRzIGJvb2xGb3JLZXk6V2ViS2l0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRE
ZWZhdWx0c0tleV07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgcGFyYW1ldGVycy5zaG91bGRS
ZXdyaXRlQ29uc3RBc1ZhciA9IGFwcGxpY2F0aW9uSXNJQm9va3MoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAJKHJldmlzaW9uIDE5NzU1MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzEsNiArMzEs
OCBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJTdG9y
YWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFiYXNlVHJhY2tlci5oPgpAQCAtNzcsNiArNzksNyBAQCBXZWJzaXRlRGF0YVN0b3Jl
OjpXZWJzaXRlRGF0YVN0b3JlKENvbmZpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
KFdURk1vdmUoY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkpCiAgICAgLCBt
X21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9uLm1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkpKQogICAgICwgbV9zdG9yYWdlTWFuYWdlcihTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSkK
KyAgICAsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RpcmVjdG9yeSkpKQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxl
LldlYktpdC5XZWJzaXRlRGF0YVN0b3JlIikpCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CkBAIC05NzYsNiArOTc5LDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNzV2ls
bE9wZQogewogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyKQogICAgICAgICBtX3N0b3JhZ2VNYW5h
Z2VyLT5wcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHdlYlByb2Nlc3NQcm94eSwgY29ubmVjdGlv
bik7CisKKyAgICBjb25uZWN0aW9uLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
ICZtX3F1ZXVlLmdldCgpLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OndlYlBhZ2VXaWxsT3BlbkNvbm5lY3Rpb24oV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHksIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTk5Miw2
ICs5OTcsOCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OndlYlBhZ2VEaWRDbG9zZUNvCiAKIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQog
eworICAgIGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7
CisKICAgICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgbV9zdG9yYWdlTWFuYWdlci0+
cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIGNvbm5lY3Rpb24pOwog
fQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgU3RvcmFnZU1hbmFnZXI7
CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKK2NsYXNzIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9w
dGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3RydWN0IFdlYnNpdGVEYXRhUmVj
b3JkOwpAQCAtNjMsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAg
ICAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CisgICAgICAgIFN0cmluZyBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIH07CiAgICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJhdGlvbik7CkBAIC04MCw2ICs4Miw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IGNvbnN0IFZlY3RvcjxXZWJzaXRlRGF0YVJlY29yZD4mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIFN0b3JhZ2VNYW5hZ2VyKiBzdG9yYWdlTWFuYWdl
cigpIHsgcmV0dXJuIG1fc3RvcmFnZU1hbmFnZXIuZ2V0KCk7IH0KKyAgICBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpIHsgcmV0dXJu
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy5nZXQoKTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IFdlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6U2Vzc2lvbklEKTsKQEAgLTExNiw2ICsxMTks
NyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5
OwogICAgIGNvbnN0IFN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29u
c3QgUmVmUHRyPFN0b3JhZ2VNYW5hZ2VyPiBtX3N0b3JhZ2VNYW5hZ2VyOworICAgIGNvbnN0IFJl
ZlB0cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljczsKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiB9OwpJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYnNpdGVEYXRhU3Rv
cmUuaCIKIAogI2ltcG9ydCAiU3RvcmFnZU1hbmFnZXIuaCIKKyNpbXBvcnQgIldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9TZWFyY2hQb3B1cE1lbnVD
b2NvYS5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKQEAgLTYxLDExICs2Miwx
NCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtSW5pdGlhbGl6CiAgICAgICAgIHRl
cm1pbmF0aW9uT2JzZXJ2ZXIgPSBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJd
IGFkZE9ic2VydmVyRm9yTmFtZTpub3RpZmljYXRpb25OYW1lIG9iamVjdDpuaWwgcXVldWU6bmls
IHVzaW5nQmxvY2s6XihOU05vdGlmaWNhdGlvbiAqbm90ZSkgewogICAgICAgICAgICAgZm9yIChh
dXRvJiBkYXRhU3RvcmUgOiBkYXRhU3RvcmVzV2l0aFN0b3JhZ2VNYW5hZ2VycygpKQogICAgICAg
ICAgICAgICAgIGRhdGFTdG9yZS0+bV9zdG9yYWdlTWFuYWdlci0+YXBwbGljYXRpb25XaWxsVGVy
bWluYXRlKCk7CisKKyAgICAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+YXBwbGlj
YXRpb25XaWxsVGVybWluYXRlKCk7CiAgICAgICAgIH1dOwogICAgIH0KIAogICAgIEFTU0VSVCgh
ZGF0YVN0b3Jlc1dpdGhTdG9yYWdlTWFuYWdlcnMoKS5jb250YWlucyh0aGlzKSk7CiAgICAgZGF0
YVN0b3Jlc1dpdGhTdG9yYWdlTWFuYWdlcnMoKS5hcHBlbmQodGhpcyk7CisgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLT5yZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpwbGF0Zm9ybURlc3Ryb3koKQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTk3NTUw
KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDQwLDYgKzEwNDAsOSBAQAogCQk3NUE4RDJFMTE4N0RFQzFBMDBD
MzlDOUUgLyogQVBJU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzVBOEQyREUxODdERTg3NDAwQzM5QzlFIC8qIEFQSVNlc3Npb24uaCAqLzsg
fTsKIAkJNzVBOEQyRTIxODdERUMxRTAwQzM5QzlFIC8qIEFQSVNlc3Npb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyREQxODdERTg3NDAw
QzM5QzlFIC8qIEFQSVNlc3Npb24uY3BwICovOyB9OwogCQk3NjJCNzQ4RDEyMEJDNzVDMDA4MTkz
MzkgLyogV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZl
cmVuY2VzUmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTdBNzkxRUZBMUM3Q0ZDRjEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3OTFFRjkxQzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CisJCTdB
NzkxRUZCMUM3Q0ZEMDEwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0E3OTFFRjgxQzdDRkIxMDAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZU1lc3NhZ2VzLmggKi87IH07CisJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi87IH07CiAJCTdDMTM1QUE4MTczQjBCQ0EwMDU4NkFF
MiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDMTM1QUE2MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbklu
Zm9ybWF0aW9uLmNwcCAqLzsgfTsKIAkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDMTM1QUE3MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MxMzVB
QUMxNzNCMENGRjAwNTg2QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQUExNzNCMENGRjAwNTg2
QUUyIC8qIFBsdWdpbkluZm9ybWF0aW9uTWFjLm1tICovOyB9OwpAQCAtMzA0MSw2ICszMDQ0LDEy
IEBACiAJCTc1QThEMkRFMTg3REU4NzQwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFQSVNlc3Npb24uaDsgcGF0aCA9IFVJUHJvY2Vzcy9B
UEkvQVBJU2Vzc2lvbi5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTc2MkI3NDgx
MTIwQkJBMDEwMDgxOTMzOSAvKiBGb250U21vb3RoaW5nTGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRm9udFNtb290aGluZ0xldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc2MkI3NDg0MTIwQkJBMkQwMDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVm
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1ByZWZlcmVuY2Vz
UmVmUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTc5MUVGODFDN0NG
QjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E3OTFFRjkx
QzdDRkIzNzAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworICAgICAgICAKKwkJN0E5Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwQkI5QTgxOERDREU4OTAwMDZDMDg2IC8qIFdlYkNvbnRlbnQtaU9TLmVudGl0
bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueG1sOyBwYXRoID0gIldlYkNvbnRlbnQtaU9TLmVudGl0bGVtZW50cyI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMEJCOUE5MThEQ0RGNUEwMDA2QzA4NiAvKiBOZXR3b3Jr
LWlPUy5lbnRpdGxlbWVudHMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhtbDsgcGF0aCA9ICJOZXR3b3JrLWlPUy5lbnRpdGxlbWVudHMiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzEzNUFBNjE3M0IwQkNBMDA1ODZBRTIgLyog
V0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTU3OTgsNiArNTgwNyw5IEBACiAJCQkJODZFNjdBMjIxOTBGNDExODAwMDA0QUI3IC8qIFBy
b2Nlc3NUaHJvdHRsZXIuY3BwICovLAogCQkJCTg2RTY3QTIxMTkwRjQxMTgwMDAwNEFCNyAvKiBQ
cm9jZXNzVGhyb3R0bGVyLmggKi8sCiAJCQkJODMwNDhBRTUxQUNBNDVEQzAwODJDODMyIC8qIFBy
b2Nlc3NUaHJvdHRsZXJDbGllbnQuaCAqLywKKwkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2Qzcg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKKwkJCQk3QTlDRDhDMTFD
Nzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCisJ
CQkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5tZXNzYWdlcy5pbiAqLywKIAkJCQlCQzExMUIwODExMkY1RTNDMDAzMzdCQUIgLyogUmVz
cG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8sCiAJCQkJMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8q
IFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLywKIAkJCQk1MUE0RDVBODE2Q0FDNEZGMDAwRTYxNUUg
LyogU3RhdGlzdGljc1JlcXVlc3QuY3BwICovLApAQCAtNjgxOSw2ICs2ODMxLDggQEAKIAkJCQkx
QUMxMzM4NDE4NTkwQzQ2MDBGM0VDMDUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlNZXNzYWdlcy5o
ICovLAogCQkJCTBGNTk0N0E1MTg3QjUxNzYwMDQzNzg1NyAvKiBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8sCiAJCQkJMEY1OTQ3QTYxODdCNTE3NjAwNDM3
ODU3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLywKKwkJCQk3QTc5
MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLywKKwkJCQk3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCAqLywKIAkJCQlFMThFNjkxMTE2
OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1NZXNzYWdlUmVjZWl2ZXIuY3BwICovLAogCQkJ
CUUxOEU2OTEyMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VzLmggKi8sCiAJ
CQkJRTE4RTY5MTMxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovLApAQCAtNzQzMCw2ICs3NDQ0LDcgQEAKIAkJCQkxQTBFQzc1RTEyNEJDN0Iy
MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0
M0I1RTEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMDQzREMxMTI0RkY4NzUwMEZGQkZCNSAvKiBQbHVnaW5Qcm94eS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQThF
RkE3MTEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE0QTlGMzMxMkI4NDRFMjAwOEZFOTg0IC8qIFBsdWdpblF1aXJrcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NENjIyNzgxNzM5RDg2MzAwNUJEN0ZGIC8qIFBsdWdpblNhbmRib3hQ
cm9maWxlLmggaW4gSGVhZGVycyAqLywKQEAgLTg4NDAsNiArODg1NSw3IEBACiAJCQkJMUEyRDg0
QTQxMjdGNkFEMTAwMUVCOTYyIC8qIE5QVmFyaWFudERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM4QUNBMTQxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaC5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQ0Y2NzMzMTJDN0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFz
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzM4NzQzNDE3MkY1NjE1MDAxQkQ4OEEgLyogUGFnZUJhbm5lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1QzA1MkYyNjFDNkQzQkQzMDA3NkU5MTkgLyogQXV0aGVudGljYXRp
b25NYW5hZ2VyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzZEMzdGQzE3MkY1NTVGMDA5
RDI4NDcgLyogUGFnZUJhbm5lck1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtOTIxOSw2ICs5MjM1
LDcgQEAKIAkJCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdlT3Zlcmxh
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzYwQzU3QTEyNDBBNTQ2MDA4QzVFMjkgLyogV0tC
dW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzE0REY5RTEyMEI2MzVG
MDA4MjZDMEMgLyogV0tCdW5kbGVTY3JpcHRXb3JsZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3
QTc5MUVGQzFDN0QwOEM1MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTQyNzEyMUMyM0Y4OUUwMEQ0MTE4MyAvKiBEb3du
bG9hZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUY1MTI0RkYwMjcwMDY4RjIwQSAv
KiBXS0NlcnRpZmljYXRlSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzQwNzYyODEyNEZG
MDQwMDA2OEYyMEEgLyogV0tDZXJ0aWZpY2F0ZUluZm9NYWMubW0gaW4gU291cmNlcyAqLywKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTk3
NTUwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAs
IDIwMTIsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMTAsIDIwMTIsIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01OCw2ICs1OCw3IEBA
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2xNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtODYsNiArODcsOSBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUdyb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybU1lZGlhU2Vzc2lv
bk1hbmFnZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRPYnNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VMb2FkU3RhdGlzdGljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CkBAIC0xNjYsOSArMTcwLDExIEBAIFdlYlBy
b2Nlc3M6OldlYlByb2Nlc3MoKQogICAgICwgbV9oYXNSaWNoQ29udGVudFNlcnZpY2VzKGZhbHNl
KQogI2VuZGlmCiAgICAgLCBtX25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyKCp0aGlzLCAm
V2ViUHJvY2Vzczo6bm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXJGaXJlZCkKKyAgICAsIG1f
c3RhdGlzdGljc0NoYW5nZWRUaW1lcigqdGhpcywgJldlYlByb2Nlc3M6OnN0YXRpc3RpY3NDaGFu
Z2VkVGltZXJGaXJlZCkKICNpZiBQTEFURk9STShJT1MpCiAgICAgLCBtX3dlYlNRTGl0ZURhdGFi
YXNlVHJhY2tlcigqdGhpcykKICNlbmRpZgorICAgICwgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmFnZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpKQog
ewogICAgIC8vIEluaXRpYWxpemUgb3VyIHBsYXRmb3JtIHN0cmF0ZWdpZXMuCiAgICAgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCk7CkBAIC0xOTgsNiArMjA0LDE0IEBAIFdlYlBy
b2Nlc3M6OldlYlByb2Nlc3MoKQogI2lmIFBMQVRGT1JNKElPUykKICAgICBQYWdlQ2FjaGU6OnNp
bmdsZXRvbigpLnNldFNob3VsZENsZWFyQmFja2luZ1N0b3Jlcyh0cnVlKTsKICNlbmRpZgorCisg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3RhdGlzdGljc1N0
b3JlKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JhZ2UuY29weVJlZigpKTsKKyAgICBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yYWdlLT5zZXROb3RpZmljYXRpb25DYWxsYmFjayhbdGhp
c10geworICAgICAgICBpZiAobV9zdGF0aXN0aWNzQ2hhbmdlZFRpbWVyLmlzQWN0aXZlKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAgICBtX3N0YXRpc3RpY3NDaGFuZ2Vk
VGltZXIuc3RhcnRPbmVTaG90KHN0ZDo6Y2hyb25vOjpzZWNvbmRzKDUpKTsKKyAgICB9KTsKIH0K
IAogV2ViUHJvY2Vzczo6fldlYlByb2Nlc3MoKQpAQCAtMzIxLDYgKzMzNSw4IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKIAogICAgIHNldERlZmF1bHRSZXF1ZXN0
VGltZW91dEludGVydmFsKHBhcmFtZXRlcnMuZGVmYXVsdFJlcXVlc3RUaW1lb3V0SW50ZXJ2YWwp
OwogCisgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CisKICAgICBpZiAocGFyYW1ldGVycy5zaG91bGRB
bHdheXNVc2VDb21wbGV4VGV4dENvZGVQYXRoKQogICAgICAgICBzZXRBbHdheXNVc2VzQ29tcGxl
eFRleHRDb2RlUGF0aCh0cnVlKTsKIApAQCAtMzY4LDYgKzM4NCw5IEBAIHZvaWQgV2ViUHJvY2Vz
czo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2UKICAgICAgICAgfQogICAgIH0KICNlbmRpZgorCisg
ICAgaWYgKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpCisgICAgICAg
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHRydWUpOwogfQogCiB2b2lkIFdlYlBy
b2Nlc3M6OmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCkBAIC0xMjg1LDYgKzEzMDQs
MTkgQEAgdm9pZCBXZWJQcm9jZXNzOjpub25WaXNpYmxlUHJvY2Vzc0NsZWFudQogI2VuZGlmCiB9
CiAKK3ZvaWQgV2ViUHJvY2Vzczo6c3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVkKCkKK3sKKyAg
ICBpZiAobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZS0+aXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NV
cGRhdGVkKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JhZ2UtPnRha2VTdGF0aXN0aWNzKCkp
LCAwKTsKK30KKwordm9pZCBXZWJQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZChib29sIGVuYWJsZWQpCit7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9i
c2VydmVyKCkuc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisK
IFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vzczo6dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyhBUEk6Ok9iamVjdCogb2JqZWN0KQogewogICAgIHN0cnVjdCBUcmFuc2Zvcm1lciBmaW5hbCA6
IFVzZXJEYXRhOjpUcmFuc2Zvcm1lciB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaAkocmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJW
aWV3VXBkYXRlRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIlZpc2l0ZWRMaW5rVGFibGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0h5c3RlcmVzaXNBY3Rpdml0eS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RpbWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTE3MCw2ICsxNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWdlV2lsbExlYXZlV2lu
ZG93KHVpbnQ2NF90IHBhZ2VJRCk7CiAKICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51
cFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIHN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCgpOwog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkZXN0cm95UmVuZGVyaW5nUmVzb3VyY2Vz
KCk7CkBAIC0yMzIsNiArMjM0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERlZmF1bHRSZXF1
ZXN0VGltZW91dEludGVydmFsKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRBbHdheXNVc2VzQ29tcGxl
eFRleHRDb2RlUGF0aChib29sKTsKICAgICB2b2lkIHNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmco
Ym9vbCk7CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsK
ICAgICB2b2lkIHVzZXJQcmVmZXJyZWRMYW5ndWFnZXNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JikgY29uc3Q7CiAgICAgdm9pZCBmdWxsS2V5Ym9hcmRBY2Nlc3NNb2RlQ2hhbmdlZChib29s
IGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQpOwogCkBAIC0zNjIsMTEgKzM2NSwxNCBAQCBwcml2
YXRlOgogCiAgICAgSGFzaFNldDx1aW50NjRfdD4gbV9wYWdlc0luV2luZG93czsKICAgICBXZWJD
b3JlOjpUaW1lciBtX25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyOworICAgIFdlYkNvcmU6
OlRpbWVyIG1fc3RhdGlzdGljc0NoYW5nZWRUaW1lcjsKIAogI2lmIFBMQVRGT1JNKElPUykKICAg
ICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7CiAj
ZW5kaWYKIAorICAgIFJlZjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JhZ2U7CisKICAgICBTaG91bGRBY2tub3dsZWRnZVdo
ZW5SZWFkeVRvU3VzcGVuZCBtX3Nob3VsZEFja25vd2xlZGdlV2hlblJlYWR5VG9TdXNwZW5kOwog
ICAgIGJvb2wgbV9zdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CiB9OwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMTk3NTUwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Miw2ICs0Miw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldERlZmF1bHRSZXF1ZXN0VGltZW91dEludGVy
dmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwpCiAgICAgU2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0
Q29kZVBhdGgoYm9vbCBhbHdheXNVc2VDb21wbGV4VGV4dCkKICAgICBTZXRTaG91bGRVc2VGb250
U21vb3RoaW5nKGJvb2wgdXNlRm9udFNtb290aGluZykKKyAgICBTZXRSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZChib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKICAgICBV
c2VyUHJlZmVycmVkTGFuZ3VhZ2VzQ2hhbmdlZChWZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXMpCiAg
ICAgRnVsbEtleWJvYXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NF
bmFibGVkKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAor
MjAxNi0wMy0wMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBbV0syXSBHYXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNzgKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI0NzAyODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFN3aXRjaCB0byBtYWludGFpbmluZyBhIGdsb2JhbCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUgaW4gdGhlIFdlYktpdCBwcm9jZXNzLAorICAgICAgICBhbmQg
aGFuZCBpdCBvZmYgdG8gdGhlIFdlYkNvcmUgbGF5ZXIgdG8gdXNlIGR1cmluZyBkYXRhIGdhdGhl
cmluZy4gVGhlIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZQorICAgICAgICBpcyBub3cgcmVz
cG9uc2libGUgZm9yIHJlYWRpbmcvd3JpdGluZyB0byBkaXNrLCBhbmQgdHJhY2tpbmcgdGhlIGNv
bGxlY3Rpb24gb2YgbG9hZCBkYXRhLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoV2ViS2l0SW5pdGlhbGl6ZUFwcGxpY2F0aW9uU3RhdGlzdGljc1N0b3JhZ2VQYXRo
SWZOZWNlc3NhcnkpOiBJbml0aWFsaXplIHNpbmdsZXRvbgorICAgICAgICBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUgb2JqZWN0IGZvciB0cmFja2luZyBzdGF0ZS4KKyAgICAgICAgKC1bV2Vi
VmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOiBSZXZpc2UgZm9yIG5ldyBzaW5nbGV0b24uCisg
ICAgICAgICgrW1dlYlZpZXcgX2FwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZV0pOiBEaXR0by4KKwog
MjAxNi0wMi0yOSAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9w
dCB0aGUgbmV3IHZlcnNpb24gb2YgQVZPdXRwdXREZXZpY2VNZW51Q29udHJvbGxlcidzIHNob3dN
ZW51Rm9yUmVjdCBtZXRob2QuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiAxOTc1NTApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI1Miw2ICsyNTIsOCBAQAogI2ltcG9ydCA8V2ViQ29yZS9N
b2JpbGVHZXN0YWx0U1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdGF0ZU5vdGlmaWVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrc0lPUy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU21hcnRSZXBsYWNlLmg+CkBAIC02MDYsNiArNjA4LDcgQEAgZW51bSB7
IFdlYlZpZXdWZXJzaW9uID0gNCB9OwogI2RlZmluZSB0aW1lZExheW91dFNpemUgNDA5NgogCiBz
dGF0aWMgTlNNdXRhYmxlU2V0ICpzY2hlbWVzV2l0aFJlcHJlc2VudGF0aW9uc1NldDsKK3N0YXRp
YyBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgKnJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTsKIAogI2lmICFQTEFURk9STShJT1MpCiBOU1N0cmluZyAqX1dlYkNhbkdvQmFj
a0tleSA9ICAgICAgICAgICAgQCJjYW5Hb0JhY2siOwpAQCAtNzY0LDcgKzc2NywxMCBAQCBzdGF0
aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplQXBwbGljYXRpb25TCiAgICAgQVNTRVJUKGFwcE5hbWUp
OwogICAgIAogICAgIE5TU3RyaW5nICpzdXBwb3J0RGlyZWN0b3J5ID0gW05TU3RyaW5nIF93ZWJr
aXRfbG9jYWxTdG9yYWdlRGlyZWN0b3J5V2l0aEJ1bmRsZUlkZW50aWZpZXI6YXBwTmFtZV07Ci0g
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkuc2V0U3RhdGlzdGljc1N0
b3JhZ2VEaXJlY3Rvcnkoc3VwcG9ydERpcmVjdG9yeSk7CisKKyAgICBSZWY8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBzdGF0aXN0aWNzU3RvcmUgPSBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShzdXBwb3J0RGlyZWN0b3J5KTsKKyAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgPSAmc3RhdGlzdGljc1N0b3JlLmdldCgpOworICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN0YXRpc3RpY3NTdG9y
ZShXVEZNb3ZlKHN0YXRpc3RpY3NTdG9yZSkpOwogICAgIAogICAgIGluaXRpYWxpemVkID0gWUVT
OwogfQpAQCAtMjQ3Miw3ICsyNDc4LDcgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihX
ZWJQcmVmZXJlbgogICAgIHNldHRpbmdzLnNldEhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNwZW5z
aW9uRW5hYmxlZChbcHJlZmVyZW5jZXMgaGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25F
bmFibGVkXSk7CiAKICAgICBzZXR0aW5ncy5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChbcHJlZmVyZW5jZXMgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWRdKTsKLSAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5yZWFkRGF0YUZyb21EaXNrSWZOZWVk
ZWQoKTsKKyAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUtPnJlYWREYXRhRnJvbURpc2tJ
Zk5lZWRlZCgpOwogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCiAgICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRHYW1lcGFkc0VuYWJsZWQoW3ByZWZlcmVuY2VzIGdh
bWVwYWRzRW5hYmxlZF0pOwpAQCAtNDg0Miw3ICs0ODQ4LDcgQEAgKyAodm9pZClfYXBwbGljYXRp
b25XaWxsVGVybWluYXRlCiB7ICAgCiAgICAgYXBwbGljYXRpb25Jc1Rlcm1pbmF0aW5nID0gWUVT
OwogCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkud3JpdGVEYXRh
VG9EaXNrKCk7CisgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT53cml0ZURhdGFUb0Rp
c2soKTsKIAogICAgIGlmIChmYXN0RG9jdW1lbnRUZWFyZG93bkVuYWJsZWQoKSkKICAgICAgICAg
W3NlbGYgY2xvc2VBbGxXZWJWaWV3c107CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc1NTApCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxNi0wMy0wMyAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBHYXRoZXIgcmVzb3Vy
Y2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTQyNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzAyODkyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dz
ZXIvbWFjL0FwcERlbGVnYXRlLm06CisgICAgICAgIChkZWZhdWx0Q29uZmlndXJhdGlvbik6Cisg
ICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tOgorICAgICAgICAo
LVtTZXR0aW5nc0NvbnRyb2xsZXIgX3BvcHVsYXRlTWVudV0pOiBNb3ZlIHNldHRpbmcgZnJvbSBX
SzEtb25seSB0byBiZQorICAgICAgICB1bml2ZXJzYWxseSBhcHBsaWNhYmxlLgorICAgICAgICAq
IE1pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAo
LVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkaWRDaGFuZ2VTZXR0aW5nc10pOiBSZWNvZ25p
emUgd2hlbiB0aGUKKyAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIGZsYWcgaGFzIGNo
YW5nZWQuCisKIDIwMTYtMDMtMDMgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gVW5yZXZpZXdlZCBmaXggYWZ0ZXIgcjE5NzUw
NSAoUnVuIHRoZSBydW4tYmVuY2htYXJrIHNjcmlwdCBvbiB0aGUgcGVyZm9ybWFuY2UgYm90LikK
SW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCShyZXZpc2lvbiAxOTc1NTApCisr
KyBUb29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQkod29ya2luZyBjb3B5KQpAQCAt
ODMsNiArODMsNyBAQCBzdGF0aWMgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqZGVmYXVsdENvCiAg
ICAgfQogCiAgICAgY29uZmlndXJhdGlvbi5zdXBwcmVzc2VzSW5jcmVtZW50YWxSZW5kZXJpbmcg
PSBbU2V0dGluZ3NDb250cm9sbGVyIHNoYXJlZF0uaW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVz
c2VkOworICAgIGNvbmZpZ3VyYXRpb24uX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0g
W1NldHRpbmdzQ29udHJvbGxlciBzaGFyZWRdLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
OwogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogI2VuZGlmCkluZGV4OiBUb29scy9NaW5p
QnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCShyZXZpc2lvbiAxOTc1NTApCisrKyBU
b29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkK
QEAgLTExMyw2ICsxMTMsNyBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAgICBbc2VsZiBfYWRk
SXRlbVdpdGhUaXRsZTpAIlN1cHByZXNzIEluY3JlbWVudGFsIFJlbmRlcmluZyBpbiBOZXcgV2lu
ZG93cyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNz
ZWQ6KSBpbmRlbnRlZDpOT107CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUg
QWNjZWxlcmF0ZWQgRHJhd2luZyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVBY2NlbGVyYXRlZERy
YXdpbmdFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOwogICAgIFtzZWxmIF9hZGRJdGVtV2l0aFRpdGxl
OkAiRW5hYmxlIERpc3BsYXkgTGlzdCBEcmF3aW5nIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZURp
c3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ6KSBpbmRlbnRlZDpOT107CisgICAgW3NlbGYgX2FkZEl0
ZW1XaXRoVGl0bGU6QCJFbmFibGUgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIiBhY3Rpb246QHNl
bGVjdG9yKHRvZ2dsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgaW5kZW50ZWQ6Tk9d
OwogCiAgICAgW3NlbGYgX2FkZEhlYWRlcldpdGhUaXRsZTpAIldlYktpdDItb25seSBTZXR0aW5n
cyJdOwogCkBAIC0xNDEsNyArMTQyLDYgQEAgLSAodm9pZClfcG9wdWxhdGVNZW51CiAKICAgICBb
c2VsZiBfYWRkSGVhZGVyV2l0aFRpdGxlOkAiV2ViS2l0MS1vbmx5IFNldHRpbmdzIl07CiAgICAg
W3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgU3VicGl4ZWwgQ1NTT00gTWV0cmljcyIg
YWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVFbmFibGVTdWJQaXhlbENTU09NTWV0cmljczopIGluZGVu
dGVkOllFU107Ci0gICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgUmVzb3VyY2Ug
TG9hZCBTdGF0aXN0aWNzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOwogfQogCiAtIChCT09MKXZhbGlkYXRlTWVudUl0
ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dL
MkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dz
ZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDE5NzU1MCkKKysr
IFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tGcmFtZUluZm8uaD4K
ICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KQEAgLTM0Niw2ICszNDcsOCBAQCAtICh2b2lkKWRpZENoYW5nZVNldHRp
bmdzCiAgICAgcHJlZmVyZW5jZXMuX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSA9IHNldHRp
bmdzLnJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZTsKICAgICBwcmVmZXJlbmNlcy5fZGlzcGxh
eUxpc3REcmF3aW5nRW5hYmxlZCA9IHNldHRpbmdzLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ7
CiAKKyAgICBfd2ViVmlldy5jb25maWd1cmF0aW9uLnByb2Nlc3NQb29sLl9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCA9IHNldHRpbmdzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
OworCiAgICAgQk9PTCB1c2VUcmFuc3BhcmVudFdpbmRvd3MgPSBzZXR0aW5ncy51c2VUcmFuc3Bh
cmVudFdpbmRvd3M7CiAgICAgaWYgKHVzZVRyYW5zcGFyZW50V2luZG93cyAhPSAhX3dlYlZpZXcu
X2RyYXdzQmFja2dyb3VuZCkgewogICAgICAgICBbc2VsZi53aW5kb3cgc2V0T3BhcXVlOiF1c2VU
cmFuc3BhcmVudFdpbmRvd3NdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273028</attachid>
            <date>2016-03-04 13:09:33 -0800</date>
            <delta_ts>2016-03-04 14:45:08 -0800</delta_ts>
            <desc>Patch (v5)</desc>
            <filename>bug-154278-20160304130918.patch</filename>
            <type>text/plain</type>
            <size>109411</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzU2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE2LTAzLTA0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIEdhdGhlciByZXNv
dXJjZSBsb2FkIHN0YXRpc3RpY3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NDI3OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjQ3MDI4OTI+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVkIChu
b3cgdW5kZXIgV0syKSBieSBodHRwL3Rlc3RzL25hdmlnYXRpb24vc3RhdGlzdGljcy5odG1sCisK
KyAgICAgICAgU3BsaXQgcGFydCBvZiB0aGUgUmVzb3VyY2VMb2FkT2JzZXJ2ZXIgaW50byBhIG5l
dyBjbGFzcyAoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKQorICAgICAgICB0aGF0IG1hbmFn
ZXMgdGhlIGNvbGxlY3Rpb24gb2YgUmVzb3VyY2VMb2FkU3RhdGlzdGljIG9iamVjdHMsIGFuZCB0
aGF0IGNhbiBiZSB1c2VkCisgICAgICAgIGluIHRoZSBVSVByb2Nlc3Mgd2l0aG91dCB0b3VjaGlu
ZyB2YXJpb3VzIFdlYlByb2Nlc3Mtc3BlY2lmaWMgV2ViQ29yZSBjbGFzc2VzLgorCisgICAgICAg
IEhhdmUgdGhlIFdlYlByb2Nlc3Mgb25seSBmaXJlIGEgbWVzc2FnZSB0byB0aGUgVUlQcm9jZXNz
IGlmIGRhdGEgaGFzIGJlZW4gbW9kaWZpZWQuIE90aGVyd2lzZSwKKyAgICAgICAgbm8gbWVzc2Fn
ZXMgc2hvdWxkIGJlIHNlbnQuIFdoZW4gbmV3IGRhdGEgaXMgZW5jb3VudGVyZWQsIHN0YXJ0IGEg
NSBzZWNvbmQgdGltZXIuIElmIG1vcmUKKyAgICAgICAgZGF0YSBpcyBmb3VuZCBkdXJpbmcgdGhp
cyBkZWxheSwganVzdCBhY2N1bXVsYXRlIGl0LiBXaGVuIHRoZSB0aW1lciBmaXJlcywgYWxsIGRh
dGEgaXMgc2VudAorICAgICAgICBhbmQgdGhlIHRpbWVyIHN0b3BzIHVudGlsIGEgbmV3IGJhdGNo
IG9mIGRhdGEgYXJyaXZlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgdGhlIG5l
dyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgY2xhc3MuCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGp1c3QgdmlzaWJpbGl0eSBvZiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzIGhlYWRlciwKKyAgICAgICAgYW5kIGFkZCBuZXcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlIGNsYXNzLgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNz
U3RvcmUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dGcmFtZU5hdmlnYXRpb24pOiBUZWxsIHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUg
dG8gZmlyZSBpdHMgJ2RhdGEgY2hhbmdlZCcKKyAgICAgICAgaGFuZGxlciBpZiBuZWNlc3Nhcnku
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VM
b2FkaW5nKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
bG9nVXNlckludGVyYWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRPYnNlcnZlcjo6c3RhdGlzdGljc0Zvck9yaWdpbik6IFVzZSBuZXcgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6Omlz
UHJldmFsZW50UmVzb3VyY2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OndyaXRlRGF0YVRvRGlz
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2V0
U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnBlcnNpc3RlbnRTdG9yYWdlUGF0aCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVhZERhdGFGcm9tRGlza0lm
TmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZE9ic2VydmVy
OjpjcmVhdGVEZWNvZGVyRnJvbURpc2spOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OndyaXRlRW5jb2RlclRvRGlzayk6IERlbGV0ZWQuCisgICAgICAg
ICogbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmg6CisgICAgICAgICogbG9hZGVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljczo6ZW5jb2RlKTogR2V0IHJpZCBvZiB1bm5lZWRlZCBhcmd1bWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OmRlY29kZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6bWVyZ2VIYXNoQ291bnRlZFNldCk6IEFkZGVkIGhlbHBlciBmdW5jdGlvbi4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6Om1lcmdlKTogQWRkZWQu
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgor
ICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aXNQcmV2YWxlbnRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21h
aW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0
ZURhdGFUb0Rpc2spOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcnNpc3RlbnRTdG9yYWdlUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJvbURp
c2tJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmNyZWF0ZURlY29kZXJGcm9tRGlzayk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN0YXRpc3RpY3NGb3JPcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0YWtlU3RhdGlzdGlj
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lcmdl
U3RhdGlzdGljcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnNldE5vdGlmaWNhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6ZmlyZURhdGFNb2RpZmljYXRpb25IYW5kbGVyKToKKyAgICAg
ICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6IEFkZGVkLgorCiAyMDE2
LTAzLTAzICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBDb21w
b3NlZFRyZWVJdGVyYXRvciBtYXkgdHJhdmVyc2Ugc2xvdHRlZCBub2RlcyBtdWx0aXBsZSB0aW1l
cwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDE5NzU2MikKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTIzLDYgKzE5MjMsNyBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL1Jlc291cmNlTG9hZE5vdGlmaWVyLmNw
cAogICAgIGxvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKICAgICBsb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5jcHAKKyAgICBsb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAogICAgIGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKICAgICBsb2FkZXIvU2lua0Rv
Y3VtZW50LmNwcAogICAgIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE5NzU2MikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjY4Miw3ICsyNjgyLDcgQEAKIAkJN0E3NEVDQkIxMDE4
MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NEVDQjkxMDE4MzlBNjAwQkY5MzlF
IC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oICovOyB9OwogCQk3QTc0RUNCRDEwMTgzOURB
MDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NEVDQkMxMDE4MzlEQTAwQkY5
MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJN0E5MjlD
QTYxQzU5OEE5RTAwNERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5MjlDQTExQzU5ODM3ODAw
NERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwICovOyB9OwotCQk3QTkyOUNBNzFD
NTk4QUE5MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5MjlDQTIxQzU5ODM3ODAwNERGMjI2
IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCAqLzsgfTsKKwkJN0E5MjlDQTcxQzU5OEFBOTAw
NERGMjI2IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTI5Q0EyMUM1OTgzNzgwMDRERjIyNiAvKiBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0E5Mzg2ODUxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODIx
OERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuY3BwICovOyB9OwogCQk3QTkzODY4NjE4REND
MTQ1MDBCODI2M0QgLyogVlRUU2Nhbm5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0E5Mzg2ODMxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIu
aCAqLzsgfTsKIAkJN0FBM0E2OTkxOTRBNjRFNzAwMUNCRDI0IC8qIFRpbGVDb250cm9sbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTNBNjk1
MTk0QTY0RTcwMDFDQkQyNCAvKiBUaWxlQ29udHJvbGxlci5jcHAgKi87IH07CkBAIC0yNzAxLDYg
KzI3MDEsOCBAQAogCQk3QUIwQjFDMTEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0FCMEIxQkYxMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCAqLzsg
fTsKIAkJN0FDRDg4RDMxNEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQ0Q4
OEQxMTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgKi87IH07
CiAJCTdBQ0Q4OEQ0MTRDMDhCRDYwMDg0RUREMiAvKiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FDRDg4RDIx
NEMwOEJENjAwODRFREQyIC8qIEluc3BlY3RvckluZGV4ZWREQkFnZW50LmggKi87IH07CisJCTdB
RDNDREQ5MUM4QTAwMkYwMEYxMjY5OCAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3Q0M4MzYx
Qzg3NTA2ODAwMzY2MjQzIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi87IH07
CisJCTdBRDNDRERBMUM4QTAxQTQwMEYxMjY5OCAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBN0ND
ODM3MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QURFNzIyNjEw
Q0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FERTcyMjUxMENCQkI5QjAwNkIzQjNBIC8q
IENvbnRleHRNZW51UHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3QUUzMzVGMTFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRl
c3RUcmlnZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRTMzNUVGMUFDQjA5RTIwMEU0MDFFRiAvKiBXaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3Bw
ICovOyB9OwogCQk3QUUzMzVGMjFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RUcmln
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUUz
MzVGMDFBQ0IwOUUyMDBFNDAxRUYgLyogV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMjk3LDYgKzEwMjk5
LDggQEAKIAkJN0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNC
OTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUgLyogSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QTdDQzgzNjFDODc1MDY4MDAzNjYyNDMgLyogUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdBN0NDODM3MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTI5Q0Ex
MUM1OTgzNzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTkyOUNBMjFDNTk4Mzc4MDA0REYyMjYgLyog
UmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBOTM4NjgyMThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZUVFNjYW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjI3MjMsNiArMjI3MjcsOCBAQAogCQkJCTZCNjkzQTJEMUM1MUE4MkUw
MEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovLAogCQkJCTdBOTI5Q0ExMUM1OTgz
NzgwMDRERjIyNiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmNwcCAqLywKIAkJCQk3QTkyOUNB
MjFDNTk4Mzc4MDA0REYyMjYgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oICovLAorCQkJCTdB
N0NDODM2MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
ICovLAorCQkJCTdBN0NDODM3MUM4NzUwNjgwMDM2NjI0MyAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaCAqLywKIAkJCQk1MTMyN0Q1RjExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3Vt
ZW50LmNwcCAqLywKIAkJCQk1MTMyN0Q1RTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3VtZW50
LmggKi8sCiAJCQkJRDAwMEVEMjUxMUMxQjlDRDAwQzQ3NzI2IC8qIFN1YmZyYW1lTG9hZGVyLmNw
cCAqLywKQEAgLTI2NDA4LDYgKzI2NDE0LDcgQEAKIAkJCQk2NURGMzFGNDA5RDFDQzYwMDAwQkUz
MjUgLyogSlNDaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0MwNjU4ODBGM0NF
MkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0MwNjU4
QTBGM0NFMkE3MDBDRDJEODcgLyogSlNDbGllbnRSZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJN0FEM0NEREExQzhBMDFBNDAwRjEyNjk4IC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGQjU1MDQxMTNFM0U5MTAwODIxMTc2IC8qIEpTQ2xv
c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU4NEZFM0MxODY0RTJEODAwODQzQjEwIC8q
IEpTQ29tbWFuZExpbmVBUElIb3N0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Y5QjZFMTBCQTBG
QjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI5ODIzLDYgKzI5
ODMwLDcgQEAKIAkJCQlBOEVBN0QzMjBBMTkzODU1MDBBOEVGNUYgLyogSFRNTE1hcEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFQTdDQUMwQTE5MkI5QzAwQThFRjVGIC8qIEhUTUxN
YXJxdWVlRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDQ2MTNBNDBDRDYzMzEwMDBG
QURBNzUgLyogSFRNTE1lZGlhRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUQzQ0RE
OTFDOEEwMDJGMDBGMTI2OTggLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUM5NjhCMkU4MUIxRTc3ODEwMEVGMUY4MSAvKiBIVE1MTWVkaWFFbGVt
ZW50TWVkaWFTZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NzlCRjBEMTg0NTMxNjgw
MDBCNkFFNyAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThFQTc5RjgwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxNZW51RWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZE9ic2VydmVyLmNwcAkocmV2aXNpb24gMTk3NTYyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTEgKzI3LDEx
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKIAogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCi0jaW5jbHVkZSAiS2V5ZWRDb2RpbmcuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAj
aW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJh
dGVnaWVzLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgorI2luY2x1ZGUg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKQEAg
LTM5LDggKzM5LDYgQEAKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKLSNkZWZpbmUgTE9HX1NUQVRJU1RJQ1NfVE9f
RklMRSAwCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVzb3VyY2VMb2FkT2JzZXJ2ZXImIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpCkBAIC00OCw3ICs0NiwxMiBAQCBS
ZXNvdXJjZUxvYWRPYnNlcnZlciYgUmVzb3VyY2VMb2FkT2JzZXJ2CiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJlc291cmNlTG9hZE9ic2VydmVyPiByZXNvdXJjZUxvYWRPYnNlcnZlcjsKICAg
ICByZXR1cm4gcmVzb3VyY2VMb2FkT2JzZXJ2ZXI7CiB9Ci0gICAgCisKK3ZvaWQgUmVzb3VyY2VM
b2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NTdG9yZShSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiYmIHN0b3JlKQoreworICAgIG1fc3RvcmUgPSBXVEZNb3ZlKHN0b3JlKTsKK30KKwog
dm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZ2F0aW9uKGJvb2wgaXNSZWRp
cmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBib29sIGlz
TWFpbkZyYW1lLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCkKIHsKICAgICBpZiAoIVNldHRpbmdz
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKQpAQCAtNzEsNyArNzQsNyBAQCB2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgICAgIHJldHVybjsKICAg
ICAKICAgICBhdXRvIHRhcmdldE9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodGFyZ2V0
VVJMKTsKLSAgICBhdXRvJiB0YXJnZXRTdGF0aXN0aWNzID0gcmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbih0YXJnZXRQcmltYXJ5RG9tYWluKTsKKyAgICBhdXRvJiB0YXJnZXRTdGF0
aXN0aWNzID0gbV9zdG9yZS0+cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0YXJn
ZXRQcmltYXJ5RG9tYWluKTsKICAgICAKICAgICBpZiAoaXNNYWluRnJhbWUpCiAgICAgICAgIHRh
cmdldFN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmUgPSB0cnVlOwpA
QCAtODMsOSArODYsOSBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmln
CiAgICAgfQogICAgIAogICAgIGlmIChpc1JlZGlyZWN0KSB7Ci0gICAgICAgIGF1dG8mIHJlZGly
ZWN0aW5nT3JpZ2luUmVzb3VyY2VTdGF0aXN0aWNzID0gcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJp
bWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgYXV0byYgcmVkaXJlY3Rp
bmdPcmlnaW5SZXNvdXJjZVN0YXRpc3RpY3MgPSBtX3N0b3JlLT5yZXNvdXJjZVN0YXRpc3RpY3NG
b3JQcmltYXJ5RG9tYWluKHNvdXJjZVByaW1hcnlEb21haW4pOwogICAgICAgICAKLSAgICAgICAg
aWYgKGlzUHJldmFsZW50UmVzb3VyY2UodGFyZ2V0UHJpbWFyeURvbWFpbikpCisgICAgICAgIGlm
IChtX3N0b3JlLT5pc1ByZXZhbGVudFJlc291cmNlKHRhcmdldFByaW1hcnlEb21haW4pKQogICAg
ICAgICAgICAgcmVkaXJlY3RpbmdPcmlnaW5SZXNvdXJjZVN0YXRpc3RpY3MucmVkaXJlY3RlZFRv
T3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMuYWRkKHRhcmdldFByaW1hcnlEb21haW4pOwog
ICAgICAgICAKICAgICAgICAgaWYgKGlzTWFpbkZyYW1lKSB7CkBAIC0xMDUsNyArMTA4LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nRnJhbWVOYXZpZwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICsrdGFyZ2V0U3RhdGlzdGljcy5zdWJmcmFtZVN1YlJlc291cmNl
Q291bnQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRvJiBzb3VyY2VPcmlnaW5S
ZXNvdXJjZVN0YXRpc3RpY3MgPSByZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHNv
dXJjZVByaW1hcnlEb21haW4pOworICAgICAgICAgICAgYXV0byYgc291cmNlT3JpZ2luUmVzb3Vy
Y2VTdGF0aXN0aWNzID0gbV9zdG9yZS0+cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFp
bihzb3VyY2VQcmltYXJ5RG9tYWluKTsKIAogICAgICAgICAgICAgaWYgKGlzTWFpbkZyYW1lKSB7
CiAgICAgICAgICAgICAgICAgKytzb3VyY2VPcmlnaW5SZXNvdXJjZVN0YXRpc3RpY3MudG9wRnJh
bWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsKQEAgLTExNyw3ICsxMjAsOCBAQCB2b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpsb2dGcmFtZU5hdmlnCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0YXJn
ZXRTdGF0aXN0aWNzLmNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7CisgICAgdGFyZ2V0U3RhdGlzdGljcy5jaGVj
a0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeShtX3N0b3JlLT5zaXplKCkpOwor
ICAgIG1fc3RvcmUtPmZpcmVEYXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpOwogfQogICAgIAogdm9p
ZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nU3VicmVzb3VyY2VMb2FkaW5nKGJvb2wgaXNSZWRp
cmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkwsIGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBjb25zdCBV
UkwmIG1haW5GcmFtZVVSTCkKQEAgLTEzOCwxNSArMTQyLDE1IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OmxvZ1N1YnJlc291cmMKICAgICBpZiAodGFyZ2V0UHJpbWFyeURvbWFpbiA9PSBt
YWluRnJhbWVQcmltYXJ5RG9tYWluIHx8IHRhcmdldFByaW1hcnlEb21haW4gPT0gc291cmNlUHJp
bWFyeURvbWFpbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgdGFyZ2V0U3RhdGlzdGlj
cyA9IHJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFp
bik7CisgICAgYXV0byYgdGFyZ2V0U3RhdGlzdGljcyA9IG1fc3RvcmUtPnJlc291cmNlU3RhdGlz
dGljc0ZvclByaW1hcnlEb21haW4odGFyZ2V0UHJpbWFyeURvbWFpbik7CiAKICAgICBhdXRvIG1h
aW5GcmFtZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobWFpbkZyYW1lVVJMKTsKICAg
ICB0YXJnZXRTdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMuYWRkKG1h
aW5GcmFtZVByaW1hcnlEb21haW4pOwogCiAgICAgaWYgKGlzUmVkaXJlY3QpIHsKLSAgICAgICAg
YXV0byYgcmVkaXJlY3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gcmVzb3VyY2VTdGF0aXN0aWNzRm9y
UHJpbWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKKyAgICAgICAgYXV0byYgcmVkaXJl
Y3RpbmdPcmlnaW5TdGF0aXN0aWNzID0gbV9zdG9yZS0+cmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJp
bWFyeURvbWFpbihzb3VyY2VQcmltYXJ5RG9tYWluKTsKICAgICAgICAgCi0gICAgICAgIGlmIChp
c1ByZXZhbGVudFJlc291cmNlKHRhcmdldFByaW1hcnlEb21haW4pKQorICAgICAgICBpZiAobV9z
dG9yZS0+aXNQcmV2YWxlbnRSZXNvdXJjZSh0YXJnZXRQcmltYXJ5RG9tYWluKSkKICAgICAgICAg
ICAgIHJlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVu
dFJlc291cmNlT3JpZ2lucy5hZGQodGFyZ2V0UHJpbWFyeURvbWFpbik7CiAgICAgICAgIAogICAg
ICAgICArK3JlZGlyZWN0aW5nT3JpZ2luU3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRp
cmVjdGVkRnJvbTsKQEAgLTE2Nyw3ICsxNzEsOCBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
Ojpsb2dTdWJyZXNvdXJjCiAgICAgICAgIHRhcmdldFN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNC
ZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlzaXRlZCA9
IHN0YXRpY19jYXN0PGRvdWJsZT4odGFyZ2V0U3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5T
dWJyZXNvdXJjZUNvdW50KSAvIHRvdGFsVmlzaXRlZDsKICAgICB9CiAgICAgCi0gICAgdGFyZ2V0
U3RhdGlzdGljcy5jaGVja0FuZFNldEFzUHJldmFsZW50UmVzb3VyY2VJZk5lY2Vzc2FyeShtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5zaXplKCkpOworICAgIHRhcmdldFN0YXRpc3RpY3MuY2hlY2tB
bmRTZXRBc1ByZXZhbGVudFJlc291cmNlSWZOZWNlc3NhcnkobV9zdG9yZS0+c2l6ZSgpKTsKKyAg
ICBtX3N0b3JlLT5maXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKIH0KICAgICAKIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBEb2N1bWVudCYg
ZG9jdW1lbnQpCkBAIC0xNzUsMjcgKzE4MCwxMSBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVy
Ojpsb2dVc2VySW50ZXJhCiAgICAgaWYgKCFTZXR0aW5nczo6cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgc3RhdGlzdGljcyA9IHJl
c291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4ocHJpbWFyeURvbWFpbihkb2N1bWVudC51
cmwoKSkpOworICAgIGF1dG8mIHN0YXRpc3RpY3MgPSBtX3N0b3JlLT5yZXNvdXJjZVN0YXRpc3Rp
Y3NGb3JQcmltYXJ5RG9tYWluKHByaW1hcnlEb21haW4oZG9jdW1lbnQudXJsKCkpKTsKICAgICBz
dGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbiA9IHRydWU7CisgICAgbV9zdG9yZS0+ZmlyZURh
dGFNb2RpZmljYXRpb25IYW5kbGVyKCk7CiB9CiAgICAgCi1ib29sIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjppc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikgY29u
c3QKLXsKLSAgICBhdXRvIG1hcEVudHJ5ID0gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChw
cmltYXJ5RG9tYWluKTsKLSAgICBpZiAobWFwRW50cnkgPT0gbV9yZXNvdXJjZVN0YXRpc3RpY3NN
YXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBtYXBFbnRyeS0+
dmFsdWUuaXNQcmV2YWxlbnRSZXNvdXJjZTsKLX0KLSAgICAKLVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9t
YWluKGNvbnN0IFN0cmluZyYgcHJpbWFyeURvbWFpbikKLXsKLSAgICBpZiAoIW1fcmVzb3VyY2VT
dGF0aXN0aWNzTWFwLmNvbnRhaW5zKHByaW1hcnlEb21haW4pKQotICAgICAgICBtX3Jlc291cmNl
U3RhdGlzdGljc01hcC5zZXQocHJpbWFyeURvbWFpbiwgUmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KTsKLSAgICAKLSAgICByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZmluZChwcmltYXJ5
RG9tYWluKS0+dmFsdWU7Ci19Ci0KIFN0cmluZyBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cHJpbWFy
eURvbWFpbihjb25zdCBVUkwmIHVybCkKIHsKICAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCk7
CkBAIC0yMzgsMTM2ICsyMjcsOSBAQCBTdHJpbmcgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnByaW1h
cnlEb21hCiAgICAgcmV0dXJuIHByaW1hcnlEb21haW47CiB9CiAKLXR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpLZXlWYWx1ZVBhaXJUeXBlIFN0YXRpc3Rp
Y3NWYWx1ZTsKLQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVEYXRhVG9EaXNrKCkK
LXsKLSAgICBpZiAoIVNldHRpbmdzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBlbmNvZGVyID0gS2V5ZWRFbmNvZGVyOjpl
bmNvZGVyKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKCJvcmlnaW5zVmlzaXRlZCIsIG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7Ci0gICAgCi0gICAgZW5jb2Rlci0+ZW5jb2Rl
T2JqZWN0cygiYnJvd3NpbmdTdGF0aXN0aWNzIiwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuYmVn
aW4oKSwgbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuZW5kKCksIFt0aGlzXShLZXllZEVuY29kZXIm
IGVuY29kZXJJbm5lciwgY29uc3QgU3RhdGlzdGljc1ZhbHVlJiBvcmlnaW4pIHsKLSAgICAgICAg
b3JpZ2luLnZhbHVlLmVuY29kZShlbmNvZGVySW5uZXIsIG9yaWdpbi5rZXkpOwotICAgIH0pOwot
ICAgIAotICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwgImZ1bGxfYnJvd3Np
bmdfc2Vzc2lvbiIpOwotfQotCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjp3cml0ZURhdGFU
b0Rpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3Mm
IHJlc291cmNlU3RhdGlzdGljcykgY29uc3QKLXsKLSAgICBpZiAoIVNldHRpbmdzOjpyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGVu
Y29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50
MzIoIm9yaWdpbnNWaXNpdGVkIiwgMSk7Ci0gICAgCi0gICAgZW5jb2Rlci0+ZW5jb2RlT2JqZWN0
KG9yaWdpbiwgcmVzb3VyY2VTdGF0aXN0aWNzLCBbdGhpcywgJm9yaWdpbl0oS2V5ZWRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiByZXNvdXJjZVN0YXRpc3Rp
Y3MpIHsKLSAgICAgICAgcmVzb3VyY2VTdGF0aXN0aWNzLmVuY29kZShlbmNvZGVyLCBvcmlnaW4p
OwotICAgIH0pOwotICAgIAotICAgIFN0cmluZyBsYWJlbCA9IG9yaWdpbjsKLSAgICBsYWJlbC5y
ZXBsYWNlKCcvJywgJ18nKTsKLSAgICBsYWJlbC5yZXBsYWNlKCc6JywgJysnKTsKLSAgICB3cml0
ZUVuY29kZXJUb0Rpc2soKmVuY29kZXIuZ2V0KCksIGxhYmVsKTsKLX0KLQotdm9pZCBSZXNvdXJj
ZUxvYWRPYnNlcnZlcjo6c2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIG1fc3RvcmFnZVBhdGggPSBwYXRoOwotfQotCi1TdHJpbmcgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnBlcnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVs
KSBjb25zdAotewotICAgIGlmIChtX3N0b3JhZ2VQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7Ci0KLSAgICAvLyBUT0RPIERlY2lkZSB3aGF0IHRvIGNhbGwgdGhp
cyBmaWxlCi0gICAgcmV0dXJuIHBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VQYXRo
LCBsYWJlbCArICJfcmVzb3VyY2VMb2cucGxpc3QiKTsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cmVhZERhdGFGcm9tRGlza0lmTmVlZGVkKCkKLXsKLSAgICBpZiAoIVNldHRpbmdz
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAobV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuc2l6ZSgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBhdXRvIGRlY29kZXIgPSBjcmVhdGVEZWNvZGVyRnJvbURpc2soImZ1bGxfYnJvd3Npbmdf
c2Vzc2lvbiIpOwotICAgIGlmICghZGVjb2RlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdW5z
aWduZWQgdmlzaXRlZE9yaWdpbnMgPSAwOwotICAgIGRlY29kZXItPmRlY29kZVVJbnQzMigib3Jp
Z2luc1Zpc2l0ZWQiLCB2aXNpdGVkT3JpZ2lucyk7Ci0gICAgICAgIAotICAgIFZlY3RvcjxTdHJp
bmc+IGxvYWRlZE9yaWdpbnM7Ci0gICAgZGVjb2Rlci0+ZGVjb2RlT2JqZWN0cygiYnJvd3NpbmdT
dGF0aXN0aWNzIiwgbG9hZGVkT3JpZ2lucywgW3RoaXNdKEtleWVkRGVjb2RlciYgZGVjb2Rlcklu
bmVyLCBTdHJpbmcmIG9yaWdpbikgewotICAgICAgICBpZiAoIWRlY29kZXJJbm5lci5kZWNvZGVT
dHJpbmcoIlByZXZhbGVudFJlc291cmNlT3JpZ2luIiwgb3JpZ2luKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHN0YXRpc3RpY3M7
Ci0gICAgICAgIGlmICghc3RhdGlzdGljcy5kZWNvZGUoZGVjb2RlcklubmVyLCBvcmlnaW4pKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNz
TWFwLnNldChvcmlnaW4sIHN0YXRpc3RpY3MpOwotICAgICAgICAgICAgCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0pOwotICAgICAgICAKLSAgICBBU1NFUlQodmlzaXRlZE9yaWdpbnMgPT0g
c3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2FkZWRPcmlnaW5zLnNpemUoKSkpOwotfQotCi1zdGQ6OnVu
aXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6Y3JlYXRlRGVjb2Rl
ckZyb21EaXNrKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHJlc291
cmNlTG9nID0gcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGxhYmVsKTsKLSAgICBpZiAocmVzb3VyY2VM
b2cuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiByYXdEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGVXaXRoQ29udGVudHNP
ZkZpbGUocmVzb3VyY2VMb2cpOwotICAgIGlmICghcmF3RGF0YSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgCi0gICAgcmV0dXJuIEtleWVkRGVjb2Rlcjo6ZGVjb2RlcihyZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyYXdEYXRhLT5kYXRhKCkpLCByYXdEYXRhLT5zaXplKCkp
OwotfQotICAgIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6d3JpdGVFbmNvZGVyVG9EaXNr
KEtleWVkRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU3RyaW5nJiBsYWJlbCkgY29uc3QKLXsKLSNp
ZiBMT0dfU1RBVElTVElDU19UT19GSUxFCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmF3RGF0
YSA9IGVuY29kZXIuZmluaXNoRW5jb2RpbmcoKTsKLSAgICBpZiAoIXJhd0RhdGEpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBTdHJpbmcgcmVzb3VyY2VMb2cgPSBwZXJzaXN0ZW50U3RvcmFn
ZVBhdGgobGFiZWwpOwotICAgIGlmIChyZXNvdXJjZUxvZy5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmICghbV9zdG9yYWdlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIG1ha2VB
bGxEaXJlY3RvcmllcyhtX3N0b3JhZ2VQYXRoKTsKLQotICAgIGF1dG8gaGFuZGxlID0gb3BlbkZp
bGUocmVzb3VyY2VMb2csIE9wZW5Gb3JXcml0ZSk7Ci0gICAgaWYgKCFoYW5kbGUpCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICBpbnQ2NF90IHdyaXR0ZW5CeXRlcyA9IHdyaXRlVG9GaWxlKGhh
bmRsZSwgcmF3RGF0YS0+ZGF0YSgpLCByYXdEYXRhLT5zaXplKCkpOwotICAgIGNsb3NlRmlsZSho
YW5kbGUpOwotICAgIAotICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nhc3Q8aW50NjRf
dD4ocmF3RGF0YS0+c2l6ZSgpKSkKLSAgICAgICAgV1RGTG9nQWx3YXlzKCJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOiBXZSBvbmx5IHdyb3RlICVsbGQgb3V0IG9mICVkIGJ5dGVzIHRvIGRpc2siLCB3
cml0dGVuQnl0ZXMsIHJhd0RhdGEtPnNpemUoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShl
bmNvZGVyKTsKLSAgICBVTlVTRURfUEFSQU0obGFiZWwpOwotI2VuZGlmCi19Ci0KIFN0cmluZyBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c3RhdGlzdGljc0Zvck9yaWdpbihjb25zdCBTdHJpbmcmIG9y
aWdpbikKIHsKLSAgICBpZiAoIW1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNvbnRhaW5zKG9yaWdp
bikpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIAotICAgIGF1dG8mIHN0YXRp
c3RpY3MgPSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5maW5kKG9yaWdpbiktPnZhbHVlOwotICAg
IHJldHVybiAiU3RhdGlzdGljcyBmb3IgIiArIG9yaWdpbiArICI6XG4iICsgc3RhdGlzdGljcy50
b1N0cmluZygpOworICAgIHJldHVybiBtX3N0b3JlLT5zdGF0aXN0aWNzRm9yT3JpZ2luKG9yaWdp
bik7CiB9Ci0gICAgCisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5oCShyZXZpc2lvbiAxOTc1NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDEz
IEBACiAjaWZuZGVmIFJlc291cmNlTG9hZE9ic2VydmVyX2gKICNkZWZpbmUgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXJfaAogCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKLWNsYXNzIEtleWVkRGVj
b2RlcjsKLWNsYXNzIEtleWVkRW5jb2RlcjsKIGNsYXNzIFVSTDsKIAogc3RydWN0IFJlc291cmNl
TG9hZFN0YXRpc3RpY3M7CkBAIC00NywyOSArNDYsMTUgQEAgcHVibGljOgogICAgIHZvaWQgbG9n
U3VicmVzb3VyY2VMb2FkaW5nKGJvb2wgaXNSZWRpcmVjdCwgY29uc3QgVVJMJiBzb3VyY2VVUkws
IGNvbnN0IFVSTCYgdGFyZ2V0VVJMLCBjb25zdCBVUkwmIG1haW5GcmFtZVVSTCk7CiAgICAgdm9p
ZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgRG9jdW1lbnQmKTsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgd3JpdGVEYXRhVG9EaXNrKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFk
RGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFN0YXRp
c3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0U3RhdGlzdGljc1N0b3JlKFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+
JiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JPcmlnaW4oY29u
c3QgU3RyaW5nJik7CiAKIHByaXZhdGU6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgcmVz
b3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmKTsKLSAgICAKICAg
ICBzdGF0aWMgU3RyaW5nIHByaW1hcnlEb21haW4oY29uc3QgVVJMJik7CiAKLSAgICBib29sIGlz
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0KLSAgICBTdHJpbmcgcGVy
c2lzdGVudFN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0OwotCi0gICAgdm9p
ZCB3cml0ZURhdGFUb0Rpc2soY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmKSBjb25zdDsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+
IGNyZWF0ZURlY29kZXJGcm9tRGlzayhjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKLSAgICB2
b2lkIHdyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImLCBjb25zdCBTdHJpbmcmIGxhYmVs
KSBjb25zdDsKLQorICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IG1fc3Rv
cmU7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4gbV9vcmlnaW5zVmlzaXRlZE1hcDsKLSAg
ICBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRp
c3RpY3NNYXA7Ci0gICAgU3RyaW5nIG1fc3RvcmFnZVBhdGg7CiB9OwogICAgIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMTk3NTYyKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw5
ICs3Niw5IEBAIHN0YXRpYyB2b2lkIGVuY29kZUhhc2hDb3VudGVkU2V0KEtleWVkRW4KICAgICB9
KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjplbmNvZGUoS2V5ZWRFbmNvZGVy
JiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbikgY29uc3QKK3ZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6ZW5jb2RlKEtleWVkRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBl
bmNvZGVyLmVuY29kZVN0cmluZygiUHJldmFsZW50UmVzb3VyY2VPcmlnaW4iLCBvcmlnaW4pOwor
ICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIGhpZ2hM
ZXZlbERvbWFpbik7CiAgICAgCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAgIGVuY29kZXIu
ZW5jb2RlQm9vbCgiaGFkVXNlckludGVyYWN0aW9uIiwgaGFkVXNlckludGVyYWN0aW9uKTsKQEAg
LTEzMCwxNCArMTMwLDExIEBAIHN0YXRpYyB2b2lkIGRlY29kZUhhc2hDb3VudGVkU2V0KEtleWVk
RGUKICAgICB9KTsKIH0KIAotYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpkZWNvZGUoS2V5
ZWREZWNvZGVyJiBkZWNvZGVyLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKK2Jvb2wgUmVzb3VyY2VM
b2FkU3RhdGlzdGljczo6ZGVjb2RlKEtleWVkRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBTdHJp
bmcgc3RvcmVkT3JpZ2luOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoIlByZXZhbGVu
dFJlc291cmNlT3JpZ2luIiwgc3RvcmVkT3JpZ2luKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
U3RyaW5nKCJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbiIsIGhpZ2hMZXZlbERvbWFpbikpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBBU1NFUlRfVU5VU0VEKG9yaWdpbiwgc3RvcmVk
T3JpZ2luID09IG9yaWdpbik7Ci0gICAgCiAgICAgLy8gVXNlciBpbnRlcmFjdGlvbgogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGVCb29sKCJoYWRVc2VySW50ZXJhY3Rpb24iLCBoYWRVc2VySW50ZXJh
Y3Rpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDcsNCArMzA0LDQ3IEBAIFN0cmlu
ZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjp0b1N0cmluZygKICAgICByZXR1cm4gYnVpbGRlci50
b1N0cmluZygpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIG1lcmdl
SGFzaENvdW50ZWRTZXQoSGFzaENvdW50ZWRTZXQ8VD4mIHRvLCBjb25zdCBIYXNoQ291bnRlZFNl
dDxUPiYgZnJvbSkKK3sKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogZnJvbSkKKyAgICAgICAgdG8u
YWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOworfQorCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3M6Om1lcmdlKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmIG90aGVyKQoreworICAg
IEFTU0VSVChvdGhlci5oaWdoTGV2ZWxEb21haW4gPT0gaGlnaExldmVsRG9tYWluKTsKKworICAg
IGhhZFVzZXJJbnRlcmFjdGlvbiB8PSBvdGhlci5oYWRVc2VySW50ZXJhY3Rpb247CisgICAgCisg
ICAgLy8gVG9wIGZyYW1lIHN0YXRzCisgICAgdG9wRnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvICs9
IG90aGVyLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICB0b3BGcmFtZUhhc0JlZW5S
ZWRpcmVjdGVkRnJvbSArPSBvdGhlci50b3BGcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAg
ICB0b3BGcmFtZUluaXRpYWxMb2FkQ291bnQgKz0gb3RoZXIudG9wRnJhbWVJbml0aWFsTG9hZENv
dW50OworICAgIHRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvICs9IG90aGVyLnRvcEZyYW1lSGFz
QmVlbk5hdmlnYXRlZFRvOworICAgIHRvcEZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb20gKz0gb3Ro
ZXIudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkRnJvbTsKKyAgICB0b3BGcmFtZUhhc0JlZW5OYXZp
Z2F0ZWRUb0JlZm9yZSB8PSBvdGhlci50b3BGcmFtZUhhc0JlZW5OYXZpZ2F0ZWRUb0JlZm9yZTsK
KyAgICAKKyAgICAvLyBTdWJmcmFtZSBzdGF0cworICAgIG1lcmdlSGFzaENvdW50ZWRTZXQoc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucywgb3RoZXIuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2lucyk7CisgICAgc3ViZnJhbWVIYXNCZWVuUmVkaXJlY3RlZFRvICs9IG90aGVyLnN1YmZyYW1l
SGFzQmVlblJlZGlyZWN0ZWRUbzsKKyAgICBzdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSAr
PSBvdGhlci5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkRnJvbTsKKyAgICBtZXJnZUhhc2hDb3Vu
dGVkU2V0KHN1YmZyYW1lVW5pcXVlUmVkaXJlY3RzVG8sIG90aGVyLnN1YmZyYW1lVW5pcXVlUmVk
aXJlY3RzVG8pOworICAgIHN1YmZyYW1lU3ViUmVzb3VyY2VDb3VudCArPSBvdGhlci5zdWJmcmFt
ZVN1YlJlc291cmNlQ291bnQ7CisgICAgc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG8gKz0gb3Ro
ZXIuc3ViZnJhbWVIYXNCZWVuTmF2aWdhdGVkVG87CisgICAgc3ViZnJhbWVIYXNCZWVuTmF2aWdh
dGVkRnJvbSArPSBvdGhlci5zdWJmcmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tOworICAgIHN1YmZy
YW1lSGFzQmVlbkxvYWRlZEJlZm9yZSB8PSBvdGhlci5zdWJmcmFtZUhhc0JlZW5Mb2FkZWRCZWZv
cmU7CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAgICBtZXJnZUhhc2hDb3VudGVk
U2V0KHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnMsIG90aGVyLnN1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbnMpOworICAgIHN1YnJlc291cmNlSGFzQmVlblN1YnJlc291cmNlQ291
bnQgKz0gb3RoZXIuc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudDsKKyAgICBzdWJy
ZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkRnJvbSArPSBvdGhlci5zdWJyZXNvdXJjZUhhc0JlZW5S
ZWRpcmVjdGVkRnJvbTsKKyAgICBzdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVjdGVkVG8gKz0gb3Ro
ZXIuc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJlY3RlZFRvOworICAgIG1lcmdlSGFzaENvdW50ZWRT
ZXQoc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbywgb3RoZXIuc3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUbyk7CisgICAgCisgICAgLy8gUHJldmFsZW50IHJlc291cmNlIHN0YXRzCisgICAg
bWVyZ2VIYXNoQ291bnRlZFNldChyZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3Jp
Z2lucywgb3RoZXIucmVkaXJlY3RlZFRvT3RoZXJQcmV2YWxlbnRSZXNvdXJjZU9yaWdpbnMpOwor
ICAgIGlzUHJldmFsZW50UmVzb3VyY2UgfD0gb3RoZXIuaXNQcmV2YWxlbnRSZXNvdXJjZTsKK30K
KwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3Mu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy5oCShyZXZpc2lvbiAxOTc1NjIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxNiArMzUsMjcgQEAgY2xh
c3MgS2V5ZWREZWNvZGVyOwogY2xhc3MgS2V5ZWRFbmNvZGVyOwogCiBzdHJ1Y3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyB7CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhjb25zdCBTdHJpbmcm
IHByaW1hcnlEb21haW4pCisgICAgICAgIDogaGlnaExldmVsRG9tYWluKHByaW1hcnlEb21haW4p
CisgICAgeworICAgIH0KKworICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSA9IGRlZmF1bHQ7
CisKICAgICBib29sIGNoZWNrQW5kU2V0QXNQcmV2YWxlbnRSZXNvdXJjZUlmTmVjZXNzYXJ5KHVu
c2lnbmVkIG9yaWdpbnNWaXNpdGVkU29GYXIpOwogCiAgICAgYm9vbCBoYXNQcmV2YWxlbnRSZWRp
cmVjdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaGFzUHJldmFsZW50UmVzb3VyY2VDaGFyYWN0ZXJp
c3RpY3MoKSBjb25zdDsKIAotICAgIHZvaWQgZW5jb2RlKEtleWVkRW5jb2RlciYsIGNvbnN0IFN0
cmluZyYgb3JpZ2luKSBjb25zdDsKLSAgICBib29sIGRlY29kZShLZXllZERlY29kZXImLCBjb25z
dCBTdHJpbmcmIG9yaWdpbik7CisgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7
CisgICAgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJik7CiAKICAgICBTdHJpbmcgdG9TdHJpbmco
KSBjb25zdDsKIAorICAgIHZvaWQgbWVyZ2UoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYp
OworCisgICAgU3RyaW5nIGhpZ2hMZXZlbERvbWFpbjsKKwogICAgIC8vIFVzZXIgaW50ZXJhY3Rp
b24KICAgICBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiB7IGZhbHNlIH07CiAgICAgCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjExIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIgorCisjaW5jbHVkZSAiS2V5ZWRDb2RpbmcuaCIKKyNpbmNsdWRlICJM
b2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJhdGVnaWVzLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5o
IgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CisjaW5jbHVkZSAiVVJMLmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorCisjZGVmaW5lIExPR19TVEFUSVNUSUNT
X1RPX0ZJTEUgMAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSkpOworfQorCitSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkpOworfQorICAgIAorUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3Qg
U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQorICAgIDogbV9zdG9yYWdl
UGF0aChyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQoreworfQorICAgIAorYm9vbCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgU3Ry
aW5nJiBwcmltYXJ5RG9tYWluKSBjb25zdAoreworICAgIGF1dG8gbWFwRW50cnkgPSBtX3Jlc291
cmNlU3RhdGlzdGljc01hcC5maW5kKHByaW1hcnlEb21haW4pOworICAgIGlmIChtYXBFbnRyeSA9
PSBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIG1hcEVudHJ5LT52YWx1ZS5pc1ByZXZhbGVudFJlc291cmNlOworfQorICAg
IAorUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYgcHJpbWFyeURv
bWFpbikKK3sKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVu
c3VyZShwcmltYXJ5RG9tYWluLCBbJnByaW1hcnlEb21haW5dIHsKKyAgICAgICAgcmV0dXJuIFJl
c291cmNlTG9hZFN0YXRpc3RpY3MocHJpbWFyeURvbWFpbik7CisgICAgfSk7CisKKyAgICByZXR1
cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKK30KKwordHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgUmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OktleVZhbHVlUGFpclR5cGUgU3RhdGlzdGljc1Zh
bHVlOworCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVEYXRhVG9EaXNr
KCkKK3sKKyAgICBhdXRvIGVuY29kZXIgPSBLZXllZEVuY29kZXI6OmVuY29kZXIoKTsKKyAgICAK
KyAgICBlbmNvZGVyLT5lbmNvZGVPYmplY3RzKCJicm93c2luZ1N0YXRpc3RpY3MiLCBtX3Jlc291
cmNlU3RhdGlzdGljc01hcC5iZWdpbigpLCBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5lbmQoKSwg
W3RoaXNdKEtleWVkRW5jb2RlciYgZW5jb2RlcklubmVyLCBjb25zdCBTdGF0aXN0aWNzVmFsdWUm
IG9yaWdpbikgeworICAgICAgICBvcmlnaW4udmFsdWUuZW5jb2RlKGVuY29kZXJJbm5lcik7Cisg
ICAgfSk7CisgICAgCisgICAgd3JpdGVFbmNvZGVyVG9EaXNrKCplbmNvZGVyLmdldCgpLCAiZnVs
bF9icm93c2luZ19zZXNzaW9uIik7Cit9CisKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpzZXRTdGF0aXN0aWNzU3RvcmFnZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgbV9zdG9yYWdlUGF0aCA9IHBhdGg7CisgICAgcmVhZERhdGFGcm9tRGlza0lmTmVlZGVk
KCk7Cit9CisKK1N0cmluZyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcnNpc3RlbnRT
dG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdAoreworICAgIGlmIChtX3N0b3Jh
Z2VQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CisKKyAgICAv
LyBUT0RPIERlY2lkZSB3aGF0IHRvIGNhbGwgdGhpcyBmaWxlCisgICAgcmV0dXJuIHBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VQYXRoLCBsYWJlbCArICJfcmVzb3VyY2VMb2cucGxp
c3QiKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlYWREYXRhRnJv
bURpc2tJZk5lZWRlZCgpCit7CisgICAgaWYgKG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkZWNvZGVyID0gY3JlYXRlRGVjb2RlckZy
b21EaXNrKCJmdWxsX2Jyb3dzaW5nX3Nlc3Npb24iKTsKKyAgICBpZiAoIWRlY29kZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBsb2FkZWRT
dGF0aXN0aWNzOworICAgIGJvb2wgc3VjY2VlZGVkID0gZGVjb2Rlci0+ZGVjb2RlT2JqZWN0cygi
YnJvd3NpbmdTdGF0aXN0aWNzIiwgbG9hZGVkU3RhdGlzdGljcywgW3RoaXNdKEtleWVkRGVjb2Rl
ciYgZGVjb2RlcklubmVyLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiBzdGF0aXN0aWNzKSB7Cisg
ICAgICAgIHJldHVybiBzdGF0aXN0aWNzLmRlY29kZShkZWNvZGVySW5uZXIpOworICAgIH0pOwor
CisgICAgaWYgKCFzdWNjZWVkZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYg
c3RhdGlzdGljcyA6IGxvYWRlZFN0YXRpc3RpY3MpCisgICAgICAgIG1fcmVzb3VyY2VTdGF0aXN0
aWNzTWFwLnNldChzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbiwgc3RhdGlzdGljcyk7Cit9CisK
K3N0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y3JlYXRlRGVjb2RlckZyb21EaXNrKGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0Cit7Cisg
ICAgU3RyaW5nIHJlc291cmNlTG9nID0gcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGxhYmVsKTsKKyAg
ICBpZiAocmVzb3VyY2VMb2cuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiByYXdEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVh
dGVXaXRoQ29udGVudHNPZkZpbGUocmVzb3VyY2VMb2cpOworICAgIGlmICghcmF3RGF0YSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgCisgICAgcmV0dXJuIEtleWVkRGVjb2Rlcjo6ZGVj
b2RlcihyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihyYXdEYXRhLT5kYXRhKCkpLCBy
YXdEYXRhLT5zaXplKCkpOworfQorICAgIAordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OndyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwpIGNvbnN0Cit7CisjaWYgTE9HX1NUQVRJU1RJQ1NfVE9fRklMRQorICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IHJhd0RhdGEgPSBlbmNvZGVyLmZpbmlzaEVuY29kaW5nKCk7CisgICAg
aWYgKCFyYXdEYXRhKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU3RyaW5nIHJlc291cmNl
TG9nID0gcGVyc2lzdGVudFN0b3JhZ2VQYXRoKGxhYmVsKTsKKyAgICBpZiAocmVzb3VyY2VMb2cu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fc3RvcmFnZVBhdGguaXNF
bXB0eSgpKQorICAgICAgICBtYWtlQWxsRGlyZWN0b3JpZXMobV9zdG9yYWdlUGF0aCk7CisKKyAg
ICBhdXRvIGhhbmRsZSA9IG9wZW5GaWxlKHJlc291cmNlTG9nLCBPcGVuRm9yV3JpdGUpOworICAg
IGlmICghaGFuZGxlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaW50NjRfdCB3cml0dGVu
Qnl0ZXMgPSB3cml0ZVRvRmlsZShoYW5kbGUsIHJhd0RhdGEtPmRhdGEoKSwgcmF3RGF0YS0+c2l6
ZSgpKTsKKyAgICBjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAKKyAgICBpZiAod3JpdHRlbkJ5dGVz
ICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KHJhd0RhdGEtPnNpemUoKSkpCisgICAgICAgIFdURkxv
Z0Fsd2F5cygiUmVzb3VyY2VMb2FkU3RhdGlzdGljczogV2Ugb25seSB3cm90ZSAlbGxkIG91dCBv
ZiAlZCBieXRlcyB0byBkaXNrIiwgd3JpdHRlbkJ5dGVzLCByYXdEYXRhLT5zaXplKCkpOworI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oZW5jb2Rlcik7CisgICAgVU5VU0VEX1BBUkFNKGxhYmVsKTsK
KyNlbmRpZgorfQorCitTdHJpbmcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdGF0aXN0
aWNzRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIGF1dG8gaXRlciA9IG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLmZpbmQob3JpZ2luKTsKKyAgICBpZiAoaXRlciA9PSBtX3Jl
c291cmNlU3RhdGlzdGljc01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7
CisgICAgCisgICAgcmV0dXJuICJTdGF0aXN0aWNzIGZvciAiICsgb3JpZ2luICsgIjpcbiIgKyBp
dGVyLT52YWx1ZS50b1N0cmluZygpOworfQorCitWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp0YWtlU3RhdGlzdGljcygpCit7CisgICAg
VmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3M7CisgICAgc3RhdGlzdGlj
cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKSk7
CisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC52YWx1
ZXMoKSkKKyAgICAgICAgc3RhdGlzdGljcy51bmNoZWNrZWRBcHBlbmQoV1RGTW92ZShzdGF0aXN0
aWMpKTsKKworICAgIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmNsZWFyKCk7CisKKyAgICByZXR1
cm4gc3RhdGlzdGljczsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1l
cmdlU3RhdGlzdGljcyhjb25zdCBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIHN0YXRp
c3RpY3MpCit7CisgICAgZm9yIChhdXRvJiBzdGF0aXN0aWMgOiBzdGF0aXN0aWNzKSB7CisgICAg
ICAgIAorICAgICAgICBhdXRvIHJlc3VsdCA9IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmVuc3Vy
ZShzdGF0aXN0aWMuaGlnaExldmVsRG9tYWluLCBbJnN0YXRpc3RpY10geworICAgICAgICAgICAg
cmV0dXJuIHN0YXRpc3RpYzsKKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICByZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLm1lcmdlKHN0YXRpc3RpYyk7CisgICAgfQorfQorCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soc3RkOjpmdW5j
dGlvbjx2b2lkKCk+IGhhbmRsZXIpCit7CisgICAgbV9kYXRhQWRkZWRIYW5kbGVyID0gV1RGTW92
ZShoYW5kbGVyKTsKK30KKwordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmZpcmVE
YXRhTW9kaWZpY2F0aW9uSGFuZGxlcigpCit7CisgICAgbV9kYXRhQWRkZWRIYW5kbGVyKCk7Cit9
CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZV9oCisjZGVmaW5lIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZV9oCisKKyNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgS2V5ZWREZWNvZGVyOworY2xhc3MgS2V5ZWRF
bmNvZGVyOworY2xhc3MgVVJMOworCitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKKwor
Y2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIDogcHVibGljIFJlZkNvdW50ZWQ8UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpOworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoKTsKKworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVEYXRhVG9EaXNrKCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFN0YXRpc3RpY3NTdG9yYWdlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgU3RyaW5nIHN0YXRpc3RpY3NGb3JPcmlnaW4oY29uc3QgU3RyaW5nJik7
CisKKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGlj
c01hcC5pc0VtcHR5KCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVz
b3VyY2VTdGF0aXN0aWNzTWFwLnNpemUoKTsgfQorCisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYgcmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbihjb25zdCBTdHJpbmcmKTsKKwor
ICAgIGJvb2wgaXNQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICAK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1lcmdlU3RhdGlzdGljcyhjb25zdCBWZWN0b3I8UmVz
b3VyY2VMb2FkU3RhdGlzdGljcz4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2soc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGhhbmRs
ZXIpOworCisgICAgdm9pZCBmaXJlRGF0YU1vZGlmaWNhdGlvbkhhbmRsZXIoKTsKKworcHJpdmF0
ZToKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoKSA9IGRlZmF1bHQ7CisgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RpcmVjdG9yeSk7CisgICAgU3RyaW5nIHBlcnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBT
dHJpbmcmIGxhYmVsKSBjb25zdDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+
IGNyZWF0ZURlY29kZXJGcm9tRGlzayhjb25zdCBTdHJpbmcmIGxhYmVsKSBjb25zdDsKKyAgICB2
b2lkIHdyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29kZXImLCBjb25zdCBTdHJpbmcmIGxhYmVs
KSBjb25zdDsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBt
X3Jlc291cmNlU3RhdGlzdGljc01hcDsKKyAgICBTdHJpbmcgbV9zdG9yYWdlUGF0aDsKKyAgICBz
dGQ6OmZ1bmN0aW9uPHZvaWQoKT4gbV9kYXRhQWRkZWRIYW5kbGVyOworfTsKKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZV9oICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTc1NjIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw5MyBAQAorMjAxNi0wMy0wNCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXSBHYXRo
ZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI0NzAy
ODkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
dmlzZSB0aGUgV2ViUHJvY2VzcyB0byBub3RpZnkgdGhlIFVJUHJvY2VzcyBhYm91dCByZXNvdXJj
ZSBsb2FkIHN0YXRpc3RpY3MuIFRoZXNlCisgICAgICAgIHVwZGF0ZXMgYXJlIG5vdCB0aW1lLWNy
aXRpY2FsLCBhbmQgZG8gbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBjb25jZXJ0IHdpdGggdGhlIGFj
dHVhbAorICAgICAgICBsb2FkLiBBcyByZXNvdXJjZSBsb2FkcyBhcmUgbWFkZSwgZWFjaCBXZWJQ
cm9jZXNzIG5vdGlmaWVzIHRoZSBVSVByb2Nlc3Mgb2YgdGhlIG5ldworICAgICAgICBsb2FkIGNv
dW50cywgdGhlbiBjbGVhcnMgaXRzIGxvY2FsIHN0YXRlLiBUaGVzZSBzdGF0aXN0aWNzIGFyZSB0
aGVuIGFnZ3JlZ2F0ZWQgaW4KKyAgICAgICAgdGhlIFVJUHJvY2Vzcy4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OiBBZGQgbmV3IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdGF0ZSBmaWxlcyB0
byBidWlsZC4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBEaXR0by4KKyAgICAgICAg
KiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDogVXBkYXRlIHRvIHN1cHBvcnQgSGFzaENv
dW50ZWRTZXRzLgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBBZGQgbmV3IFJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdGF0ZSBmaWxlcyB0byBidWlsZC4KKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZTogRGl0dG8uCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6IERpdHRvLgorICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6IEFkZCBuZXcgUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyB0eXBlLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgor
ICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEV4Y2VwdGlvbkRldGFpbHM+OjpkZWNvZGUpOiBT
dXBwb3J0IG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHR5cGUuCisgICAgICAgIChJUEM6OkFy
Z3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVuY29kZSk6IEFkZGVkLgorICAg
ICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+OjpkZWNvZGUp
OiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAg
ICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOiBIYW5kbGUgJ3Jl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkJyBmbGFnLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOiBEaXR0by4KKyAgICAgICAgKiBTaGFy
ZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKEFQSTo6UHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24pOiBBZGQgc3RvcmFn
ZSBsb2NhdGlvbiBmb3IgdGhlCisgICAgICAgIHJlc291cmNlIGxvYWQgc3RhdGlzdGljcy4KKyAg
ICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KTogSGFuZGxlIHRoZSBu
ZXcgc3RvcmFnZSBsb2NhdGlvbiBhbmQgdGhlIGZlYXR1cmUgZmxhZy4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KTogQWRkZWQg
c3R1Yi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToK
KyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgbmV3
IHJlc291cmNlCisgICAgICAgIGxvYWQgc3RhdGlzdGljcyBzdG9yYWdlIGxvY2F0aW9uLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKTogU3luYyBQcm9jZXNzIFBvb2wg
Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzCisgICAgICAgIHdpdGggdGhlIHN0YXRlIG9mIG91ciB3
ZWJzaXRlRGF0YSBvYmplY3QncyAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQiIGZsYWcs
IHNvIHRoYXQKKyAgICAgICAgbmV3IHByb2Nlc3NlcyBhcmUgY3JlYXRlZCBpbiB0aGUgcmlnaHQg
c3RhdGUuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWRdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfc2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpjcmVhdGVOZXdXZWJQcm9jZXNzKTogSGFuZGxlIG5ldyBmbGFnIGZvciBlbmFibGluZyByZXNv
dXJjZQorICAgICAgICBsb2FkIHN0YXRpc3RpY3MuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWFkRGF0
YUZyb21EaXNrSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OndyaXRlVG9EaXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjphcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y29yZVN0b3JlKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3Nh
Z2VzLmluOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
OjpwbGF0Zm9ybUluaXRpYWxpemUpOiBSZWdpc3RlciBhIHRlcm1pbmF0aW9uIGhhbmRsZXIKKyAg
ICAgICAgdG8gY2xvc2UgZG93biB0aGUgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIHN0b3JlLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0ZURhdGFTdG9yZSk6IEluaXRp
YWxpemUgdGhlIG5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUKKyAgICAgICAgbWVt
YmVyLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNzV2lsbE9w
ZW5Db25uZWN0aW9uKTogUmVnaXN0ZXIgdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZQorICAgICAgICBvYmplY3QgYXMgYSB3b3JrIHF1ZXVlIG1lc3NhZ2UgcmVjZWl2ZXIKKyAgICAg
ICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlv
bik6IFVucmVnaXN0ZXIgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSk6IEFkZGVkLgorICAgICAgICAqIFdlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIG5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RhdGUgZmlsZXMgdG8gYnVpbGQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3Mp
OiBUYWtlIGludG8gYWNjb3VudCB0aGUgbmV3IHBhcmFtZXRlcgorICAgICAgICBzcGVjaWZ5aW5n
IHdoZXRoZXIgcmVzb3VyY2UgbG9hZCBzdGF0aXN0aWNzIGFyZSBiZWluZyBjYXB0dXJlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6IEluaXRpYWxpemVkIHN0YXRp
c3RpY3MgY2hhbmdlZCBub3RpZmljYXRpb24gdGltZXIuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnN0YXRpc3RpY3NDaGFuZ2VkVGltZXJGaXJlZCk6IEFkZGVkLiBTZW5kIGJ1bmRsZXMg
b2Ygc2l0ZSBsb2FkCisgICAgICAgIHN0YXRpc3RpY3MgdG8gdGhlIFVJUHJvY2VzcyBvbiBhIHNl
dCBpbnRlcnZhbC4gQ2xlYXIgb3V0IGxvY2FsIGNhY2hlIGFmdGVyIGVhY2ggc2VuZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQp
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46IEFkZCBuZXcgU2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQgbWVzc2FnZS4KKwogMjAxNi0wMy0wMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ3Jlc3Npb24ocjE5Njc3MCk6IFVuYWJsZSB0
byB1c2UgSGlwQ2hhdCBNYWMgYXBwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MTk3NTYyKQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTY2Nyw2ICs2NjcsNyBAQCBzZXQoV2ViS2l0Ml9NRVNTQUdFU19JTl9GSUxFUwogICAgIFVJ
UHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wubWVzc2FnZXMuaW4KICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisgICAgVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5t
ZXNzYWdlcy5pbgogICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5tZXNzYWdlcy5pbgog
CiAgICAgVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgpJbmRleDogU291cmNlL1dlYktpdDIvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxOTc1NjIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzEsNiArMTMxLDcgQEAgTUVTU0FHRV9SRUNFSVZFUlMgPSBcCiAgICAgV2ViUHJvY2Vzc1Bvb2wg
XAogICAgIFdlYlByb2Nlc3NQcm94eSBcCiAgICAgV2ViUmVzb3VyY2VMb2FkZXIgXAorICAgIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBcCiAgICAgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyIFwKICAgICBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSBcCiAgICAgV2ViVmlkZW9G
dWxsc2NyZWVuTWFuYWdlciBcCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQkocmV2aXNp
b24gMTk3NTYyKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDYgKzY2LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250
cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9MZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmdOb25lLmNw
cAorICAgIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS1ZpZXcuY3BwCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCShyZXZpc2lvbiAxOTc1NjIpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUdUSy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsNyBAQCBs
aXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250
cm9sbGVyLmNwcAogICAgIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAKICAgICBV
SVByb2Nlc3MvTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nTm9uZS5jcHAKKyAgICBVSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9D
L2NhaXJvL1dLSWNvbkRhdGFiYXNlQ2Fpcm8uY3BwCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFj
LmNtYWtlCShyZXZpc2lvbiAxOTc1NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5j
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCw3IEBAIGxpc3QoQVBQRU5EIFdlYktp
dDJfU09VUkNFUwogICAgIFNoYXJlZC9tYWMvV2ViTWVtb3J5U2FtcGxlci5tYWMubW0KIAogICAg
IFVJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisgICAgVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9JUEMvQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAkocmV2aXNpb24gMTk3NTYyKQorKysgU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2luY2x1ZGUgPHV0aWxpdHk+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgpAQCAtMzAwLDYgKzMwMSw0NyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBLZXlBcmcsIHR5cGVuYW1lIEhhc2hBCiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlw
ZW5hbWUgS2V5QXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmc+IHN0
cnVjdCBBcmd1bWVudENvZGVyPEhhc2hDb3VudGVkU2V0PEtleUFyZywgSGFzaEFyZywgS2V5VHJh
aXRzQXJnPj4geworICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8S2V5QXJnLCBIYXNoQXJnLCBL
ZXlUcmFpdHNBcmc+IEhhc2hDb3VudGVkU2V0VHlwZTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBIYXNoQ291bnRlZFNldFR5cGUm
IGhhc2hDb3VudGVkU2V0KQorICAgIHsKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4oaGFzaENvdW50ZWRTZXQuc2l6ZSgpKTsKKyAgICAgICAgCisgICAgICAgIGZvciAo
YXV0byBlbnRyeSA6IGhhc2hDb3VudGVkU2V0KSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IGVu
dHJ5LmtleTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgZW50cnkudmFsdWU7CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVj
b2RlciwgSGFzaENvdW50ZWRTZXRUeXBlJiBoYXNoQ291bnRlZFNldCkKKyAgICB7CisgICAgICAg
IHVpbnQ2NF90IGhhc2hDb3VudGVkU2V0U2l6ZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShoYXNoQ291bnRlZFNldFNpemUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAKKyAgICAgICAgSGFzaENvdW50ZWRTZXRUeXBlIHRlbXBIYXNoQ291bnRlZFNldDsKKyAgICAg
ICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IGhhc2hDb3VudGVkU2V0U2l6ZTsgKytpKSB7Cisg
ICAgICAgICAgICBLZXlBcmcga2V5OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShr
ZXkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdW5zaWduZWQgY291bnQ7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNv
dW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmICghdGVtcEhhc2hDb3VudGVkU2V0LmFkZChrZXksIGNvdW50KS5pc05ld0VudHJ5
KSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIGhhc2ggY291bnRlZCBzZXQgYWxyZWFkeSBoYXMg
dGhlIHNwZWNpZmllZCBrZXksIGJhaWwuCisgICAgICAgICAgICAgICAgZGVjb2Rlci5tYXJrSW52
YWxpZCgpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaGFzaENvdW50ZWRTZXQuc3dhcCh0ZW1wSGFzaENv
dW50ZWRTZXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQ+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3Qgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCYpOwogICAgIHN0YXRpYyBib29sIGRl
Y29kZShBcmd1bWVudERlY29kZXImLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAkocmV2aXNpb24gMTk3NTYyKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTIsNiArNTIsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nQ29uc3RyYWludHMuaD4KQEAgLTIwNDQsNCArMjA0NSwxMjUg
QEAgYm9vbCBBcmd1bWVudENvZGVyPEV4Y2VwdGlvbkRldGFpbHM+OjpkZQogICAgIHJldHVybiB0
cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmVu
Y29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MpCit7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLmhp
Z2hMZXZlbERvbWFpbjsKKyAgICAKKyAgICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgZW5jb2Rl
ciA8PCBzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbjsKKyAgICAKKyAgICAvLyBUb3AgZnJh
bWUgc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdh
dGVkVG9CZWZvcmU7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJl
ZGlyZWN0ZWRUbzsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuUmVk
aXJlY3RlZEZyb207CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSW5pdGlhbExv
YWRDb3VudDsKKyAgICBlbmNvZGVyIDw8IHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdh
dGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlbk5hdmlnYXRl
ZEZyb207CisgICAgCisgICAgLy8gU3ViZnJhbWUgc3RhdHMKKyAgICBlbmNvZGVyIDw8IHN0YXRp
c3RpY3Muc3ViZnJhbWVIYXNCZWVuTG9hZGVkQmVmb3JlOworICAgIGVuY29kZXIgPDwgc3RhdGlz
dGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0
aWNzLnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tOworICAgIGVuY29kZXIgPDwgc3RhdGlz
dGljcy5zdWJmcmFtZVN1YlJlc291cmNlQ291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNz
LnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnM7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNz
LnN1YmZyYW1lVW5pcXVlUmVkaXJlY3RzVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1
YmZyYW1lSGFzQmVlbk5hdmlnYXRlZFRvOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJm
cmFtZUhhc0JlZW5OYXZpZ2F0ZWRGcm9tOworICAgIAorICAgIC8vIFN1YnJlc291cmNlIHN0YXRz
CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRG
cm9tOworICAgIGVuY29kZXIgPDwgc3RhdGlzdGljcy5zdWJyZXNvdXJjZUhhc0JlZW5SZWRpcmVj
dGVkVG87CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblN1YnJl
c291cmNlQ291bnQ7CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVl
blN1YnJlc291cmNlQ291bnREaXZpZGVkQnlUb3RhbE51bWJlck9mT3JpZ2luc1Zpc2l0ZWQ7Cisg
ICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnM7
CisgICAgZW5jb2RlciA8PCBzdGF0aXN0aWNzLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87
CisgICAgCisgICAgLy8gUHJldmFsZW50IFJlc291cmNlCisgICAgZW5jb2RlciA8PCBzdGF0aXN0
aWNzLnJlZGlyZWN0ZWRUb090aGVyUHJldmFsZW50UmVzb3VyY2VPcmlnaW5zOworICAgIGVuY29k
ZXIgPDwgc3RhdGlzdGljcy5pc1ByZXZhbGVudFJlc291cmNlOworfQorCitib29sIEFyZ3VtZW50
Q29kZXI8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmIHN0YXRpc3RpY3MpCit7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmhpZ2hMZXZlbERvbWFpbikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBVc2VyIGludGVyYWN0aW9uCisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLmhhZFVzZXJJbnRlcmFjdGlvbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICAvLyBUb3AgZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG9CZWZvcmUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShz
dGF0aXN0aWNzLnRvcEZyYW1lSGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3MudG9wRnJhbWVI
YXNCZWVuUmVkaXJlY3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSW5pdGlhbExvYWRDb3VudCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRpc3RpY3MudG9wRnJhbWVIYXNCZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnRvcEZyYW1lSGFz
QmVlbk5hdmlnYXRlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8g
U3ViZnJhbWUgc3RhdHMKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJh
bWVIYXNCZWVuTG9hZGVkQmVmb3JlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJmcmFtZUhhc0JlZW5SZWRpcmVjdGVk
VG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlblJlZGlyZWN0ZWRGcm9tKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJm
cmFtZVN1YlJlc291cmNlQ291bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0
YXRpc3RpY3Muc3ViZnJhbWVVbmlxdWVSZWRpcmVjdHNUbykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3ViZnJhbWVIYXNC
ZWVuTmF2aWdhdGVkVG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShzdGF0aXN0aWNzLnN1YmZyYW1lSGFzQmVlbk5hdmlnYXRlZEZyb20pKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgLy8gU3VicmVzb3VyY2Ugc3RhdHMKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VIYXNCZWVuUmVkaXJl
Y3RlZEZyb20pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShzdGF0aXN0aWNzLnN1YnJlc291cmNlSGFzQmVlblJlZGlyZWN0ZWRUbykpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3Rp
Y3Muc3VicmVzb3VyY2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Muc3VicmVzb3Vy
Y2VIYXNCZWVuU3VicmVzb3VyY2VDb3VudERpdmlkZWRCeVRvdGFsTnVtYmVyT2ZPcmlnaW5zVmlz
aXRlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0YXRpc3RpY3Muc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlzdGljcy5zdWJy
ZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIC8vIFByZXZhbGVudCBSZXNvdXJjZQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RhdGlz
dGljcy5yZWRpcmVjdGVkVG9PdGhlclByZXZhbGVudFJlc291cmNlT3JpZ2lucykpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0YXRpc3RpY3Mu
aXNQcmV2YWxlbnRSZXNvdXJjZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBJUEMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgJKHJldmlzaW9uIDE5NzU2MikK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04MCw2ICs4MCw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7CiBzdHJ1
Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiBzdHJ1Y3QgUGx1Z2luSW5mbzsKIHN0cnVjdCBSZWNl
bnRTZWFyY2g7CitzdHJ1Y3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljczsKIHN0cnVjdCBTY3JvbGxh
YmxlQXJlYVBhcmFtZXRlcnM7CiBzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0Owogc3RydWN0IFRl
eHRJbmRpY2F0b3JEYXRhOwpAQCAtNDU1LDYgKzQ1NiwxMSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYsIFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKK307CisKIH0gLy8gbmFt
ZXNwYWNlIElQQwogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAJKHJldmlzaW9uIDE5NzU2MikKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Niw2ICs5
Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2QKICAgICBlbmNv
ZGVyIDw8IHNob3VsZEVuYWJsZU1lbW9yeVByZXNzdXJlUmVsaWVmTG9nZ2luZzsKICAgICBlbmNv
ZGVyIDw8IHNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyOwogICAgIGVuY29kZXIg
PDwgc2hvdWxkVXNlRm9udFNtb290aGluZzsKKyAgICBlbmNvZGVyIDw8IHJlc291cmNlTG9hZFN0
YXRpc3RpY3NFbmFibGVkOwogICAgIGVuY29kZXIgPDwgZm9udFdoaXRlbGlzdDsKICAgICBlbmNv
ZGVyIDw8IGljb25EYXRhYmFzZUVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBzaG91bGRSZXdyaXRl
Q29uc3RBc1ZhcjsKQEAgLTIxMyw2ICsyMTQsOCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuc2hvdWxkVXNlRm9udFNtb290aGluZykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLmZvbnRXaGl0ZWxpc3QpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljb25EYXRhYmFzZUVuYWJs
ZWQpKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCShyZXZpc2lvbiAxOTc1NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTEwNyw2ICsxMDcsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgYm9vbCBzaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmc7CiAg
ICAgYm9vbCBzaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxlciB7IGZhbHNlIH07CiAg
ICAgYm9vbCBzaG91bGRVc2VGb250U21vb3RoaW5nOworICAgIGJvb2wgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgeyBmYWxzZSB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gZm9udFdoaXRl
bGlzdDsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCShyZXZpc2lv
biAxOTc1NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDcgQEAgcHVibGljOgogICAgICAgICBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24sCiAgICAgICAgIFBsdWdpblNpdGVEYXRhTWFuYWdlciwKICAgICAgICAg
UHJlZmVyZW5jZXMsCisgICAgICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwKICAgICAg
ICAgUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1
bkphdmFTY3JpcHRBbGVydFJlc3VsdExpc3RlbmVyLAogICAgICAgICBSdW5KYXZhU2NyaXB0Q29u
ZmlybVJlc3VsdExpc3RlbmVyLApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCShyZXZpc2lvbiAxOTc1NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTYyMSw2ICs2MjEsOCBAQCBXZWJQcm9jZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVO
CiAgICAgcGFyYW1ldGVycy5zaG91bGRFbmFibGVNZW1vcnlQcmVzc3VyZVJlbGllZkxvZ2dpbmcg
PSB0cnVlOwogI2VuZGlmCiAKKyAgICBwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkID0gY29uZmlndXJhdGlvbigpLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCk7
CisKICAgICAvLyBBZGQgYW55IHBsYXRmb3JtIHNwZWNpZmljIHBhcmFtZXRlcnMKICAgICBwbGF0
Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKHBhcmFtZXRlcnMpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
OTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCisKKyNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkpKTsKK30KKworV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KQorICAgIDogbV9yZXNvdXJjZVN0YXRpc3RpY3NTdG9yZShXZWJDb3JlOjpSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KSkKK3sKK30KKworV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkKK3sKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYgb3JpZ2lucykKK3sKKyAgICBjb3Jl
U3RvcmUoKS5tZXJnZVN0YXRpc3RpY3Mob3JpZ2lucyk7Cit9CisKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29s
IGVuYWJsZWQpCit7CisgICAgaWYgKGVuYWJsZWQgPT0gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZCA9IGVuYWJsZWQ7CisKKyAgICByZWFkRGF0YUZyb21EaXNrSWZOZWVkZWQoKTsKK30K
KworYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZDsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
YWREYXRhRnJvbURpc2tJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBjb3JlU3RvcmUoKS5yZWFkRGF0
YUZyb21EaXNrSWZOZWVkZWQoKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OndyaXRlVG9EaXNrKCkKK3sKKyAgICBpZiAoIW1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBjb3JlU3RvcmUoKS53cml0ZURh
dGFUb0Rpc2soKTsKK30KKwordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFw
cGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpCit7CisgICAgaWYgKCFtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRSgxNTQ2NDIpOiBU
RU1QT1JBUlkgQ09ERTogVGhpcyBzaG91bGQgbm90IGJlIGRvbmUgaW4gb25lIGxvbmcgb3BlcmF0
aW9uIHdoZW4gZXhpdGluZy4KKyAgICB3cml0ZVRvRGlzaygpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlX2gKKyNkZWZpbmUgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlX2gKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgUmVz
b3VyY2VMb2FkU3RhdGlzdGljczsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlByb2Nlc3NQb29sOworCitjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgOiBw
dWJsaWMgSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgeworcHVibGlj
OgorICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKCk7CisgICAgCisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChi
b29sKTsKKyAgICBib29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7Cisg
ICAgCisgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mIG9yaWdpbnMpOworCisgICAgdm9pZCBh
cHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKKworICAgIHZvaWQgd3JpdGVUb0Rpc2soKTsKKyAg
ICB2b2lkIHJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOworCisgICAgdm9pZCBtZXJnZVN0YXRp
c3RpY3MoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+Jik7CisK
KyAgICBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIGNvcmVTdG9yZSgpIHsg
cmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzU3RvcmUuZ2V0KCk7IH0KKyAgICAKK3ByaXZhdGU6
CisgICAgZXhwbGljaXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmlu
ZyYpOworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6TWVzc2FnZURlY29kZXIm
KSBvdmVycmlkZTsKKyAgICAKKyAgICBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlPiBtX3Jlc291cmNlU3RhdGlzdGljc1N0b3JlOworICAgIGJvb2wgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmIC8vIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZV9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4JKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCisjIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKyMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworbWVzc2FnZXMgLT4gV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlIHsKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gb3JpZ2lucykKK30KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDE5NzU2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NjEsNiArNjEsNyBAQCBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uCiAg
ICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9j
YWxTdG9yYWdlRGlyZWN0b3J5KCkpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKQogICAgICwg
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCkpCisgICAgLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoKSkKIHsKIH0KIApAQCAtODMsOSArODQsMTEgQEAgUmVmPFByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbj4gUHJvY2Vzc1BvbwogICAgIGNvcHktPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gdGhpcy0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9tZWRpYUtleXNT
dG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwogICAg
IGNvcHktPm1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX3dlYlNRTERhdGFiYXNl
RGlyZWN0b3J5OworICAgIGNvcHktPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9
IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICBjb3B5LT5tX2Nh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNoZVBhcnRpdGlvbmVkVVJMU2No
ZW1lczsKICAgICBjb3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyA9IHRoaXMtPm1f
YWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHktPm1fZnVsbHlTeW5jaHJvbm91
c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nID0gdGhpcy0+bV9mdWxseVN5bmNocm9ub3VzTW9kZUlz
QWxsb3dlZEZvclRlc3Rpbmc7CisgICAgY29weS0+bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCA9IHRoaXMtPm1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7CiAgICAgY29weS0+
bV9vdmVycmlkZUxhbmd1YWdlcyA9IHRoaXMtPm1fb3ZlcnJpZGVMYW5ndWFnZXM7CiAgICAgCiAg
ICAgcmV0dXJuIGNvcHk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDE5NzU2
MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTc3LDYgKzc3LDkgQEAgcHVibGljOgogICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4g
bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXRNZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
KSB7IG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rv
cnk7IH0KIAorICAgIGNvbnN0IFdURjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
OyB9CisgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KGNvbnN0IFdU
Rjo6U3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSB7IG1fcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnk7
IH0KKwogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZv
aWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNh
Y2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMg
PSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKTsgfQogCkBAIC04Niw2ICs4OSw5
IEBAIHB1YmxpYzoKICAgICBib29sIGZ1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVz
dGluZygpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JU
ZXN0aW5nOyB9CiAgICAgdm9pZCBzZXRGdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRl
c3RpbmcoYm9vbCBhbGxvd2VkKSB7IG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JU
ZXN0aW5nID0gYWxsb3dlZDsgfQogCisgICAgYm9vbCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkg
eyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZW5hYmxlZDsgfQorCiAgICAgY29u
c3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgb3ZlcnJpZGVMYW5ndWFnZXMoKSBjb25zdCB7IHJldHVy
biBtX292ZXJyaWRlTGFuZ3VhZ2VzOyB9CiAgICAgdm9pZCBzZXRPdmVycmlkZUxhbmd1YWdlcyhW
ZWN0b3I8V1RGOjpTdHJpbmc+JiYgbGFuZ3VhZ2VzKSB7IG1fb3ZlcnJpZGVMYW5ndWFnZXMgPSBX
VEZNb3ZlKGxhbmd1YWdlcyk7IH0KIApAQCAtMTAzLDkgKzEwOSwxMSBAQCBwcml2YXRlOgogICAg
IFdURjo6U3RyaW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1f
d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9tZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5OworICAgIFdURjo6U3RyaW5nIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeTsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25lZFVSTFNj
aGVtZXM7CiAgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lczsKICAgICBib29sIG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5n
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgeyBm
YWxzZSB9OwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9vdmVycmlkZUxhbmd1YWdlczsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJz
aXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMTk3NTYyKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIwLDYg
KzEyMCwxMiBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWRECiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQuCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiAjZW5kaWYKIAogfQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgJKHJl
dmlzaW9uIDE5NzU2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01MSw2ICs1MSw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgU3RyaW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMg
U3RyaW5nIGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFN0
cmluZyBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCk7CiAKIHByaXZhdGU6CiAg
ICAgV2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRp
b24pOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDE5NzU2MikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Nyw2ICs3NywxMSBAQCBTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdFdlYlNRTERhCiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5
RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJXZWJTUUwiKTsKIH0KIAorU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAg
ICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJl
c291cmNlTG9hZFN0YXRpc3RpY3MiKTsKK30KKwogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNh
Y2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0
b3J5TmFtZSkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKQEAgLTE0
Myw2ICsxNDgsNyBAQCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gCiAg
ICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0
b3J5ID0gZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0
b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
ID0gZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKIAogICAgIHJldHVy
biBjb25maWd1cmF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDE5NzU2MikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM1Nyw2ICszNTcsNyBAQCAtICh2b2lkKV9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246KFdL
CiAgICAgW19jb25maWd1cmF0aW9uIF92YWxpZGF0ZV07CiAKICAgICBXZWJLaXQ6OldlYlByb2Nl
c3NQb29sJiBwcm9jZXNzUG9vbCA9ICpbX2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdLT5fcHJv
Y2Vzc1Bvb2w7CisgICAgcHJvY2Vzc1Bvb2wuY29uZmlndXJhdGlvbigpLnNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkKGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZS5fcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwogICAgIAogICAgIGF1dG8gcGFnZUNvbmZpZ3VyYXRp
b24gPSBBUEk6OlBhZ2VDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW0JKHJldmlzaW9uIDE5NzU2MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNjQsNiArMTY0LDE2
IEBAIC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihXS19TRVQKICAgICB9KTsKIH0K
IAorLSAoQk9PTClfcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQKK3sKKyAgICByZXR1cm4g
X3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRhU3RvcmUoKS5yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZCgpOworfQorCistICh2b2lkKV9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5h
YmxlZDooQk9PTCllbmFibGVkCit7CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChlbmFibGVkKTsKK30KKwog
QGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
UHJpdmF0ZS5oCShyZXZpc2lvbiAxOTc1NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0CiAK
IC0gKHZvaWQpX2ZldGNoRGF0YVJlY29yZHNPZlR5cGVzOihXS19TRVQoTlNTdHJpbmcgKikgKilk
YXRhVHlwZXMgd2l0aE9wdGlvbnM6KF9XS1dlYnNpdGVEYXRhU3RvcmVGZXRjaE9wdGlvbnMpb3B0
aW9ucyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tfQVJSQVkoV0tXZWJzaXRlRGF0YVJl
Y29yZCAqKSAqKSljb21wbGV0aW9uSGFuZGxlcjsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHNl
dHRlcj1fc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6KSBCT09MIF9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7
CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9BUElXZWJzaXRlRGF0YVN0b3JlRWZsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9BUElXZWJzaXRlRGF0YVN0b3JlRWZs
LmNwcAkocmV2aXNpb24gMTk3NTYyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvQVBJV2Vic2l0ZURhdGFTdG9yZUVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3
LDExIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGEKICAgICByZXR1
cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYktpdEVm
bCIgRUlOQV9QQVRIX1NFUF9TICJEYXRhYmFzZXMiKTsKIH0KIAorU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKK3sKKyAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIldlYktp
dEVmbCIgRUlOQV9QQVRIX1NFUF9TICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIik7Cit9CisKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7CiAgICAgcmV0dXJuIFdlYkNvcmU6
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChTdHJpbmc6OmZyb21VVEY4KGVmcmVldF9jYWNoZV9o
b21lX2dldCgpKSwgZGlyZWN0b3J5TmFtZSk7CkBAIC04Nyw2ICs5Miw3IEBAIFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiAKICAgICBjb25maWd1cmF0aW9uLndlYlNRTERh
dGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAg
Y29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdl
RGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5
ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9u
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9BUElXZWJzaXRlRGF0YVN0b3JlR3Rr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9BUElX
ZWJzaXRlRGF0YVN0b3JlR3RrLmNwcAkocmV2aXNpb24gMTk3NTYyKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvQVBJV2Vic2l0ZURhdGFTdG9yZUd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDYgKzY1LDExIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
V2ViU1FMRGEKICAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIndlYmtpdGd0ayIgR19ESVJfU0VQQVJBVE9SX1MgImRhdGFiYXNlcyIpOwogfQog
CitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnkoKQoreworICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigid2Via2l0Z3RrIiBHX0RJUl9TRVBBUkFUT1JfUyAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyIpOworfQorCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6Y2FjaGVEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQog
ewogICAgIHJldHVybiBXZWJDb3JlOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoV2ViQ29yZTo6
ZmlsZW5hbWVUb1N0cmluZyhnX2dldF91c2VyX2NhY2hlX2RpcigpKSwgZGlyZWN0b3J5TmFtZSk7
CkBAIC04NSw2ICs5MCw3IEBAIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlv
biAKICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdl
YlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VE
aXJlY3RvcnkgPSBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJh
dGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VE
aXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkgPSBkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpOwogCiAgICAg
cmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZpc2lv
biAxOTc1NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNyArMzAsMTAgQEAKICNpbmNsdWRlICJB
UElXZWJzaXRlRGF0YVJlY29yZC5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCisjaW5jbHVkZSAiV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCisjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rh
dGFiYXNlVHJhY2tlci5oPgpAQCAtNzcsNiArODAsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJz
aXRlRGF0YVN0b3JlKENvbmZpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdURk1v
dmUoY29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkpCiAgICAgLCBtX21lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3Jh
Z2VEaXJlY3RvcnkpKQogICAgICwgbV9zdG9yYWdlTWFuYWdlcihTdG9yYWdlTWFuYWdlcjo6Y3Jl
YXRlKFdURk1vdmUoY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSkKKyAgICAs
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyhXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSkpKQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktp
dC5XZWJzaXRlRGF0YVN0b3JlIikpCiB7CiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC05
NzYsNiArOTgwLDggQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp3ZWJQcm9jZXNzV2lsbE9wZQog
ewogICAgIGlmIChtX3N0b3JhZ2VNYW5hZ2VyKQogICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyLT5w
cm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHdlYlByb2Nlc3NQcm94eSwgY29ubmVjdGlvbik7CisK
KyAgICBjb25uZWN0aW9uLmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICZtX3F1
ZXVlLmdldCgpLCBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCkpOwogfQogCiB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OndlYlBhZ2VXaWxsT3BlbkNvbm5lY3Rpb24oV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHksIElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTk5Miw2ICs5OTgs
OCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OndlYlBhZ2VEaWRDbG9zZUNvCiAKIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJv
eHkmIHdlYlByb2Nlc3NQcm94eSwgSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogeworICAg
IGNvbm5lY3Rpb24ucmVtb3ZlV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CisKICAg
ICBpZiAobV9zdG9yYWdlTWFuYWdlcikKICAgICAgICAgbV9zdG9yYWdlTWFuYWdlci0+cHJvY2Vz
c0RpZENsb3NlQ29ubmVjdGlvbih3ZWJQcm9jZXNzUHJveHksIGNvbm5lY3Rpb24pOwogfQpAQCAt
MTA5NCw0ICsxMTAyLDIzIEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlTWVkaWFLZXlz
KGMKICAgICB9CiB9CiAKK2Jvb2wgV2Vic2l0ZURhdGFTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgPyBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MtPnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKCkgOiBmYWxzZTsKK30KKwordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgaWYgKCFtX3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChlbmFibGVkID09IHJl
c291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQo
ZW5hYmxlZCk7CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogV2ViUHJvY2Vzc1Bvb2w6
OmFsbFByb2Nlc3NQb29scygpKQorICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxl
ZChlbmFibGVkKSk7Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkocmV2aXNpb24gMTk3NTYy
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgU3RvcmFnZU1hbmFnZXI7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNz
UG9vbDsKK2NsYXNzIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTsKIGVudW0gY2xhc3Mg
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbjsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlOwogc3Ry
dWN0IFdlYnNpdGVEYXRhUmVjb3JkOwpAQCAtNjMsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFN0cmluZyB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGxvY2FsU3Rv
cmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7
CisgICAgICAgIFN0cmluZyByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5OwogICAgIH07
CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7
CiAgICAgc3RhdGljIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJhdGlvbik7
CkBAIC03Myw2ICs3NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGVyc2lzdGVudCgpIGNvbnN0
IHsgcmV0dXJuICFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpOyB9CiAgICAgV2ViQ29yZTo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKKyAgICBi
b29sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sKTsKKwogICAgIHN0YXRpYyB2b2lkIGNs
b25lU2Vzc2lvbkRhdGEoV2ViUGFnZVByb3h5JiBzb3VyY2VQYWdlLCBXZWJQYWdlUHJveHkmIG5l
d1BhZ2UpOwogCiAgICAgdm9pZCBmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IE9wdGlvblNldDxXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiwgc3RkOjpmdW5jdGlvbjx2b2lkIChW
ZWN0b3I8V2Vic2l0ZURhdGFSZWNvcmQ+KT4gY29tcGxldGlvbkhhbmRsZXIpOwpAQCAtMTE2LDYg
KzEyMSw3IEBAIHByaXZhdGU6CiAgICAgY29uc3QgU3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJl
Y3Rvcnk7CiAgICAgY29uc3QgU3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAg
ICBjb25zdCBSZWZQdHI8U3RvcmFnZU1hbmFnZXI+IG1fc3RvcmFnZU1hbmFnZXI7CisgICAgY29u
c3QgUmVmUHRyPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzOwogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKIH07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDE5NzU2MikKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiV2Vic2l0ZURh
dGFTdG9yZS5oIgogCiAjaW1wb3J0ICJTdG9yYWdlTWFuYWdlci5oIgorI2ltcG9ydCAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1NlYXJjaFBvcHVw
TWVudUNvY29hLmg+CiAjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNjEsMTEg
KzYyLDE0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cGxhdGZvcm1Jbml0aWFsaXoKICAgICAg
ICAgdGVybWluYXRpb25PYnNlcnZlciA9IFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gYWRkT2JzZXJ2ZXJGb3JOYW1lOm5vdGlmaWNhdGlvbk5hbWUgb2JqZWN0Om5pbCBxdWV1
ZTpuaWwgdXNpbmdCbG9jazpeKE5TTm90aWZpY2F0aW9uICpub3RlKSB7CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIGRhdGFTdG9yZSA6IGRhdGFTdG9yZXNXaXRoU3RvcmFnZU1hbmFnZXJzKCkpCiAg
ICAgICAgICAgICAgICAgZGF0YVN0b3JlLT5tX3N0b3JhZ2VNYW5hZ2VyLT5hcHBsaWNhdGlvbldp
bGxUZXJtaW5hdGUoKTsKKworICAgICAgICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5h
cHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKICAgICAgICAgfV07CiAgICAgfQogCiAgICAgQVNT
RVJUKCFkYXRhU3RvcmVzV2l0aFN0b3JhZ2VNYW5hZ2VycygpLmNvbnRhaW5zKHRoaXMpKTsKICAg
ICBkYXRhU3RvcmVzV2l0aFN0b3JhZ2VNYW5hZ2VycygpLmFwcGVuZCh0aGlzKTsKKyAgICBtX3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MtPnJlYWREYXRhRnJvbURpc2tJZk5lZWRlZCgpOwogfQogCiB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnBsYXRmb3JtRGVzdHJveSgpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAx
OTc1NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNDAsNiArMTA0MCw5IEBACiAJCTc1QThEMkUxMTg3REVD
MUEwMEMzOUM5RSAvKiBBUElTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NUE4RDJERTE4N0RFODc0MDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5o
ICovOyB9OwogCQk3NUE4RDJFMjE4N0RFQzFFMDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUE4RDJERDE4N0RF
ODc0MDBDMzlDOUUgLyogQVBJU2Vzc2lvbi5jcHAgKi87IH07CiAJCTc2MkI3NDhEMTIwQkM3NUMw
MDgxOTMzOSAvKiBXS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdL
UHJlZmVyZW5jZXNSZWZQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJN0E3OTFFRkExQzdDRkNGMTAwQzRDNTJCIC8qIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc5MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyog
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
KwkJN0E3OTFFRkIxQzdDRkQwMTAwQzRDNTJCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QTc5MUVGODFDN0NGQjEwMDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlTWVzc2FnZXMuaCAqLzsgfTsKKwkJN0E3OTFFRkMxQzdEMDhDNTAwQzRDNTJCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLzsgfTsKIAkJN0MxMzVBQTgxNzNCMEJDQTAw
NTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0MxMzVBQTYxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uY3BwICovOyB9OwogCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyog
V0tQbHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0MxMzVBQTcxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
QzEzNUFBQzE3M0IwQ0ZGMDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25NYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzEzNUFBQTE3M0IwQ0ZG
MDA1ODZBRTIgLyogUGx1Z2luSW5mb3JtYXRpb25NYWMubW0gKi87IH07CkBAIC0zMDQxLDYgKzMw
NDQsMTIgQEAKIAkJNzVBOEQyREUxODdERTg3NDAwQzM5QzlFIC8qIEFQSVNlc3Npb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQVBJU2Vzc2lvbi5oOyBwYXRoID0gVUlQcm9j
ZXNzL0FQSS9BUElTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNzYy
Qjc0ODExMjBCQkEwMTAwODE5MzM5IC8qIEZvbnRTbW9vdGhpbmdMZXZlbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGb250U21vb3RoaW5nTGV2ZWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzYyQjc0ODQxMjBCQkEyRDAwODE5MzM5IC8qIFdLUHJlZmVyZW5j
ZXNSZWZQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUHJlZmVy
ZW5jZXNSZWZQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNzkxRUY4
MUM3Q0ZCMTAwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmVNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QTc5
MUVGOTFDN0NGQjM3MDBDNEM1MkIgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisgICAgICAgIAorCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2Qzcg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzBCQjlBODE4RENERTg5MDAwNkMwODYgLyogV2ViQ29udGVudC1pT1Mu
ZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC54bWw7IHBhdGggPSAiV2ViQ29udGVudC1pT1MuZW50aXRsZW1lbnRzIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwQkI5QTkxOERDREY1QTAwMDZDMDg2IC8qIE5l
dHdvcmstaU9TLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueG1sOyBwYXRoID0gIk5ldHdvcmstaU9TLmVudGl0bGVtZW50
cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMTM1QUE2MTczQjBCQ0EwMDU4NkFF
MiAvKiBXS1BsdWdpbkluZm9ybWF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLUGx1Z2luSW5mb3JtYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTc5OCw2ICs1ODA3LDkgQEAKIAkJCQk4NkU2N0EyMjE5MEY0MTE4MDAwMDRBQjcg
LyogUHJvY2Vzc1Rocm90dGxlci5jcHAgKi8sCiAJCQkJODZFNjdBMjExOTBGNDExODAwMDA0QUI3
IC8qIFByb2Nlc3NUaHJvdHRsZXIuaCAqLywKIAkJCQk4MzA0OEFFNTFBQ0E0NURDMDA4MkM4MzIg
LyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oICovLAorCQkJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5
RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAorCQkJCTdBOUNE
OEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAq
LywKKwkJCQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLm1lc3NhZ2VzLmluICovLAogCQkJCUJDMTExQjA4MTEyRjVFM0MwMDMzN0JBQiAv
KiBSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLywKIAkJCQkxQTMwMDY2QzExMTBGNEY3MDAzMTkz
N0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovLAogCQkJCTUxQTRENUE4MTZDQUM0RkYwMDBF
NjE1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5jcHAgKi8sCkBAIC02ODE5LDYgKzY4MzEsOCBAQAog
CQkJCTFBQzEzMzg0MTg1OTBDNDYwMEYzRUMwNSAvKiBSZW1vdGVPYmplY3RSZWdpc3RyeU1lc3Nh
Z2VzLmggKi8sCiAJCQkJMEY1OTQ3QTUxODdCNTE3NjAwNDM3ODU3IC8qIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLywKIAkJCQkwRjU5NDdBNjE4N0I1MTc2
MDA0Mzc4NTcgLyogUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovLAorCQkJ
CTdBNzkxRUY5MUM3Q0ZCMzcwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmVNZXNzYWdlUmVjZWl2ZXIuY3BwICovLAorCQkJCTdBNzkxRUY4MUM3Q0ZCMTAwMEM0QzUyQiAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oICovLAogCQkJCUUxOEU2
OTExMTY5QjY2N0IwMDlCNjY3MCAvKiBTZWNJdGVtU2hpbU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8s
CiAJCQkJRTE4RTY5MTIxNjlCNjY3QjAwOUI2NjcwIC8qIFNlY0l0ZW1TaGltTWVzc2FnZXMuaCAq
LywKIAkJCQlFMThFNjkxMzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8sCkBAIC03NDMwLDYgKzc0NDQsNyBAQAogCQkJCTFBMEVDNzVFMTI0
QkM3QjIwMDdFRjRBNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMDQzQjVFMTI0RDVFOUQwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUEwNDNEQzExMjRGRjg3NTAwRkZCRkI1IC8qIFBsdWdpblBy
b3h5LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QTc5MUVGQjFDN0NGRDAxMDBDNEM1MkIgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOEVGQTcxMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTRBOUYzMzEyQjg0NEUyMDA4RkU5ODQgLyogUGx1Z2luUXVpcmtzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0Q2MjI3ODE3MzlEODYzMDA1QkQ3RkYgLyogUGx1Z2luU2Fu
ZGJveFByb2ZpbGUuaCBpbiBIZWFkZXJzICovLApAQCAtODg0MCw2ICs4ODU1LDcgQEAKIAkJCQkx
QTJEODRBNDEyN0Y2QUQxMDAxRUI5NjIgLyogTlBWYXJpYW50RGF0YS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQzhBQ0ExNDE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNDRjY3MzMxMkM3RjE1QzAwOEY5QzM1IC8qIE9yaWdpbkFuZERh
dGFiYXNlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTc5MUVGQTFDN0NGQ0YxMDBDNEM1MkIg
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDMzg3NDM0MTcyRjU2MTUwMDFCRDg4QSAvKiBQYWdlQmFubmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVDMDUyRjI2MUM2RDNCRDMwMDc2RTkxOSAvKiBBdXRoZW50
aWNhdGlvbk1hbmFnZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDNkQzN0ZDMTcyRjU1
NUYwMDlEMjg0NyAvKiBQYWdlQmFubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC05MjE5LDYg
KzkyMzUsNyBAQAogCQkJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBhZ2VP
dmVybGF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjBDNTdBMTI0MEE1NDYwMDhDNUUyOSAv
KiBXS0J1bmRsZVJhbmdlSGFuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTRERjlFMTIw
QjYzNUYwMDgyNkMwQyAvKiBXS0J1bmRsZVNjcmlwdFdvcmxkLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdBNzkxRUZDMUM3RDA4QzUwMEM0QzUyQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNDI3MTIxQzIzRjg5RTAwRDQxMTgzIC8q
IERvd25sb2FkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RjUxMjRGRjAyNzAwNjhG
MjBBIC8qIFdLQ2VydGlmaWNhdGVJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NjI4
MTI0RkYwNDAwMDY4RjIwQSAvKiBXS0NlcnRpZmljYXRlSW5mb01hYy5tbSBpbiBTb3VyY2VzICov
LApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lv
biAxOTc1NjIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMCwgMjAxMiwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxMCwgMjAxMiwgMjAxNCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU4LDYgKzU4
LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmVNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+CkBAIC04Niw2ICs4Nyw5IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtTWVkaWFT
ZXNzaW9uTWFuYWdlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KQEAgLTE2Niw5ICsxNzAsMTEgQEAg
V2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgLCBtX2hhc1JpY2hDb250ZW50U2VydmljZXMo
ZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXIoKnRo
aXMsICZXZWJQcm9jZXNzOjpub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKQorICAg
ICwgbV9zdGF0aXN0aWNzQ2hhbmdlZFRpbWVyKCp0aGlzLCAmV2ViUHJvY2Vzczo6c3RhdGlzdGlj
c0NoYW5nZWRUaW1lckZpcmVkKQogI2lmIFBMQVRGT1JNKElPUykKICAgICAsIG1fd2ViU1FMaXRl
RGF0YWJhc2VUcmFja2VyKCp0aGlzKQogI2VuZGlmCisgICAgLCBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yYWdlKFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRl
KCkpCiB7CiAgICAgLy8gSW5pdGlhbGl6ZSBvdXIgcGxhdGZvcm0gc3RyYXRlZ2llcy4KICAgICBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKQEAgLTE5OCw2ICsyMDQsMTQgQEAg
V2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkuc2V0U2hvdWxkQ2xlYXJCYWNraW5nU3RvcmVzKHRydWUpOwogI2VuZGlm
CisKKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkT2JzZXJ2ZXIoKS5zZXRTdGF0aXN0
aWNzU3RvcmUobV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZS5jb3B5UmVmKCkpOworICAg
IG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JhZ2UtPnNldE5vdGlmaWNhdGlvbkNhbGxiYWNr
KFt0aGlzXSB7CisgICAgICAgIGlmIChtX3N0YXRpc3RpY3NDaGFuZ2VkVGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIG1fc3RhdGlzdGljc0No
YW5nZWRUaW1lci5zdGFydE9uZVNob3Qoc3RkOjpjaHJvbm86OnNlY29uZHMoNSkpOworICAgIH0p
OwogfQogCiBXZWJQcm9jZXNzOjp+V2ViUHJvY2VzcygpCkBAIC0zMjEsNiArMzM1LDggQEAgdm9p
ZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZQogCiAgICAgc2V0RGVmYXVsdFJl
cXVlc3RUaW1lb3V0SW50ZXJ2YWwocGFyYW1ldGVycy5kZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRl
cnZhbCk7CiAKKyAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKKwogICAgIGlmIChwYXJhbWV0ZXJzLnNo
b3VsZEFsd2F5c1VzZUNvbXBsZXhUZXh0Q29kZVBhdGgpCiAgICAgICAgIHNldEFsd2F5c1VzZXND
b21wbGV4VGV4dENvZGVQYXRoKHRydWUpOwogCkBAIC0xMjg1LDYgKzEzMDEsMTkgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpub25WaXNpYmxlUHJvY2Vzc0NsZWFudQogI2VuZGlmCiB9CiAKK3ZvaWQgV2Vi
UHJvY2Vzczo6c3RhdGlzdGljc0NoYW5nZWRUaW1lckZpcmVkKCkKK3sKKyAgICBpZiAobV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmFnZS0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKG1fcmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JhZ2UtPnRha2VTdGF0aXN0aWNzKCkpLCAwKTsKK30KKwor
dm9pZCBXZWJQcm9jZXNzOjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVu
YWJsZWQpCit7CisgICAgV2ViQ29yZTo6U2V0dGluZ3M6OnNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkKGVuYWJsZWQpOworfQorCiBSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYlByb2Nlc3M6
OnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMoQVBJOjpPYmplY3QqIG9iamVjdCkKIHsKICAgICBz
dHJ1Y3QgVHJhbnNmb3JtZXIgZmluYWwgOiBVc2VyRGF0YTo6VHJhbnNmb3JtZXIgewpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDE5NzU2MikKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiVmlld1VwZGF0ZURpc3BhdGNoZXIuaCIKICNpbmNsdWRl
ICJWaXNpdGVkTGlua1RhYmxlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9IeXN0ZXJlc2lzQWN0aXZp
dHkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lci5o
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC0xNzAsNiArMTcxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwogCiAgICAgdm9p
ZCBub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKCk7CisgICAgdm9pZCBzdGF0aXN0
aWNzQ2hhbmdlZFRpbWVyRmlyZWQoKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQg
ZGVzdHJveVJlbmRlcmluZ1Jlc291cmNlcygpOwpAQCAtMjMyLDYgKzIzNCw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXREZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUpOwogICAg
IHZvaWQgc2V0QWx3YXlzVXNlc0NvbXBsZXhUZXh0Q29kZVBhdGgoYm9vbCk7CiAgICAgdm9pZCBz
ZXRTaG91bGRVc2VGb250U21vb3RoaW5nKGJvb2wpOworICAgIHZvaWQgc2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCB1c2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
Q2hhbmdlZChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwogICAgIHZvaWQgZnVsbEtleWJv
YXJkQWNjZXNzTW9kZUNoYW5nZWQoYm9vbCBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKTsKIApA
QCAtMzYyLDExICszNjUsMTQgQEAgcHJpdmF0ZToKIAogICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1f
cGFnZXNJbldpbmRvd3M7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub25WaXNpYmxlUHJvY2Vzc0Ns
ZWFudXBUaW1lcjsKKyAgICBXZWJDb3JlOjpUaW1lciBtX3N0YXRpc3RpY3NDaGFuZ2VkVGltZXI7
CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyOwogI2VuZGlmCiAKKyAgICBSZWY8V2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlPiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yYWdlOwor
CiAgICAgU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmQgbV9zaG91bGRBY2tub3ds
ZWRnZVdoZW5SZWFkeVRvU3VzcGVuZDsKICAgICBib29sIG1fc3VwcHJlc3NNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXIgeyBmYWxzZSB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE5NzU2MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDIsNiAr
NDIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRE
ZWZhdWx0UmVxdWVzdFRpbWVvdXRJbnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFsKQogICAg
IFNldEFsd2F5c1VzZXNDb21wbGV4VGV4dENvZGVQYXRoKGJvb2wgYWx3YXlzVXNlQ29tcGxleFRl
eHQpCiAgICAgU2V0U2hvdWxkVXNlRm9udFNtb290aGluZyhib29sIHVzZUZvbnRTbW9vdGhpbmcp
CisgICAgU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCk7CiAgICAgVXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoVmVj
dG9yPFN0cmluZz4gbGFuZ3VhZ2VzKQogICAgIEZ1bGxLZXlib2FyZEFjY2Vzc01vZGVDaGFuZ2Vk
KGJvb2wgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCkKIApJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMTk3NTYyKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTYtMDMtMDQgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gR2F0aGVyIHJlc291cmNlIGxvYWQgc3Rh
dGlzdGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTU0Mjc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDcwMjg5Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggdG8gbWFpbnRhaW5pbmcg
YSBnbG9iYWwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGluIHRoZSBXZWJL
aXQgcHJvY2VzcywKKyAgICAgICAgYW5kIGhhbmQgaXQgb2ZmIHRvIHRoZSBXZWJDb3JlIGxheWVy
IHRvIHVzZSBkdXJpbmcgZGF0YSBnYXRoZXJpbmcuIFRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUKKyAgICAgICAgaXMgbm93IHJlc3BvbnNpYmxlIGZvciByZWFkaW5nL3dyaXRpbmcgdG8g
ZGlzaywgYW5kIHRyYWNraW5nIHRoZSBjb2xsZWN0aW9uIG9mIGxvYWQgZGF0YS4KKworICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKFdlYktpdEluaXRpYWxpemVBcHBsaWNh
dGlvblN0YXRpc3RpY3NTdG9yYWdlUGF0aElmTmVjZXNzYXJ5KTogSW5pdGlhbGl6ZSBzaW5nbGV0
b24KKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIG9iamVjdCBmb3IgdHJhY2tp
bmcgc3RhdGUuCisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKTogUmV2
aXNlIGZvciBuZXcgc2luZ2xldG9uLgorICAgICAgICAoK1tXZWJWaWV3IF9hcHBsaWNhdGlvbldp
bGxUZXJtaW5hdGVdKTogRGl0dG8uCisKIDIwMTYtMDItMjkgIEFkYSBDaGFuICA8YWRhY2hhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRvcHQgdGhlIG5ldyB2ZXJzaW9uIG9mIEFWT3V0cHV0RGV2
aWNlTWVudUNvbnRyb2xsZXIncyBzaG93TWVudUZvclJlY3QgbWV0aG9kLgpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTk3NTYyKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUy
LDggQEAKICNpbXBvcnQgPFdlYkNvcmUvTW9iaWxlR2VzdGFsdFNQSS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9OZXR3b3JrU3RhdGVOb3RpZmllci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNj
cmVlbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3NJT1MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FM
aXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NtYXJ0UmVwbGFjZS5oPgpA
QCAtNjA2LDYgKzYwOCw3IEBAIGVudW0geyBXZWJWaWV3VmVyc2lvbiA9IDQgfTsKICNkZWZpbmUg
dGltZWRMYXlvdXRTaXplIDQwOTYKIAogc3RhdGljIE5TTXV0YWJsZVNldCAqc2NoZW1lc1dpdGhS
ZXByZXNlbnRhdGlvbnNTZXQ7CitzdGF0aWMgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlICpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiAKICNpZiAhUExBVEZPUk0oSU9T
KQogTlNTdHJpbmcgKl9XZWJDYW5Hb0JhY2tLZXkgPSAgICAgICAgICAgIEAiY2FuR29CYWNrIjsK
QEAgLTc2NCw3ICs3NjcsOSBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplQXBwbGljYXRp
b25TCiAgICAgQVNTRVJUKGFwcE5hbWUpOwogICAgIAogICAgIE5TU3RyaW5nICpzdXBwb3J0RGly
ZWN0b3J5ID0gW05TU3RyaW5nIF93ZWJraXRfbG9jYWxTdG9yYWdlRGlyZWN0b3J5V2l0aEJ1bmRs
ZUlkZW50aWZpZXI6YXBwTmFtZV07Ci0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9i
c2VydmVyKCkuc2V0U3RhdGlzdGljc1N0b3JhZ2VEaXJlY3Rvcnkoc3VwcG9ydERpcmVjdG9yeSk7
CisKKyAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgPSAmV2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoc3VwcG9ydERpcmVjdG9yeSkubGVha1JlZigpOwor
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN0YXRpc3RpY3NT
dG9yZSgqcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKTsKICAgICAKICAgICBpbml0aWFsaXpl
ZCA9IFlFUzsKIH0KQEAgLTI0NzIsNyArMjQ3Nyw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hh
bmdlZDooV2ViUHJlZmVyZW4KICAgICBzZXR0aW5ncy5zZXRIaWRkZW5QYWdlQ1NTQW5pbWF0aW9u
U3VzcGVuc2lvbkVuYWJsZWQoW3ByZWZlcmVuY2VzIGhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNw
ZW5zaW9uRW5hYmxlZF0pOwogCiAgICAgc2V0dGluZ3Muc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoW3ByZWZlcmVuY2VzIHJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkXSk7Ci0g
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2VydmVyKCkucmVhZERhdGFGcm9tRGlz
a0lmTmVlZGVkKCk7CisgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5yZWFkRGF0YUZy
b21EaXNrSWZOZWVkZWQoKTsKIAogI2lmIEVOQUJMRShHQU1FUEFEKQogICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0R2FtZXBhZHNFbmFibGVkKFtwcmVmZXJl
bmNlcyBnYW1lcGFkc0VuYWJsZWRdKTsKQEAgLTQ4NDIsNyArNDg0Nyw3IEBAICsgKHZvaWQpX2Fw
cGxpY2F0aW9uV2lsbFRlcm1pbmF0ZQogeyAgIAogICAgIGFwcGxpY2F0aW9uSXNUZXJtaW5hdGlu
ZyA9IFlFUzsKIAotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLndy
aXRlRGF0YVRvRGlzaygpOworICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS0+d3JpdGVE
YXRhVG9EaXNrKCk7CiAKICAgICBpZiAoZmFzdERvY3VtZW50VGVhcmRvd25FbmFibGVkKCkpCiAg
ICAgICAgIFtzZWxmIGNsb3NlQWxsV2ViVmlld3NdOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NTYyKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTYtMDMtMDQgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl0gR2F0aGVy
IHJlc291cmNlIGxvYWQgc3RhdGlzdGljcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjc4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNDcwMjg5
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1p
bmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tOgorICAgICAgICAoZGVmYXVsdENvbmZpZ3VyYXRp
b24pOiBSZXRyaWV2ZSBzdGF0ZSBvZiB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQg
c2V0dGluZy4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm06
CisgICAgICAgICgtW1NldHRpbmdzQ29udHJvbGxlciBfcG9wdWxhdGVNZW51XSk6IE1vdmUgc2V0
dGluZyBmcm9tIFdLMS1vbmx5IHRvIGJlCisgICAgICAgIHVuaXZlcnNhbGx5IGFwcGxpY2FibGUu
CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06
CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGRpZENoYW5nZVNldHRpbmdz
XSk6IFJlY29nbml6ZSB3aGVuIHRoZQorICAgICAgICBSZXNvdXJjZSBMb2FkIFN0YXRpc3RpY3Mg
ZmxhZyBoYXMgY2hhbmdlZC4KKwogMjAxNi0wMy0wMyAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVy
ZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBVbnJldmlld2VkIGZpeCBh
ZnRlciByMTk3NTA1IChSdW4gdGhlIHJ1bi1iZW5jaG1hcmsgc2NyaXB0IG9uIHRoZSBwZXJmb3Jt
YW5jZSBib3QuKQpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0JKHJldmlzaW9u
IDE5NzU2MikKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuaD4KQEAgLTgzLDYg
Kzg0LDcgQEAgc3RhdGljIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmRlZmF1bHRDbwogICAgIH0K
IAogICAgIGNvbmZpZ3VyYXRpb24uc3VwcHJlc3Nlc0luY3JlbWVudGFsUmVuZGVyaW5nID0gW1Nl
dHRpbmdzQ29udHJvbGxlciBzaGFyZWRdLmluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3NlZDsK
KyAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUuX3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NFbmFibGVkID0gW1NldHRpbmdzQ29udHJvbGxlciBzaGFyZWRdLnJlc291cmNlTG9hZFN0YXRp
c3RpY3NFbmFibGVkOwogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogI2VuZGlmCkluZGV4
OiBUb29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCShyZXZpc2lvbiAx
OTc1NjIpCisrKyBUb29scy9NaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0JKHdv
cmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCAtICh2b2lkKV9wb3B1bGF0ZU1lbnUKICAg
ICBbc2VsZiBfYWRkSXRlbVdpdGhUaXRsZTpAIlN1cHByZXNzIEluY3JlbWVudGFsIFJlbmRlcmlu
ZyBpbiBOZXcgV2luZG93cyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVJbmNyZW1lbnRhbFJlbmRl
cmluZ1N1cHByZXNzZWQ6KSBpbmRlbnRlZDpOT107CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0
bGU6QCJFbmFibGUgQWNjZWxlcmF0ZWQgRHJhd2luZyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVB
Y2NlbGVyYXRlZERyYXdpbmdFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOwogICAgIFtzZWxmIF9hZGRJ
dGVtV2l0aFRpdGxlOkAiRW5hYmxlIERpc3BsYXkgTGlzdCBEcmF3aW5nIiBhY3Rpb246QHNlbGVj
dG9yKHRvZ2dsZURpc3BsYXlMaXN0RHJhd2luZ0VuYWJsZWQ6KSBpbmRlbnRlZDpOT107CisgICAg
W3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
IiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikg
aW5kZW50ZWQ6Tk9dOwogCiAgICAgW3NlbGYgX2FkZEhlYWRlcldpdGhUaXRsZTpAIldlYktpdDIt
b25seSBTZXR0aW5ncyJdOwogCkBAIC0xNDEsNyArMTQyLDYgQEAgLSAodm9pZClfcG9wdWxhdGVN
ZW51CiAKICAgICBbc2VsZiBfYWRkSGVhZGVyV2l0aFRpdGxlOkAiV2ViS2l0MS1vbmx5IFNldHRp
bmdzIl07CiAgICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFibGUgU3VicGl4ZWwgQ1NT
T00gTWV0cmljcyIgYWN0aW9uOkBzZWxlY3Rvcih0b2dnbGVFbmFibGVTdWJQaXhlbENTU09NTWV0
cmljczopIGluZGVudGVkOllFU107Ci0gICAgW3NlbGYgX2FkZEl0ZW1XaXRoVGl0bGU6QCJFbmFi
bGUgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNzIiBhY3Rpb246QHNlbGVjdG9yKHRvZ2dsZVJlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOikgaW5kZW50ZWQ6Tk9dOwogfQogCiAtIChCT09MKXZh
bGlkYXRlTWVudUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQpJbmRleDogVG9vbHMvTWluaUJy
b3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9u
IDE5NzU2MikKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJv
bGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0Niw2ICszNDYsOCBAQCAtICh2b2lkKWRpZENoYW5nZVNl
dHRpbmdzCiAgICAgcHJlZmVyZW5jZXMuX3Jlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZSA9IHNl
dHRpbmdzLnJlc291cmNlVXNhZ2VPdmVybGF5VmlzaWJsZTsKICAgICBwcmVmZXJlbmNlcy5fZGlz
cGxheUxpc3REcmF3aW5nRW5hYmxlZCA9IHNldHRpbmdzLmRpc3BsYXlMaXN0RHJhd2luZ0VuYWJs
ZWQ7CiAKKyAgICBfd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUuX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gc2V0dGluZ3MucmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQ7CisKICAgICBCT09MIHVzZVRyYW5zcGFyZW50V2luZG93cyA9IHNldHRpbmdzLnVz
ZVRyYW5zcGFyZW50V2luZG93czsKICAgICBpZiAodXNlVHJhbnNwYXJlbnRXaW5kb3dzICE9ICFf
d2ViVmlldy5fZHJhd3NCYWNrZ3JvdW5kKSB7CiAgICAgICAgIFtzZWxmLndpbmRvdyBzZXRPcGFx
dWU6IXVzZVRyYW5zcGFyZW50V2luZG93c107Cg==
</data>
<flag name="review"
          id="297649"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>