<?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>155783</bug_id>
          
          <creation_ts>2016-03-22 23:06:13 -0700</creation_ts>
          <short_desc>When clearing cache, also clear AVFoundation cache.</short_desc>
          <delta_ts>2017-11-02 11:33:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>156482</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jeremy Jones">jeremyj-wk</reporter>
          <assigned_to name="Jeremy Jones">jeremyj-wk</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1177286</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-22 23:06:13 -0700</bug_when>
    <thetext>When clearing cache, also clear AVFoundation cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177287</commentid>
    <comment_count>1</comment_count>
      <attachid>274729</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-22 23:45:29 -0700</bug_when>
    <thetext>Created attachment 274729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177288</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-22 23:47:04 -0700</bug_when>
    <thetext>rdar://problem/25252541</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177357</commentid>
    <comment_count>3</comment_count>
      <attachid>274729</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-23 08:44:51 -0700</bug_when>
    <thetext>Comment on attachment 274729
Patch

Might also be good to make this caching respect the Page::isResourceCachingDisabled, which is supposed to bypass caching for developer convenience. Ideally nothing gets found in the cache and also nothing gets written into it either when the flag is set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177362</commentid>
    <comment_count>4</comment_count>
      <attachid>274729</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-03-23 08:59:01 -0700</bug_when>
    <thetext>Comment on attachment 274729
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:487
&gt; +    NSArray&lt;String *&gt;* directoryContents = [fileManager contentsOfDirectoryAtPath:sharedAVAssetCachePath() error:nil];
&gt; +    for (NSString *itemName in directoryContents) {

Why declare the array to have &quot;String *&quot;, but enumerate &quot;NSString*&quot;?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:493
&gt; +        if (attributes == nil)

&quot;if (!attributes)&quot;

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:500
&gt; +        if (modificationDate == nil)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177419</commentid>
    <comment_count>5</comment_count>
      <attachid>274729</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-03-23 12:28:37 -0700</bug_when>
    <thetext>Comment on attachment 274729
Patch

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

Please rebaseline since the patch doesn&apos;t apply.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:475
&gt; +            [sharedAVAssetCache() removeEntryForKey:key];

What is the bug # that tracks testing proper deletion of these files?

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:486
&gt; +    NSArray&lt;String *&gt;* directoryContents = [fileManager contentsOfDirectoryAtPath:sharedAVAssetCachePath() error:nil];

NSArray&lt;String *&gt; *directoryContents

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:488
&gt; +        if (![itemName hasPrefix:@&quot;CachedMedia-&quot;])

Why test for this prefix? If something more recent has been loaded, presumably the plist would also have its modification timestamp updated as well.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:513
&gt; +    for (NSString* key in [sharedAVAssetCache() allKeys]) {

NSString *key</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177428</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-23 12:50:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 274729 [details]
&gt; Patch
&gt; 
&gt; Might also be good to make this caching respect the
&gt; Page::isResourceCachingDisabled, which is supposed to bypass caching for
&gt; developer convenience. Ideally nothing gets found in the cache and also
&gt; nothing gets written into it either when the flag is set.

I don&apos;t see Page::isResourceCachingDisabled. But we handle this case by setting AVURLAssetUsesNoPersistentCacheKey based on chrome client&apos;s mediaShouldUsePersistentCache().
 
I&apos;ll also make sure creating an AVAsset without a cache does not cause the singleton AVAssetCache to be created, to prevent the plist manifest from being written.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177430</commentid>
    <comment_count>7</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-23 12:50:51 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 274729 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274729&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:487
&gt; &gt; +    NSArray&lt;String *&gt;* directoryContents = [fileManager contentsOfDirectoryAtPath:sharedAVAssetCachePath() error:nil];
&gt; &gt; +    for (NSString *itemName in directoryContents) {
&gt; 
&gt; Why declare the array to have &quot;String *&quot;, but enumerate &quot;NSString*&quot;?
&gt; 

Oops. Fixed.

&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:493
&gt; &gt; +        if (attributes == nil)
&gt; 
&gt; &quot;if (!attributes)&quot;

Fixed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:500
&gt; &gt; +        if (modificationDate == nil)
&gt; 
&gt; Ditto.

Dito.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177431</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-23 12:56:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 274729 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274729&amp;action=review
&gt; 
&gt; Please rebaseline since the patch doesn&apos;t apply.

Will do.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:475
&gt; &gt; +            [sharedAVAssetCache() removeEntryForKey:key];
&gt; 
&gt; What is the bug # that tracks testing proper deletion of these files?
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:486
&gt; &gt; +    NSArray&lt;String *&gt;* directoryContents = [fileManager contentsOfDirectoryAtPath:sharedAVAssetCachePath() error:nil];
&gt; 
&gt; NSArray&lt;String *&gt; *directoryContents

Fixed. Audited and fixed spacing for &quot;*&quot; for other obj-c declarations.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:488
&gt; &gt; +        if (![itemName hasPrefix:@&quot;CachedMedia-&quot;])
&gt; 
&gt; Why test for this prefix? If something more recent has been loaded,
&gt; presumably the plist would also have its modification timestamp updated as
&gt; well.

This check is to prevent the plist from being deleted, and to make sure we don&apos;t delete files we don&apos;t know about, especially when bounded by modifiedSince.

When completely clearing the cache, the entire directory is removed. See:
    if (modifiedSince == std::chrono::system_clock::time_point { }) {
        [fileManager removeItemAtPath:basePath error:nil];

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:513
&gt; &gt; +    for (NSString* key in [sharedAVAssetCache() allKeys]) {
&gt; 
&gt; NSString *key

Fixed this and other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177441</commentid>
    <comment_count>9</comment_count>
      <attachid>274770</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-23 13:09:17 -0700</bug_when>
    <thetext>Created attachment 274770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177443</commentid>
    <comment_count>10</comment_count>
      <attachid>274772</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-23 13:17:23 -0700</bug_when>
    <thetext>Created attachment 274772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177450</commentid>
    <comment_count>11</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-23 13:35:14 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 274729 [details]
&gt; Patch
&gt; 
&gt; Might also be good to make this caching respect the
&gt; Page::isResourceCachingDisabled, which is supposed to bypass caching for
&gt; developer convenience. Ideally nothing gets found in the cache and also
&gt; nothing gets written into it either when the flag is set.

Oh, isResourceCachingDisabled is new. I&apos;ll investigate using that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177667</commentid>
    <comment_count>12</comment_count>
      <attachid>274772</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-03-24 07:32:41 -0700</bug_when>
    <thetext>Comment on attachment 274772
Patch

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

Would it be possible to do this in the ui process, like we do for all other data types? 

It&apos;s unfortunate that we&apos;d have to spin up a web process to do work (Which this patch doesn&apos;t do either, which means that emptying the cache only works if there&apos;s a web process running. It also means that if you have multiple web processes running they are all going to try to delete the same data).

&gt; Source/WebKit2/WebProcess/WebProcess.cpp:1142
&gt; +            websiteData.entries.append(WebsiteData::Entry { origin, WebsiteDataType::MemoryCache, 0 });

I don&apos;t think the type of these entries should be MemoryCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177947</commentid>
    <comment_count>13</comment_count>
      <attachid>274772</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-25 06:45:59 -0700</bug_when>
    <thetext>Comment on attachment 274772
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.h:386
&gt; +    WEBCORE_EXPORT static void clearMediaCache(std::chrono::system_clock::time_point modifiedSince = std::chrono::system_clock::time_point { });

I believe this could just be:

    std::chrono::system_clock::time_point modifiedSince = { });

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1043
&gt; +        HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; engineOrigins = engine.originsInMediaCache();

Could use auto here instead.

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1044
&gt; +        origins.add(engineOrigins.begin(), engineOrigins.end());

Might want to add one special case:

    if (origins.empty())
        origins = WTFMove(engineOrigins);
    else
        origins.add(engineOrigins.begin(), engineOrigins.end());

One way to do that would be to make a helper function for adding one hash to another with that optimization.

&gt; Source/WebCore/platform/graphics/MediaPlayerPrivate.h:217
&gt; +    HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; originsInMediaCache() { return HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; { }; }

Can omit the type name:

    HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; originsInMediaCache() { return { }; }

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:437
&gt; +    char *pTMPDIR = getenv(&quot;TMPDIR&quot;);

In WebKit coding style this should be char* with out the space. Also, we almost never use this kind of &quot;p&quot; prefix.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:444
&gt; +    static AVAssetCache *gAVAssetCache = NULL;

In WebKit coding style we don’t use a &quot;g&quot; for something like this. Also, for a static, there is no need to initialize to null. Also, since it’s an Objective-C object pointer it should be nil, not NULL. Also, nothing in the code relies on this being initialized to null.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:457
&gt; +        origins.add(SecurityOrigin::create(URL(ParsedURLString, String::fromUTF8([key UTF8String]))));

It is not correct to use ParsedURLString here. That asserts that this is a URL that WebKIt would find valid, but we have no guarantee of that.

There is no value to converting the key to UTF-8 and then back to UTF-16.

Code should be more like this:

    for (...) {
        URL keyAsURL = URL(URL(), key);
        if (keyAsURL.isValid())
            origins.add(SecurityOrigin::create(keyAsURL);
    }

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:486
&gt; +    NSArray&lt;NSString *&gt; *directoryContents = [fileManager contentsOfDirectoryAtPath:sharedAVAssetCachePath() error:nil];

Should use basePath here.

The more modern contentsOfDirectoryAtURL:includingPropertiesForKeys:options: method lets you get the file names and also the file types and modification dates all at once.

I also suggest consider using enumeratorAtURL:includingPropertiesForKeys:options:errorHandler: instead, building up an array of files to delete rather than deleting inside the loop.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:501
&gt; +        NSString *itemPath = [basePath stringByAppendingPathComponent:itemName];
&gt; +        NSDictionary *attributes = [fileManager attributesOfItemAtPath:itemPath error:nil];
&gt; +        if (!attributes)
&gt; +            continue;
&gt; +
&gt; +        if (![NSFileTypeRegular isEqual:[attributes objectForKey:NSFileType]])
&gt; +            continue;
&gt; +
&gt; +        NSDate *modificationDate = [attributes objectForKey:NSFileModificationDate];
&gt; +        if (!modificationDate)
&gt; +            continue;

I believe the more modern way to write this is with the NSURL property methods, which does exactly the I/O needed, and no extra I/O.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:514
&gt; +        if (origins.contains(SecurityOrigin::create(URL(ParsedURLString, String::fromUTF8([key UTF8String])))))

Same comment here about this ParsedURLString and UTF-8 not being the correct way to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178224</commentid>
    <comment_count>14</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-25 20:34:19 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 274772 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274772&amp;action=review
&gt; 
&gt; Would it be possible to do this in the ui process, like we do for all other
&gt; data types? 

Difficult. The media cache is stored in the WebContent tmp dir, which is not accessible to the UIProcess.

Where to put it that both webprocess and uiprocess can access.

Candidates:
1) ApplicationCacheDirectory. This isn&apos;t where this sort of data is usually stored, but it is accessible from web process and uiprocess.
2) NetworkCacheDirectory. This is the right place for this sort of data, but isn&apos;t (and should not be made) available to WebProcess.
3) Create a new MediaCacheDirectory for just this purpose. Seems like the right solution, but seems unfortunate to create a new sandbox extension just for media.

Also: Moving the location will orphan the existing cache and will require it to be migrated.

I&apos;m posting a change that does option (1) as an intermediate solution. And moves the media cache manipulation from WebProcess.cpp to WebsiteDataStore.cpp

&gt; 
&gt; It&apos;s unfortunate that we&apos;d have to spin up a web process to do work (Which
&gt; this patch doesn&apos;t do either, which means that emptying the cache only works
&gt; if there&apos;s a web process running. It also means that if you have multiple
&gt; web processes running they are all going to try to delete the same data).

I didn&apos;t catch this because the cases I tested were clearing multiple cache types and so, the processes were being spun-up anyway. But, I did see multiple delete attempts.

I see that would require a change to computeWebProcessAccessTypeForDataFetch.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebProcess.cpp:1142
&gt; &gt; +            websiteData.entries.append(WebsiteData::Entry { origin, WebsiteDataType::MemoryCache, 0 });
&gt; 
&gt; I don&apos;t think the type of these entries should be MemoryCache.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178226</commentid>
    <comment_count>15</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-25 20:42:43 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 274772 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274772&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:386
&gt; &gt; +    WEBCORE_EXPORT static void clearMediaCache(std::chrono::system_clock::time_point modifiedSince = std::chrono::system_clock::time_point { });
&gt; 
&gt; I believe this could just be:
&gt; 
&gt;     std::chrono::system_clock::time_point modifiedSince = { });

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1043
&gt; &gt; +        HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; engineOrigins = engine.originsInMediaCache();
&gt; 
&gt; Could use auto here instead.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1044
&gt; &gt; +        origins.add(engineOrigins.begin(), engineOrigins.end());
&gt; 
&gt; Might want to add one special case:
&gt; 
&gt;     if (origins.empty())
&gt;         origins = WTFMove(engineOrigins);
&gt;     else
&gt;         origins.add(engineOrigins.begin(), engineOrigins.end());
&gt; 
&gt; One way to do that would be to make a helper function for adding one hash to
&gt; another with that optimization.

Done. Added

template&lt;typename T&gt;
static void addToHash(HashSet&lt;T&gt;&amp; toHash, HashSet&lt;T&gt;&amp;&amp; fromHash) {


&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayerPrivate.h:217
&gt; &gt; +    HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; originsInMediaCache() { return HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; { }; }
&gt; 
&gt; Can omit the type name:
&gt; 
&gt;     HashSet&lt;RefPtr&lt;SecurityOrigin&gt;&gt; originsInMediaCache() { return { }; }

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:437
&gt; &gt; +    char *pTMPDIR = getenv(&quot;TMPDIR&quot;);
&gt; 
&gt; In WebKit coding style this should be char* with out the space. Also, we
&gt; almost never use this kind of &quot;p&quot; prefix.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:444
&gt; &gt; +    static AVAssetCache *gAVAssetCache = NULL;
&gt; 
&gt; In WebKit coding style we don’t use a &quot;g&quot; for something like this. Also, for
&gt; a static, there is no need to initialize to null. Also, since it’s an
&gt; Objective-C object pointer it should be nil, not NULL. Also, nothing in the
&gt; code relies on this being initialized to null.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:457
&gt; &gt; +        origins.add(SecurityOrigin::create(URL(ParsedURLString, String::fromUTF8([key UTF8String]))));
&gt; 
&gt; It is not correct to use ParsedURLString here. That asserts that this is a
&gt; URL that WebKIt would find valid, but we have no guarantee of that.
&gt; 
&gt; There is no value to converting the key to UTF-8 and then back to UTF-16.
&gt; 
&gt; Code should be more like this:
&gt; 
&gt;     for (...) {
&gt;         URL keyAsURL = URL(URL(), key);
&gt;         if (keyAsURL.isValid())
&gt;             origins.add(SecurityOrigin::create(keyAsURL);
&gt;     }

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:486
&gt; &gt; +    NSArray&lt;NSString *&gt; *directoryContents = [fileManager contentsOfDirectoryAtPath:sharedAVAssetCachePath() error:nil];
&gt; 
&gt; Should use basePath here.

Done.

&gt; 
&gt; The more modern contentsOfDirectoryAtURL:includingPropertiesForKeys:options:
&gt; method lets you get the file names and also the file types and modification
&gt; dates all at once.
&gt; 
&gt; I also suggest consider using
&gt; enumeratorAtURL:includingPropertiesForKeys:options:errorHandler: instead,
&gt; building up an array of files to delete rather than deleting inside the loop.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:501
&gt; &gt; +        NSString *itemPath = [basePath stringByAppendingPathComponent:itemName];
&gt; &gt; +        NSDictionary *attributes = [fileManager attributesOfItemAtPath:itemPath error:nil];
&gt; &gt; +        if (!attributes)
&gt; &gt; +            continue;
&gt; &gt; +
&gt; &gt; +        if (![NSFileTypeRegular isEqual:[attributes objectForKey:NSFileType]])
&gt; &gt; +            continue;
&gt; &gt; +
&gt; &gt; +        NSDate *modificationDate = [attributes objectForKey:NSFileModificationDate];
&gt; &gt; +        if (!modificationDate)
&gt; &gt; +            continue;
&gt; 
&gt; I believe the more modern way to write this is with the NSURL property
&gt; methods, which does exactly the I/O needed, and no extra I/O.

The NSDirectoryEnumerator provides access to the requested properties.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:514
&gt; &gt; +        if (origins.contains(SecurityOrigin::create(URL(ParsedURLString, String::fromUTF8([key UTF8String])))))
&gt; 
&gt; Same comment here about this ParsedURLString and UTF-8 not being the correct
&gt; way to do this.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178272</commentid>
    <comment_count>16</comment_count>
      <attachid>274982</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-26 00:41:47 -0700</bug_when>
    <thetext>Created attachment 274982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178299</commentid>
    <comment_count>17</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-03-26 15:59:27 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 274729 [details]
&gt; Patch
&gt; 
&gt; Might also be good to make this caching respect the
&gt; Page::isResourceCachingDisabled, which is supposed to bypass caching for
&gt; developer convenience. Ideally nothing gets found in the cache and also
&gt; nothing gets written into it either when the flag is set.

I&apos;ve implemented this in the patch for https://bugs.webkit.org/show_bug.cgi?id=155924</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181016</commentid>
    <comment_count>18</comment_count>
      <attachid>275706</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-04-05 15:54:16 -0700</bug_when>
    <thetext>Created attachment 275706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181123</commentid>
    <comment_count>19</comment_count>
      <attachid>275706</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-04-05 19:05:34 -0700</bug_when>
    <thetext>Comment on attachment 275706
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h:69
&gt; +    void setMeidaCacheDirectory(const WTF::String&amp; mediaCacheDirectory) { m_mediaCacheDirectory = mediaCacheDirectory; }

typo: setMeidaCacheDirectory -&gt; setMediaCacheDirectory

&gt; Source/WebKit2/UIProcess/API/APIWebsiteDataStore.cpp:123
&gt; +    // FIXME: Implement.

FIXMEs should have a bug number (even if the existing FIXME just below doesn&apos;t have one :-/ ).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181125</commentid>
    <comment_count>20</comment_count>
      <attachid>275706</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-04-05 19:18:18 -0700</bug_when>
    <thetext>Comment on attachment 275706
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/APIWebsiteDataStore.cpp:123
&gt;&gt; +    // FIXME: Implement.
&gt; 
&gt; FIXMEs should have a bug number (even if the existing FIXME just below doesn&apos;t have one :-/ ).

All of the default directories here have the same useless comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181335</commentid>
    <comment_count>21</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-04-06 11:52:55 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Comment on attachment 275706 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=275706&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h:69
&gt; &gt; +    void setMeidaCacheDirectory(const WTF::String&amp; mediaCacheDirectory) { m_mediaCacheDirectory = mediaCacheDirectory; }
&gt; 
&gt; typo: setMeidaCacheDirectory -&gt; setMediaCacheDirectory

Done.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/APIWebsiteDataStore.cpp:123
&gt; &gt; +    // FIXME: Implement.
&gt; 
&gt; FIXMEs should have a bug number (even if the existing FIXME just below
&gt; doesn&apos;t have one :-/ ).

Removed useless comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181339</commentid>
    <comment_count>22</comment_count>
      <attachid>275799</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-04-06 11:55:34 -0700</bug_when>
    <thetext>Created attachment 275799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181751</commentid>
    <comment_count>23</comment_count>
      <attachid>275900</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-04-07 11:19:51 -0700</bug_when>
    <thetext>Created attachment 275900
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181920</commentid>
    <comment_count>24</comment_count>
      <attachid>275945</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-04-07 15:14:52 -0700</bug_when>
    <thetext>Created attachment 275945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1181947</commentid>
    <comment_count>25</comment_count>
      <attachid>275950</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-04-07 15:56:41 -0700</bug_when>
    <thetext>Created attachment 275950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182577</commentid>
    <comment_count>26</comment_count>
      <attachid>275950</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-10 17:32:47 -0700</bug_when>
    <thetext>Comment on attachment 275950
Patch

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

&gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1053
&gt; +        auto engineOrigins = engine.originsInMediaCache(path);
&gt; +        addToHash(origins, WTFMove(engineOrigins));

Reads better as a one-liner:

    addToHash(origins, engine.originsInMediaCache(path));

Obviates the need for WTFMove, even.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:486
&gt; +    NSMutableArray&lt;NSURL *&gt; *urlsToDelete = [NSMutableArray array];

In the past we mostly did manual retain/release rather than autorelease. So we would have done [[NSMutableArray alloc] init] here and added a [urlsToDelete release] below. Or used RetainPtr&lt;NSMutableArray&lt;NSURL *&gt;&gt; and adoptNS.

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:487
&gt; +    while (NSURL *fileURL = [enumerator nextObject]) {

We could just write:

    for (NSURL *fileURL : enumerator) {

And use the fast enumeration syntax.

&gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1344
&gt; +    UNUSED_PARAM(path);

I suggest just leaving out the argument name rather than using UNUSED_PARAM in a case like this that unconditionally ignores an argument like this.

&gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1348
&gt; +        origins.add(SecurityOrigin::create(URL(ParsedURLString, String::fromUTF8([site UTF8String]))));

I’m not sure ParsedURLString is safe here. This should use the other URL constructor like the code above that checks for isValid.

&gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1355
&gt; +    UNUSED_PARAM(path);
&gt; +    UNUSED_PARAM(modifiedSince);

Ditto.

&gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1362
&gt; +    UNUSED_PARAM(path);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182745</commentid>
    <comment_count>27</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-04-11 11:34:39 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Comment on attachment 275950 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=275950&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/MediaPlayer.cpp:1053
&gt; &gt; +        auto engineOrigins = engine.originsInMediaCache(path);
&gt; &gt; +        addToHash(origins, WTFMove(engineOrigins));
&gt; 
&gt; Reads better as a one-liner:
&gt; 
&gt;     addToHash(origins, engine.originsInMediaCache(path));
&gt; 
&gt; Obviates the need for WTFMove, even.

Done.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:486
&gt; &gt; +    NSMutableArray&lt;NSURL *&gt; *urlsToDelete = [NSMutableArray array];
&gt; 
&gt; In the past we mostly did manual retain/release rather than autorelease. So
&gt; we would have done [[NSMutableArray alloc] init] here and added a
&gt; [urlsToDelete release] below. Or used RetainPtr&lt;NSMutableArray&lt;NSURL *&gt;&gt; and
&gt; adoptNS.

Done. RetainPtr + adoptNS.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:487
&gt; &gt; +    while (NSURL *fileURL = [enumerator nextObject]) {
&gt; 
&gt; We could just write:
&gt; 
&gt;     for (NSURL *fileURL : enumerator) {
&gt; 
&gt; And use the fast enumeration syntax.
&gt; 

Done

&gt; &gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1344
&gt; &gt; +    UNUSED_PARAM(path);
&gt; 
&gt; I suggest just leaving out the argument name rather than using UNUSED_PARAM
&gt; in a case like this that unconditionally ignores an argument like this.
&gt; 

Done.

&gt; &gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1348
&gt; &gt; +        origins.add(SecurityOrigin::create(URL(ParsedURLString, String::fromUTF8([site UTF8String]))));
&gt; 
&gt; I’m not sure ParsedURLString is safe here. This should use the other URL
&gt; constructor like the code above that checks for isValid.
&gt; 

Done.

&gt; &gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1355
&gt; &gt; +    UNUSED_PARAM(path);
&gt; &gt; +    UNUSED_PARAM(modifiedSince);
&gt; 
&gt; Ditto.

Ditto.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/mac/MediaPlayerPrivateQTKit.mm:1362
&gt; &gt; +    UNUSED_PARAM(path);
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182808</commentid>
    <comment_count>28</comment_count>
      <attachid>276170</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-04-11 13:27:14 -0700</bug_when>
    <thetext>Created attachment 276170
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182841</commentid>
    <comment_count>29</comment_count>
      <attachid>276170</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 15:43:39 -0700</bug_when>
    <thetext>Comment on attachment 276170
Patch for landing.

Clearing flags on attachment: 276170

Committed r199315: &lt;http://trac.webkit.org/changeset/199315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182886</commentid>
    <comment_count>30</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-04-11 16:53:15 -0700</bug_when>
    <thetext>Rolled out in r199321: &lt;http://trac.webkit.org/changeset/199321&gt;.

See: https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%28Build%29/builds/14196</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182889</commentid>
    <comment_count>31</comment_count>
      <attachid>276191</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-04-11 17:11:42 -0700</bug_when>
    <thetext>Created attachment 276191
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182894</commentid>
    <comment_count>32</comment_count>
      <attachid>276191</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-04-11 17:22:11 -0700</bug_when>
    <thetext>Comment on attachment 276191
Patch for landing.

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:487
&gt; +    for (NSURL *fileURL : enumerator) {

Oops, I totally meant this to be &quot;in&quot; rather than &quot;:&quot;. Does it work with &quot;:&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182905</commentid>
    <comment_count>33</comment_count>
      <attachid>276191</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-11 18:00:03 -0700</bug_when>
    <thetext>Comment on attachment 276191
Patch for landing.

Clearing flags on attachment: 276191

Committed r199326: &lt;http://trac.webkit.org/changeset/199326&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274729</attachid>
            <date>2016-03-22 23:45:29 -0700</date>
            <delta_ts>2016-03-23 13:09:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155783-20160322234530.patch</filename>
            <type>text/plain</type>
            <size>27756</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDQ5ODgyZDI4MzFkYWU1
N2NjMmE0OTVhOGMyNjg1MzRjMGU2YmQwYS4uNDVmMDQxMDgxZWFkNzQyZGU5MGZlZDI2NmZlYWMy
ZWIyZTA5ODQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE2LTAzLTIyICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworICAgICAgICByZGFyOi8vcHJvYmxl
bS8yNTI1MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBhIHNpbmdsZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZpZWQgbG9jYXRpb24gb24g
ZGlzayBmb3IgYWxsIEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNoZQorICAgICAgICBjYW4g
dGhlbiBiZSB1c2VkIHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1c2VkIGJ5IEFWRm91bmRh
dGlvbi4gSXQgaXMgdXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIGNh
Y2hlIGluIG9yaWdpbnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIgdGhlIGNhY2hlIGNvbXBs
ZXRlbHkgb3IgcGFydGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFDYWNoZSgpIGFuZCBjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luIGlu
c3RlYWQgb2YgdGhlIGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJlcHJlc2VudCBvcmlnaW5z
IGluIHRoZSBjYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2Fj
aGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFtZXRlci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6IFJlZ2lzdGVyIGNhY2hlIG1ldGhvZHMuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFt
ZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJ
bk1lZGlhQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNs
ZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKTogUmVnaXN0ZXIgY2FjaGUgbWV0
aG9kcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IFJlbmFtZSByZWdpc3RlcmQgbWV0aG9kcy4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJN
ZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNo
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3Bp
L21hYy9BVkZvdW5kYXRpb25TUEkuaDogQWRkIEFWQXNzZXRDYWNoZS4KKwogMjAxNi0wMy0xNyAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBkb2N1bWVu
dC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoImNvcHkiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDUxZTcwODMxNWRk
NjkwY2JhZmFiNGMyNTU5Mzk5NTIxNDdkMDRiOGQuLjlmNWNjYzA0YjRhZjI2NmJiMjRlM2VjYjlk
MzZjMDRjZTdhYzE3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNi0wMy0yMiAg
SmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CisKKyAgICAgICAgV2hlbiBjbGVhcmlu
ZyBjYWNoZSwgYWxzbyBjbGVhciBBVkZvdW5kYXRpb24gY2FjaGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU3ODMKKyAgICAgICAgcmRhcjovL3By
b2JsZW0vMjUyNTI1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBJbmNsdWRlIHRoZSBIVE1MTWVkaWFFbGVtZW50IG1lZGlhIGNhY2hlIHdoZW4gZG9p
bmcgZGlzayBjYWNoZSBvcGVyYXRpb25zLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKToKKwog
MjAxNi0wMy0xNyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSB1c2Ugb2YgZHlsZF9yZWdpc3Rlcl9pbWFnZV9zdGF0ZV9jaGFuZ2VfaGFuZGxl
cigpIGluIFBsdWdpblByb2Nlc3NNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCmluZGV4IDZlMjZkYTk3MmJkZmU5ZGQxYzE0MjYwOWYxYzE2ODAxZjIyMTZmOTMu
LmM3N2JkNjNhZDQ4ZDI2YzVlOWUzZjBmNzZiODRmNDIzNTg2MDM5ZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNTU1NywxOSArNTU1NywxOSBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnNldFNob3VsZERlbGF5TG9hZEV2ZW50KGJvb2wgc2hvdWxkRGVs
YXkpCiB9CiAgICAgCiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0U2l0ZXNJbk1lZGlhQ2Fj
aGUoVmVjdG9yPFN0cmluZz4mIHNpdGVzKQorSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiBIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKCkKIHsKLSAgICBNZWRpYVBs
YXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoc2l0ZXMpOworICAgIHJldHVybiBNZWRpYVBsYXll
cjo6b3JpZ2luc0luTWVkaWFDYWNoZSgpOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNs
ZWFyTWVkaWFDYWNoZSgpCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZShz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCiB7Ci0g
ICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZSgpOworICAgIE1lZGlhUGxheWVyOjpjbGVh
ck1lZGlhQ2FjaGUobW9kaWZpZWRTaW5jZSk7CiB9CiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcmIHNpdGUpCit2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRp
YUNhY2hlRm9yU2l0ZShzaXRlKTsKKyAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhvcmlnaW5zKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXNldE1lZGlh
RW5naW5lcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDQ2MWRm
ZThmOGJjODY1YWYyMTk5MjA2ZjE2ZjFkNTVlNWRjZjJlNTYuLjQ2Y2IzZTFlMDc4M2U1NjRlN2Fj
MWNmZDI4YTkzZDBmYmFmYTZhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oCkBAIC0zODIsOSArMzgyLDkgQEAgcHVibGljOgogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5n
U3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIAogICAgIC8vIE1lZGlhIGNhY2hlIG1hbmFnZW1l
bnQuCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUo
VmVjdG9yPFN0cmluZz4mKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1l
ZGlhQ2FjaGUoKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2Fj
aGVGb3JTaXRlKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlID0gc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiYpOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVkaWFFbmdpbmVzKCk7CiAKICAgICBi
b29sIGlzUGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWluZzsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmluZGV4IDk5YjlkNWNh
ZGU3M2UwYzFmYWQwOWE3N2NmNWY2ZGIyOThjMzdhYTUuLmNiYzlkMzFjMzc1MDdmNTBlZWU0Njgx
NzUzYzU2ZGMzODk3ZDk5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE2OCwxMyArMTY4LDEzIEBAIHN0cnVjdCBNZWRpYVBs
YXllckZhY3RvcnkgewogICAgIENyZWF0ZU1lZGlhRW5naW5lUGxheWVyIGNvbnN0cnVjdG9yOwog
ICAgIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlwZXM7CiAgICAgTWVk
aWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzOwotICAgIE1lZGlhRW5n
aW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGU7CisgICAgTWVkaWFF
bmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlIG9yaWdpbnNJbk1lZGlhQ2FjaGU7CiAgICAgTWVkaWFF
bmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlOwotICAgIE1lZGlhRW5naW5lQ2xl
YXJNZWRpYUNhY2hlRm9yU2l0ZSBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlOworICAgIE1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zOwog
ICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW07CiB9Owog
Ci1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVk
aWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsIE1lZGlhRW5n
aW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRp
YUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0pOworc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIs
IE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRp
YUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNL
ZXlTeXN0ZW0pOwogCiBzdGF0aWMgYm9vbCBoYXZlTWVkaWFFbmdpbmVzVmVjdG9yOwogCkBAIC0y
MzIsMTMgKzIzMiwxMyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxheWVyRmFjdG9yeT4m
IGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiB9CiAKIHN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5l
KENyZWF0ZU1lZGlhRW5naW5lUGxheWVyIGNvbnN0cnVjdG9yLCBNZWRpYUVuZ2luZVN1cHBvcnRl
ZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBzdXBwb3J0
c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBnZXRTaXRlc0luTWVk
aWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlLCBNZWRp
YUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgTWVk
aWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkKKyAgICBNZWRpYUVu
Z2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVD
bGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVTdXBwb3J0
c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkKIHsKICAgICBBU1NFUlQoY29uc3RydWN0b3Ip
OwogICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7CiAgICAgQVNTRVJUKHN1cHBvcnRzVHlw
ZSk7CiAKLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1l
ZGlhUGxheWVyRmFjdG9yeSB7IGNvbnN0cnVjdG9yLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9y
dHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlh
Q2FjaGVGb3JTaXRlLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKKyAgICBtdXRhYmxlSW5zdGFsbGVk
TWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IGNvbnN0cnVj
dG9yLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5zSW5NZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIHN1cHBvcnRzS2V5
U3lzdGVtIH0pOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhcHBsaWNhdGlvbk9j
dGV0U3RyZWFtKCkKQEAgLTEwMzQsMzAgKzEwMzQsMzEgQEAgdm9pZCBNZWRpYVBsYXllcjo6cmVs
b2FkVGltZXJGaXJlZCgpCiAgICAgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUobV9jdXJyZW50TWVk
aWFFbmdpbmUpOwogfQogCi12b2lkIE1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZShW
ZWN0b3I8U3RyaW5nPiYgc2l0ZXMpCitIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1l
ZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKCkKIHsKKyAgICBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoIWVuZ2luZS5nZXRTaXRlc0luTWVkaWFD
YWNoZSkKKyAgICAgICAgaWYgKCFlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICBWZWN0b3I8U3RyaW5nPiBlbmdpbmVTaXRlczsKLSAgICAg
ICAgZW5naW5lLmdldFNpdGVzSW5NZWRpYUNhY2hlKGVuZ2luZVNpdGVzKTsKLSAgICAgICAgc2l0
ZXMuYXBwZW5kVmVjdG9yKGVuZ2luZVNpdGVzKTsKKyAgICAgICAgSGFzaFNldDxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiBlbmdpbmVPcmlnaW5zID0gZW5naW5lLm9yaWdpbnNJbk1lZGlhQ2FjaGUo
KTsKKyAgICAgICAgb3JpZ2lucy5hZGQoZW5naW5lT3JpZ2lucy5iZWdpbigpLCBlbmdpbmVPcmln
aW5zLmVuZCgpKTsKICAgICB9CisgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKLXZvaWQgTWVkaWFQ
bGF5ZXI6OmNsZWFyTWVkaWFDYWNoZSgpCit2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2Fj
aGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQog
ewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKICAg
ICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUpCi0gICAgICAgICAgICBlbmdpbmUuY2xl
YXJNZWRpYUNhY2hlKCk7CisgICAgICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlKG1vZGlm
aWVkU2luY2UpOwogICAgIH0KIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZShjb25zdCBTdHJpbmcmIHNpdGUpCit2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9y
aWdpbnMpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpCi0gICAgICAg
ICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShzaXRlKTsKKyAgICAgICAgaWYgKGVu
Z2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQorICAgICAgICAgICAgZW5naW5lLmNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMob3JpZ2lucyk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA1ZWE1NTg3MTEwNTkz
N2VlZTQwNjNlNzI1OTJhMWFlNTU3MTU0NWNiLi40NmIzN2YyNzNlNjUxZDRhYTI0NDE5ZTUyY2Uz
MmMwZDg5ZmMwMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbkhhc2guaCIKICNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRlLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CkBAIC0yOTIsOSArMjkzLDkgQEAgcHVibGljOgogICAg
IHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRp
YUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBwb3J0c1R5cGVD
bGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmlu
ZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxh
YmxlKCk7Ci0gICAgc3RhdGljIHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmlu
Zz4mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKTsKLSAgICBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoKTsKKyAgICBz
dGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBz
dGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKICAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNv
bnN0OwpAQCAtNjI5LDEzICs2MzAsMTMgQEAgcHJpdmF0ZToKIHR5cGVkZWYgc3RkOjpmdW5jdGlv
bjxzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiAoTWVkaWFQbGF5
ZXIqKT4gQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXI7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2lu
ZVN1cHBvcnRlZFR5cGVzKShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgdHlwZXMpOwogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdp
bmVTdXBwb3J0c1R5cGUpKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpOwotdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSko
VmVjdG9yPFN0cmluZz4mKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlKSgpOwotdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRl
KShjb25zdCBTdHJpbmcmKTsKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiAoKk1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSkoKTsKK3R5cGVkZWYgdm9pZCAoKk1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlKShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IG1vZGlmaWVkU2luY2UpOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKShjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
Jik7CiB0eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBT
dHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKIHR5cGVkZWYgdm9p
ZCAoKk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFF
bmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFF
bmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5
c3RlbSk7CisgICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRp
YUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVn
aXN0ZXIpKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5
U3VwcG9ydCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyUHJpdmF0ZS5oCmluZGV4IGU1NzlhZTkzODU2ZTdkZGM4NTk2ODY0NzM2MThkYTJh
MTRkNmM3OTAuLjE0NDdkNzRkMDNiMDNhODRjZjQwYWVhNzc5YmY4ZDBiNzZjMzgxYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJp
dmF0ZS5oCkBAIC0yMTQsOSArMjE0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQg
YXVkaW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwg
dW5zaWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0g
ICAgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZv
aWQgY2xlYXJNZWRpYUNhY2hlKCkgeyB9Ci0gICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRl
KGNvbnN0IFN0cmluZyYpIHsgfQorICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
b3JpZ2luc0luTWVkaWFDYWNoZSgpIHsgcmV0dXJuIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4geyB9OyB9CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCkgeyB9CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpIHsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDLmgKaW5kZXggZjdmYjFhYzQ2OGIwNjgxMTBlYmEyMzJmMmJjNmZmMDYyNmVmYmEyMC4u
ZDZkMWEyMmNiZGUzZWM4ZmE1Nzk4OTI2OGQzNzE1ZTlkZjZmNDQ0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMuaApAQCAtODcsNiArODcsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKKyAgICBzdGF0aWMgSGFz
aFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKCk7CisgICAg
c3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CisgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyhjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7CisKICAg
ICB2b2lkIHNldEFzc2V0KFJldGFpblB0cjxpZD4pOwogICAgIHZvaWQgdHJhY2tzQ2hhbmdlZCgp
IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxNTQzN2RkZDhlZDZmM2Qw
YTJiZGJlNTVlOGYzMWRmYTdjNDZjZGRmLi44ZWVhZTZmMDk0YTExNTk4NDA2MGUzNzdmNjgwZDU2
MjcwZjRhZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE1OCw2ICsxNTgsNyBAQCBT
T0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQogU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldCkKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRp
b24sIEFWQXNzZXRJbWFnZUdlbmVyYXRvcikKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24s
IEFWTWV0YWRhdGFJdGVtKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldENh
Y2hlKQogCiBTT0ZUX0xJTktfQ0xBU1MoQ29yZUltYWdlLCBDSUNvbnRleHQpCiBTT0ZUX0xJTktf
Q0xBU1MoQ29yZUltYWdlLCBDSUltYWdlKQpAQCAtMjI3LDYgKzIyOCw3IEBAIFNPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHlsaW5n
UmVzb2x1dGlvblNvCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCitTT0ZUX0xJ
TktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRDYWNoZUtleSwgTlNTdHJpbmcqKQog
U09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0SFRUUENvb2tpZXNLZXks
IE5TU3RyaW5nKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldE91
dE9mQmFuZEFsdGVybmF0ZVRyYWNrc0tleSwgTlNTdHJpbmcqKQogU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5LCBOU1N0cmlu
ZyopCkBAIC0yNDIsNiArMjQ0LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBB
Vk1lZGlhQ2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQsIE5TU3RyaW4KIAogI2RlZmlu
ZSBBVlVSTEFzc2V0SFRUUENvb2tpZXNLZXkgZ2V0QVZVUkxBc3NldEhUVFBDb29raWVzS2V5KCkK
ICNkZWZpbmUgQVZVUkxBc3NldE91dE9mQmFuZEFsdGVybmF0ZVRyYWNrc0tleSBnZXRBVlVSTEFz
c2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5KCkKKyNkZWZpbmUgQVZVUkxBc3NldENhY2hl
S2V5IGdldEFWVVJMQXNzZXRDYWNoZUtleSgpCiAjZGVmaW5lIEFWVVJMQXNzZXRVc2VzTm9QZXJz
aXN0ZW50Q2FjaGVLZXkgZ2V0QVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSgpCiAj
ZGVmaW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSBnZXRBVk91dE9m
QmFuZEFsdGVybmF0ZVRyYWNrRGlzcGxheU5hbWVLZXkoKQogI2RlZmluZSBBVk91dE9mQmFuZEFs
dGVybmF0ZVRyYWNrRXh0ZW5kZWRMYW5ndWFnZVRhZ0tleSBnZXRBVk91dE9mQmFuZEFsdGVybmF0
ZVRyYWNrRXh0ZW5kZWRMYW5ndWFnZVRhZ0tleSgpCkBAIC00MjIsNyArNDI1LDk1IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShN
ZWRpYUVuZ2luZVJlZ2lzdHJhCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJl
Z2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCisjaWYgUExB
VEZPUk0oSU9TKQogICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwg
MCwgMCwgMCwgc3VwcG9ydHNLZXlTeXN0ZW0pOworI2Vsc2UKKyAgICAgICAgICAgIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFD
YWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOworI2Vu
ZGlmCit9CisKK3N0YXRpYyBOU1N0cmluZyogc2hhcmVkQVZBc3NldENhY2hlUGF0aCgpCit7Cisg
ICAgY2hhciAqcFRNUERJUiA9IGdldGVudigiVE1QRElSIik7CisgICAgTlNTdHJpbmcqIHRlbXBv
cmFyeURpcmVjdG9yeSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzpwVE1QRElSID8g
cFRNUERJUiA6ICIvdG1wIl07CisgICAgcmV0dXJuIFt0ZW1wb3JhcnlEaXJlY3Rvcnkgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTWVkaWFDYWNoZS8iXTsKK30KKworc3RhdGljIEFW
QXNzZXRDYWNoZSogc2hhcmVkQVZBc3NldENhY2hlKCkKK3sKKyAgICBzdGF0aWMgQVZBc3NldENh
Y2hlKiBnQVZBc3NldENhY2hlID0gTlVMTDsKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9u
Y2VUb2tlbjsKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJM
ICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOnNoYXJlZEFWQXNzZXRDYWNoZVBhdGgoKSBp
c0RpcmVjdG9yeTpZRVNdOworICAgICAgICBnQVZBc3NldENhY2hlID0gW1tnZXRBVkFzc2V0Q2Fj
aGVDbGFzcygpIGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdOworICAgIH0pOworICAgIHJldHVybiBn
QVZBc3NldENhY2hlOworfQorCitIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoKQorewor
ICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKKyAgICBmb3IgKE5T
U3RyaW5nKiBrZXkgaW4gW3NoYXJlZEFWQXNzZXRDYWNoZSgpIGFsbEtleXNdKQorICAgICAgICBv
cmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChQYXJzZWRVUkxTdHJpbmcsIFN0
cmluZzo6ZnJvbVVURjgoW2tleSBVVEY4U3RyaW5nXSkpKSk7CisgICAgcmV0dXJuIG9yaWdpbnM7
Cit9CisKK3N0YXRpYyBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHRvU3lz
dGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKK3sKKyAgICBBU1NFUlQoZGF0ZSk7CisgICAgdXNp
bmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCisgICAgcmV0dXJuIHN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludChkdXJhdGlvbl9jYXN0PHN5c3RlbV9jbG9jazo6ZHVyYXRpb24+KGR1cmF0aW9uPGRv
dWJsZT4oZGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzApKSk7Cit9CisKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBMT0coTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGUoKSIp
OworICAgIAorICAgIGZvciAoTlNTdHJpbmcqIGtleSBpbiBbc2hhcmVkQVZBc3NldENhY2hlKCkg
YWxsS2V5c10pIHsKKyAgICAgICAgaWYgKHRvU3lzdGVtQ2xvY2tUaW1lKFtzaGFyZWRBVkFzc2V0
Q2FjaGUoKSBsYXN0TW9kaWZpZWREYXRlT2ZFbnRyeUZvcktleTprZXldKSA+IG1vZGlmaWVkU2lu
Y2UpCisgICAgICAgICAgICBbc2hhcmVkQVZBc3NldENhY2hlKCkgcmVtb3ZlRW50cnlGb3JLZXk6
a2V5XTsKKyAgICB9CisKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICBOU1N0cmluZyAqYmFzZVBhdGggPSBzaGFyZWRB
VkFzc2V0Q2FjaGVQYXRoKCk7CisKKyAgICBpZiAobW9kaWZpZWRTaW5jZSA9PSBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHsgfSkgeworICAgICAgICBbZmlsZU1hbmFnZXIg
cmVtb3ZlSXRlbUF0UGF0aDpiYXNlUGF0aCBlcnJvcjpuaWxdOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIE5TQXJyYXk8U3RyaW5nICo+KiBkaXJlY3RvcnlDb250ZW50cyA9IFtm
aWxlTWFuYWdlciBjb250ZW50c09mRGlyZWN0b3J5QXRQYXRoOnNoYXJlZEFWQXNzZXRDYWNoZVBh
dGgoKSBlcnJvcjpuaWxdOworICAgIGZvciAoTlNTdHJpbmcgKml0ZW1OYW1lIGluIGRpcmVjdG9y
eUNvbnRlbnRzKSB7CisgICAgICAgIGlmICghW2l0ZW1OYW1lIGhhc1ByZWZpeDpAIkNhY2hlZE1l
ZGlhLSJdKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgTlNTdHJpbmcgKml0ZW1Q
YXRoID0gW2Jhc2VQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDppdGVtTmFtZV07
CisgICAgICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IFtmaWxlTWFuYWdlciBhdHRyaWJ1
dGVzT2ZJdGVtQXRQYXRoOml0ZW1QYXRoIGVycm9yOm5pbF07CisgICAgICAgIGlmIChhdHRyaWJ1
dGVzID09IG5pbCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghW05TRmls
ZVR5cGVSZWd1bGFyIGlzRXF1YWw6W2F0dHJpYnV0ZXMgb2JqZWN0Rm9yS2V5Ok5TRmlsZVR5cGVd
XSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIE5TRGF0ZSAqbW9kaWZpY2F0aW9u
RGF0ZSA9IFthdHRyaWJ1dGVzIG9iamVjdEZvcktleTpOU0ZpbGVNb2RpZmljYXRpb25EYXRlXTsK
KyAgICAgICAgaWYgKG1vZGlmaWNhdGlvbkRhdGUgPT0gbmlsKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgaWYgKHRvU3lzdGVtQ2xvY2tUaW1lKG1vZGlmaWNhdGlvbkRhdGUpIDw9
IG1vZGlmaWVkU2luY2UpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBbZmlsZU1h
bmFnZXIgcmVtb3ZlSXRlbUF0UGF0aDppdGVtUGF0aCBlcnJvcjpuaWxdOworICAgIH0KK30KKwor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMp
Cit7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CisgICAgZm9yIChOU1N0cmluZyoga2V5IGlu
IFtzaGFyZWRBVkFzc2V0Q2FjaGUoKSBhbGxLZXlzXSkgeworICAgICAgICBpZiAob3JpZ2lucy5j
b250YWlucyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChQYXJzZWRVUkxTdHJpbmcsIFN0cmlu
Zzo6ZnJvbVVURjgoW2tleSBVVEY4U3RyaW5nXSkpKSkpCisgICAgICAgICAgICBbc2hhcmVkQVZB
c3NldENhY2hlKCkgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICB9CiB9CiAKIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMoTWVkaWFQbGF5ZXIqIHBsYXllcikKQEAgLTg3Niw2ICs5NjcsMTAgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0
IFN0cmluZyYgdXJsKQogCiAgICAgW29wdGlvbnMgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoQm9vbDohcGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVu
dENhY2hlKCldIGZvcktleTpBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5XTsKIAor
I2lmICFQTEFURk9STShJT1MpCisgICAgW29wdGlvbnMgc2V0T2JqZWN0OnNoYXJlZEFWQXNzZXRD
YWNoZSgpIGZvcktleTpBVlVSTEFzc2V0Q2FjaGVLZXldOworI2VuZGlmCisKICAgICBOU1VSTCAq
Y29jb2FVUkwgPSBjYW5vbmljYWxVUkwodXJsKTsKICAgICBtX2F2QXNzZXQgPSBhZG9wdE5TKFth
bGxvY0FWVVJMQXNzZXRJbnN0YW5jZSgpIGluaXRXaXRoVVJMOmNvY29hVVJMIG9wdGlvbnM6b3B0
aW9ucy5nZXQoKV0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4IGYzNzNmZjg1
NTk2MzczOTliY2VkNGEzZDJhODQyODQ0NmUxOWMxMjguLjRlMDRiNzk3NzQxMGMyYzJmZWRmNDFj
YzBhMmZlZjM4MWIwZDVjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCkBAIC02OCw5
ICs2OCw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFz
aFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKICAgICBzdGF0
aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYpOwogCi0gICAgc3RhdGljIHZvaWQgZ2V0U2l0ZXNJbk1lZGlh
Q2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUo
KTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYp
OworICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1l
ZGlhQ2FjaGUoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAgICAgUGxhdGZv
cm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0KaW5kZXggYjI3MDMxOGQyZGI4NDA1ZmNmMTIzNGRiNjQ0N2UyMjU5YWIyYzg1
NC4uMTZjZDQ2ZDE2MmIyOWVkYTNhNTU4NmYxZTBkYzY1YjdlZGMzYWJkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVn
aXN0cmFyCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJlZ2lzdHJhcihbXShN
ZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0PihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKLSAgICAgICAgICAg
IHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xl
YXJNZWRpYUNhY2hlRm9yU2l0ZSwgMCk7CisgICAgICAgICAgICBzdXBwb3J0c1R5cGUsIG9yaWdp
bnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cywgMCk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpNZWRpYVBsYXllclByaXZhdGVR
VEtpdChNZWRpYVBsYXllciogcGxheWVyKQpAQCAtMTMzOSwyMyArMTMzOSwyNyBAQCBib29sIE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIFFUS2l0TGli
cmFyeSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVk
aWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpIAorSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZSgpCiB7
CisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwogICAgIE5TQXJy
YXkgKm1lZGlhU2l0ZXMgPSB3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNoZSgpOwogICAg
IGZvciAoTlNTdHJpbmcgKnNpdGUgaW4gbWVkaWFTaXRlcykKLSAgICAgICAgc2l0ZXMuYXBwZW5k
KHNpdGUpOworICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFVSTChQ
YXJzZWRVUkxTdHJpbmcsIFN0cmluZzo6ZnJvbVVURjgoW3NpdGUgVVRGOFN0cmluZ10pKSkpOwor
ICAgIHJldHVybiBvcmlnaW5zOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpj
bGVhck1lZGlhQ2FjaGUoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRp
YUNhY2hlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5j
ZSkKIHsKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7CiAgICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSgpIik7CiAgICAgd2tRVENs
ZWFyTWVkaWFEb3dubG9hZENhY2hlKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJiBzaXRlKQordm9pZCBNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewotICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKCkiKTsKLSAg
ICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKHNpdGUpOworICAgIExPRyhNZWRp
YSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCki
KTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAgIHdrUVRDbGVhck1l
ZGlhRG93bmxvYWRDYWNoZUZvclNpdGUob3JpZ2luLT50b1Jhd1N0cmluZygpKTsKIH0KIAogdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oCmlu
ZGV4IDg2ZGI3OTJkMjVmNmZhYWZmZGE1MWI2ZDU0YzBlNzM0M2NhNWI3MzYuLjlkZDdhYzY0OTU3
ZWYwZDc3YzdjN2MxMGQ1ZGQyYWQyZjRkNzcwZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaApAQCAtNTUsNiArNTUsMTcgQEAgTlNf
QVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tf
VEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0Q2FjaGVfUHJpdmF0ZS5oPgorI2Vsc2UKK05T
X0FTU1VNRV9OT05OVUxMX0JFR0lOCitAaW50ZXJmYWNlIEFWQXNzZXRDYWNoZSA6IE5TT2JqZWN0
CisrIChBVkFzc2V0Q2FjaGUgKilhc3NldENhY2hlV2l0aFVSTDooTlNVUkwgKilVUkw7CistIChp
ZClpbml0V2l0aFVSTDooTlNVUkwgKilVUkw7CitAZW5kCitOU19BU1NVTUVfTk9OTlVMTF9FTkQK
KyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaWYgSEFWRShBVktJVCkgJiYgVVNFKEFQ
UExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CmluZGV4IDc4NjY2NjdiZGE5N2UyMTlmYzViMzliYTE0MmZhZDBkMGRmMmU0ZTcuLjliZDUwMjA0
YjllM2Y0NWZmOGYzODE2YzRiNTZiZjc0N2ZjNWUwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dDQ29udHJvbGxlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvR2x5cGhQYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0pTRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMTEz
MSw2ICsxMTMyLDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlCiAgICAgICAgIGZvciAoYXV0
byYgb3JpZ2luIDogTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLm9yaWdpbnNXaXRoQ2FjaGUoc2Vz
c2lvbklEKSkKICAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVE
YXRhOjpFbnRyeSB7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsK
ICAgICB9CisgICAgCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpEaXNrQ2FjaGUpKSB7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogSFRNTE1l
ZGlhRWxlbWVudDo6b3JpZ2luc0luTWVkaWFDYWNoZSgpKQorICAgICAgICAgICAgd2Vic2l0ZURh
dGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgb3JpZ2luLCBXZWJzaXRlRGF0
YVR5cGU6Ok1lbW9yeUNhY2hlLCAwIH0pOworICAgIH0KIAogICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkRmV0Y2hXZWJzaXRl
RGF0YShjYWxsYmFja0lELCB3ZWJzaXRlRGF0YSksIDApOwogfQpAQCAtMTE0NSw2ICsxMTUxLDkg
QEAgdm9pZCBXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXAKIAogICAgICAgICBDcm9zc09yaWdpblByZWZsaWdo
dFJlc3VsdENhY2hlOjpzaW5nbGV0b24oKS5lbXB0eSgpOwogICAgIH0KKyAgICAKKyAgICBpZiAo
d2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpCisg
ICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZShtb2RpZmll
ZFNpbmNlKTsKIAogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGEoY2FsbGJhY2tJRCksIDApOwog
fQpAQCAtMTE1OCw3ICsxMTY3LDE1IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvCiAKICAgICAg
ICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW5zKHNl
c3Npb25JRCwgb3JpZ2lucyk7CiAgICAgfQorICAgIAorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVz
LmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgeworICAgICAgICBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAgICAgIGZvciAoYXV0byYgb3Jp
Z2luRGF0YSA6IG9yaWdpbkRhdGFzKQorICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luRGF0
YS5zZWN1cml0eU9yaWdpbigpKTsKIAorICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKG9yaWdpbnMpOworICAgIH0KKyAgICAKICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhjYWxsYmFja0lEKSwgMCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274770</attachid>
            <date>2016-03-23 13:09:17 -0700</date>
            <delta_ts>2016-03-23 13:17:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155783-20160323130917.patch</filename>
            <type>text/plain</type>
            <size>28125</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1OGU0OTNlOGRkNGEz
MDUxNjU5NmY1OWFhYzc1Mjg1ZmQ5OTIyYy4uMzI2NjliYzA0YWI1YWU3YmI3MGE2YmY4YmVkNWMy
N2ZkMzAxYTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE2LTAzLTIyICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworICAgICAgICByZGFyOi8vcHJvYmxl
bS8yNTI1MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBhIHNpbmdsZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZpZWQgbG9jYXRpb24gb24g
ZGlzayBmb3IgYWxsIEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNoZQorICAgICAgICBjYW4g
dGhlbiBiZSB1c2VkIHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1c2VkIGJ5IEFWRm91bmRh
dGlvbi4gSXQgaXMgdXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIGNh
Y2hlIGluIG9yaWdpbnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIgdGhlIGNhY2hlIGNvbXBs
ZXRlbHkgb3IgcGFydGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFDYWNoZSgpIGFuZCBjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luIGlu
c3RlYWQgb2YgdGhlIGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJlcHJlc2VudCBvcmlnaW5z
IGluIHRoZSBjYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2Fj
aGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFtZXRlci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6IFJlZ2lzdGVyIGNhY2hlIG1ldGhvZHMuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFt
ZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJ
bk1lZGlhQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNs
ZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKTogUmVnaXN0ZXIgY2FjaGUgbWV0
aG9kcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IFJlbmFtZSByZWdpc3RlcmQgbWV0aG9kcy4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJN
ZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNo
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3Bp
L21hYy9BVkZvdW5kYXRpb25TUEkuaDogQWRkIEFWQXNzZXRDYWNoZS4KKwogMjAxNi0wMy0yMyAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIE5v
bi1wb3dlci1vZi10d28gdGV4dHVyZSBvcHRpbWl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmMmM5ZjRl
NjFiZGIyMjhiMmViYjAxNDAzNTdjN2NlMTQ2ZTNlNTM3Li41OTUxMjFlZTc5MTA2M2ZkNjQwY2E4
MzM1YWMyNWFhMjkzNmYzZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDMt
MjIgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIFdoZW4gY2xl
YXJpbmcgY2FjaGUsIGFsc28gY2xlYXIgQVZGb3VuZGF0aW9uIGNhY2hlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzgzCisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzI1MjUyNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW5jbHVkZSB0aGUgSFRNTE1lZGlhRWxlbWVudCBtZWRpYSBjYWNoZSB3aGVu
IGRvaW5nIGRpc2sgY2FjaGUgb3BlcmF0aW9ucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6
CisKIDIwMTYtMDMtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVzZSBSZWdpb24gaW5zdGVhZCBvZiBJbnRSZWN0IGluIFBhZ2VDbGllbnQg
YW5kIFdlYlBhZ2VQcm94eSBzZXRWaWV3TmVlZHNEaXNwbGF5IG1ldGhvZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmUyNmRhOTcyYmRmZTlkZDFjMTQyNjA5
ZjFjMTY4MDFmMjIxNmY5My4uYzc3YmQ2M2FkNDhkMjZjNWU5ZTNmMGY3NmI4NGY0MjM1ODYwMzlm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NTU3LDE5
ICs1NTU3LDE5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZl
bnQoYm9vbCBzaG91bGREZWxheSkKIH0KICAgICAKIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpn
ZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpCitIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+IEhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
KQogewotICAgIE1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZShzaXRlcyk7CisgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKCk7CiB9CiAKLXZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y2xlYXJNZWRpYUNhY2hlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9k
aWZpZWRTaW5jZSkKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAg
TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShtb2RpZmllZFNpbmNlKTsKIH0KIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0
ZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25z
dCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewotICAgIE1lZGlh
UGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNpdGUpOworICAgIE1lZGlhUGxheWVyOjpj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKG9yaWdpbnMpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlc2V0TWVkaWFFbmdpbmVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKaW5kZXggNDYxZGZlOGY4YmM4NjVhZjIxOTkyMDZmMTZmMWQ1NWU1ZGNmMmU1Ni4uNDZj
YjNlMWUwNzgzZTU2NGU3YWMxY2ZkMjhhOTNkMGZiYWZhNmE4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTM4Miw5ICszODIsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVk
aWEgY2FjaGUgbWFuYWdlbWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRT
aXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVk
aWFDYWNoZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNo
ZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UgPSBz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHsgfSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRNZWRpYUVu
Z2luZXMoKTsKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5aW5n
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKaW5kZXggOTliOWQ1Y2FkZTczZTBjMWZhZDA5YTc3Y2Y1ZjZkYjI5OGMzN2FhNS4uY2JjOWQz
MWMzNzUwN2Y1MGVlZTQ2ODE3NTNjNTZkYzM4OTdkOTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTY4LDEzICsxNjgsMTMg
QEAgc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7CiAgICAgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXIgY29uc3RydWN0b3I7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0
ZWRUeXBlczsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2Rl
Y3M7Ci0gICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBnZXRTaXRlc0luTWVkaWFD
YWNoZTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFD
YWNoZTsKICAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGU7Ci0g
ICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlIGNsZWFyTWVkaWFDYWNoZUZvclNp
dGU7CisgICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIGNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnM7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0
c0tleVN5c3RlbTsKIH07CiAKLXN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlh
RW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBv
cnRzVHlwZSwgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgTWVkaWFFbmdp
bmVTdXBwb3J0c0tleVN5c3RlbSk7CitzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVN
ZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVT
dXBwb3J0c1R5cGUsIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVD
bGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVk
aWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSk7CiAKIHN0YXRpYyBib29sIGhhdmVNZWRpYUVuZ2lu
ZXNWZWN0b3I7CiAKQEAgLTIzMiwxMyArMjMyLDEzIEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8TWVk
aWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKIH0KIAogc3RhdGljIHZv
aWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3IsIE1l
ZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZSwKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNh
Y2hlIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVh
ck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSBjbGVhck1lZGlh
Q2FjaGVGb3JTaXRlLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lz
dGVtKQorICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNh
Y2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQogewogICAgIEFT
U0VSVChjb25zdHJ1Y3Rvcik7CiAgICAgQVNTRVJUKGdldFN1cHBvcnRlZFR5cGVzKTsKICAgICBB
U1NFUlQoc3VwcG9ydHNUeXBlKTsKIAotICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNW
ZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgY29uc3RydWN0b3IsIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlh
Q2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOworICAg
IG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJG
YWN0b3J5IHsgY29uc3RydWN0b3IsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9y
aWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucywgc3VwcG9ydHNLZXlTeXN0ZW0gfSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQpAQCAtMTAzNCwzMCArMTAzNCwzMSBAQCB2b2lk
IE1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKCkKICAgICBsb2FkV2l0aE5leHRNZWRpYUVu
Z2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OmdldFNp
dGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKK0hhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoKQogeworICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBmb3IgKGF1dG8m
IGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5l
LmdldFNpdGVzSW5NZWRpYUNhY2hlKQorICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRp
YUNhY2hlKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGVu
Z2luZVNpdGVzOwotICAgICAgICBlbmdpbmUuZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0
ZXMpOwotICAgICAgICBzaXRlcy5hcHBlbmRWZWN0b3IoZW5naW5lU2l0ZXMpOworICAgICAgICBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IGVuZ2luZU9yaWdpbnMgPSBlbmdpbmUub3Jp
Z2luc0luTWVkaWFDYWNoZSgpOworICAgICAgICBvcmlnaW5zLmFkZChlbmdpbmVPcmlnaW5zLmJl
Z2luKCksIGVuZ2luZU9yaWdpbnMuZW5kKCkpOwogICAgIH0KKyAgICByZXR1cm4gb3JpZ2luczsK
IH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgTWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IG1vZGlmaWVkU2luY2UpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRp
YUVuZ2luZXMoKSkgewogICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZSkKLSAgICAg
ICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUoKTsKKyAgICAgICAgICAgIGVuZ2luZS5jbGVh
ck1lZGlhQ2FjaGUobW9kaWZpZWRTaW5jZSk7CiAgICAgfQogfQogCi12b2lkIE1lZGlhUGxheWVy
OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK3ZvaWQgTWVkaWFQ
bGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgSGFzaFNldDxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3Rh
bGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZSkKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNpdGUp
OworICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpCisgICAgICAg
ICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhvcmlnaW5zKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDVlYTU1ODcxMTA1OTM3ZWVlNDA2M2U3MjU5MmExYWU1NTcxNTQ1Y2IuLjQ2YjM3ZjI3M2U2
NTFkNGFhMjQ0MTllNTJjZTMyYzBkODlmYzAyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1By
aXZhdGUuaCIKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KQEAgLTI5Miw5ICsyOTMs
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmLCBjb25zdCBNZWRpYVBs
YXllclN1cHBvcnRzVHlwZUNsaWVudCopOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5
cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3Rh
dGljIGJvb2wgaXNBdmFpbGFibGUoKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFD
YWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgp
OwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVk
aWFDYWNoZSgpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZShzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOworICAgIHN0YXRpYyB2b2lk
IGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIGJvb2wgc3VwcG9y
dHNGdWxsc2NyZWVuKCkgY29uc3Q7CkBAIC02MjksMTMgKzYzMCwxMyBAQCBwcml2YXRlOgogdHlw
ZWRlZiBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IChNZWRpYVBsYXllciopPiBDcmVhdGVNZWRpYUVuZ2luZVBsYXllcjsKIHR5cGVkZWYg
dm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiB0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0
UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUdldFNp
dGVzSW5NZWRpYUNhY2hlKShWZWN0b3I8U3RyaW5nPiYpOwotdHlwZWRlZiB2b2lkICgqTWVkaWFF
bmdpbmVDbGVhck1lZGlhQ2FjaGUpKCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFy
TWVkaWFDYWNoZUZvclNpdGUpKGNvbnN0IFN0cmluZyYpOwordHlwZWRlZiBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+ICgqTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlKSgpOwor
dHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUpKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7Cit0eXBlZGVmIHZvaWQgKCpN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpKGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mKTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhRW5naW5lU3VwcG9ydHNL
ZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKIAogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSwKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCBNZWRpYUVu
Z2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogdHlwZWRlZiB2b2lk
ICgqTWVkaWFFbmdpbmVSZWdpc3RlcikoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiBjbGFzcyBN
ZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4NTZlN2Rk
Yzg1OTY4NjQ3MzYxOGRhMmExNGQ2Yzc5MC4uMTQ0N2Q3NGQwM2IwM2E4NGNmNDBhZWE3NzliZjhk
MGI3NmMzODFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJp
bmc+JikgeyB9Ci0gICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKSB7IH0KLSAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKCkgeyByZXR1cm4gSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiB7IH07IH0KKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KSB7IH0KKyAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCBmN2ZiMWFjNDY4YjA2ODExMGViYTIzMmYy
YmM2ZmYwNjI2ZWZiYTIwLi5kNmQxYTIyY2JkZTNlYzhmYTU3OTg5MjY4ZDM3MTVlOWRmNmY0NDQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC04Nyw2ICs4NywxMCBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsK
IAorICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1l
ZGlhQ2FjaGUoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4mKTsKKwogICAgIHZvaWQgc2V0QXNzZXQoUmV0YWluUHRyPGlkPik7CiAgICAgdm9p
ZCB0cmFja3NDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IDE1NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLjYwMzZhMTkyZjA4NjNk
ZWJmNDJlMTUwZjNkYTM4NmM4ZGNiNzQ0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
MTU4LDYgKzE1OCw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5
ZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQogU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yKQogU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVkFzc2V0Q2FjaGUpCiAKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJQ29u
dGV4dCkKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJSW1hZ2UpCkBAIC0yMjcsNiArMjI4
LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdpYmxl
T3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU28KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFWRl9D
QVBUSU9OUykKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENhY2hl
S2V5LCBOU1N0cmluZyopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNz
ZXRIVFRQQ29va2llc0tleSwgTlNTdHJpbmcqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0
aW9uLCBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5LCBOU1N0cmluZyopCiBT
T0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50
Q2FjaGVLZXksIE5TU3RyaW5nKikKQEAgLTI0Miw2ICsyNDQsNyBAQCBTT0ZUX0xJTktfUE9JTlRF
UihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCwg
TlNTdHJpbgogCiAjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSBnZXRBVlVSTEFzc2V0
SFRUUENvb2tpZXNLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJh
Y2tzS2V5IGdldEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkoKQorI2RlZmlu
ZSBBVlVSTEFzc2V0Q2FjaGVLZXkgZ2V0QVZVUkxBc3NldENhY2hlS2V5KCkKICNkZWZpbmUgQVZV
UkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSBnZXRBVlVSTEFzc2V0VXNlc05vUGVyc2lz
dGVudENhY2hlS2V5KCkKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0Rpc3BsYXlO
YW1lS2V5IGdldEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSgpCiAjZGVm
aW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5IGdldEFW
T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5KCkKQEAgLTQyMiw3
ICs0MjUsOTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIHsKICAgICBpZiAoaXNBdmFpbGFi
bGUoKSkKICAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxh
eWVyKTsgfSwKKyNpZiBQTEFURk9STShJT1MpCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBl
cywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCBzdXBwb3J0c0tleVN5c3RlbSk7CisjZWxzZQorICAg
ICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFD
YWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0
c0tleVN5c3RlbSk7CisjZW5kaWYKK30KKworc3RhdGljIE5TU3RyaW5nICpzaGFyZWRBVkFzc2V0
Q2FjaGVQYXRoKCkKK3sKKyAgICBjaGFyICpwVE1QRElSID0gZ2V0ZW52KCJUTVBESVIiKTsKKyAg
ICBOU1N0cmluZyogdGVtcG9yYXJ5RGlyZWN0b3J5ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4
U3RyaW5nOnBUTVBESVIgPyBwVE1QRElSIDogIi90bXAiXTsKKyAgICByZXR1cm4gW3RlbXBvcmFy
eURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJNZWRpYUNhY2hlLyJd
OworfQorCitzdGF0aWMgQVZBc3NldENhY2hlICpzaGFyZWRBVkFzc2V0Q2FjaGUoKQoreworICAg
IHN0YXRpYyBBVkFzc2V0Q2FjaGUgKmdBVkFzc2V0Q2FjaGUgPSBOVUxMOworICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwg
XnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c2hhcmVkQVZB
c3NldENhY2hlUGF0aCgpIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIGdBVkFzc2V0Q2FjaGUg
PSBbW2dldEFWQXNzZXRDYWNoZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoVVJMOnVybF07CisgICAg
fSk7CisgICAgcmV0dXJuIGdBVkFzc2V0Q2FjaGU7Cit9CisKK0hhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6b3JpZ2luc0lu
TWVkaWFDYWNoZSgpCit7CisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmln
aW5zOworICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbc2hhcmVkQVZBc3NldENhY2hlKCkgYWxs
S2V5c10pCisgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFBh
cnNlZFVSTFN0cmluZywgU3RyaW5nOjpmcm9tVVRGOChba2V5IFVURjhTdHJpbmddKSkpKTsKKyAg
ICByZXR1cm4gb3JpZ2luczsKK30KKworc3RhdGljIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgdG9TeXN0ZW1DbG9ja1RpbWUoTlNEYXRlICpkYXRlKQoreworICAgIEFTU0VS
VChkYXRlKTsKKyAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CisKKyAgICByZXR1cm4g
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8c3lzdGVtX2Nsb2NrOjpkdXJh
dGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkpKTsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2Fj
aGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQor
eworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNs
ZWFyTWVkaWFDYWNoZSgpIik7CisgICAgCisgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIFtzaGFy
ZWRBVkFzc2V0Q2FjaGUoKSBhbGxLZXlzXSkgeworICAgICAgICBpZiAodG9TeXN0ZW1DbG9ja1Rp
bWUoW3NoYXJlZEFWQXNzZXRDYWNoZSgpIGxhc3RNb2RpZmllZERhdGVPZkVudHJ5Rm9yS2V5Omtl
eV0pID4gbW9kaWZpZWRTaW5jZSkKKyAgICAgICAgICAgIFtzaGFyZWRBVkFzc2V0Q2FjaGUoKSBy
ZW1vdmVFbnRyeUZvcktleTprZXldOworICAgIH0KKworICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVN
YW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgIE5TU3RyaW5nICpi
YXNlUGF0aCA9IHNoYXJlZEFWQXNzZXRDYWNoZVBhdGgoKTsKKworICAgIGlmIChtb2RpZmllZFNp
bmNlID09IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgeyB9KSB7CisgICAg
ICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRQYXRoOmJhc2VQYXRoIGVycm9yOm5pbF07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqZGly
ZWN0b3J5Q29udGVudHMgPSBbZmlsZU1hbmFnZXIgY29udGVudHNPZkRpcmVjdG9yeUF0UGF0aDpz
aGFyZWRBVkFzc2V0Q2FjaGVQYXRoKCkgZXJyb3I6bmlsXTsKKyAgICBmb3IgKE5TU3RyaW5nICpp
dGVtTmFtZSBpbiBkaXJlY3RvcnlDb250ZW50cykgeworICAgICAgICBpZiAoIVtpdGVtTmFtZSBo
YXNQcmVmaXg6QCJDYWNoZWRNZWRpYS0iXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIE5TU3RyaW5nICppdGVtUGF0aCA9IFtiYXNlUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6aXRlbU5hbWVdOworICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBb
ZmlsZU1hbmFnZXIgYXR0cmlidXRlc09mSXRlbUF0UGF0aDppdGVtUGF0aCBlcnJvcjpuaWxdOwor
ICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBpZiAoIVtOU0ZpbGVUeXBlUmVndWxhciBpc0VxdWFsOlthdHRyaWJ1dGVzIG9iamVjdEZvcktl
eTpOU0ZpbGVUeXBlXV0pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU0RhdGUg
Km1vZGlmaWNhdGlvbkRhdGUgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNGaWxlTW9kaWZp
Y2F0aW9uRGF0ZV07CisgICAgICAgIGlmICghbW9kaWZpY2F0aW9uRGF0ZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShtb2RpZmljYXRpb25E
YXRlKSA8PSBtb2RpZmllZFNpbmNlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
W2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6aXRlbVBhdGggZXJyb3I6bmlsXTsKKyAgICB9
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBv
cmlnaW5zKQoreworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoKSIpOworICAgIGZvciAoTlNTdHJpbmcg
KmtleSBpbiBbc2hhcmVkQVZBc3NldENhY2hlKCkgYWxsS2V5c10pIHsKKyAgICAgICAgaWYgKG9y
aWdpbnMuY29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoUGFyc2VkVVJMU3RyaW5n
LCBTdHJpbmc6OmZyb21VVEY4KFtrZXkgVVRGOFN0cmluZ10pKSkpKQorICAgICAgICAgICAgW3No
YXJlZEFWQXNzZXRDYWNoZSgpIHJlbW92ZUVudHJ5Rm9yS2V5OmtleV07CisgICAgfQogfQogCiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCkBAIC04NzQsNyArOTY1LDEzIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVS
TChjb25zdCBTdHJpbmcmIHVybCkKICAgICB9CiAjZW5kaWYKIAotICAgIFtvcHRpb25zIHNldE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IXBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBs
YXllclNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZSgpXSBmb3JLZXk6QVZVUkxBc3NldFVzZXNOb1Bl
cnNpc3RlbnRDYWNoZUtleV07CisgICAgYm9vbCB1c2VQZXJzaXN0ZW50Q2FjaGUgPSBwbGF5ZXIo
KS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKKyAgICBb
b3B0aW9ucyBzZXRPYmplY3Q6dXNlUGVyc2lzdGVudENhY2hlP0BOTzpAWUVTIGZvcktleTpBVlVS
TEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5XTsKKyAgICAKKyNpZiAhUExBVEZPUk0oSU9T
KQorICAgIGlmICh1c2VQZXJzaXN0ZW50Q2FjaGUpCisgICAgICAgIFtvcHRpb25zIHNldE9iamVj
dDpzaGFyZWRBVkFzc2V0Q2FjaGUoKSBmb3JLZXk6QVZVUkxBc3NldENhY2hlS2V5XTsKKyNlbmRp
ZgogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2FsVVJMKHVybCk7CiAgICAgbV9hdkFz
c2V0ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5zdGFuY2UoKSBpbml0V2l0aFVSTDpjb2Nv
YVVSTCBvcHRpb25zOm9wdGlvbnMuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgK
aW5kZXggZjM3M2ZmODU1OTYzNzM5OWJjZWQ0YTNkMmE4NDI4NDQ2ZTE5YzEyOC4uNGUwNGI3OTc3
NDEwYzJjMmZlZGY0MWNjMGEyZmVmMzgxYjBkNWM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0LmgKQEAgLTY4LDkgKzY4LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBw
b3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlw
ZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKLSAgICBzdGF0aWMgdm9pZCBn
ZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIHN0YXRpYyB2b2lkIGNs
ZWFyTWVkaWFDYWNoZSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUo
Y29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
Pj4gb3JpZ2luc0luTWVkaWFDYWNoZSgpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNo
ZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwor
ICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7
CiAKICAgICBQbGF0Zm9ybU1lZGlhIHBsYXRmb3JtTWVkaWEoKSBjb25zdCBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCBiMjcwMzE4ZDJkYjg0MDVmY2YxMjM0ZGI2
NDQ3ZTIyNTlhYjJjODU0Li4xNmNkNDZkMTYyYjI5ZWRhM2E1NTg2ZjFlMGRjNjViN2VkYzNhYmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2lu
ZVJlZ2lzdHJhciByZWdpc3RyYXIKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKICAgICAgICAg
cmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFrZV91bmlx
dWU8TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ+KHBsYXllcik7IH0sIGdldFN1cHBvcnRlZFR5cGVz
LAotICAgICAgICAgICAgc3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCAwKTsKKyAgICAgICAgICAgIHN1cHBv
cnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zLCAwKTsKIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Ok1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0KE1lZGlhUGxheWVyKiBwbGF5ZXIpCkBAIC0xMzM5LDIzICsxMzM5
LDI3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmlzQXZhaWxhYmxlKCkKICAgICBy
ZXR1cm4gUVRLaXRMaWJyYXJ5KCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykgCitIYXNoU2V0PFJl
ZlB0cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5N
ZWRpYUNhY2hlKCkKIHsKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdp
bnM7CiAgICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IHdrUVRHZXRTaXRlc0luTWVkaWFEb3dubG9h
ZENhY2hlKCk7CiAgICAgZm9yIChOU1N0cmluZyAqc2l0ZSBpbiBtZWRpYVNpdGVzKQotICAgICAg
ICBzaXRlcy5hcHBlbmQoc2l0ZSk7CisgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGUoVVJMKFBhcnNlZFVSTFN0cmluZywgU3RyaW5nOjpmcm9tVVRGOChbc2l0ZSBVVEY4
U3RyaW5nXSkpKSk7CisgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSgpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpjbGVhck1lZGlhQ2FjaGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtb2RpZmllZFNpbmNlKQogeworICAgIFVOVVNFRF9QQVJBTShtb2RpZmllZFNpbmNlKTsKICAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKCki
KTsKICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGUoKTsKIH0KIAotdm9pZCBNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcmIHNp
dGUpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7Ci0g
ICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZv
clNpdGUoKSIpOwotICAgIHdrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUoc2l0ZSk7
CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoKSIpOworICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKKyAgICAg
ICAgd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZShvcmlnaW4tPnRvUmF3U3RyaW5n
KCkpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpkaXNhYmxlVW5zdXBwb3J0
ZWRUcmFja3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9B
VkZvdW5kYXRpb25TUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3Vu
ZGF0aW9uU1BJLmgKaW5kZXggODZkYjc5MmQyNWY2ZmFhZmZkYTUxYjZkNTRjMGU3MzQzY2E1Yjcz
Ni4uZjI0NWEzNWE3MGI3MGIwNmI0MjZhMzdhMDQ1M2ZkY2E5NjVhZjliMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oCkBAIC01NSw2
ICs1NSwyMCBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmIC8vIEVOQUJMRShXSVJF
TEVTU19QTEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCiAKKyNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRDYWNoZV9Qcml2YXRl
Lmg+CisjZWxzZQorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KK0BpbnRlcmZhY2UgQVZBc3NldENh
Y2hlIDogTlNPYmplY3QKKysgKEFWQXNzZXRDYWNoZSAqKWFzc2V0Q2FjaGVXaXRoVVJMOihOU1VS
TCAqKVVSTDsKKy0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKVVSTDsKKy0gKE5TQXJyYXkgKilh
bGxLZXlzOworLSAoTlNEYXRlICopbGFzdE1vZGlmaWVkRGF0ZU9mRW50cnlGb3JLZXk6KE5TU3Ry
aW5nICopa2V5OworLSAodm9pZClyZW1vdmVFbnRyeUZvcktleTooTlNTdHJpbmcgKilrZXk7CitA
ZW5kCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQog
CiAjaWYgSEFWRShBVktJVCkgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDhiYmQ0N2YwZjk0ZWQ1ZmIzZGQzZDI0
ZmM3ZTU4NjI4Y2E1ZDc1NjguLmIxODE4MWY3ZWNmZTQ0OTFhMjhlNzE4MTRlYWUwNjUxNWIxZjBk
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNzYsNiAr
NzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR2x5cGhQYWdlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29u
RGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMTEzNSw2ICsxMTM2LDExIEBAIHZvaWQgV2ViUHJvY2Vz
czo6ZmV0Y2hXZWJzaXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlCiAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogTWVtb3J5Q2FjaGU6OnNpbmds
ZXRvbigpLm9yaWdpbnNXaXRoQ2FjaGUoc2Vzc2lvbklEKSkKICAgICAgICAgICAgIHdlYnNpdGVE
YXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRyeSB7IG9yaWdpbiwgV2Vic2l0ZURh
dGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKICAgICB9CisgICAgCisgICAgaWYgKHdlYnNpdGVE
YXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CisgICAgICAg
IGZvciAoYXV0byYgb3JpZ2luIDogSFRNTE1lZGlhRWxlbWVudDo6b3JpZ2luc0luTWVkaWFDYWNo
ZSgpKQorICAgICAgICAgICAgd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6
OkVudHJ5IHsgb3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6Ok1lbW9yeUNhY2hlLCAwIH0pOworICAg
IH0KIAogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6RGlkRmV0Y2hXZWJzaXRlRGF0YShjYWxsYmFja0lELCB3ZWJzaXRlRGF0YSks
IDApOwogfQpAQCAtMTE0OSw2ICsxMTU1LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpkZWxldGVXZWJz
aXRlRGF0YShTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXAKIAog
ICAgICAgICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpzaW5nbGV0b24oKS5lbXB0
eSgpOwogICAgIH0KKyAgICAKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJz
aXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpCisgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmNsZWFyTWVkaWFDYWNoZShtb2RpZmllZFNpbmNlKTsKIAogICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vi
c2l0ZURhdGEoY2FsbGJhY2tJRCksIDApOwogfQpAQCAtMTE2Miw3ICsxMTcxLDE1IEBAIHZvaWQg
V2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIE9wdGlvCiAKICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJl
bW92ZVJlc291cmNlc1dpdGhPcmlnaW5zKHNlc3Npb25JRCwgb3JpZ2lucyk7CiAgICAgfQorICAg
IAorICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKSkgeworICAgICAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdp
bnM7CisgICAgICAgIGZvciAoYXV0byYgb3JpZ2luRGF0YSA6IG9yaWdpbkRhdGFzKQorICAgICAg
ICAgICAgb3JpZ2lucy5hZGQob3JpZ2luRGF0YS5zZWN1cml0eU9yaWdpbigpKTsKIAorICAgICAg
ICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKG9y
aWdpbnMpOworICAgIH0KKyAgICAKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
cyhjYWxsYmFja0lEKSwgMCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274772</attachid>
            <date>2016-03-23 13:17:23 -0700</date>
            <delta_ts>2016-03-26 00:41:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155783-20160323131724.patch</filename>
            <type>text/plain</type>
            <size>28120</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1OGU0OTNlOGRkNGEz
MDUxNjU5NmY1OWFhYzc1Mjg1ZmQ5OTIyYy4uMzI2NjliYzA0YWI1YWU3YmI3MGE2YmY4YmVkNWMy
N2ZkMzAxYTFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE2LTAzLTIyICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworICAgICAgICByZGFyOi8vcHJvYmxl
bS8yNTI1MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBhIHNpbmdsZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZpZWQgbG9jYXRpb24gb24g
ZGlzayBmb3IgYWxsIEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNoZQorICAgICAgICBjYW4g
dGhlbiBiZSB1c2VkIHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1c2VkIGJ5IEFWRm91bmRh
dGlvbi4gSXQgaXMgdXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIGNh
Y2hlIGluIG9yaWdpbnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIgdGhlIGNhY2hlIGNvbXBs
ZXRlbHkgb3IgcGFydGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFDYWNoZSgpIGFuZCBjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luIGlu
c3RlYWQgb2YgdGhlIGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJlcHJlc2VudCBvcmlnaW5z
IGluIHRoZSBjYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2Fj
aGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFtZXRlci4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphZGRNZWRpYUVuZ2luZSk6IFJlZ2lzdGVyIGNhY2hlIG1ldGhvZHMuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFt
ZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJ
bk1lZGlhQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNs
ZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZh
Y2U6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2U6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKTogUmVnaXN0ZXIgY2FjaGUgbWV0
aG9kcy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IFJlbmFtZSByZWdpc3RlcmQgbWV0aG9kcy4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJN
ZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNo
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3Bp
L21hYy9BVkZvdW5kYXRpb25TUEkuaDogQWRkIEFWQXNzZXRDYWNoZS4KKwogMjAxNi0wMy0yMyAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIE5v
bi1wb3dlci1vZi10d28gdGV4dHVyZSBvcHRpbWl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmMmM5ZjRl
NjFiZGIyMjhiMmViYjAxNDAzNTdjN2NlMTQ2ZTNlNTM3Li41OTUxMjFlZTc5MTA2M2ZkNjQwY2E4
MzM1YWMyNWFhMjkzNmYzZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDMt
MjIgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIFdoZW4gY2xl
YXJpbmcgY2FjaGUsIGFsc28gY2xlYXIgQVZGb3VuZGF0aW9uIGNhY2hlLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzgzCisgICAgICAgIHJkYXI6
Ly9wcm9ibGVtLzI1MjUyNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW5jbHVkZSB0aGUgSFRNTE1lZGlhRWxlbWVudCBtZWRpYSBjYWNoZSB3aGVu
IGRvaW5nIGRpc2sgY2FjaGUgb3BlcmF0aW9ucy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmZldGNoV2Vic2l0ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6
CisKIDIwMTYtMDMtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFVzZSBSZWdpb24gaW5zdGVhZCBvZiBJbnRSZWN0IGluIFBhZ2VDbGllbnQg
YW5kIFdlYlBhZ2VQcm94eSBzZXRWaWV3TmVlZHNEaXNwbGF5IG1ldGhvZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmUyNmRhOTcyYmRmZTlkZDFjMTQyNjA5
ZjFjMTY4MDFmMjIxNmY5My4uYzc3YmQ2M2FkNDhkMjZjNWU5ZTNmMGY3NmI4NGY0MjM1ODYwMzlm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NTU3LDE5
ICs1NTU3LDE5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZl
bnQoYm9vbCBzaG91bGREZWxheSkKIH0KICAgICAKIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpn
ZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpCitIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+IEhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
KQogewotICAgIE1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZShzaXRlcyk7CisgICAg
cmV0dXJuIE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKCk7CiB9CiAKLXZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
Y2xlYXJNZWRpYUNhY2hlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9k
aWZpZWRTaW5jZSkKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAg
TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShtb2RpZmllZFNpbmNlKTsKIH0KIAotdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0
ZSkKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25z
dCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewotICAgIE1lZGlh
UGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNpdGUpOworICAgIE1lZGlhUGxheWVyOjpj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKG9yaWdpbnMpOwogfQogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlc2V0TWVkaWFFbmdpbmVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmgKaW5kZXggNDYxZGZlOGY4YmM4NjVhZjIxOTkyMDZmMTZmMWQ1NWU1ZGNmMmU1Ni4uNDZj
YjNlMWUwNzgzZTU2NGU3YWMxY2ZkMjhhOTNkMGZiYWZhNmE4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTM4Miw5ICszODIsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVk
aWEgY2FjaGUgbWFuYWdlbWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRT
aXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVk
aWFDYWNoZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNo
ZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UgPSBz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHsgfSk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBIYXNoU2V0
PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRNZWRpYUVu
Z2luZXMoKTsKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5aW5n
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAKaW5kZXggOTliOWQ1Y2FkZTczZTBjMWZhZDA5YTc3Y2Y1ZjZkYjI5OGMzN2FhNS4uY2JjOWQz
MWMzNzUwN2Y1MGVlZTQ2ODE3NTNjNTZkYzM4OTdkOTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTY4LDEzICsxNjgsMTMg
QEAgc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7CiAgICAgQ3JlYXRlTWVkaWFFbmdpbmVQbGF5
ZXIgY29uc3RydWN0b3I7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0
ZWRUeXBlczsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRDb2Rl
Y3M7Ci0gICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBnZXRTaXRlc0luTWVkaWFD
YWNoZTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFD
YWNoZTsKICAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGU7Ci0g
ICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlIGNsZWFyTWVkaWFDYWNoZUZvclNp
dGU7CisgICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIGNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnM7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0
c0tleVN5c3RlbTsKIH07CiAKLXN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlh
RW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBv
cnRzVHlwZSwgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgTWVkaWFFbmdp
bmVTdXBwb3J0c0tleVN5c3RlbSk7CitzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVN
ZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVT
dXBwb3J0c1R5cGUsIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVD
bGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVk
aWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSk7CiAKIHN0YXRpYyBib29sIGhhdmVNZWRpYUVuZ2lu
ZXNWZWN0b3I7CiAKQEAgLTIzMiwxMyArMjMyLDEzIEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8TWVk
aWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKIH0KIAogc3RhdGljIHZv
aWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3IsIE1l
ZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZSwKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNh
Y2hlIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVh
ck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSBjbGVhck1lZGlh
Q2FjaGVGb3JTaXRlLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lz
dGVtKQorICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNh
Y2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQogewogICAgIEFT
U0VSVChjb25zdHJ1Y3Rvcik7CiAgICAgQVNTRVJUKGdldFN1cHBvcnRlZFR5cGVzKTsKICAgICBB
U1NFUlQoc3VwcG9ydHNUeXBlKTsKIAotICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNW
ZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgY29uc3RydWN0b3IsIGdldFN1cHBv
cnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlh
Q2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOworICAg
IG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJG
YWN0b3J5IHsgY29uc3RydWN0b3IsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIG9y
aWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucywgc3VwcG9ydHNLZXlTeXN0ZW0gfSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQpAQCAtMTAzNCwzMCArMTAzNCwzMSBAQCB2b2lk
IE1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKCkKICAgICBsb2FkV2l0aE5leHRNZWRpYUVu
Z2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OmdldFNp
dGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKK0hhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoKQogeworICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBmb3IgKGF1dG8m
IGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5l
LmdldFNpdGVzSW5NZWRpYUNhY2hlKQorICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRp
YUNhY2hlKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGVu
Z2luZVNpdGVzOwotICAgICAgICBlbmdpbmUuZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0
ZXMpOwotICAgICAgICBzaXRlcy5hcHBlbmRWZWN0b3IoZW5naW5lU2l0ZXMpOworICAgICAgICBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IGVuZ2luZU9yaWdpbnMgPSBlbmdpbmUub3Jp
Z2luc0luTWVkaWFDYWNoZSgpOworICAgICAgICBvcmlnaW5zLmFkZChlbmdpbmVPcmlnaW5zLmJl
Z2luKCksIGVuZ2luZU9yaWdpbnMuZW5kKCkpOwogICAgIH0KKyAgICByZXR1cm4gb3JpZ2luczsK
IH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgTWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZShzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IG1vZGlmaWVkU2luY2UpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRp
YUVuZ2luZXMoKSkgewogICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZSkKLSAgICAg
ICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUoKTsKKyAgICAgICAgICAgIGVuZ2luZS5jbGVh
ck1lZGlhQ2FjaGUobW9kaWZpZWRTaW5jZSk7CiAgICAgfQogfQogCi12b2lkIE1lZGlhUGxheWVy
OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK3ZvaWQgTWVkaWFQ
bGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgSGFzaFNldDxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3Rh
bGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZSkKLSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNpdGUp
OworICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpCisgICAgICAg
ICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhvcmlnaW5zKTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmlu
ZGV4IDVlYTU1ODcxMTA1OTM3ZWVlNDA2M2U3MjU5MmExYWU1NTcxNTQ1Y2IuLjQ2YjM3ZjI3M2U2
NTFkNGFhMjQ0MTllNTJjZTMyYzBkODlmYzAyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1By
aXZhdGUuaCIKICNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KQEAgLTI5Miw5ICsyOTMs
OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9y
dHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmLCBjb25zdCBNZWRpYVBs
YXllclN1cHBvcnRzVHlwZUNsaWVudCopOwogICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5
cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3Rh
dGljIGJvb2wgaXNBdmFpbGFibGUoKTsKLSAgICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFD
YWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgp
OwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7
CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVk
aWFDYWNoZSgpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZShzdGQ6OmNocm9ubzo6
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOworICAgIHN0YXRpYyB2b2lk
IGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiYpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmlu
ZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIGJvb2wgc3VwcG9y
dHNGdWxsc2NyZWVuKCkgY29uc3Q7CkBAIC02MjksMTMgKzYzMCwxMyBAQCBwcml2YXRlOgogdHlw
ZWRlZiBzdGQ6OmZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRl
cmZhY2U+IChNZWRpYVBsYXllciopPiBDcmVhdGVNZWRpYUVuZ2luZVBsYXllcjsKIHR5cGVkZWYg
dm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiB0eXBlcyk7CiB0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUgKCpNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0
UGFyYW1ldGVycyYgcGFyYW1ldGVycyk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUdldFNp
dGVzSW5NZWRpYUNhY2hlKShWZWN0b3I8U3RyaW5nPiYpOwotdHlwZWRlZiB2b2lkICgqTWVkaWFF
bmdpbmVDbGVhck1lZGlhQ2FjaGUpKCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFy
TWVkaWFDYWNoZUZvclNpdGUpKGNvbnN0IFN0cmluZyYpOwordHlwZWRlZiBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+ICgqTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlKSgpOwor
dHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUpKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7Cit0eXBlZGVmIHZvaWQgKCpN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpKGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mKTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhRW5naW5lU3VwcG9ydHNL
ZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKIAogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSwKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCBNZWRpYUVu
Z2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogdHlwZWRlZiB2b2lk
ICgqTWVkaWFFbmdpbmVSZWdpc3RlcikoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiBjbGFzcyBN
ZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4NTZlN2Rk
Yzg1OTY4NjQ3MzYxOGRhMmExNGQ2Yzc5MC4uMTQ0N2Q3NGQwM2IwM2E4NGNmNDBhZWE3NzliZjhk
MGI3NmMzODFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJp
bmc+JikgeyB9Ci0gICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKSB7IH0KLSAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKCkgeyByZXR1cm4gSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiB7IH07IH0KKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZShz
dGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KSB7IH0KKyAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiYpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAppbmRleCBmN2ZiMWFjNDY4YjA2ODExMGViYTIzMmYy
YmM2ZmYwNjI2ZWZiYTIwLi5kNmQxYTIyY2JkZTNlYzhmYTU3OTg5MjY4ZDM3MTVlOWRmNmY0NDQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCkBAIC04Nyw2ICs4NywxMCBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgdm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsK
IAorICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1l
ZGlhQ2FjaGUoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4mKTsKKwogICAgIHZvaWQgc2V0QXNzZXQoUmV0YWluUHRyPGlkPik7CiAgICAgdm9p
ZCB0cmFja3NDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4
IDE1NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLmIwYjU4MWRlNjM4OGYz
YzkxMWVkNDlhNzEzMTUxZGU2MjEzZmJlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAt
MTU4LDYgKzE1OCw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5
ZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQogU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yKQogU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3Vu
ZGF0aW9uLCBBVkFzc2V0Q2FjaGUpCiAKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJQ29u
dGV4dCkKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJSW1hZ2UpCkBAIC0yMjcsNiArMjI4
LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdpYmxl
T3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU28KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFWRl9D
QVBUSU9OUykKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENhY2hl
S2V5LCBOU1N0cmluZyopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNz
ZXRIVFRQQ29va2llc0tleSwgTlNTdHJpbmcqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0
aW9uLCBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5LCBOU1N0cmluZyopCiBT
T0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50
Q2FjaGVLZXksIE5TU3RyaW5nKikKQEAgLTI0Miw2ICsyNDQsNyBAQCBTT0ZUX0xJTktfUE9JTlRF
UihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCwg
TlNTdHJpbgogCiAjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSBnZXRBVlVSTEFzc2V0
SFRUUENvb2tpZXNLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJh
Y2tzS2V5IGdldEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkoKQorI2RlZmlu
ZSBBVlVSTEFzc2V0Q2FjaGVLZXkgZ2V0QVZVUkxBc3NldENhY2hlS2V5KCkKICNkZWZpbmUgQVZV
UkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSBnZXRBVlVSTEFzc2V0VXNlc05vUGVyc2lz
dGVudENhY2hlS2V5KCkKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0Rpc3BsYXlO
YW1lS2V5IGdldEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSgpCiAjZGVm
aW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5IGdldEFW
T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5KCkKQEAgLTQyMiw3
ICs0MjUsOTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdp
c3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIHsKICAgICBpZiAoaXNBdmFpbGFi
bGUoKSkKICAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxh
eWVyKTsgfSwKKyNpZiBQTEFURk9STShJT1MpCiAgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBl
cywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCBzdXBwb3J0c0tleVN5c3RlbSk7CisjZWxzZQorICAg
ICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFD
YWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0
c0tleVN5c3RlbSk7CisjZW5kaWYKK30KKworc3RhdGljIE5TU3RyaW5nICpzaGFyZWRBVkFzc2V0
Q2FjaGVQYXRoKCkKK3sKKyAgICBjaGFyICpwVE1QRElSID0gZ2V0ZW52KCJUTVBESVIiKTsKKyAg
ICBOU1N0cmluZyogdGVtcG9yYXJ5RGlyZWN0b3J5ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4
U3RyaW5nOnBUTVBESVIgPyBwVE1QRElSIDogIi90bXAiXTsKKyAgICByZXR1cm4gW3RlbXBvcmFy
eURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJNZWRpYUNhY2hlLyJd
OworfQorCitzdGF0aWMgQVZBc3NldENhY2hlICpzaGFyZWRBVkFzc2V0Q2FjaGUoKQoreworICAg
IHN0YXRpYyBBVkFzc2V0Q2FjaGUgKmdBVkFzc2V0Q2FjaGUgPSBOVUxMOworICAgIHN0YXRpYyBk
aXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwg
XnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6c2hhcmVkQVZB
c3NldENhY2hlUGF0aCgpIGlzRGlyZWN0b3J5OllFU107CisgICAgICAgIGdBVkFzc2V0Q2FjaGUg
PSBbW2dldEFWQXNzZXRDYWNoZUNsYXNzKCkgYWxsb2NdIGluaXRXaXRoVVJMOnVybF07CisgICAg
fSk7CisgICAgcmV0dXJuIGdBVkFzc2V0Q2FjaGU7Cit9CisKK0hhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6b3JpZ2luc0lu
TWVkaWFDYWNoZSgpCit7CisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmln
aW5zOworICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbc2hhcmVkQVZBc3NldENhY2hlKCkgYWxs
S2V5c10pCisgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJMKFBh
cnNlZFVSTFN0cmluZywgU3RyaW5nOjpmcm9tVVRGOChba2V5IFVURjhTdHJpbmddKSkpKTsKKyAg
ICByZXR1cm4gb3JpZ2luczsKK30KKworc3RhdGljIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6
OnRpbWVfcG9pbnQgdG9TeXN0ZW1DbG9ja1RpbWUoTlNEYXRlICpkYXRlKQoreworICAgIEFTU0VS
VChkYXRlKTsKKyAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87CisKKyAgICByZXR1cm4g
c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8c3lzdGVtX2Nsb2NrOjpkdXJh
dGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlLnRpbWVJbnRlcnZhbFNpbmNlMTk3MCkpKTsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2Fj
aGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKQor
eworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNs
ZWFyTWVkaWFDYWNoZSgpIik7CisgICAgCisgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIFtzaGFy
ZWRBVkFzc2V0Q2FjaGUoKSBhbGxLZXlzXSkgeworICAgICAgICBpZiAodG9TeXN0ZW1DbG9ja1Rp
bWUoW3NoYXJlZEFWQXNzZXRDYWNoZSgpIGxhc3RNb2RpZmllZERhdGVPZkVudHJ5Rm9yS2V5Omtl
eV0pID4gbW9kaWZpZWRTaW5jZSkKKyAgICAgICAgICAgIFtzaGFyZWRBVkFzc2V0Q2FjaGUoKSBy
ZW1vdmVFbnRyeUZvcktleTprZXldOworICAgIH0KKworICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVN
YW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgIE5TU3RyaW5nICpi
YXNlUGF0aCA9IHNoYXJlZEFWQXNzZXRDYWNoZVBhdGgoKTsKKworICAgIGlmIChtb2RpZmllZFNp
bmNlID09IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgeyB9KSB7CisgICAg
ICAgIFtmaWxlTWFuYWdlciByZW1vdmVJdGVtQXRQYXRoOmJhc2VQYXRoIGVycm9yOm5pbF07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgTlNBcnJheTxOU1N0cmluZyAqPiAqZGly
ZWN0b3J5Q29udGVudHMgPSBbZmlsZU1hbmFnZXIgY29udGVudHNPZkRpcmVjdG9yeUF0UGF0aDpz
aGFyZWRBVkFzc2V0Q2FjaGVQYXRoKCkgZXJyb3I6bmlsXTsKKyAgICBmb3IgKE5TU3RyaW5nICpp
dGVtTmFtZSBpbiBkaXJlY3RvcnlDb250ZW50cykgeworICAgICAgICBpZiAoIVtpdGVtTmFtZSBo
YXNQcmVmaXg6QCJDYWNoZWRNZWRpYS0iXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIE5TU3RyaW5nICppdGVtUGF0aCA9IFtiYXNlUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6aXRlbU5hbWVdOworICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBb
ZmlsZU1hbmFnZXIgYXR0cmlidXRlc09mSXRlbUF0UGF0aDppdGVtUGF0aCBlcnJvcjpuaWxdOwor
ICAgICAgICBpZiAoIWF0dHJpYnV0ZXMpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBpZiAoIVtOU0ZpbGVUeXBlUmVndWxhciBpc0VxdWFsOlthdHRyaWJ1dGVzIG9iamVjdEZvcktl
eTpOU0ZpbGVUeXBlXV0pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBOU0RhdGUg
Km1vZGlmaWNhdGlvbkRhdGUgPSBbYXR0cmlidXRlcyBvYmplY3RGb3JLZXk6TlNGaWxlTW9kaWZp
Y2F0aW9uRGF0ZV07CisgICAgICAgIGlmICghbW9kaWZpY2F0aW9uRGF0ZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShtb2RpZmljYXRpb25E
YXRlKSA8PSBtb2RpZmllZFNpbmNlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
W2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFBhdGg6aXRlbVBhdGggZXJyb3I6bmlsXTsKKyAgICB9
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBv
cmlnaW5zKQoreworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoKSIpOworICAgIGZvciAoTlNTdHJpbmcg
KmtleSBpbiBbc2hhcmVkQVZBc3NldENhY2hlKCkgYWxsS2V5c10pIHsKKyAgICAgICAgaWYgKG9y
aWdpbnMuY29udGFpbnMoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoUGFyc2VkVVJMU3RyaW5n
LCBTdHJpbmc6OmZyb21VVEY4KFtrZXkgVVRGOFN0cmluZ10pKSkpKQorICAgICAgICAgICAgW3No
YXJlZEFWQXNzZXRDYWNoZSgpIHJlbW92ZUVudHJ5Rm9yS2V5OmtleV07CisgICAgfQogfQogCiBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDKE1lZGlhUGxheWVyKiBwbGF5ZXIpCkBAIC04NzQsNyArOTY1LDEzIEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVS
TChjb25zdCBTdHJpbmcmIHVybCkKICAgICB9CiAjZW5kaWYKIAotICAgIFtvcHRpb25zIHNldE9i
amVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IXBsYXllcigpLT5jbGllbnQoKS5tZWRpYVBs
YXllclNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZSgpXSBmb3JLZXk6QVZVUkxBc3NldFVzZXNOb1Bl
cnNpc3RlbnRDYWNoZUtleV07CisgICAgYm9vbCB1c2VQZXJzaXN0ZW50Q2FjaGUgPSBwbGF5ZXIo
KS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKKyAgICBb
b3B0aW9ucyBzZXRPYmplY3Q6QCghdXNlUGVyc2lzdGVudENhY2hlKSBmb3JLZXk6QVZVUkxBc3Nl
dFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleV07CisgICAgCisjaWYgIVBMQVRGT1JNKElPUykKKyAg
ICBpZiAodXNlUGVyc2lzdGVudENhY2hlKQorICAgICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6c2hh
cmVkQVZBc3NldENhY2hlKCkgZm9yS2V5OkFWVVJMQXNzZXRDYWNoZUtleV07CisjZW5kaWYKIAog
ICAgIE5TVVJMICpjb2NvYVVSTCA9IGNhbm9uaWNhbFVSTCh1cmwpOwogICAgIG1fYXZBc3NldCA9
IGFkb3B0TlMoW2FsbG9jQVZVUkxBc3NldEluc3RhbmNlKCkgaW5pdFdpdGhVUkw6Y29jb2FVUkwg
b3B0aW9uczpvcHRpb25zLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCmluZGV4
IGYzNzNmZjg1NTk2MzczOTliY2VkNGEzZDJhODQyODQ0NmUxOWMxMjguLjRlMDRiNzk3NzQxMGMy
YzJmZWRmNDFjYzBhMmZlZjM4MWIwZDVjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5o
CkBAIC02OCw5ICs2OCw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVk
VHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsK
ICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3Qg
TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwogCi0gICAgc3RhdGljIHZvaWQgZ2V0U2l0
ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1l
ZGlhQ2FjaGUoKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0
IFN0cmluZyYpOworICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9y
aWdpbnNJbk1lZGlhQ2FjaGUoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBz
dGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAg
ICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYjI3MDMxOGQyZGI4NDA1ZmNmMTIzNGRiNjQ0N2Uy
MjU5YWIyYzg1NC4uMTZjZDQ2ZDE2MmIyOWVkYTNhNTU4NmYxZTBkYzY1YjdlZGMzYWJkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmVnaXN0cmFyCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0PihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKLSAg
ICAgICAgICAgIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFD
YWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgMCk7CisgICAgICAgICAgICBzdXBwb3J0c1R5
cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucywgMCk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpNZWRpYVBsYXll
clByaXZhdGVRVEtpdChNZWRpYVBsYXllciogcGxheWVyKQpAQCAtMTMzOSwyMyArMTMzOSwyNyBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJu
IFFUS2l0TGlicmFyeSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRT
aXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpIAorSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFD
YWNoZSgpCiB7CisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwog
ICAgIE5TQXJyYXkgKm1lZGlhU2l0ZXMgPSB3a1FUR2V0U2l0ZXNJbk1lZGlhRG93bmxvYWRDYWNo
ZSgpOwogICAgIGZvciAoTlNTdHJpbmcgKnNpdGUgaW4gbWVkaWFTaXRlcykKLSAgICAgICAgc2l0
ZXMuYXBwZW5kKHNpdGUpOworICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKFVSTChQYXJzZWRVUkxTdHJpbmcsIFN0cmluZzo6ZnJvbVVURjgoW3NpdGUgVVRGOFN0cmlu
Z10pKSkpOworICAgIHJldHVybiBvcmlnaW5zOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y2xlYXJNZWRpYUNhY2hlKHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9k
aWZpZWRTaW5jZSkKIHsKKyAgICBVTlVTRURfUEFSQU0obW9kaWZpZWRTaW5jZSk7CiAgICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSgpIik7CiAg
ICAgd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKCk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJiBzaXRlKQor
dm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhj
b25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewotICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRl
KCkiKTsKLSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKHNpdGUpOworICAg
IExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JP
cmlnaW5zKCkiKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpCisgICAgICAgIHdr
UVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUob3JpZ2luLT50b1Jhd1N0cmluZygpKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJh
Y2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3Vu
ZGF0aW9uU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlv
blNQSS5oCmluZGV4IDg2ZGI3OTJkMjVmNmZhYWZmZGE1MWI2ZDU0YzBlNzM0M2NhNWI3MzYuLmYy
NDVhMzVhNzBiNzBiMDZiNDI2YTM3YTA0NTNmZGNhOTY1YWY5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaApAQCAtNTUsNiArNTUs
MjAgQEAgTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNlbmRpZiAvLyBFTkFCTEUoV0lSRUxFU1Nf
UExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9TKQogCisjaWYgVVNFKEFQUExFX0lOVEVS
TkFMX1NESykKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkFzc2V0Q2FjaGVfUHJpdmF0ZS5oPgor
I2Vsc2UKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCitAaW50ZXJmYWNlIEFWQXNzZXRDYWNoZSA6
IE5TT2JqZWN0CisrIChBVkFzc2V0Q2FjaGUgKilhc3NldENhY2hlV2l0aFVSTDooTlNVUkwgKilV
Ukw7CistIChpZClpbml0V2l0aFVSTDooTlNVUkwgKilVUkw7CistIChOU0FycmF5ICopYWxsS2V5
czsKKy0gKE5TRGF0ZSAqKWxhc3RNb2RpZmllZERhdGVPZkVudHJ5Rm9yS2V5OihOU1N0cmluZyAq
KWtleTsKKy0gKHZvaWQpcmVtb3ZlRW50cnlGb3JLZXk6KE5TU3RyaW5nICopa2V5OworQGVuZAor
TlNfQVNTVU1FX05PTk5VTExfRU5ECisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKIAogI2lm
IEhBVkUoQVZLSVQpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA4YmJkNDdmMGY5NGVkNWZiM2RkM2QyNGZjN2U1
ODYyOGNhNWQ3NTY4Li5iMTgxODFmN2VjZmU0NDkxYTI4ZTcxODE0ZWFlMDY1MTViMWYwZDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTc2LDYgKzc2LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
Q0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dseXBoUGFnZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFi
YXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvTGFuZ3VhZ2UuaD4KQEAgLTExMzUsNiArMTEzNiwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OmZl
dGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZQogICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24o
KS5vcmlnaW5zV2l0aENhY2hlKHNlc3Npb25JRCkpCiAgICAgICAgICAgICB3ZWJzaXRlRGF0YS5l
bnRyaWVzLmFwcGVuZChXZWJzaXRlRGF0YTo6RW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlw
ZTo6TWVtb3J5Q2FjaGUsIDAgfSk7CiAgICAgfQorICAgIAorICAgIGlmICh3ZWJzaXRlRGF0YVR5
cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgeworICAgICAgICBmb3Ig
KGF1dG8mIG9yaWdpbiA6IEhUTUxNZWRpYUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoKSkK
KyAgICAgICAgICAgIHdlYnNpdGVEYXRhLmVudHJpZXMuYXBwZW5kKFdlYnNpdGVEYXRhOjpFbnRy
eSB7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpNZW1vcnlDYWNoZSwgMCB9KTsKKyAgICB9CiAK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkRpZEZldGNoV2Vic2l0ZURhdGEoY2FsbGJhY2tJRCwgd2Vic2l0ZURhdGEpLCAwKTsK
IH0KQEAgLTExNDksNiArMTE1NSw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURh
dGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwCiAKICAgICAg
ICAgQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6c2luZ2xldG9uKCkuZW1wdHkoKTsK
ICAgICB9CisgICAgCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURh
dGFUeXBlOjpEaXNrQ2FjaGUpKQorICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpj
bGVhck1lZGlhQ2FjaGUobW9kaWZpZWRTaW5jZSk7CiAKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZERlbGV0ZVdlYnNpdGVE
YXRhKGNhbGxiYWNrSUQpLCAwKTsKIH0KQEAgLTExNjIsNyArMTE3MSwxNSBAQCB2b2lkIFdlYlBy
b2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpbwogCiAgICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmVS
ZXNvdXJjZXNXaXRoT3JpZ2lucyhzZXNzaW9uSUQsIG9yaWdpbnMpOwogICAgIH0KKyAgICAKKyAg
ICBpZiAod2Vic2l0ZURhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNo
ZSkpIHsKKyAgICAgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwor
ICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbkRhdGEgOiBvcmlnaW5EYXRhcykKKyAgICAgICAgICAg
IG9yaWdpbnMuYWRkKG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CiAKKyAgICAgICAgV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhvcmlnaW5z
KTsKKyAgICB9CisgICAgCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoY2Fs
bGJhY2tJRCksIDApOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274982</attachid>
            <date>2016-03-26 00:41:47 -0700</date>
            <delta_ts>2016-04-05 15:54:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155783-20160326004149.patch</filename>
            <type>text/plain</type>
            <size>34945</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1OGU0OTNlOGRkNGEz
MDUxNjU5NmY1OWFhYzc1Mjg1ZmQ5OTIyYy4uYTI5OTA4NjRjYmJmZGQ5ODZkZDBmMjY2ODg5ODM1
NGI3YjY0NjY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE2LTAzLTI2ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworICAgICAgICByZGFyOi8vcHJvYmxl
bS8yNTI1MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZpZWQgbG9jYXRpb24gb24gZGlzayBmb3Ig
YWxsIEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNoZQorICAgICAgICBjYW4gdGhlbiBiZSB1
c2VkIHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1c2VkIGJ5IEFWRm91bmRhdGlvbi4gSXQg
aXMgdXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIGNhY2hlIGluIG9y
aWdpbnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIgdGhlIGNhY2hlIGNvbXBsZXRlbHkgb3Ig
cGFydGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFDYWNoZSgpIGFuZCBjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luIGluc3RlYWQgb2Yg
dGhlIGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJlcHJlc2VudCBvcmlnaW5zIGluIHRoZSBj
YWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhY2hlRGlyZWN0b3J5KTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRp
YUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVh
ck1lZGlhQ2FjaGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3Rvcnkp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5N
ZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJN
ZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1lZGlhRW5naW5lKTogUmVn
aXN0ZXIgY2FjaGUgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OmFkZFRvSGFzaCk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUpOiBB
ZGRlZCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Y2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJDbGllbnQ6Om1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSk6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpvcmlnaW5zSW5NZWRpYUNhY2hlKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmNs
ZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpnZXRTaXRl
c0luTWVkaWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJN
ZWRpYUVuZ2luZSk6IFJlZ2lzdGVyIGNhY2hlIG1ldGhvZHMuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6cmVnaXN0ZXJNZWRpYUVuZ2luZSk6IFJlbmFtZSByZWdpc3RlciBtZXRob2RzLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVh
ck1lZGlhQ2FjaGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmdldFNpdGVzSW5NZWRpYUNh
Y2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9z
cGkvbWFjL0FWRm91bmRhdGlvblNQSS5oOiBBZGRlZCBBVkFzc2V0Q2FjaGUuCisKIDIwMTYtMDMt
MjMgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdM
XSBOb24tcG93ZXItb2YtdHdvIHRleHR1cmUgb3B0aW1pemF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjJj
OWY0ZTYxYmRiMjI4YjJlYmIwMTQwMzU3YzdjZTE0NmUzZTUzNy4uZGY4MTc2YjYzMTVkOTA3OWNi
M2Q3NGI1YTQyNDFkMTg0MjkyNTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE2
LTAzLTI2ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVu
IGNsZWFyaW5nIGNhY2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworICAgICAgICBy
ZGFyOi8vcHJvYmxlbS8yNTI1MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluY2x1ZGUgdGhlIEhUTUxNZWRpYUVsZW1lbnQgbWVkaWEgY2FjaGUg
d2hlbiBkb2luZyBkaXNrIGNhY2hlIG9wZXJhdGlvbnMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OmZldGNoRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnJlbW92ZURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKTogSW5pdGFp
bGl6ZSBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisKIDIwMTYtMDMtMjMgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVzZSBSZWdpb24gaW5zdGVh
ZCBvZiBJbnRSZWN0IGluIFBhZ2VDbGllbnQgYW5kIFdlYlBhZ2VQcm94eSBzZXRWaWV3TmVlZHNE
aXNwbGF5IG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggNmUyNmRhOTcyYmRmZTlkZDFjMTQyNjA5ZjFjMTY4MDFmMjIxNmY5My4uMzEwY2Q4YjcwOTRk
OGYyMTAyOGRhNmYyMTQyNGFhMWUwYjJkZmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC01NTU1LDIxICs1NTU1LDM2IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCBzaG91bGREZWxheSkKICAgICBlbHNl
CiAgICAgICAgIGRvY3VtZW50KCkuZGVjcmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogfQot
ICAgIAogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3Rv
cjxTdHJpbmc+JiBzaXRlcykKK3N0YXRpYyBTdHJpbmcmIHNoYXJlZE1lZGlhQ2FjaGVEaXJlY3Rv
cnkoKQogewotICAgIE1lZGlhUGxheWVyOjpnZXRTaXRlc0luTWVkaWFDYWNoZShzaXRlcyk7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9y
eTsKKyAgICByZXR1cm4gc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeTsKIH0KIAotdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBNZWRpYVBs
YXllcjo6Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAgc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeSgp
ID0gcGF0aDsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JT
aXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK2NvbnN0IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUoc2l0ZSk7CisgICAgcmV0dXJuIHNoYXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsK
K30KKworSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBIVE1MTWVkaWFFbGVtZW50Ojpv
cmlnaW5zSW5NZWRpYUNhY2hlKCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJ
bk1lZGlhQ2FjaGUobWVkaWFDYWNoZURpcmVjdG9yeSgpKTsKK30KKwordm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjbGVhck1lZGlhQ2FjaGUoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlKQoreworICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUo
bWVkaWFDYWNoZURpcmVjdG9yeSgpLCBtb2RpZmllZFNpbmNlKTsKK30KKwordm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCit7CisgICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMobWVkaWFDYWNoZURpcmVjdG9yeSgpLCBvcmlnaW5zKTsKIH0KIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXNldE1lZGlhRW5naW5lcygpCkBAIC02MTU0LDYgKzYx
NjksMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNob3VsZFVzZVBlcnNp
c3RlbnRDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUo
KS5jbGllbnQoKS5tZWRpYVNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZSgpOwogfQogCitjb25zdCBT
dHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKK30KKwogYm9vbCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRvQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDQ2MWRmZThmOGJjODY1YWYyMTk5MjA2ZjE2
ZjFkNTVlNWRjZjJlNTYuLjJkZjVjODg5MjNlNWJlZDZmOGViY2VkODAyMmIxMzhmZTk3YzZiMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zODIsOSArMzgyLDEx
IEBAIHB1YmxpYzoKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCkgb3Zl
cnJpZGU7CiAKICAgICAvLyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlKCk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJp
bmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNZWRpYUNhY2hlRGlyZWN0
b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25zdCBTdHJp
bmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFz
aFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlKHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSA9IHsgfSk7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7CiAgICAgc3RhdGljIHZvaWQgcmVzZXRNZWRp
YUVuZ2luZXMoKTsKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5
aW5nOyB9CkBAIC01OTgsNiArNjAwLDcgQEAgcHJpdmF0ZToKICAgICBDYWNoZWRSZXNvdXJjZUxv
YWRlciogbWVkaWFQbGF5ZXJDYWNoZWRSZXNvdXJjZUxvYWRlcigpIG92ZXJyaWRlOwogICAgIFJl
ZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IG1lZGlhUGxheWVyQ3JlYXRlUmVzb3Vy
Y2VMb2FkZXIoKSBvdmVycmlkZTsKICAgICBib29sIG1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lz
dGVudENhY2hlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgU3RyaW5nJiBtZWRpYVBsYXll
ck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIFBMQVRGT1JNKFdJ
TikgJiYgVVNFKEFWRk9VTkRBVElPTikKICAgICBHcmFwaGljc0RldmljZUFkYXB0ZXIqIG1lZGlh
UGxheWVyR3JhcGhpY3NEZXZpY2VBZGFwdGVyKGNvbnN0IE1lZGlhUGxheWVyKikgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKaW5kZXggOTliOWQ1Y2FkZTczZTBjMWZhZDA5YTc3Y2Y1ZjZkYjI5OGMzN2FhNS4uZWI3
ZDc5MmZkYWM5NWRiODhkZjAwMTZhODI4MTg4MTM2ZWFmNjI4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcApAQCAtMTY4LDEzICsxNjgs
MTMgQEAgc3RydWN0IE1lZGlhUGxheWVyRmFjdG9yeSB7CiAgICAgQ3JlYXRlTWVkaWFFbmdpbmVQ
bGF5ZXIgY29uc3RydWN0b3I7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBw
b3J0ZWRUeXBlczsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGVBbmRD
b2RlY3M7Ci0gICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBnZXRTaXRlc0luTWVk
aWFDYWNoZTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVk
aWFDYWNoZTsKICAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGU7
Ci0gICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlIGNsZWFyTWVkaWFDYWNoZUZv
clNpdGU7CisgICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIGNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnM7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSBzdXBw
b3J0c0tleVN5c3RlbTsKIH07CiAKLXN0YXRpYyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1l
ZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1
cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVD
bGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgTWVkaWFF
bmdpbmVTdXBwb3J0c0tleVN5c3RlbSk7CitzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVh
dGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdp
bmVTdXBwb3J0c1R5cGUsIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdp
bmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywg
TWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSk7CiAKIHN0YXRpYyBib29sIGhhdmVNZWRpYUVu
Z2luZXNWZWN0b3I7CiAKQEAgLTIzMiwxMyArMjMyLDEzIEBAIHN0YXRpYyBjb25zdCBWZWN0b3I8
TWVkaWFQbGF5ZXJGYWN0b3J5PiYgaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkKIH0KIAogc3RhdGlj
IHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIgY29uc3RydWN0b3Is
IE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5l
U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZSwKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRp
YUNhY2hlIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBj
bGVhck1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSBjbGVhck1l
ZGlhQ2FjaGVGb3JTaXRlLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5
U3lzdGVtKQorICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRp
YUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSBjbGVhck1lZGlhQ2FjaGUsIE1lZGlh
RW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
LCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtKQogewogICAg
IEFTU0VSVChjb25zdHJ1Y3Rvcik7CiAgICAgQVNTRVJUKGdldFN1cHBvcnRlZFR5cGVzKTsKICAg
ICBBU1NFUlQoc3VwcG9ydHNUeXBlKTsKIAotICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2lu
ZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5ZXJGYWN0b3J5IHsgY29uc3RydWN0b3IsIGdldFN1
cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1l
ZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIHN1cHBvcnRzS2V5U3lzdGVtIH0pOwor
ICAgIG11dGFibGVJbnN0YWxsZWRNZWRpYUVuZ2luZXNWZWN0b3IoKS5hcHBlbmQoTWVkaWFQbGF5
ZXJGYWN0b3J5IHsgY29uc3RydWN0b3IsIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUs
IG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0gfSk7CiB9CiAKIHN0YXRpYyBjb25zdCBBdG9taWNT
dHJpbmcmIGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKQpAQCAtMTAzNCwzMCArMTAzNCw0MCBAQCB2
b2lkIE1lZGlhUGxheWVyOjpyZWxvYWRUaW1lckZpcmVkKCkKICAgICBsb2FkV2l0aE5leHRNZWRp
YUVuZ2luZShtX2N1cnJlbnRNZWRpYUVuZ2luZSk7CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6Omdl
dFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+CitzdGF0aWMgdm9pZCBhZGRUb0hhc2goSGFzaFNldDxUPiYgdG9IYXNoLCBIYXNoU2V0
PFQ+JiYgZnJvbUhhc2gpCiB7CisgICAgaWYgKHRvSGFzaC5pc0VtcHR5KCkpCisgICAgICAgIHRv
SGFzaCA9IFdURk1vdmUoZnJvbUhhc2gpOworICAgIGVsc2UKKyAgICAgICAgdG9IYXNoLmFkZChm
cm9tSGFzaC5iZWdpbigpLCBmcm9tSGFzaC5lbmQoKSk7Cit9CisgICAgCitIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+IE1lZGlhUGxheWVyOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9y
aWdpbnM7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMoKSkg
ewotICAgICAgICBpZiAoIWVuZ2luZS5nZXRTaXRlc0luTWVkaWFDYWNoZSkKKyAgICAgICAgaWYg
KCFlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBWZWN0b3I8U3RyaW5nPiBlbmdpbmVTaXRlczsKLSAgICAgICAgZW5naW5lLmdldFNpdGVz
SW5NZWRpYUNhY2hlKGVuZ2luZVNpdGVzKTsKLSAgICAgICAgc2l0ZXMuYXBwZW5kVmVjdG9yKGVu
Z2luZVNpdGVzKTsKKyAgICAgICAgYXV0byBlbmdpbmVPcmlnaW5zID0gZW5naW5lLm9yaWdpbnNJ
bk1lZGlhQ2FjaGUocGF0aCk7CisgICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBXVEZNb3ZlKGVu
Z2luZU9yaWdpbnMpKTsKICAgICB9CisgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZSgpCit2b2lkIE1lZGlhUGxheWVyOjpjbGVhck1lZGlh
Q2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1l
X3BvaW50IG1vZGlmaWVkU2luY2UpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxs
ZWRNZWRpYUVuZ2luZXMoKSkgewogICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZSkK
LSAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUoKTsKKyAgICAgICAgICAgIGVuZ2lu
ZS5jbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRTaW5jZSk7CiAgICAgfQogfQogCi12b2lk
IE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkK
K3ZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5n
JiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQog
ewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKLSAg
ICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JTaXRlKQotICAgICAgICAgICAgZW5n
aW5lLmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7CisgICAgICAgIGlmIChlbmdpbmUuY2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucykKKyAgICAgICAgICAgIGVuZ2luZS5jbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKHBhdGgsIG9yaWdpbnMpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKaW5kZXggNWVhNTU4NzExMDU5Mzdl
ZWU0MDYzZTcyNTkyYTFhZTU1NzE1NDVjYi4uYWM0Zjg1MzBmNGZmNGE5ZmQ5MDdmNGMwZWNlZGI1
YTY0YmJkMGY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtTWVkaWFTZXNzaW9uLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW5IYXNoLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvVWludDhBcnJheS5oPgpAQCAtMjM2LDYgKzIzNyw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFJlZlB0cjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI+IG1lZGlhUGxheWVyQ3Jl
YXRlUmVzb3VyY2VMb2FkZXIoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBib29s
IGRvZXNIYXZlQXR0cmlidXRlKGNvbnN0IEF0b21pY1N0cmluZyYsIEF0b21pY1N0cmluZyogPSAw
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBtZWRpYVBsYXllclNo
b3VsZFVzZVBlcnNpc3RlbnRDYWNoZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyYgbWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KCkgY29uc3Qg
eyByZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAg
IHZpcnR1YWwgdm9pZCBtZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRp
b1RyYWNrUHJpdmF0ZT4pIHsgfQpAQCAtMjkyLDkgKzI5NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdp
bmVTdXBwb3J0UGFyYW1ldGVycyYsIGNvbnN0IE1lZGlhUGxheWVyU3VwcG9ydHNUeXBlQ2xpZW50
Kik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgp
OwotICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7
Ci0gICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlKCk7Ci0gICAgc3RhdGljIHZvaWQgY2xl
YXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYg
cGF0aCk7CisgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0
aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsK
KyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYg
cGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOwogICAgIHN0YXRp
YyBib29sIHN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKTsKIAogICAgIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3Q7
CkBAIC02MjksMTMgKzYzMSwxMyBAQCBwcml2YXRlOgogdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHN0
ZDo6dW5pcXVlX3B0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IChNZWRpYVBsYXllciop
PiBDcmVhdGVNZWRpYUVuZ2luZVBsYXllcjsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3Vw
cG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+JiB0
eXBlcyk7CiB0eXBlZGVmIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgKCpNZWRpYUVuZ2luZVN1
cHBvcnRzVHlwZSkoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFyYW1ldGVy
cyk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hlKShWZWN0
b3I8U3RyaW5nPiYpOwotdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUp
KCk7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUpKGNv
bnN0IFN0cmluZyYpOwordHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+ICgq
TWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlKShjb25zdCBTdHJpbmcmIHBhdGgpOwordHlw
ZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUpKGNvbnN0IFN0cmluZyYgcGF0
aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsK
K3R5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucykoY29u
c3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7
CiB0eXBlZGVmIGJvb2wgKCpNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKShjb25zdCBTdHJp
bmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CiAKIHR5cGVkZWYgdm9pZCAo
Kk1lZGlhRW5naW5lUmVnaXN0cmFyKShDcmVhdGVNZWRpYUVuZ2luZVBsYXllciwgTWVkaWFFbmdp
bmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFFbmdp
bmVHZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUsIE1lZGlh
RW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3Rl
bSk7CisgICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFy
TWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVu
Z2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKIHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lUmVnaXN0
ZXIpKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAogY2xhc3MgTWVkaWFQbGF5ZXJGYWN0b3J5U3Vw
cG9ydCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyUHJpdmF0ZS5oCmluZGV4IGU1NzlhZTkzODU2ZTdkZGM4NTk2ODY0NzM2MThkYTJhMTRk
NmM3OTAuLjA5YWM4YzkzM2ZkMmNjZGQ0NWNmZWRjZGU5NGE2MGE3NWU4N2M5YjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0
ZS5oCkBAIC0yMTQsOSArMjE0LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgYXVk
aW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgdW5z
aWduZWQgdmlkZW9EZWNvZGVkQnl0ZUNvdW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAg
dm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpIHsgfQotICAgIHZvaWQg
Y2xlYXJNZWRpYUNhY2hlKCkgeyB9Ci0gICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNv
bnN0IFN0cmluZyYpIHsgfQorICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3Jp
Z2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKSB7IHJldHVybiB7IH07IH0KKyAgICB2b2lk
IGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50KSB7IH0KKyAgICB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29u
c3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpIHsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHNldFByaXZhdGVCcm93c2luZ01vZGUoYm9vbCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaAppbmRleCBmN2ZiMWFjNDY4YjA2ODExMGViYTIzMmYyYmM2ZmYwNjI2
ZWZiYTIwLi42NTlhNDdhZWVkODY1NTEyYmNjZjliNGM3MGQ1N2ZhYTEzZmJiNDk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oCkBAIC04Nyw2ICs4NywxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCByZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAorICAgIHN0
YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUo
Y29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0
cmluZyYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5j
ZSk7CisgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJp
bmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+Jik7CisKICAgICB2b2lk
IHNldEFzc2V0KFJldGFpblB0cjxpZD4pOwogICAgIHZvaWQgdHJhY2tzQ2hhbmdlZCgpIG92ZXJy
aWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAxNTQzN2RkZDhlZDZmM2QwYTJiZGJl
NTVlOGYzMWRmYTdjNDZjZGRmLi42MTNiMWJmOTZiOTM3ZGRlYWJlYmRhNzIzOGRiMjE2OTNhMzNk
NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTE1OCw2ICsxNTgsNyBAQCBTT0ZUX0xJ
TktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlBsYXllckxheWVyKQogU09GVF9MSU5LX0NMQVNTKEFW
Rm91bmRhdGlvbiwgQVZVUkxBc3NldCkKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFW
QXNzZXRJbWFnZUdlbmVyYXRvcikKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWTWV0
YWRhdGFJdGVtKQorU09GVF9MSU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldENhY2hlKQog
CiBTT0ZUX0xJTktfQ0xBU1MoQ29yZUltYWdlLCBDSUNvbnRleHQpCiBTT0ZUX0xJTktfQ0xBU1Mo
Q29yZUltYWdlLCBDSUltYWdlKQpAQCAtMjI3LDYgKzIyOCw3IEBAIFNPRlRfTElOS19QT0lOVEVS
KEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJJdGVtTGVnaWJsZU91dHB1dFRleHRTdHlsaW5nUmVzb2x1
dGlvblNvCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBVkZfQ0FQVElPTlMpCitTT0ZUX0xJTktfUE9J
TlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRDYWNoZUtleSwgTlNTdHJpbmcqKQogU09GVF9M
SU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0SFRUUENvb2tpZXNLZXksIE5TU3Ry
aW5nKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldE91dE9mQmFu
ZEFsdGVybmF0ZVRyYWNrc0tleSwgTlNTdHJpbmcqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hlS2V5LCBOU1N0cmluZyopCkBA
IC0yNDIsNiArMjQ0LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVk1lZGlh
Q2hhcmFjdGVyaXN0aWNJc0F1eGlsaWFyeUNvbnRlbnQsIE5TU3RyaW4KIAogI2RlZmluZSBBVlVS
TEFzc2V0SFRUUENvb2tpZXNLZXkgZ2V0QVZVUkxBc3NldEhUVFBDb29raWVzS2V5KCkKICNkZWZp
bmUgQVZVUkxBc3NldE91dE9mQmFuZEFsdGVybmF0ZVRyYWNrc0tleSBnZXRBVlVSTEFzc2V0T3V0
T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5KCkKKyNkZWZpbmUgQVZVUkxBc3NldENhY2hlS2V5IGdl
dEFWVVJMQXNzZXRDYWNoZUtleSgpCiAjZGVmaW5lIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50
Q2FjaGVLZXkgZ2V0QVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSgpCiAjZGVmaW5l
IEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSBnZXRBVk91dE9mQmFuZEFs
dGVybmF0ZVRyYWNrRGlzcGxheU5hbWVLZXkoKQogI2RlZmluZSBBVk91dE9mQmFuZEFsdGVybmF0
ZVRyYWNrRXh0ZW5kZWRMYW5ndWFnZVRhZ0tleSBnZXRBVk91dE9mQmFuZEFsdGVybmF0ZVRyYWNr
RXh0ZW5kZWRMYW5ndWFnZVRhZ0tleSgpCkBAIC00MjIsNyArNDI1LDk2IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVu
Z2luZVJlZ2lzdHJhCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM+KHBsYXllcik7IH0sCi0gICAgICAgICAgICBn
ZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCAwLCAwLCAwLCBzdXBwb3J0c0tleVN5c3Rl
bSk7CisgICAgICAgICAgICBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5z
SW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMs
IHN1cHBvcnRzS2V5U3lzdGVtKTsKK30KKworc3RhdGljIEFWQXNzZXRDYWNoZSAqYXNzZXRDYWNo
ZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIE5TVVJMICphc3NldENhY2hlVVJM
OworICAgIAorICAgIGlmIChwYXRoLmlzRW1wdHkoKSkgeworICAgICAgICBjaGFyKiB0bXBkaXIg
PSBnZXRlbnYoIlRNUERJUiIpOworICAgICAgICBTdHJpbmcgZGVmYXVsdFBhdGggPSB0bXBkaXIg
PyB0bXBkaXIgOiAiL3RtcCI7CisgICAgICAgIGRlZmF1bHRQYXRoID0gcGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KGRlZmF1bHRQYXRoLCAiTWVkaWFDYWNoZSIpOworICAgICAgICBhc3NldENhY2hl
VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkZWZhdWx0UGF0aCBpc0RpcmVjdG9yeTpZRVNd
OworICAgIH0gZWxzZQorICAgICAgICBhc3NldENhY2hlVVJMID0gW05TVVJMIGZpbGVVUkxXaXRo
UGF0aDpwYXRoIGlzRGlyZWN0b3J5OllFU107CisKKyAgICByZXR1cm4gW2dldEFWQXNzZXRDYWNo
ZUNsYXNzKCkgYXNzZXRDYWNoZVdpdGhVUkw6YXNzZXRDYWNoZVVSTF07Cit9CisKK0hhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgSGFzaFNl
dDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOworICAgIGZvciAoTlNTdHJpbmcgKmtl
eSBpbiBbYXNzZXRDYWNoZUZvclBhdGgocGF0aCkgYWxsS2V5c10pIHsKKyAgICAgICAgVVJMIGtl
eUFzVVJMID0gVVJMKFVSTCgpLCBrZXkpOworICAgICAgICBpZiAoa2V5QXNVUkwuaXNWYWxpZCgp
KQorICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShrZXlBc1VS
TCkpOworICAgIH0KKyAgICByZXR1cm4gb3JpZ2luczsKK30KKworc3RhdGljIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdG9TeXN0ZW1DbG9ja1RpbWUoTlNEYXRlICpkYXRl
KQoreworICAgIEFTU0VSVChkYXRlKTsKKyAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOjpjaHJvbm87
CisKKyAgICByZXR1cm4gc3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50KGR1cmF0aW9uX2Nhc3Q8c3lz
dGVtX2Nsb2NrOjpkdXJhdGlvbj4oZHVyYXRpb248ZG91YmxlPihkYXRlLnRpbWVJbnRlcnZhbFNp
bmNlMTk3MCkpKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVt
X2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisgICAgTE9HKE1lZGlhLCAiTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKCkiKTsKKyAg
ICAKKyAgICBBVkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0aChwYXRo
KTsKKyAgICAKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2FjaGUgYWxsS2V5c10p
IHsKKyAgICAgICAgaWYgKHRvU3lzdGVtQ2xvY2tUaW1lKFthc3NldENhY2hlIGxhc3RNb2RpZmll
ZERhdGVPZkVudHJ5Rm9yS2V5OmtleV0pID4gbW9kaWZpZWRTaW5jZSkKKyAgICAgICAgICAgIFth
c3NldENhY2hlIHJlbW92ZUVudHJ5Rm9yS2V5OmtleV07CisgICAgfQorCisgICAgTlNGaWxlTWFu
YWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CisgICAg
TlNVUkwgKmJhc2VVUkwgPSBbYXNzZXRDYWNoZSBVUkxdOworCisgICAgaWYgKG1vZGlmaWVkU2lu
Y2UgPT0gc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB7IH0pIHsKKyAgICAg
ICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpiYXNlVVJMIGVycm9yOm5pbF07CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgTlNEaXJlY3RvcnlFbnVtZXJhdG9yICplbnVt
ZXJhdG9yID0gW2ZpbGVNYW5hZ2VyIGVudW1lcmF0b3JBdFVSTDpiYXNlVVJMIGluY2x1ZGluZ1By
b3BlcnRpZXNGb3JLZXlzOgorICAgICAgICBAW05TVVJMTmFtZUtleSwgTlNVUkxDb250ZW50TW9k
aWZpY2F0aW9uRGF0ZUtleSwgTlNVUkxJc1JlZ3VsYXJGaWxlS2V5XSBvcHRpb25zOk5TRGlyZWN0
b3J5RW51bWVyYXRpb25Ta2lwc1N1YmRpcmVjdG9yeURlc2NlbmRhbnRzCisgICAgICAgIGVycm9y
SGFuZGxlcjpuaWxdOworICAgIAorICAgIE5TTXV0YWJsZUFycmF5PE5TVVJMICo+ICp1cmxzVG9E
ZWxldGUgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIE5TVVJMICpmaWxlVVJMOworICAg
IHdoaWxlICgoZmlsZVVSTCA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSkgeworICAgICAgICBp
ZiAoIVtlbnVtZXJhdG9yLmZpbGVBdHRyaWJ1dGVzW05TVVJMTmFtZUtleV0gaGFzUHJlZml4OkAi
Q2FjaGVkTWVkaWEtIl0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAg
IGlmICghW2VudW1lcmF0b3IuZmlsZUF0dHJpYnV0ZXNbTlNVUkxJc1JlZ3VsYXJGaWxlS2V5XSBi
b29sVmFsdWVdKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAo
dG9TeXN0ZW1DbG9ja1RpbWUoZW51bWVyYXRvci5maWxlQXR0cmlidXRlc1tOU1VSTENvbnRlbnRN
b2RpZmljYXRpb25EYXRlS2V5XSkgPD0gbW9kaWZpZWRTaW5jZSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAKKyAgICAgICAgW3VybHNUb0RlbGV0ZSBhZGRPYmplY3Q6ZmlsZVVSTF07
CisgICAgfQorICAgIAorICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gdXJsc1RvRGVsZXRlKQor
ICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmZpbGVVUkwgZXJyb3I6bmlsXTsK
K30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkiKTsK
KyAgICBBVkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0aChwYXRoKTsK
KyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2FjaGUgYWxsS2V5c10pIHsKKyAgICAg
ICAgVVJMIGtleUFzVVJMID0gVVJMKFVSTCgpLCBrZXkpOworICAgICAgICBpZiAoa2V5QXNVUkwu
aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAob3JpZ2lucy5jb250YWlucyhTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGtleUFzVVJMKSkpCisgICAgICAgICAgICAgICAgW2Fzc2V0Q2FjaGUgcmVt
b3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
QyhNZWRpYVBsYXllciogcGxheWVyKQpAQCAtODc0LDcgKzk2NiwxMSBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpCiAgICAgfQogI2VuZGlmCiAKLSAgICBbb3B0aW9ucyBzZXRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhCb29sOiFwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJTaG91bGRV
c2VQZXJzaXN0ZW50Q2FjaGUoKV0gZm9yS2V5OkFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2Fj
aGVLZXldOworICAgIGJvb2wgdXNlUGVyc2lzdGVudENhY2hlID0gcGxheWVyKCktPmNsaWVudCgp
Lm1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCk7CisgICAgW29wdGlvbnMgc2V0
T2JqZWN0OkAoIXVzZVBlcnNpc3RlbnRDYWNoZSkgZm9yS2V5OkFWVVJMQXNzZXRVc2VzTm9QZXJz
aXN0ZW50Q2FjaGVLZXldOworICAgIAorICAgIGlmICh1c2VQZXJzaXN0ZW50Q2FjaGUpCisgICAg
ICAgIFtvcHRpb25zIHNldE9iamVjdDphc3NldENhY2hlRm9yUGF0aChwbGF5ZXIoKS0+Y2xpZW50
KCkubWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KCkpIGZvcktleTpBVlVSTEFzc2V0Q2Fj
aGVLZXldOwogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2FsVVJMKHVybCk7CiAgICAg
bV9hdkFzc2V0ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5zdGFuY2UoKSBpbml0V2l0aFVS
TDpjb2NvYVVSTCBvcHRpb25zOm9wdGlvbnMuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0LmgKaW5kZXggZjM3M2ZmODU1OTYzNzM5OWJjZWQ0YTNkMmE4NDI4NDQ2ZTE5YzEyOC4uNTlh
M2RhNmYxNWFmODk0OTlhMTJkYTJkNDIwNjVmYzUxOWY0Yjg1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0LmgKQEAgLTY4LDkgKzY4LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBn
ZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNo
PiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKLSAgICBzdGF0aWMg
dm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIHN0YXRpYyB2
b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZv
clNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMg
dm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9j
bG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAgICAg
UGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRl
UVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYjI3MDMxOGQyZGI4NDA1ZmNmMTIzNGRiNjQ0N2UyMjU5
YWIyYzg1NC4uMDlmNmRjODkzN2RiMjU5NTkyZTlkMDkzZTQzYmFlOTcyZTcxYzVmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Ry
YXIgcmVnaXN0cmFyCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJlZ2lzdHJh
cihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0PihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKLSAgICAg
ICAgICAgIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNo
ZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgMCk7CisgICAgICAgICAgICBzdXBwb3J0c1R5cGUs
IG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucywgMCk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpNZWRpYVBsYXllclBy
aXZhdGVRVEtpdChNZWRpYVBsYXllciogcGxheWVyKQpAQCAtMTMzOSwyMyArMTMzOSwzMCBAQCBi
b29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIFFU
S2l0TGlicmFyeSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTaXRl
c0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpIAorSGFzaFNldDxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNo
ZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgVU5VU0VEX1BBUkFNKHBhdGgpOworICAgIEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBOU0FycmF5ICptZWRp
YVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUoKTsKICAgICBmb3IgKE5T
U3RyaW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpCi0gICAgICAgIHNpdGVzLmFwcGVuZChzaXRlKTsK
KyAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoUGFyc2VkVVJM
U3RyaW5nLCBTdHJpbmc6OmZyb21VVEY4KFtzaXRlIFVURjhTdHJpbmddKSkpKTsKKyAgICByZXR1
cm4gb3JpZ2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRp
YUNhY2hlKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZShj
b25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQg
bW9kaWZpZWRTaW5jZSkKIHsKKyAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisgICAgVU5VU0VEX1BB
UkFNKG1vZGlmaWVkU2luY2UpOwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwogICAgIHdrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNo
ZSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVG
b3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6
OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNo
U2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewotICAgIExPRyhNZWRpYSwg
Ik1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKCkiKTsKLSAg
ICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKHNpdGUpOworICAgIFVOVVNFRF9Q
QVJBTShwYXRoKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmln
aW5zKQorICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKG9yaWdpbi0+
dG9SYXdTdHJpbmcoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmRpc2Fi
bGVVbnN1cHBvcnRlZFRyYWNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Bp
L21hYy9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4NmRiNzkyZDI1ZjZmYWFmZmRhNTFiNmQ1NGMw
ZTczNDNjYTViNzM2Li45OGRlOWQwNGZhNDJjOWVhM2RiNWZlZTAxZmUzN2YzMDRkZjNlNjAwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQ
SS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJ
LmgKQEAgLTU1LDYgKzU1LDIxIEBAIE5TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYgLy8g
RU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKIAorI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3NldENh
Y2hlX1ByaXZhdGUuaD4KKyNlbHNlCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorQGludGVyZmFj
ZSBBVkFzc2V0Q2FjaGUgOiBOU09iamVjdAorKyAoQVZBc3NldENhY2hlICopYXNzZXRDYWNoZVdp
dGhVUkw6KE5TVVJMICopVVJMOworLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopVVJMOworLSAo
TlNBcnJheSAqKWFsbEtleXM7CistIChOU0RhdGUgKilsYXN0TW9kaWZpZWREYXRlT2ZFbnRyeUZv
cktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKXJlbW92ZUVudHJ5Rm9yS2V5OihOU1N0cmlu
ZyAqKWtleTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkwgKlVS
TDsKK0BlbmQKK05TX0FTU1VNRV9OT05OVUxMX0VORAorI2VuZGlmCisKICNpZiBQTEFURk9STShJ
T1MpCiAKICNpZiBIQVZFKEFWS0lUKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCmluZGV4IDE4MDZjMzFkNjI5YjhjYjcyM2VkM2VlZWIwNDMxYWY2OTc1ODZlZGEu
LjgyNTc2ODI1OTk2MmZiZWNkOWQ1ZmZhMjhhNGY4NzE4MjljNGQ1NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZ2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMjU1LDYgKzI1Niwy
OCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURh
dGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldAogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVn
YXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYobmV3IENhbGxiYWNrQWdncmVnYXRv
cihmZXRjaE9wdGlvbnMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAKKyAgICBpZiAo
ZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgeworICAgICAg
ICBTdHJpbmdDYXB0dXJlIG1lZGlhQ2FjaGVEaXJlY3RvcnkgeyBXZWJDb3JlOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQobV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCAiTWVkaWFDYWNoZSIp
IH07CisgICAgICAgIAorICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxs
YmFjaygpOworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0Y2hPcHRpb25zLCBtZWRpYUNh
Y2hlRGlyZWN0b3J5LCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkobWVkaWFDYWNoZURpcmVj
dG9yeS5zdHJpbmcoKSk7CisgICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4+IG9yaWdpbnMgPSBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5z
SW5NZWRpYUNhY2hlKCk7CisgICAgICAgICAgICBXZWJzaXRlRGF0YSogd2Vic2l0ZURhdGEgPSBu
ZXcgV2Vic2l0ZURhdGE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3Jp
Z2luIDogb3JpZ2lucykgeworICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRy
eSB7IG9yaWdpbiwgV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIDAgfTsKKyAgICAgICAgICAg
ICAgICB3ZWJzaXRlRGF0YS0+ZW50cmllcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zLCB3ZWJzaXRlRGF0YV0geworICAg
ICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdU
Rk1vdmUoKndlYnNpdGVEYXRhKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ZGVsZXRlIHdlYnNpdGVEYXRhOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0K
KwogICAgIGF1dG8gbmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9j
ZXNzQWNjZXNzVHlwZUZvckRhdGFGZXRjaChkYXRhVHlwZXMsICFpc1BlcnNpc3RlbnQoKSk7CiAg
ICAgaWYgKG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9u
ZSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsK
QEAgLTUyOSw2ICs1NTIsMjAgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgc3RkOjpjaHIKIAogICAgIFJlZlB0
cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBD
YWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAorICAgIGlm
IChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CisgICAg
ICAgIFN0cmluZ0NhcHR1cmUgbWVkaWFDYWNoZURpcmVjdG9yeSB7IFdlYkNvcmU6OnBhdGhCeUFw
cGVuZGluZ0NvbXBvbmVudChtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnksICJNZWRpYUNhY2hl
IikgfTsKKworICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygp
OworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbW9kaWZpZWRTaW5jZSwgbWVkaWFDYWNoZURp
cmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KG1lZGlhQ2FjaGVEaXJlY3Rvcnku
c3RyaW5nKCkpOworICAgICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJN
ZWRpYUNhY2hlKG1vZGlmaWVkU2luY2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBXVEY6
OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAg
ICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBhdXRvIG5ldHdvcmtQcm9j
ZXNzQWNjZXNzVHlwZSA9IGNvbXB1dGVOZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhUmVt
b3ZhbChkYXRhVHlwZXMsICFpc1BlcnNpc3RlbnQoKSk7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNz
QWNjZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9uZSkgewogICAgICAgICBmb3IgKGF1
dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKQEAgLTc1NSw3ICs3OTIsMjYgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICB9OwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdn
cmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYobmV3IENhbGxiYWNrQWdncmVn
YXRvcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwotCisgICAgCisgICAgaWYgKGRhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKKyAgICAgICAgU3Ry
aW5nQ2FwdHVyZSBtZWRpYUNhY2hlRGlyZWN0b3J5IHsgV2ViQ29yZTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSwgIk1lZGlhQ2FjaGUiKSB9Owor
ICAgICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7
CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7Cisg
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykK
KyAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChvcmlnaW4pOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworICAg
ICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbb3JpZ2lucywgbWVkaWFDYWNoZURpcmVjdG9yeSwgY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KG1lZGlhQ2FjaGVEaXJlY3Rvcnkuc3RyaW5nKCkpOwor
ICAgICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhvcmlnaW5zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgV1RGOjpSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIAogICAgIGF1dG8gbmV0d29ya1Byb2Nlc3NB
Y2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFs
KGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAobmV0d29ya1Byb2Nlc3NBY2Nl
c3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lKSB7CiAgICAgICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKaW5kZXggOGJiZDQ3ZjBmOTRlZDVmYjNkZDNkMjRmYzdlNTg2MjhjYTVk
NzU2OC4uZjI4MjNmOGQzYzM5OTA4YmVlY2JiYjczZjllOTYwZWZkMDA5NjcyNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR0NDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HbHlwaFBhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1
YWdlLmg+CkBAIC0yOTEsNiArMjkyLDggQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2Vi
UHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBp
ZiAoIXBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAg
ICAgIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpzaW5nbGV0b24oKS5zZXRDYWNoZURpcmVjdG9y
eShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwogCisgICAgV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LCAiTWVkaWFDYWNo
ZSIpKTsKKwogICAgIHNldENhY2hlTW9kZWwoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRl
cnMuY2FjaGVNb2RlbCkpOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5
KCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275706</attachid>
            <date>2016-04-05 15:54:16 -0700</date>
            <delta_ts>2016-04-06 11:55:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155783-20160405155417.patch</filename>
            <type>text/plain</type>
            <size>50140</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1OGU0OTNlOGRkNGEz
MDUxNjU5NmY1OWFhYzc1Mjg1ZmQ5OTIyYy4uNjc0YzYwY2EzNDhkOWE2OTEzNzBhYjg5NzJhODgx
ODUwYWIxN2JiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE2LTA0LTA1ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZp
ZWQgbG9jYXRpb24gb24gZGlzayBmb3IgYWxsIEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNo
ZQorICAgICAgICBjYW4gdGhlbiBiZSB1c2VkIHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1
c2VkIGJ5IEFWRm91bmRhdGlvbi4gSXQgaXMgdXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29u
dGVudHMgb2YgdGhlIGNhY2hlIGluIG9yaWdpbnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIg
dGhlIGNhY2hlIGNvbXBsZXRlbHkgb3IgcGFydGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFD
YWNoZSgpIGFuZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNl
Y3VyaXR5T3JpZ2luIGluc3RlYWQgb2YgdGhlIGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJl
cHJlc2VudCBvcmlnaW5zIGluIHRoZSBjYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllck1lZGlhQ2FjaGVEaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVk
LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFkZE1lZGlhRW5naW5lKTogQWRkIG5ldyBjYWNoZSBtZXRob2RzLgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVG9IYXNoKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGly
ZWN0b3J5KTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6
Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4K
KyAgICAgICAgKFdlYkNvcmU6OmFzc2V0Q2FjaGVGb3JQYXRoKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRp
YUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1N5c3RlbUNsb2NrVGltZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKTog
QWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaDoKKwog
MjAxNi0wMy0yMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViR0xdIE5vbi1wb3dlci1vZi10d28gdGV4dHVyZSBvcHRpbWl6YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBmMmM5ZjRlNjFiZGIyMjhiMmViYjAxNDAzNTdjN2NlMTQ2ZTNlNTM3Li40N2IzZGRiMzNk
NTI0ZGI5NjczOGNjMjk2MDYxNDI4YjMzMmJhNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTYtMDQtMDUgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAg
ICAgIFdoZW4gY2xlYXJpbmcgY2FjaGUsIGFsc28gY2xlYXIgQVZGb3VuZGF0aW9uIGNhY2hlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jbHVkZSB0
aGUgSFRNTE1lZGlhRWxlbWVudCBtZWRpYSBjYWNoZSB3aGVuIGRvaW5nIGRpc2sgY2FjaGUgb3Bl
cmF0aW9ucy4KKyAgICAgICAgQWRkIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIG1lZGlhIGNhY2hl
IGRpcmVjdG9yeS4gVGhpcyBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgYW5kIHRoZSB3ZWIgcHJvY2Vz
cworICAgICAgICB0byBhY2Nlc3MgdGhlIHNhbWUgY2FjaGUuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3Rv
cnkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTogQWRkIG1lZGlhIGNhY2hlIGRpcmVj
dG9yeS4KKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KTogQWRk
IG1lZGlhIGNhY2hlIGRpcmVjdG9yeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRN
ZWRpYUNhY2hlRGlyZWN0b3J5KTogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOiBNZWRpYSBjYWNoZSBp
cyBpbiB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
Ojp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRm9yIHJlc291cmNlcyBp
biB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6IEluaXQgbWVkaWEgY2FjaGUgZGlyZWN0b3J5
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKTogQWRkIG1lZGlhQ2FjaGVE
aXJlY3RvcnkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQ
cm9jZXNzKTogQWRkIG1lZGlhQ2FjaGVEaXJlY3RvcnkuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZmV0Y2hEYXRhKTogSW1wbGVtZW50IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKTogSW1wbGVtZW50
IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBJ
bml0aWFsaXplIG1lZGlhIGNhY2hlIGRpcmVjdG9yeS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IENvbnN1bWUgc2FuZGJveCBleHRlbnNpb24uCisK
IDIwMTYtMDMtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVzZSBSZWdpb24gaW5zdGVhZCBvZiBJbnRSZWN0IGluIFBhZ2VDbGllbnQgYW5k
IFdlYlBhZ2VQcm94eSBzZXRWaWV3TmVlZHNEaXNwbGF5IG1ldGhvZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmUyNmRhOTcyYmRmZTlkZDFjMTQyNjA5ZjFj
MTY4MDFmMjIxNmY5My4uNzJlNjk3NDVkYjJlZmFkN2Y5YTc0YjNhNjYyODI5YTFlMmNiZGY4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NTU1LDIxICs1
NTU1LDM2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQo
Ym9vbCBzaG91bGREZWxheSkKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCkuZGVjcmVtZW50
TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogfQotICAgIAogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKK3N0YXRpYyBTdHJp
bmcmIHNoYXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIE1lZGlhUGxheWVyOjpnZXRT
aXRlc0luTWVkaWFDYWNoZShzaXRlcyk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICByZXR1cm4gc2hhcmVkTWVkaWFDYWNo
ZURpcmVjdG9yeTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUo
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAg
c2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKIH0KIAotdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK2NvbnN0
IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAg
TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7CisgICAgcmV0dXJuIHNo
YXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKK30KKworSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiBIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
cGF0aCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlKQoreworICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9k
aWZpZWRTaW5jZSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mIG9yaWdpbnMpCit7CisgICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cmVzZXRNZWRpYUVuZ2luZXMoKQpAQCAtNjE1NCw2ICs2MTY5LDExIEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdAogICAg
IHJldHVybiBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkubWVkaWFTaG91bGRV
c2VQZXJzaXN0ZW50Q2FjaGUoKTsKIH0KIAorY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBt
ZWRpYUNhY2hlRGlyZWN0b3J5KCk7Cit9CisKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQoKS5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAppbmRleCA0NjFkZmU4ZjhiYzg2NWFmMjE5OTIwNmYxNmYxZDU1ZTVkY2YyZTU2Li4xMmNmNTJm
NWE4Y2MzOGE5ZWNmMDA5NDcyMzhjZDY1ZGQwYjhhZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaApAQCAtMzgyLDkgKzM4MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
cml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVkaWEg
Y2FjaGUgbWFuYWdlbWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRTaXRl
c0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0TWVkaWFDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlID0geyB9KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0
IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBz
dGF0aWMgdm9pZCByZXNldE1lZGlhRW5naW5lcygpOwogCiAgICAgYm9vbCBpc1BsYXlpbmcoKSBj
b25zdCB7IHJldHVybiBtX3BsYXlpbmc7IH0KQEAgLTU5OCw2ICs2MDAsNyBAQCBwcml2YXRlOgog
ICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVy
KCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbWVk
aWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIG92ZXJyaWRlOwogICAgIGJvb2wgbWVkaWFQ
bGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25z
dCBTdHJpbmcmIG1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIEdyYXBoaWNz
RGV2aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVk
aWFQbGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA5OWI5ZDVjYWRlNzNlMGMxZmFkMDlhNzdj
ZjVmNmRiMjk4YzM3YWE1Li5lYjdkNzkyZmRhYzk1ZGI4OGRmMDAxNmE4MjgxODgxMzZlYWY2Mjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC0xNjgsMTMgKzE2OCwxMyBAQCBzdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKICAg
ICBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKICAgICBNZWRpYUVuZ2luZVN1
cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwogICAgIE1lZGlhRW5naW5lU3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRp
YUNhY2hlIGdldFNpdGVzSW5NZWRpYUNhY2hlOworICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVk
aWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlOwogICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlIGNsZWFyTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNp
dGUgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZTsKKyAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2luczsKICAgICBNZWRpYUVuZ2luZVN1
cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtOwogfTsKIAotc3RhdGljIHZvaWQgYWRk
TWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRp
YUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlh
Q2FjaGVGb3JTaXRlLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lk
IGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBv
cnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5N
ZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKIAogc3Rh
dGljIGJvb2wgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcjsKIApAQCAtMjMyLDEzICsyMzIsMTMgQEAg
c3RhdGljIGNvbnN0IFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBpbnN0YWxsZWRNZWRpYUVu
Z2luZXMoKQogfQogCiBzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2lu
ZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0
ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAgIE1lZGlh
RW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlIGNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlh
Q2FjaGVGb3JTaXRlIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3VwcG9ydHNL
ZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRp
YUNhY2hlIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlIGNs
ZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIGNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9y
dHNLZXlTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yKTsKICAgICBBU1NFUlQoZ2V0
U3VwcG9ydGVkVHlwZXMpOwogICAgIEFTU0VSVChzdXBwb3J0c1R5cGUpOwogCi0gICAgbXV0YWJs
ZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVuZChNZWRpYVBsYXllckZhY3Rvcnkg
eyBjb25zdHJ1Y3RvciwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJ
bk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgc3Vw
cG9ydHNLZXlTeXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3Rv
cigpLmFwcGVuZChNZWRpYVBsYXllckZhY3RvcnkgeyBjb25zdHJ1Y3RvciwgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgpCkBAIC0x
MDM0LDMwICsxMDM0LDQwIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQoKQog
ICAgIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mIHNp
dGVzKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIGFkZFRvSGFzaChIYXNoU2V0
PFQ+JiB0b0hhc2gsIEhhc2hTZXQ8VD4mJiBmcm9tSGFzaCkKIHsKKyAgICBpZiAodG9IYXNoLmlz
RW1wdHkoKSkKKyAgICAgICAgdG9IYXNoID0gV1RGTW92ZShmcm9tSGFzaCk7CisgICAgZWxzZQor
ICAgICAgICB0b0hhc2guYWRkKGZyb21IYXNoLmJlZ2luKCksIGZyb21IYXNoLmVuZCgpKTsKK30K
KyAgICAKK0hhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6Om9yaWdp
bnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3Rh
bGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5lLmdldFNpdGVzSW5NZWRp
YUNhY2hlKQorICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGVuZ2luZVNpdGVzOwotICAg
ICAgICBlbmdpbmUuZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAgICAgICBz
aXRlcy5hcHBlbmRWZWN0b3IoZW5naW5lU2l0ZXMpOworICAgICAgICBhdXRvIGVuZ2luZU9yaWdp
bnMgPSBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKKyAgICAgICAgYWRkVG9IYXNo
KG9yaWdpbnMsIFdURk1vdmUoZW5naW5lT3JpZ2lucykpOwogICAgIH0KKyAgICByZXR1cm4gb3Jp
Z2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgTWVk
aWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKICAgICBmb3IgKGF1
dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlmIChlbmdp
bmUuY2xlYXJNZWRpYUNhY2hlKQotICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZSgp
OworICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNpbmNl
KTsKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUo
Y29uc3QgU3RyaW5nJiBzaXRlKQordm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRN
ZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvclNp
dGUpCi0gICAgICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShzaXRlKTsKKyAg
ICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQorICAgICAgICAgICAg
ZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApp
bmRleCA1ZWE1NTg3MTEwNTkzN2VlZTQwNjNlNzI1OTJhMWFlNTU3MTU0NWNiLi5hYzRmODUzMGY0
ZmY0YTlmZDkwN2Y0YzBlY2VkYjVhNjRiYmQwZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQ
cml2YXRlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CkBAIC0yMzYsNiArMjM3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5n
JiwgQXRvbWljU3RyaW5nKiA9IDApIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIG1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtZWRpYVBsYXllck1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9U
cmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CkBAIC0yOTIsOSArMjk0LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiwgY29uc3QgTWVkaWFQbGF5
ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBl
cyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRp
YyBib29sIGlzQXZhaWxhYmxlKCk7Ci0gICAgc3RhdGljIHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2Fj
aGUoVmVjdG9yPFN0cmluZz4mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKTsK
LSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlh
Q2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IG1vZGlmaWVkU2luY2UpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4+Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgYm9vbCBzdXBwb3J0
c0Z1bGxzY3JlZW4oKSBjb25zdDsKQEAgLTYyOSwxMyArNjMxLDEzIEBAIHByaXZhdGU6CiB0eXBl
ZGVmIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gKE1lZGlhUGxheWVyKik+IENyZWF0ZU1lZGlhRW5naW5lUGxheWVyOwogdHlwZWRlZiB2
b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lR2V0U2l0
ZXNJbk1lZGlhQ2FjaGUpKFZlY3RvcjxTdHJpbmc+Jik7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSkoKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJN
ZWRpYUNhY2hlRm9yU2l0ZSkoY29uc3QgU3RyaW5nJik7Cit0eXBlZGVmIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0
IFN0cmluZyYgcGF0aCk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IG1vZGlmaWVkU2luY2UpOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mKTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhRW5naW5lU3VwcG9ydHNL
ZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKIAogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSwKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCBNZWRpYUVu
Z2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogdHlwZWRlZiB2b2lk
ICgqTWVkaWFFbmdpbmVSZWdpc3RlcikoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiBjbGFzcyBN
ZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4NTZlN2Rk
Yzg1OTY4NjQ3MzYxOGRhMmExNGQ2Yzc5MC4uMDlhYzhjOTMzZmQyY2NkZDQ1Y2ZlZGNkZTk0YTYw
YTc1ZTg3YzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJp
bmc+JikgeyB9Ci0gICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKSB7IH0KLSAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpIHsgcmV0
dXJuIHsgfTsgfQorICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpIHsgfQorICAgIHZvaWQgY2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5n
TW9kZShib29sKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0NjhiMDY4
MTEwZWJhMjMyZjJiYzZmZjA2MjZlZmJhMjAuLjY1OWE0N2FlZWQ4NjU1MTJiY2NmOWI0YzcwZDU3
ZmFhMTNmYmI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTg3LDYgKzg3LDEwIEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYXIpOwogCisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVh
ck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4mKTsKKwogICAgIHZvaWQgc2V0QXNzZXQoUmV0YWluUHRyPGlkPik7CiAgICAgdm9pZCB0
cmFja3NDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDE1
NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLmIwNTAzYjczOGE0MDVjZGJi
YWRlOTMxY2IyNjJkNjM3MzlmZTA0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTU4
LDYgKzE1OCw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIp
CiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQogU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yKQogU09GVF9MSU5LX0NMQVNT
KEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0
aW9uLCBBVkFzc2V0Q2FjaGUpCiAKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJQ29udGV4
dCkKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJSW1hZ2UpCkBAIC0yMjcsNiArMjI4LDcg
QEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdpYmxlT3V0
cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU28KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFWRl9DQVBU
SU9OUykKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENhY2hlS2V5
LCBOU1N0cmluZyopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRI
VFRQQ29va2llc0tleSwgTlNTdHJpbmcqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9u
LCBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5LCBOU1N0cmluZyopCiBTT0ZU
X0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2Fj
aGVLZXksIE5TU3RyaW5nKikKQEAgLTI0Miw2ICsyNDQsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihB
VkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCwgTlNT
dHJpbgogCiAjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSBnZXRBVlVSTEFzc2V0SFRU
UENvb2tpZXNLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tz
S2V5IGdldEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkoKQorI2RlZmluZSBB
VlVSTEFzc2V0Q2FjaGVLZXkgZ2V0QVZVUkxBc3NldENhY2hlS2V5KCkKICNkZWZpbmUgQVZVUkxB
c3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSBnZXRBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVu
dENhY2hlS2V5KCkKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0Rpc3BsYXlOYW1l
S2V5IGdldEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSgpCiAjZGVmaW5l
IEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5IGdldEFWT3V0
T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5KCkKQEAgLTQyMiw3ICs0
MjUsOTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIHsKICAgICBpZiAoaXNBdmFpbGFibGUo
KSkKICAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVy
KTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAs
IDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOworfQorCitzdGF0aWMgQVZB
c3NldENhY2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
TlNVUkwgKmFzc2V0Q2FjaGVVUkw7CisgICAgCisgICAgaWYgKHBhdGguaXNFbXB0eSgpKQorICAg
ICAgICBhc3NldENhY2hlVVJMID0gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlE
aXJlY3RvcnkoKV0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTWVkaWFDYWNoZSIgaXNE
aXJlY3Rvcnk6WUVTXTsKKyAgICBlbHNlCisgICAgICAgIGFzc2V0Q2FjaGVVUkwgPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIHJldHVybiBbZ2V0
QVZBc3NldENhY2hlQ2xhc3MoKSBhc3NldENhY2hlV2l0aFVSTDphc3NldENhY2hlVVJMXTsKK30K
KworSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAgZm9yIChO
U1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlRm9yUGF0aChwYXRoKSBhbGxLZXlzXSkgeworICAg
ICAgICBVUkwga2V5QXNVUkwgPSBVUkwoVVJMKCksIGtleSk7CisgICAgICAgIGlmIChrZXlBc1VS
TC5pc1ZhbGlkKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGtleUFzVVJMKSk7CisgICAgfQorICAgIHJldHVybiBvcmlnaW5zOworfQorCitzdGF0aWMg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0b1N5c3RlbUNsb2NrVGltZShO
U0RhdGUgKmRhdGUpCit7CisgICAgQVNTRVJUKGRhdGUpOworICAgIHVzaW5nIG5hbWVzcGFjZSBz
dGQ6OmNocm9ubzsKKworICAgIHJldHVybiBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoZHVyYXRp
b25fY2FzdDxzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihkdXJhdGlvbjxkb3VibGU+KGRhdGUudGlt
ZUludGVydmFsU2luY2UxOTcwKSkpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2Fj
aGUoKSIpOworICAgIAorICAgIEFWQXNzZXRDYWNoZSogYXNzZXRDYWNoZSA9IGFzc2V0Q2FjaGVG
b3JQYXRoKHBhdGgpOworICAgIAorICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNzZXRDYWNo
ZSBhbGxLZXlzXSkgeworICAgICAgICBpZiAodG9TeXN0ZW1DbG9ja1RpbWUoW2Fzc2V0Q2FjaGUg
bGFzdE1vZGlmaWVkRGF0ZU9mRW50cnlGb3JLZXk6a2V5XSkgPiBtb2RpZmllZFNpbmNlKQorICAg
ICAgICAgICAgW2Fzc2V0Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICB9CisKKyAg
ICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXTsKKyAgICBOU1VSTCAqYmFzZVVSTCA9IFthc3NldENhY2hlIFVSTF07CisKKyAgICBpZiAo
bW9kaWZpZWRTaW5jZSA8PSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHsg
fSkgeworICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmJhc2VVUkwgZXJyb3I6
bmlsXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBOU0FycmF5ICpwcm9wZXJ0
eUtleXMgPSBAW05TVVJMTmFtZUtleSwgTlNVUkxDb250ZW50TW9kaWZpY2F0aW9uRGF0ZUtleSwg
TlNVUkxJc1JlZ3VsYXJGaWxlS2V5XTsKKyAgICBOU0RpcmVjdG9yeUVudW1lcmF0b3IgKmVudW1l
cmF0b3IgPSBbZmlsZU1hbmFnZXIgZW51bWVyYXRvckF0VVJMOmJhc2VVUkwgaW5jbHVkaW5nUHJv
cGVydGllc0ZvcktleXM6CisgICAgICAgIHByb3BlcnR5S2V5cyBvcHRpb25zOk5TRGlyZWN0b3J5
RW51bWVyYXRpb25Ta2lwc1N1YmRpcmVjdG9yeURlc2NlbmRhbnRzCisgICAgICAgIGVycm9ySGFu
ZGxlcjpuaWxdOworICAgIAorICAgIE5TTXV0YWJsZUFycmF5PE5TVVJMICo+ICp1cmxzVG9EZWxl
dGUgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIHdoaWxlIChOU1VSTCAqZmlsZVVSTCA9
IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSB7CisgICAgICAgIE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBpZD4gKmZpbGVBdHRyaWJ1dGVzID0gW2ZpbGVVUkwgcmVzb3VyY2VWYWx1ZXNGb3JLZXlz
OnByb3BlcnR5S2V5cyBlcnJvcjpuaWxdOworICAgIAorICAgICAgICBpZiAoIVtmaWxlQXR0cmli
dXRlc1tOU1VSTE5hbWVLZXldIGhhc1ByZWZpeDpAIkNhY2hlZE1lZGlhLSJdKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoIVtmaWxlQXR0cmlidXRlc1tOU1VS
TElzUmVndWxhckZpbGVLZXldIGJvb2xWYWx1ZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgCisgICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShmaWxlQXR0cmlidXRlc1tOU1VS
TENvbnRlbnRNb2RpZmljYXRpb25EYXRlS2V5XSkgPD0gbW9kaWZpZWRTaW5jZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgW3VybHNUb0RlbGV0ZSBhZGRPYmplY3Q6
ZmlsZVVSTF07CisgICAgfQorICAgIAorICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gdXJsc1Rv
RGVsZXRlKQorICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmZpbGVVUkwgZXJy
b3I6bmlsXTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNl
dDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKK3sKKyAgICBMT0coTWVkaWEsICJN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKCkiKTsKKyAgICBBVkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0
aChwYXRoKTsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2FjaGUgYWxsS2V5c10p
IHsKKyAgICAgICAgVVJMIGtleUFzVVJMID0gVVJMKFVSTCgpLCBrZXkpOworICAgICAgICBpZiAo
a2V5QXNVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAob3JpZ2lucy5jb250YWlucyhT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGtleUFzVVJMKSkpCisgICAgICAgICAgICAgICAgW2Fzc2V0
Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQpAQCAtODc0LDcgKzk2NSwxMSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCiAgICAgfQogI2VuZGlmCiAKLSAgICBbb3B0aW9ucyBzZXRPYmpl
Y3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5
ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKV0gZm9yS2V5OkFWVVJMQXNzZXRVc2VzTm9QZXJz
aXN0ZW50Q2FjaGVLZXldOworICAgIGJvb2wgdXNlUGVyc2lzdGVudENhY2hlID0gcGxheWVyKCkt
PmNsaWVudCgpLm1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCk7CisgICAgW29w
dGlvbnMgc2V0T2JqZWN0OkAoIXVzZVBlcnNpc3RlbnRDYWNoZSkgZm9yS2V5OkFWVVJMQXNzZXRV
c2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXldOworICAgIAorICAgIGlmICh1c2VQZXJzaXN0ZW50Q2Fj
aGUpCisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDphc3NldENhY2hlRm9yUGF0aChwbGF5ZXIo
KS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KCkpIGZvcktleTpBVlVS
TEFzc2V0Q2FjaGVLZXldOwogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2FsVVJMKHVy
bCk7CiAgICAgbV9hdkFzc2V0ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5zdGFuY2UoKSBp
bml0V2l0aFVSTDpjb2NvYVVSTCBvcHRpb25zOm9wdGlvbnMuZ2V0KCldKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0LmgKaW5kZXggZjM3M2ZmODU1OTYzNzM5OWJjZWQ0YTNkMmE4NDI4NDQ2ZTE5
YzEyOC4uNTlhM2RhNmYxNWFmODk0OTlhMTJkYTJkNDIwNjVmYzUxOWY0Yjg1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTY4LDkgKzY4LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKLSAg
ICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAg
IHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVk
aWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgp
OwogCiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYjI3MDMxOGQyZGI4NDA1ZmNmMTIzNGRi
NjQ0N2UyMjU5YWIyYzg1NC4uMDlmNmRjODkzN2RiMjU5NTkyZTlkMDkzZTQzYmFlOTcyZTcxYzVm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAgICAgICAg
IHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0PihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBl
cywKLSAgICAgICAgICAgIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFy
TWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgMCk7CisgICAgICAgICAgICBzdXBw
b3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucywgMCk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpNZWRp
YVBsYXllclByaXZhdGVRVEtpdChNZWRpYVBsYXllciogcGxheWVyKQpAQCAtMTMzOSwyMyArMTMz
OSwzMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgpCiAgICAg
cmV0dXJuIFFUS2l0TGlicmFyeSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpIAorSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3JpZ2luc0lu
TWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgVU5VU0VEX1BBUkFNKHBhdGgp
OworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBOU0Fy
cmF5ICptZWRpYVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUoKTsKICAg
ICBmb3IgKE5TU3RyaW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpCi0gICAgICAgIHNpdGVzLmFwcGVu
ZChzaXRlKTsKKyAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwo
UGFyc2VkVVJMU3RyaW5nLCBTdHJpbmc6OmZyb21VVEY4KFtzaXRlIFVURjhTdHJpbmddKSkpKTsK
KyAgICByZXR1cm4gb3JpZ2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVk
aWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKKyAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisgICAg
VU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwogICAgIHdrUVRDbGVhck1lZGlhRG93
bmxvYWRDYWNoZSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1l
ZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewotICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRl
KCkiKTsKLSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKHNpdGUpOworICAg
IFVOVVNFRF9QQVJBTShwYXRoKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CisgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBvcmlnaW5zKQorICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRl
KG9yaWdpbi0+dG9SYXdTdHJpbmcoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4NmRiNzkyZDI1ZjZmYWFmZmRh
NTFiNmQ1NGMwZTczNDNjYTViNzM2Li45OGRlOWQwNGZhNDJjOWVhM2RiNWZlZTAxZmUzN2YzMDRk
ZjNlNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91
bmRhdGlvblNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3Vu
ZGF0aW9uU1BJLmgKQEAgLTU1LDYgKzU1LDIxIEBAIE5TX0FTU1VNRV9OT05OVUxMX0VORAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
UykKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZBc3NldENhY2hlX1ByaXZhdGUuaD4KKyNlbHNlCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgor
QGludGVyZmFjZSBBVkFzc2V0Q2FjaGUgOiBOU09iamVjdAorKyAoQVZBc3NldENhY2hlICopYXNz
ZXRDYWNoZVdpdGhVUkw6KE5TVVJMICopVVJMOworLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICop
VVJMOworLSAoTlNBcnJheSAqKWFsbEtleXM7CistIChOU0RhdGUgKilsYXN0TW9kaWZpZWREYXRl
T2ZFbnRyeUZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKXJlbW92ZUVudHJ5Rm9yS2V5
OihOU1N0cmluZyAqKWtleTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNVUkwgKlVSTDsKK0BlbmQKK05TX0FTU1VNRV9OT05OVUxMX0VORAorI2VuZGlmCisKICNpZiBQ
TEFURk9STShJT1MpCiAKICNpZiBIQVZFKEFWS0lUKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IDhmZjI5ZjdhNjE5ZWFlYTgwNzZjNzY1NzZmZmFiMzliNjgzMmE2
NmYuLjY2ODg1YzcyMWY3ZDFlMGU5ZTM1MmM5N2I2NjhjZWMwNGQxNWZlYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTY1LDYgKzY1LDggQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIg
PDwgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCB3ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1lZGlhQ2FjaGVEaXJl
Y3Rvcnk7CisgICAgZW5jb2RlciA8PCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgZW5jb2RlciA8PCBjb29raWVTdG9y
YWdlRGlyZWN0b3J5OwogI2VuZGlmCkBAIC0xNjAsNiArMTYyLDEwIEBAIGJvb2wgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBXZWJQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1l
ZGlhQ2FjaGVEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGU0NjBhOWU0OTFlNDQxZmQyZTRj
ZThkN2QxMmJjNTQ4YmM1OWFkZmIuLmI1ZmZkYWQ4ZmUwYjY5YjE0NmRkZjE2MDZkYjE5YjAyMTJh
ODY0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaApAQCAtNzIsNiArNzIsOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsK
KyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIFN0cmluZyBjb29raWVT
dG9yYWdlRGlyZWN0b3J5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNDE2
MDMzZTFhNjBiOTJjYzk1NGI3MWUzZGI2OTJjZGUzOTY5OWZlOS4uZWFhYTZkOTE4MzU3YTEzOTgx
OTJkMTY1YjVhMDEwZGE2ZWZkZDc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAtNTcs
NiArNTcsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKAogUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQogICAgIDogbV9hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpCiAgICAgLCBtX2Rpc2tDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpCisgICAgLCBtX21lZGlhQ2FjaGVEaXJlY3Rvcnko
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAsIG1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpCiAgICAgLCBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKQpAQCAtNzksNiArODAsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1f
ZGlza0NhY2hlU2l6ZU92ZXJyaWRlID0gdGhpcy0+bV9kaXNrQ2FjaGVTaXplT3ZlcnJpZGU7CiAg
ICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gdGhpcy0+
bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgY29weS0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
dGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNv
cHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3RlZEJ1bmRsZVBhdGg7CiAg
ICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURp
cmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IGQyMmJiODM3Zjk0YjFlM2MyNTE3OWNi
M2JlZmJkYjA5ZTVkMzhkNTYuLmY5M2IwMmQ1ODE2OWVhZmQ5OTQzNDFiNTMxYTQ5OTFmN2FjNTcw
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNjUsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29u
c3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rpc2tDYWNoZURpcmVjdG9y
eSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQogCisgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0K
KyAgICB2b2lkIHNldE1laWRhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlh
Q2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbWVkaWFDYWNoZURpcmVj
dG9yeTsgfQorICAgIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0K
ICAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KIApAQCAtMTAzLDYgKzEwNiw3IEBA
IHByaXZhdGU6CiAKICAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7
CiAgICAgV1RGOjpTdHJpbmcgbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgV1RGOjpTdHJpbmcg
bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9pbmplY3RlZEJ1bmRsZVBhdGg7CiAgICAg
V1RGOjpTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAyYTJlYTQx
MDBkNWFmNWY3YzUwYTNiNzc5YjgyZjIxZDE2NTA3ODI3Li41YTlkMzBiNDNjMjE0M2NmNzU5NDEx
NDcwYjM0N2RmODEzNzQyNDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTExOCw2ICsxMTgsMTIgQEAgU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgK
aW5kZXggNDY1YTVlZThkNjE5NzFiY2UzNWFkZDdmNWUxZjk2M2EyNmNiYjBhNS4uYTAzNzU1Mzhl
ODc1N2M3MWE1YzQ3MmY4Mjg2NDQyZDA1OGI1ODEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgp
OworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKIAogICAg
IHN0YXRpYyBTdHJpbmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAg
c3RhdGljIFN0cmluZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CkBAIC02MCw2ICs2
MSw3IEBAIHByaXZhdGU6CiAgICAgV2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmU6OkNvbmZpZ3VyYXRpb24pOwogICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKIAorICAgIHN0
YXRpYyBTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmIGRpcmVjdG9yeU5hbWUpOwogICAgIHN0YXRpYyBTdHJpbmcgY2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKICAg
ICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0
aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KaW5kZXggODIzMWFiYmM2MjBlYTNiMDExNjU1NGRjYzRjMGZiMTlkNGJmMjdkMi4uZWRh
NGMxNDkyNDQ0Njg2NDM2NWI2OThiNTVlNWEzNzE2Nzg3NGQ1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KQEAgLTU3LDYgKzU3LDExIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwogfQogCitTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7Cit9
CisKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJl
Y3RvcnkoKQogewogICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXBy
ZXNlbnRhdGlvbigiSW5kZXhlZERCIik7CkBAIC04Miw2ICs4NywzMyBAQCBTdHJpbmcgV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogICAg
IHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyIpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVt
cERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgc3Rh
dGljIE5TVVJMICp0ZW1wVVJMOworICAgIAorICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwg
XnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3Jh
cnlEaXJlY3RvcnkoKV07CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9j
ZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlm
aWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAg
ICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmll
ciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAg
IHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIg
aXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGVtcFVSTCA9
IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6
WUVTXSByZXRhaW5dOworICAgIH0pOworICAgIAorICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNd
OworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3Rv
cnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5p
bCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRp
cmVjdG9yeSAlQCIsIHVybCk7CisgICAgCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRo
LmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKwogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5TmFtZSkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKQEAg
LTE0NCw2ICsxNzYsNyBAQCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24g
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZwogCiAgICAgY29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IGRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLm1lZGlhQ2Fj
aGVEaXJlY3RvcnkgPSBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogCiAgICAgY29uZmln
dXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGRlZmF1bHRXZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gZGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMDU3Y2EyOTE1MGFmYjQ0YTYyMDkyNDJjNTRlMGVjYmY3
YTgyYjMwZC4uYTExOWY3M2M5YTYxNGVkNjg2NjBjNTg3MjJkZGIyYWE4MmRkN2NlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMjgsNiArMTI4
LDcgQEAgc3RhdGljIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5V2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24oQVBJOjoKICAgICBjb25maWd1cmF0aW9uLmxvY2FsU3Rv
cmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgY29u
ZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLm1l
ZGlhQ2FjaGVEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURp
cmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAg
ICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uZGlza0NhY2hlRGlyZWN0b3J5KCk7CiAKQEAgLTU0NCw2ICs1NDUsMTAgQEAgV2Vi
UHJvY2Vzc1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAg
aWYgKCFwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBh
cmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJh
c2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCisgICAgcGFyYW1ldGVycy5tZWRpYUNhY2hl
RGlyZWN0b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CisgICAg
aWYgKCFwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1l
dGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOworICAgIAogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAg
cGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+Y29va2llU3RvcmFnZURp
cmVjdG9yeSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTgwNmMzMWQ2MjliOGNi
NzIzZWQzZWVlYjA0MzFhZjY5NzU4NmVkYS4uOWMwZjZjYjY4MDAwNjgwZjBjN2JjZjM0M2U0NDc5
ZDY1ODUxOWE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1
ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2Nr
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CkBAIC03Nyw2ICs3OCw3IEBAIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRh
U3RvcmUoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgICwgbV9zZXNzaW9uSUQoV2Vi
Q29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgLCBtX25ldHdvcmtDYWNo
ZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KSkK
ICAgICAsIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24u
YXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkpCisgICAgLCBtX21lZGlhQ2FjaGVEaXJlY3Rvcnko
V1RGTW92ZShjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkpKQogICAgICwgbV93ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkpKQogICAgICwgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUoY29u
ZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSkKICAgICAsIG1fc3RvcmFnZU1h
bmFnZXIoU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ubG9jYWxT
dG9yYWdlRGlyZWN0b3J5KSkpCkBAIC0yNTUsNiArMjU3LDI3IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0
aW9uU2V0CiAKICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKGZldGNoT3B0aW9ucywgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CisgICAgICAgIFN0cmluZ0NhcHR1cmUgbWVkaWFD
YWNoZURpcmVjdG9yeSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSB9OworICAgICAgICAKKyAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgbV9x
dWV1ZS0+ZGlzcGF0Y2goW2ZldGNoT3B0aW9ucywgbWVkaWFDYWNoZURpcmVjdG9yeSwgY2FsbGJh
Y2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbj4+IG9yaWdpbnMgPSBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5z
SW5NZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJlY3Rvcnkuc3RyaW5nKCkpOworICAgICAgICAgICAg
V2Vic2l0ZURhdGEqIHdlYnNpdGVEYXRhID0gbmV3IFdlYnNpdGVEYXRhOworICAgICAgICAgICAg
CisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgICAg
ICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6
RGlza0NhY2hlLCAwIH07CisgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEtPmVudHJpZXMuYXBw
ZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwg
b3JpZ2lucywgd2Vic2l0ZURhdGFdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKCp3ZWJzaXRlRGF0YSkpOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlbGV0ZSB3ZWJzaXRlRGF0YTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBhdXRvIG5ldHdvcmtQcm9jZXNzQWNj
ZXNzVHlwZSA9IGNvbXB1dGVOZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhRmV0Y2goZGF0
YVR5cGVzLCAhaXNQZXJzaXN0ZW50KCkpOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5
cGUgIT0gUHJvY2Vzc0FjY2Vzc1R5cGU6Ok5vbmUpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CkBAIC01MjksNiArNTUyLDE5IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRh
VHlwZXMsIHN0ZDo6Y2hyCiAKICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKSk7CiAKKyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVE
YXRhVHlwZTo6RGlza0NhY2hlKSkgeworICAgICAgICBTdHJpbmdDYXB0dXJlIG1lZGlhQ2FjaGVE
aXJlY3RvcnkgeyBtX21lZGlhQ2FjaGVEaXJlY3RvcnkgfTsKKworICAgICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRj
aChbbW9kaWZpZWRTaW5jZSwgbWVkaWFDYWNoZURpcmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7CisgICAgICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2Fj
aGUobWVkaWFDYWNoZURpcmVjdG9yeS5zdHJpbmcoKSwgbW9kaWZpZWRTaW5jZSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92
ZVBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0K
KwogICAgIGF1dG8gbmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9j
ZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsK
ICAgICBpZiAobmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpO
b25lKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkg
ewpAQCAtNzU1LDcgKzc5MSwyNSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgIH07CiAK
ICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9w
dFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7
Ci0KKyAgICAKKyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlz
a0NhY2hlKSkgeworICAgICAgICBTdHJpbmdDYXB0dXJlIG1lZGlhQ2FjaGVEaXJlY3RvcnkgeyBt
X21lZGlhQ2FjaGVEaXJlY3RvcnkgfTsKKyAgICAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFS
ZWNvcmQgOiBkYXRhUmVjb3JkcykgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmln
aW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQob3Jp
Z2luKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5h
ZGRQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMs
IG1lZGlhQ2FjaGVEaXJlY3RvcnksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAg
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhtZWRp
YUNhY2hlRGlyZWN0b3J5LnN0cmluZygpLCBvcmlnaW5zKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0g
eworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxi
YWNrKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIAogICAgIGF1
dG8gbmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNz
VHlwZUZvckRhdGFSZW1vdmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAo
bmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lKSB7CiAg
ICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKaW5kZXggMTAzZDYyMzgzMWI4NTI0YWY2YzAzNzQ3NmEwYjMzOWU1ZDdhOTIxYS4uYTRh
OWUxMDQzYjc2YTZlYjg4ZGZmM2M3MTExZjRmNjJhNzdlY2Y3NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBA
IC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG5ldHdvcmtDYWNoZURpcmVj
dG9yeTsKICAgICAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAKKyAgICAg
ICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAg
ICAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CkBAIC0xMTcsNiArMTE4LDcg
QEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsK
ICAgICBjb25zdCBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OworICAgIGNvbnN0
IFN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAKICAgICBjb25zdCBTdHJpbmcgbV93ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb25zdCBTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
OGJiZDQ3ZjBmOTRlZDVmYjNkZDNkMjRmYzdlNTg2MjhjYTVkNzU2OC4uZWYwYTE1OGU5ZDAxMDU1
NGNhMzc3YTE0MmJkYTY5YTM0ZDFlNTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HbHlwaFBhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNE
T01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CkBAIC0yOTEsNiArMjky
LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoIXBhcmFtZXRlcnMuYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpzaW5nbGV0b24oKS5zZXRDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkpOwogCisgICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJl
Y3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUNhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSk7CisKICAg
ICBzZXRDYWNoZU1vZGVsKHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXJhbWV0ZXJzLmNhY2hlTW9k
ZWwpKTsKIAogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRl
eCBmNzYxY2U2YjE4ZTQ4MTk0M2QzOGY4MzIyMjNjNDk1YTQ3NjYwNDk2Li5hMDg3ZjkwZTc1NjFk
ZWI1NjQ0ODA2NDgzZmRjMWFhNWIzODliZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMTM1LDYgKzEzNSw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYgcGFyCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1h
bmVudGx5KHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9uSGFu
ZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVy
cy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBl
cm1hbmVudGx5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMubWVk
aWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBQTEFURk9STShJT1Mp
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuY29v
a2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275799</attachid>
            <date>2016-04-06 11:55:34 -0700</date>
            <delta_ts>2016-04-07 11:19:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155783-20160406115536.patch</filename>
            <type>text/plain</type>
            <size>50114</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1OGU0OTNlOGRkNGEz
MDUxNjU5NmY1OWFhYzc1Mjg1ZmQ5OTIyYy4uNjc0YzYwY2EzNDhkOWE2OTEzNzBhYjg5NzJhODgx
ODUwYWIxN2JiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE2LTA0LTA1ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZp
ZWQgbG9jYXRpb24gb24gZGlzayBmb3IgYWxsIEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNo
ZQorICAgICAgICBjYW4gdGhlbiBiZSB1c2VkIHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1
c2VkIGJ5IEFWRm91bmRhdGlvbi4gSXQgaXMgdXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29u
dGVudHMgb2YgdGhlIGNhY2hlIGluIG9yaWdpbnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIg
dGhlIGNhY2hlIGNvbXBsZXRlbHkgb3IgcGFydGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFD
YWNoZSgpIGFuZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNl
Y3VyaXR5T3JpZ2luIGluc3RlYWQgb2YgdGhlIGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJl
cHJlc2VudCBvcmlnaW5zIGluIHRoZSBjYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllck1lZGlhQ2FjaGVEaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVk
LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFkZE1lZGlhRW5naW5lKTogQWRkIG5ldyBjYWNoZSBtZXRob2RzLgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVG9IYXNoKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGly
ZWN0b3J5KTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6
Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4K
KyAgICAgICAgKFdlYkNvcmU6OmFzc2V0Q2FjaGVGb3JQYXRoKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRp
YUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1N5c3RlbUNsb2NrVGltZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKTog
QWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaDoKKwog
MjAxNi0wMy0yMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViR0xdIE5vbi1wb3dlci1vZi10d28gdGV4dHVyZSBvcHRpbWl6YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBmMmM5ZjRlNjFiZGIyMjhiMmViYjAxNDAzNTdjN2NlMTQ2ZTNlNTM3Li40N2IzZGRiMzNk
NTI0ZGI5NjczOGNjMjk2MDYxNDI4YjMzMmJhNWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIg
QEAKKzIwMTYtMDQtMDUgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAg
ICAgIFdoZW4gY2xlYXJpbmcgY2FjaGUsIGFsc28gY2xlYXIgQVZGb3VuZGF0aW9uIGNhY2hlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jbHVkZSB0
aGUgSFRNTE1lZGlhRWxlbWVudCBtZWRpYSBjYWNoZSB3aGVuIGRvaW5nIGRpc2sgY2FjaGUgb3Bl
cmF0aW9ucy4KKyAgICAgICAgQWRkIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIG1lZGlhIGNhY2hl
IGRpcmVjdG9yeS4gVGhpcyBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgYW5kIHRoZSB3ZWIgcHJvY2Vz
cworICAgICAgICB0byBhY2Nlc3MgdGhlIHNhbWUgY2FjaGUuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3Rv
cnkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uKTogQWRkIG1lZGlhIGNhY2hlIGRpcmVj
dG9yeS4KKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KTogQWRk
IG1lZGlhIGNhY2hlIGRpcmVjdG9yeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRN
ZWRpYUNhY2hlRGlyZWN0b3J5KTogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKEFQSTo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOiBNZWRpYSBjYWNoZSBp
cyBpbiB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
Ojp0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKTogRm9yIHJlc291cmNlcyBp
biB0ZW1wb3JhcnkgZGlyZWN0b3J5LgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpk
ZWZhdWx0RGF0YVN0b3JlQ29uZmlndXJhdGlvbik6IEluaXQgbWVkaWEgY2FjaGUgZGlyZWN0b3J5
LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OmxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKTogQWRkIG1lZGlhQ2FjaGVE
aXJlY3RvcnkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQ
cm9jZXNzKTogQWRkIG1lZGlhQ2FjaGVEaXJlY3RvcnkuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZmV0Y2hEYXRhKTogSW1wbGVtZW50IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKTogSW1wbGVtZW50
IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBJ
bml0aWFsaXplIG1lZGlhIGNhY2hlIGRpcmVjdG9yeS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IENvbnN1bWUgc2FuZGJveCBleHRlbnNpb24uCisK
IDIwMTYtMDMtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFVzZSBSZWdpb24gaW5zdGVhZCBvZiBJbnRSZWN0IGluIFBhZ2VDbGllbnQgYW5k
IFdlYlBhZ2VQcm94eSBzZXRWaWV3TmVlZHNEaXNwbGF5IG1ldGhvZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmUyNmRhOTcyYmRmZTlkZDFjMTQyNjA5ZjFj
MTY4MDFmMjIxNmY5My4uNzJlNjk3NDVkYjJlZmFkN2Y5YTc0YjNhNjYyODI5YTFlMmNiZGY4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NTU1LDIxICs1
NTU1LDM2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQo
Ym9vbCBzaG91bGREZWxheSkKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCkuZGVjcmVtZW50
TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogfQotICAgIAogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKK3N0YXRpYyBTdHJp
bmcmIHNoYXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIE1lZGlhUGxheWVyOjpnZXRT
aXRlc0luTWVkaWFDYWNoZShzaXRlcyk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICByZXR1cm4gc2hhcmVkTWVkaWFDYWNo
ZURpcmVjdG9yeTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUo
KQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAg
c2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKIH0KIAotdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK2NvbnN0
IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAg
TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7CisgICAgcmV0dXJuIHNo
YXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKK30KKworSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+PiBIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUo
cGF0aCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlKQoreworICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9k
aWZpZWRTaW5jZSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mIG9yaWdpbnMpCit7CisgICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cmVzZXRNZWRpYUVuZ2luZXMoKQpAQCAtNjE1NCw2ICs2MTY5LDExIEBAIGJvb2wgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdAogICAg
IHJldHVybiBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkubWVkaWFTaG91bGRV
c2VQZXJzaXN0ZW50Q2FjaGUoKTsKIH0KIAorY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBt
ZWRpYUNhY2hlRGlyZWN0b3J5KCk7Cit9CisKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gZG9jdW1lbnQoKS5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAppbmRleCA0NjFkZmU4ZjhiYzg2NWFmMjE5OTIwNmYxNmYxZDU1ZTVkY2YyZTU2Li4xMmNmNTJm
NWE4Y2MzOGE5ZWNmMDA5NDcyMzhjZDY1ZGQwYjhhZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaApAQCAtMzgyLDkgKzM4MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
cml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVkaWEg
Y2FjaGUgbWFuYWdlbWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRTaXRl
c0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIHZvaWQgc2V0TWVkaWFDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlID0geyB9KTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0
IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBz
dGF0aWMgdm9pZCByZXNldE1lZGlhRW5naW5lcygpOwogCiAgICAgYm9vbCBpc1BsYXlpbmcoKSBj
b25zdCB7IHJldHVybiBtX3BsYXlpbmc7IH0KQEAgLTU5OCw2ICs2MDAsNyBAQCBwcml2YXRlOgog
ICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVy
KCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbWVk
aWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIG92ZXJyaWRlOwogICAgIGJvb2wgbWVkaWFQ
bGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25z
dCBTdHJpbmcmIG1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IG92ZXJyaWRl
OwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIEdyYXBoaWNz
RGV2aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVk
aWFQbGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA5OWI5ZDVjYWRlNzNlMGMxZmFkMDlhNzdj
ZjVmNmRiMjk4YzM3YWE1Li5lYjdkNzkyZmRhYzk1ZGI4OGRmMDAxNmE4MjgxODgxMzZlYWY2Mjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwCkBAIC0xNjgsMTMgKzE2OCwxMyBAQCBzdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKICAg
ICBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKICAgICBNZWRpYUVuZ2luZVN1
cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwogICAgIE1lZGlhRW5naW5lU3VwcG9ydHNU
eXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRp
YUNhY2hlIGdldFNpdGVzSW5NZWRpYUNhY2hlOworICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVk
aWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlOwogICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlIGNsZWFyTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNp
dGUgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZTsKKyAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2luczsKICAgICBNZWRpYUVuZ2luZVN1
cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtOwogfTsKIAotc3RhdGljIHZvaWQgYWRk
TWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVk
VHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRp
YUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlh
Q2FjaGVGb3JTaXRlLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lk
IGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBv
cnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5N
ZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKIAogc3Rh
dGljIGJvb2wgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcjsKIApAQCAtMjMyLDEzICsyMzIsMTMgQEAg
c3RhdGljIGNvbnN0IFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBpbnN0YWxsZWRNZWRpYUVu
Z2luZXMoKQogfQogCiBzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2lu
ZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0
ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAgIE1lZGlh
RW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5n
aW5lQ2xlYXJNZWRpYUNhY2hlIGNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlh
Q2FjaGVGb3JTaXRlIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3VwcG9ydHNL
ZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRp
YUNhY2hlIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlIGNs
ZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIGNsZWFy
TWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9y
dHNLZXlTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yKTsKICAgICBBU1NFUlQoZ2V0
U3VwcG9ydGVkVHlwZXMpOwogICAgIEFTU0VSVChzdXBwb3J0c1R5cGUpOwogCi0gICAgbXV0YWJs
ZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVuZChNZWRpYVBsYXllckZhY3Rvcnkg
eyBjb25zdHJ1Y3RvciwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJ
bk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgc3Vw
cG9ydHNLZXlTeXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3Rv
cigpLmFwcGVuZChNZWRpYVBsYXllckZhY3RvcnkgeyBjb25zdHJ1Y3RvciwgZ2V0U3VwcG9ydGVk
VHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKIH0KIAog
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgpCkBAIC0x
MDM0LDMwICsxMDM0LDQwIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQoKQog
ICAgIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKTsKIH0KIAot
dm9pZCBNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mIHNp
dGVzKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIGFkZFRvSGFzaChIYXNoU2V0
PFQ+JiB0b0hhc2gsIEhhc2hTZXQ8VD4mJiBmcm9tSGFzaCkKIHsKKyAgICBpZiAodG9IYXNoLmlz
RW1wdHkoKSkKKyAgICAgICAgdG9IYXNoID0gV1RGTW92ZShmcm9tSGFzaCk7CisgICAgZWxzZQor
ICAgICAgICB0b0hhc2guYWRkKGZyb21IYXNoLmJlZ2luKCksIGZyb21IYXNoLmVuZCgpKTsKK30K
KyAgICAKK0hhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6Om9yaWdp
bnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3Rh
bGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5lLmdldFNpdGVzSW5NZWRp
YUNhY2hlKQorICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGVuZ2luZVNpdGVzOwotICAg
ICAgICBlbmdpbmUuZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAgICAgICBz
aXRlcy5hcHBlbmRWZWN0b3IoZW5naW5lU2l0ZXMpOworICAgICAgICBhdXRvIGVuZ2luZU9yaWdp
bnMgPSBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKKyAgICAgICAgYWRkVG9IYXNo
KG9yaWdpbnMsIFdURk1vdmUoZW5naW5lT3JpZ2lucykpOwogICAgIH0KKyAgICByZXR1cm4gb3Jp
Z2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgTWVk
aWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKICAgICBmb3IgKGF1
dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlmIChlbmdp
bmUuY2xlYXJNZWRpYUNhY2hlKQotICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZSgp
OworICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNpbmNl
KTsKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUo
Y29uc3QgU3RyaW5nJiBzaXRlKQordm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5
T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRN
ZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvclNp
dGUpCi0gICAgICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShzaXRlKTsKKyAg
ICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQorICAgICAgICAgICAg
ZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBs
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaApp
bmRleCA1ZWE1NTg3MTEwNTkzN2VlZTQwNjNlNzI1OTJhMWFlNTU3MTU0NWNiLi5hYzRmODUzMGY0
ZmY0YTlmZDkwN2Y0YzBlY2VkYjVhNjRiYmQwZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQ
cml2YXRlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CkBAIC0yMzYsNiArMjM3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG51bGxwdHI7
IH0KICAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5n
JiwgQXRvbWljU3RyaW5nKiA9IDApIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIG1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtZWRpYVBsYXllck1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9U
cmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CkBAIC0yOTIsOSArMjk0LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRz
VHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiwgY29uc3QgTWVkaWFQbGF5
ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBl
cyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRp
YyBib29sIGlzQXZhaWxhYmxlKCk7Ci0gICAgc3RhdGljIHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2Fj
aGUoVmVjdG9yPFN0cmluZz4mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKTsK
LSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYpOwor
ICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlh
Q2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IG1vZGlmaWVkU2luY2UpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4+Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgYm9vbCBzdXBwb3J0
c0Z1bGxzY3JlZW4oKSBjb25zdDsKQEAgLTYyOSwxMyArNjMxLDEzIEBAIHByaXZhdGU6CiB0eXBl
ZGVmIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVy
ZmFjZT4gKE1lZGlhUGxheWVyKik+IENyZWF0ZU1lZGlhRW5naW5lUGxheWVyOwogdHlwZWRlZiB2
b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2Fz
ZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRz
VHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lR2V0U2l0
ZXNJbk1lZGlhQ2FjaGUpKFZlY3RvcjxTdHJpbmc+Jik7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSkoKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJN
ZWRpYUNhY2hlRm9yU2l0ZSkoY29uc3QgU3RyaW5nJik7Cit0eXBlZGVmIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0
IFN0cmluZyYgcGF0aCk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IG1vZGlmaWVkU2luY2UpOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mKTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhRW5naW5lU3VwcG9ydHNL
ZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KTsKIAogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1lZGlhRW5n
aW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSwKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCBNZWRpYUVu
Z2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2Fj
aGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogdHlwZWRlZiB2b2lk
ICgqTWVkaWFFbmdpbmVSZWdpc3RlcikoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiBjbGFzcyBN
ZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4NTZlN2Rk
Yzg1OTY4NjQ3MzYxOGRhMmExNGQ2Yzc5MC4uMDlhYzhjOTMzZmQyY2NkZDQ1Y2ZlZGNkZTk0YTYw
YTc1ZTg3YzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7IHJldHVybiAw
OyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJp
bmc+JikgeyB9Ci0gICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKSB7IH0KLSAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpIHsgcmV0
dXJuIHsgfTsgfQorICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpIHsgfQorICAgIHZvaWQgY2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+JikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5n
TW9kZShib29sKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0NjhiMDY4
MTEwZWJhMjMyZjJiYzZmZjA2MjZlZmJhMjAuLjY1OWE0N2FlZWQ4NjU1MTJiY2NmOWI0YzcwZDU3
ZmFhMTNmYmI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTg3LDYgKzg3LDEwIEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYXIpOwogCisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVh
ck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4mKTsKKwogICAgIHZvaWQgc2V0QXNzZXQoUmV0YWluUHRyPGlkPik7CiAgICAgdm9pZCB0
cmFja3NDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDE1
NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLmIwNTAzYjczOGE0MDVjZGJi
YWRlOTMxY2IyNjJkNjM3MzlmZTA0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTU4
LDYgKzE1OCw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIp
CiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQogU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yKQogU09GVF9MSU5LX0NMQVNT
KEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0
aW9uLCBBVkFzc2V0Q2FjaGUpCiAKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJQ29udGV4
dCkKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJSW1hZ2UpCkBAIC0yMjcsNiArMjI4LDcg
QEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdpYmxlT3V0
cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU28KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFWRl9DQVBU
SU9OUykKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENhY2hlS2V5
LCBOU1N0cmluZyopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRI
VFRQQ29va2llc0tleSwgTlNTdHJpbmcqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9u
LCBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5LCBOU1N0cmluZyopCiBTT0ZU
X0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2Fj
aGVLZXksIE5TU3RyaW5nKikKQEAgLTI0Miw2ICsyNDQsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihB
VkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCwgTlNT
dHJpbgogCiAjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSBnZXRBVlVSTEFzc2V0SFRU
UENvb2tpZXNLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tz
S2V5IGdldEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkoKQorI2RlZmluZSBB
VlVSTEFzc2V0Q2FjaGVLZXkgZ2V0QVZVUkxBc3NldENhY2hlS2V5KCkKICNkZWZpbmUgQVZVUkxB
c3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSBnZXRBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVu
dENhY2hlS2V5KCkKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0Rpc3BsYXlOYW1l
S2V5IGdldEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSgpCiAjZGVmaW5l
IEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5IGdldEFWT3V0
T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5KCkKQEAgLTQyMiw3ICs0
MjUsOTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rl
ck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIHsKICAgICBpZiAoaXNBdmFpbGFibGUo
KSkKICAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVy
KTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAs
IDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBz
dXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOworfQorCitzdGF0aWMgQVZB
c3NldENhY2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAg
TlNVUkwgKmFzc2V0Q2FjaGVVUkw7CisgICAgCisgICAgaWYgKHBhdGguaXNFbXB0eSgpKQorICAg
ICAgICBhc3NldENhY2hlVVJMID0gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlE
aXJlY3RvcnkoKV0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTWVkaWFDYWNoZSIgaXNE
aXJlY3Rvcnk6WUVTXTsKKyAgICBlbHNlCisgICAgICAgIGFzc2V0Q2FjaGVVUkwgPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIHJldHVybiBbZ2V0
QVZBc3NldENhY2hlQ2xhc3MoKSBhc3NldENhY2hlV2l0aFVSTDphc3NldENhY2hlVVJMXTsKK30K
KworSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAgZm9yIChO
U1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlRm9yUGF0aChwYXRoKSBhbGxLZXlzXSkgeworICAg
ICAgICBVUkwga2V5QXNVUkwgPSBVUkwoVVJMKCksIGtleSk7CisgICAgICAgIGlmIChrZXlBc1VS
TC5pc1ZhbGlkKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGtleUFzVVJMKSk7CisgICAgfQorICAgIHJldHVybiBvcmlnaW5zOworfQorCitzdGF0aWMg
c3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0b1N5c3RlbUNsb2NrVGltZShO
U0RhdGUgKmRhdGUpCit7CisgICAgQVNTRVJUKGRhdGUpOworICAgIHVzaW5nIG5hbWVzcGFjZSBz
dGQ6OmNocm9ubzsKKworICAgIHJldHVybiBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoZHVyYXRp
b25fY2FzdDxzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihkdXJhdGlvbjxkb3VibGU+KGRhdGUudGlt
ZUludGVydmFsU2luY2UxOTcwKSkpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBMT0co
TWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2Fj
aGUoKSIpOworICAgIAorICAgIEFWQXNzZXRDYWNoZSogYXNzZXRDYWNoZSA9IGFzc2V0Q2FjaGVG
b3JQYXRoKHBhdGgpOworICAgIAorICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNzZXRDYWNo
ZSBhbGxLZXlzXSkgeworICAgICAgICBpZiAodG9TeXN0ZW1DbG9ja1RpbWUoW2Fzc2V0Q2FjaGUg
bGFzdE1vZGlmaWVkRGF0ZU9mRW50cnlGb3JLZXk6a2V5XSkgPiBtb2RpZmllZFNpbmNlKQorICAg
ICAgICAgICAgW2Fzc2V0Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICB9CisKKyAg
ICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXTsKKyAgICBOU1VSTCAqYmFzZVVSTCA9IFthc3NldENhY2hlIFVSTF07CisKKyAgICBpZiAo
bW9kaWZpZWRTaW5jZSA8PSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHsg
fSkgeworICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmJhc2VVUkwgZXJyb3I6
bmlsXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBOU0FycmF5ICpwcm9wZXJ0
eUtleXMgPSBAW05TVVJMTmFtZUtleSwgTlNVUkxDb250ZW50TW9kaWZpY2F0aW9uRGF0ZUtleSwg
TlNVUkxJc1JlZ3VsYXJGaWxlS2V5XTsKKyAgICBOU0RpcmVjdG9yeUVudW1lcmF0b3IgKmVudW1l
cmF0b3IgPSBbZmlsZU1hbmFnZXIgZW51bWVyYXRvckF0VVJMOmJhc2VVUkwgaW5jbHVkaW5nUHJv
cGVydGllc0ZvcktleXM6CisgICAgICAgIHByb3BlcnR5S2V5cyBvcHRpb25zOk5TRGlyZWN0b3J5
RW51bWVyYXRpb25Ta2lwc1N1YmRpcmVjdG9yeURlc2NlbmRhbnRzCisgICAgICAgIGVycm9ySGFu
ZGxlcjpuaWxdOworICAgIAorICAgIE5TTXV0YWJsZUFycmF5PE5TVVJMICo+ICp1cmxzVG9EZWxl
dGUgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIHdoaWxlIChOU1VSTCAqZmlsZVVSTCA9
IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSB7CisgICAgICAgIE5TRGljdGlvbmFyeTxOU1N0cmlu
ZyAqLCBpZD4gKmZpbGVBdHRyaWJ1dGVzID0gW2ZpbGVVUkwgcmVzb3VyY2VWYWx1ZXNGb3JLZXlz
OnByb3BlcnR5S2V5cyBlcnJvcjpuaWxdOworICAgIAorICAgICAgICBpZiAoIVtmaWxlQXR0cmli
dXRlc1tOU1VSTE5hbWVLZXldIGhhc1ByZWZpeDpAIkNhY2hlZE1lZGlhLSJdKQorICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoIVtmaWxlQXR0cmlidXRlc1tOU1VS
TElzUmVndWxhckZpbGVLZXldIGJvb2xWYWx1ZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgCisgICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShmaWxlQXR0cmlidXRlc1tOU1VS
TENvbnRlbnRNb2RpZmljYXRpb25EYXRlS2V5XSkgPD0gbW9kaWZpZWRTaW5jZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgW3VybHNUb0RlbGV0ZSBhZGRPYmplY3Q6
ZmlsZVVSTF07CisgICAgfQorICAgIAorICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gdXJsc1Rv
RGVsZXRlKQorICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmZpbGVVUkwgZXJy
b3I6bmlsXTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNl
dDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKK3sKKyAgICBMT0coTWVkaWEsICJN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKCkiKTsKKyAgICBBVkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0
aChwYXRoKTsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2FjaGUgYWxsS2V5c10p
IHsKKyAgICAgICAgVVJMIGtleUFzVVJMID0gVVJMKFVSTCgpLCBrZXkpOworICAgICAgICBpZiAo
a2V5QXNVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAob3JpZ2lucy5jb250YWlucyhT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGtleUFzVVJMKSkpCisgICAgICAgICAgICAgICAgW2Fzc2V0
Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQpAQCAtODc0LDcgKzk2NSwxMSBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpCiAgICAgfQogI2VuZGlmCiAKLSAgICBbb3B0aW9ucyBzZXRPYmpl
Y3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5
ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKV0gZm9yS2V5OkFWVVJMQXNzZXRVc2VzTm9QZXJz
aXN0ZW50Q2FjaGVLZXldOworICAgIGJvb2wgdXNlUGVyc2lzdGVudENhY2hlID0gcGxheWVyKCkt
PmNsaWVudCgpLm1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCk7CisgICAgW29w
dGlvbnMgc2V0T2JqZWN0OkAoIXVzZVBlcnNpc3RlbnRDYWNoZSkgZm9yS2V5OkFWVVJMQXNzZXRV
c2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXldOworICAgIAorICAgIGlmICh1c2VQZXJzaXN0ZW50Q2Fj
aGUpCisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDphc3NldENhY2hlRm9yUGF0aChwbGF5ZXIo
KS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KCkpIGZvcktleTpBVlVS
TEFzc2V0Q2FjaGVLZXldOwogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2FsVVJMKHVy
bCk7CiAgICAgbV9hdkFzc2V0ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5zdGFuY2UoKSBp
bml0V2l0aFVSTDpjb2NvYVVSTCBvcHRpb25zOm9wdGlvbnMuZ2V0KCldKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0LmgKaW5kZXggZjM3M2ZmODU1OTYzNzM5OWJjZWQ0YTNkMmE4NDI4NDQ2ZTE5
YzEyOC4uNTlhM2RhNmYxNWFmODk0OTlhMTJkYTJkNDIwNjVmYzUxOWY0Yjg1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTY4LDkgKzY4LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5z
aXRpdmVIYXNoPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBl
IHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKLSAg
ICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAg
IHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVk
aWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAg
ICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86
OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgp
OwogCiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYjI3MDMxOGQyZGI4NDA1ZmNmMTIzNGRi
NjQ0N2UyMjU5YWIyYzg1NC4uMDlmNmRjODkzN2RiMjU5NTkyZTlkMDkzZTQzYmFlOTcyZTcxYzVm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdp
bmVSZWdpc3RyYXIgcmVnaXN0cmFyCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAgICAgICAg
IHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5p
cXVlPE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0PihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBl
cywKLSAgICAgICAgICAgIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFy
TWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgMCk7CisgICAgICAgICAgICBzdXBw
b3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucywgMCk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpNZWRp
YVBsYXllclByaXZhdGVRVEtpdChNZWRpYVBsYXllciogcGxheWVyKQpAQCAtMTMzOSwyMyArMTMz
OSwzMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgpCiAgICAg
cmV0dXJuIFFUS2l0TGlicmFyeSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpIAorSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3JpZ2luc0lu
TWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgVU5VU0VEX1BBUkFNKHBhdGgp
OworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBOU0Fy
cmF5ICptZWRpYVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUoKTsKICAg
ICBmb3IgKE5TU3RyaW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpCi0gICAgICAgIHNpdGVzLmFwcGVu
ZChzaXRlKTsKKyAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwo
UGFyc2VkVVJMU3RyaW5nLCBTdHJpbmc6OmZyb21VVEY4KFtzaXRlIFVURjhTdHJpbmddKSkpKTsK
KyAgICByZXR1cm4gb3JpZ2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVk
aWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRp
bWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKKyAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisgICAg
VU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwogICAgIHdrUVRDbGVhck1lZGlhRG93
bmxvYWRDYWNoZSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1l
ZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBj
b25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewotICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRl
KCkiKTsKLSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKHNpdGUpOworICAg
IFVOVVNFRF9QQVJBTShwYXRoKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CisgICAgZm9yIChhdXRvJiBvcmln
aW4gOiBvcmlnaW5zKQorICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRl
KG9yaWdpbi0+dG9SYXdTdHJpbmcoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4NmRiNzkyZDI1ZjZmYWFmZmRh
NTFiNmQ1NGMwZTczNDNjYTViNzM2Li45OGRlOWQwNGZhNDJjOWVhM2RiNWZlZTAxZmUzN2YzMDRk
ZjNlNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91
bmRhdGlvblNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3Vu
ZGF0aW9uU1BJLmgKQEAgLTU1LDYgKzU1LDIxIEBAIE5TX0FTU1VNRV9OT05OVUxMX0VORAogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElP
UykKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxBVkZvdW5kYXRpb24v
QVZBc3NldENhY2hlX1ByaXZhdGUuaD4KKyNlbHNlCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgor
QGludGVyZmFjZSBBVkFzc2V0Q2FjaGUgOiBOU09iamVjdAorKyAoQVZBc3NldENhY2hlICopYXNz
ZXRDYWNoZVdpdGhVUkw6KE5TVVJMICopVVJMOworLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICop
VVJMOworLSAoTlNBcnJheSAqKWFsbEtleXM7CistIChOU0RhdGUgKilsYXN0TW9kaWZpZWREYXRl
T2ZFbnRyeUZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKXJlbW92ZUVudHJ5Rm9yS2V5
OihOU1N0cmluZyAqKWtleTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkg
TlNVUkwgKlVSTDsKK0BlbmQKK05TX0FTU1VNRV9OT05OVUxMX0VORAorI2VuZGlmCisKICNpZiBQ
TEFURk9STShJT1MpCiAKICNpZiBIQVZFKEFWS0lUKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCmluZGV4IDhmZjI5ZjdhNjE5ZWFlYTgwNzZjNzY1NzZmZmFiMzliNjgzMmE2
NmYuLjY2ODg1YzcyMWY3ZDFlMGU5ZTM1MmM5N2I2NjhjZWMwNGQxNWZlYzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTY1LDYgKzY1LDggQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIg
PDwgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCB3ZWJTUUxEYXRhYmFz
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1lZGlhQ2FjaGVEaXJl
Y3Rvcnk7CisgICAgZW5jb2RlciA8PCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
OwogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgZW5jb2RlciA8PCBjb29raWVTdG9y
YWdlRGlyZWN0b3J5OwogI2VuZGlmCkBAIC0xNjAsNiArMTYyLDEwIEBAIGJvb2wgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBXZWJQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1l
ZGlhQ2FjaGVEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGU0NjBhOWU0OTFlNDQxZmQyZTRj
ZThkN2QxMmJjNTQ4YmM1OWFkZmIuLmI1ZmZkYWQ4ZmUwYjY5YjE0NmRkZjE2MDZkYjE5YjAyMTJh
ODY0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaApAQCAtNzIsNiArNzIsOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsK
KyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZTsKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIFN0cmluZyBjb29raWVT
dG9yYWdlRGlyZWN0b3J5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNDE2
MDMzZTFhNjBiOTJjYzk1NGI3MWUzZGI2OTJjZGUzOTY5OWZlOS4uZWFhYTZkOTE4MzU3YTEzOTgx
OTJkMTY1YjVhMDEwZGE2ZWZkZDc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAtNTcs
NiArNTcsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKAogUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQogICAgIDogbV9hcHBsaWNhdGlvbkNhY2hl
RGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkpCiAgICAgLCBtX2Rpc2tDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpCisgICAgLCBtX21lZGlhQ2FjaGVEaXJlY3Rvcnko
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAsIG1f
aW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4
ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpCiAgICAgLCBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeShX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpCiAgICAgLCBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxE
YXRhYmFzZURpcmVjdG9yeSgpKQpAQCAtNzksNiArODAsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1f
ZGlza0NhY2hlU2l6ZU92ZXJyaWRlID0gdGhpcy0+bV9kaXNrQ2FjaGVTaXplT3ZlcnJpZGU7CiAg
ICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gdGhpcy0+
bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgY29weS0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0g
dGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNv
cHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3RlZEJ1bmRsZVBhdGg7CiAg
ICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xvY2FsU3RvcmFnZURp
cmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IGQyMmJiODM3Zjk0YjFlM2MyNTE3OWNi
M2JlZmJkYjA5ZTVkMzhkNTYuLjY5M2Y4NjMyODFhNmI3NjgzZTVhMTI4YzA5ZDM3NmJiYmFkNzg4
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNjUsNiArNjUsOSBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29u
c3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rpc2tDYWNoZURpcmVjdG9y
eSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQogCisgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlh
Q2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0K
KyAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIG1lZGlh
Q2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbWVkaWFDYWNoZURpcmVj
dG9yeTsgfQorICAgIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURp
cmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0K
ICAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5n
JiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KIApAQCAtMTAzLDYgKzEwNiw3IEBA
IHByaXZhdGU6CiAKICAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7
CiAgICAgV1RGOjpTdHJpbmcgbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgV1RGOjpTdHJpbmcg
bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1faW5kZXhlZERCRGF0YWJh
c2VEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9pbmplY3RlZEJ1bmRsZVBhdGg7CiAgICAg
V1RGOjpTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAyYTJlYTQx
MDBkNWFmNWY3YzUwYTNiNzc5YjgyZjIxZDE2NTA3ODI3Li4zNmQxNjQ5ZjNjODY3ZDU4ZjAxZWUz
ODNiMmFlY2JmNDdkMzEyZGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTExOCw2ICsxMTgsMTEgQEAgU3RyaW5n
IFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQog
ewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDQ2NWE1ZWU4ZDYxOTcxYmNlMzVh
ZGQ3ZjVlMWY5NjNhMjZjYmIwYTUuLmEwMzc1NTM4ZTg3NTdjNzFhNWM0NzJmODI4NjQ0MmQwNThi
NTgxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJp
bmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1
bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOwpAQCAtNjAsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIFdlYnNp
dGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uKTsKICAg
ICBXZWJzaXRlRGF0YVN0b3JlKCk7CiAKKyAgICBzdGF0aWMgU3RyaW5nIHRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKICAg
ICBzdGF0aWMgU3RyaW5nIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAgICAgc3RhdGljIFN0cmluZyB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDgyMzFhYmJjNjIwZWEz
YjAxMTY1NTRkY2M0YzBmYjE5ZDRiZjI3ZDIuLmVkYTRjMTQ5MjQ0NDY4NjQzNjViNjk4YjU1ZTVh
MzcxNjc4NzRkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC01Nyw2ICs1Nywx
MSBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpCiAgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJO
ZXR3b3JrQ2FjaGUiKTsKIH0KIAorU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRp
YUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSIpOworfQorCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOwpA
QCAtODIsNiArODcsMzMgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKICAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKIH0K
IAorU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsKKyAgICAK
KyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1cmwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCldOworICAgICAgICBp
ZiAoIXVybCkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIAorICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAg
ICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxl
XS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQor
ICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNz
SW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHRlbXBVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICB9KTsKKyAg
ICAKKyAgICBOU1VSTCAqdXJsID0gW3RlbXBVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBpZiAoIVtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlh
dGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCisgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOworICAgIAor
ICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247
Cit9CisKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7CiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CkBAIC0xNDQsNiArMTc2LDcgQEAgV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVDb25maWcKIAogICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSA9IGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJh
dGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKTsKIAogICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkgPSBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0
aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDA1
N2NhMjkxNTBhZmI0NGE2MjA5MjQyYzU0ZTBlY2JmN2E4MmIzMGQuLmExMTlmNzNjOWE2MTRlZDY4
NjYwYzU4NzIyZGRiMmFhODJkZDdjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcApAQCAtMTI4LDYgKzEyOCw3IEBAIHN0YXRpYyBXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uIGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQ
STo6CiAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlv
bi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0
aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
bWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0Nh
Y2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRpc2tDYWNoZURpcmVjdG9y
eSgpOwogCkBAIC01NDQsNiArNTQ1LDEwIEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIGlmICghcGFyYW1ldGVycy53ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGly
ZWN0b3J5LCBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKIAorICAgIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlv
bi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpOworICAgIGlmICghcGFyYW1ldGVycy5tZWRpYUNhY2hl
RGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSwg
cGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAKICNp
ZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURp
cmVjdG9yeSA9IHRoaXMtPmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKTsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCmluZGV4IDE4MDZjMzFkNjI5YjhjYjcyM2VkM2VlZWIwNDMxYWY2OTc1ODZlZGEu
LjljMGY2Y2I2ODAwMDY4MGYwYzdiY2YzNDNlNDQ3OWQ2NTg1MTlhNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvT3JpZ2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNzcsNiArNzgsNyBA
QCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24gY29uZmln
dXJhdGlvbikKICAgICAsIG1fc2Vzc2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKQogICAgICwgbV9uZXR3b3JrQ2FjaGVEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1
cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSkpCiAgICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnkp
KQorICAgICwgbV9tZWRpYUNhY2hlRGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJhdGlvbi5tZWRp
YUNhY2hlRGlyZWN0b3J5KSkKICAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV1RGTW92
ZShjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KSkKICAgICAsIG1fbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSkpCiAgICAgLCBtX3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGUoV1RGTW92ZShjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSkpKQpAQCAtMjU1
LDYgKzI1NywyNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldAogCiAgICAgUmVmUHRyPENhbGxi
YWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYobmV3IENhbGxiYWNr
QWdncmVnYXRvcihmZXRjaE9wdGlvbnMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAK
KyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkg
eworICAgICAgICBTdHJpbmdDYXB0dXJlIG1lZGlhQ2FjaGVEaXJlY3RvcnkgeyBtX21lZGlhQ2Fj
aGVEaXJlY3RvcnkgfTsKKyAgICAgICAgCisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRk
UGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlv
bnMsIG1lZGlhQ2FjaGVEaXJlY3RvcnksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAg
ICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zID0gV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6b3JpZ2luc0luTWVkaWFDYWNoZShtZWRpYUNhY2hlRGly
ZWN0b3J5LnN0cmluZygpKTsKKyAgICAgICAgICAgIFdlYnNpdGVEYXRhKiB3ZWJzaXRlRGF0YSA9
IG5ldyBXZWJzaXRlRGF0YTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChhdXRvJiBv
cmlnaW4gOiBvcmlnaW5zKSB7CisgICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVu
dHJ5IHsgb3JpZ2luLCBXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9OworICAgICAgICAg
ICAgICAgIHdlYnNpdGVEYXRhLT5lbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3IsIG9yaWdpbnMsIHdlYnNpdGVEYXRhXSB7Cisg
ICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2so
V1RGTW92ZSgqd2Vic2l0ZURhdGEpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBkZWxldGUgd2Vic2l0ZURhdGE7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAg
fQorCiAgICAgYXV0byBuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgPSBjb21wdXRlTmV0d29ya1By
b2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YUZldGNoKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsK
ICAgICBpZiAobmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpO
b25lKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkg
ewpAQCAtNTI5LDYgKzU1MiwxOSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEo
T3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNocgogCiAgICAgUmVm
UHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYobmV3
IENhbGxiYWNrQWdncmVnYXRvcihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogCisgICAg
aWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKKyAg
ICAgICAgU3RyaW5nQ2FwdHVyZSBtZWRpYUNhY2hlRGlyZWN0b3J5IHsgbV9tZWRpYUNhY2hlRGly
ZWN0b3J5IH07CisKKyAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJh
Y2soKTsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2luY2UsIG1lZGlhQ2Fj
aGVEaXJlY3RvcnksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJlY3Rvcnkuc3Ry
aW5nKCksIG1vZGlmaWVkU2luY2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBXVEY6OlJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBhdXRvIG5ldHdvcmtQcm9jZXNz
QWNjZXNzVHlwZSA9IGNvbXB1dGVOZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhUmVtb3Zh
bChkYXRhVHlwZXMsICFpc1BlcnNpc3RlbnQoKSk7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzQWNj
ZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9uZSkgewogICAgICAgICBmb3IgKGF1dG8m
IHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKQEAgLTc1NSw3ICs3OTEsMjUgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgY29uc3QgVmUKICAgICB9OwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVn
YXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYobmV3IENhbGxiYWNrQWdncmVnYXRv
cihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwotCisgICAgCisgICAgaWYgKGRhdGFUeXBl
cy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKKyAgICAgICAgU3RyaW5n
Q2FwdHVyZSBtZWRpYUNhY2hlRGlyZWN0b3J5IHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5IH07Cisg
ICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKKyAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQor
ICAgICAgICAgICAgICAgIG9yaWdpbnMuYWRkKG9yaWdpbik7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CisgICAg
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFtvcmlnaW5zLCBtZWRpYUNhY2hlRGlyZWN0b3J5LCBjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMobWVkaWFDYWNoZURpcmVjdG9yeS5zdHJpbmcoKSwg
b3JpZ2lucyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgIH0pOworICAgIH0KKyAgICAKICAgICBhdXRvIG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlw
ZSA9IGNvbXB1dGVOZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhUmVtb3ZhbChkYXRhVHlw
ZXMsICFpc1BlcnNpc3RlbnQoKSk7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSAh
PSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9uZSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQ
b29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDEwM2Q2MjM4MzFiODUy
NGFmNmMwMzc0NzZhMGIzMzllNWQ3YTkyMWEuLmE0YTllMTA0M2I3NmE2ZWI4OGRmZjNjNzExMWY0
ZjYyYTc3ZWNmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyBhcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogCisgICAgICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0
b3J5OwogICAgICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgICAgIFN0
cmluZyBsb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyBtZWRpYUtleXNTdG9y
YWdlRGlyZWN0b3J5OwpAQCAtMTE3LDYgKzExOCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBT
dHJpbmcgbV9uZXR3b3JrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29uc3QgU3RyaW5nIG1fYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeTsKKyAgICBjb25zdCBTdHJpbmcgbV9tZWRpYUNhY2hlRGlyZWN0
b3J5OwogCiAgICAgY29uc3QgU3RyaW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAg
Y29uc3QgU3RyaW5nIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDhiYmQ0N2YwZjk0ZWQ1ZmIzZGQzZDI0ZmM3
ZTU4NjI4Y2E1ZDc1NjguLmVmMGExNThlOWQwMTA1NTRjYTM3N2ExNDJiZGE2OWEzNGQxZTUzYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNzYsNiArNzYs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR2x5cGhQYWdlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0
YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9NV2luZG93Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9MYW5ndWFnZS5oPgpAQCAtMjkxLDYgKzI5Miw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0
eSgpKQogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2luZ2xldG9uKCkuc2V0Q2Fj
aGVEaXJlY3RvcnkocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KTsKIAorICAg
IGlmICghcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAg
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShwYXJhbWV0
ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkpOworCiAgICAgc2V0Q2FjaGVNb2RlbChzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocGFyYW1ldGVycy5jYWNoZU1vZGVsKSk7CiAKICAgICBpZiAoIXBhcmFtZXRl
cnMubGFuZ3VhZ2VzLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZjc2MWNlNmIxOGU0ODE5NDNkMzhmODMy
MjIzYzQ5NWE0NzY2MDQ5Ni4uYTA4N2Y5MGU3NTYxZGViNTY0NDgwNjQ4M2ZkYzFhYTViMzg5YmQy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KQEAgLTEzNSw2ICsxMzUsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5p
dGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYmIHBhcgogICAg
IFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLnVpUHJvY2Vz
c0J1bmRsZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRs
eShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLm1lZGlh
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLm1lZGlhS2V5U3RvcmFnZURpcmVjdG9yeUV4dGVu
c2lvbkhhbmRsZSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFNhbmRib3hFeHRlbnNpb246OmNv
bnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275900</attachid>
            <date>2016-04-07 11:19:51 -0700</date>
            <delta_ts>2016-04-07 15:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155783-20160407111954.patch</filename>
            <type>text/plain</type>
            <size>54196</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1OGU0OTNlOGRkNGEz
MDUxNjU5NmY1OWFhYzc1Mjg1ZmQ5OTIyYy4uOWM4OTdiNTU5MTQ5YjczNzRmZjRjZTYxNjcxOGNl
MjY2NjkxMjBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE2LTA0LTA3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZp
ZWQgbG9jYXRpb24gb24gZGlzayBmb3IgYWxsIEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNo
ZQorICAgICAgICBjYW4gdGhlbiBiZSB1c2VkIHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1
c2VkIGJ5IEFWRm91bmRhdGlvbi4gSXQgaXMgdXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29u
dGVudHMgb2YgdGhlIGNhY2hlIGluIG9yaWdpbnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIg
dGhlIGNhY2hlIGNvbXBsZXRlbHkgb3IgcGFydGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFD
YWNoZSgpIGFuZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNl
Y3VyaXR5T3JpZ2luIGluc3RlYWQgb2YgdGhlIGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJl
cHJlc2VudCBvcmlnaW5zIGluIHRoZSBjYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllck1lZGlhQ2FjaGVEaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVk
LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFkZE1lZGlhRW5naW5lKTogQWRkIG5ldyBjYWNoZSBtZXRob2RzLgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVG9IYXNoKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGly
ZWN0b3J5KTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6
Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4K
KyAgICAgICAgKFdlYkNvcmU6OmFzc2V0Q2FjaGVGb3JQYXRoKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRp
YUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1N5c3RlbUNsb2NrVGltZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKTog
QWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaDoKKwog
MjAxNi0wMy0yMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViR0xdIE5vbi1wb3dlci1vZi10d28gdGV4dHVyZSBvcHRpbWl6YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBmMmM5ZjRlNjFiZGIyMjhiMmViYjAxNDAzNTdjN2NlMTQ2ZTNlNTM3Li4zY2EzZTE0MTUy
YTNmZGMwZjMyZGQ1NGYzMDcwM2YzNDgwNWU2OTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTYtMDQtMDcgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAg
ICAgIFdoZW4gY2xlYXJpbmcgY2FjaGUsIGFsc28gY2xlYXIgQVZGb3VuZGF0aW9uIGNhY2hlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jbHVkZSB0
aGUgSFRNTE1lZGlhRWxlbWVudCBtZWRpYSBjYWNoZSB3aGVuIGRvaW5nIGRpc2sgY2FjaGUgb3Bl
cmF0aW9ucy4KKyAgICAgICAgQWRkIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIG1lZGlhIGNhY2hl
IGRpcmVjdG9yeS4gVGhpcyBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgYW5kIHRoZSB3ZWIgcHJvY2Vz
cworICAgICAgICB0byBhY2Nlc3MgdGhlIHNhbWUgY2FjaGUuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3Rv
cnkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMpOgorICAgICAgICAoQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IEFkZCBtZWRpYSBj
YWNoZSBkaXJlY3RvcnkuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6
Y29weSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlZmF1bHQgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogTWVk
aWEgY2FjaGUgaXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6IEZvciBy
ZXNvdXJjZXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBJbml0IG1lZGlhIGNhY2hl
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVm
YXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKTogQWRkIG1lZGlhQ2FjaGVEaXJlY3RvcnkuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKTogQWRkIG1lZGlhQ2FjaGVEaXJlY3Rvcnku
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKTogSW1wbGVtZW50IGZvciBtZWRpYUNhY2hlRGlyZWN0
b3J5LgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKTogSW1w
bGVtZW50IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3MpOiBJbml0aWFsaXplIG1lZGlhIGNhY2hlIGRpcmVjdG9yeS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IENvbnN1bWUgc2FuZGJveCBleHRlbnNp
b24uCisKIDIwMTYtMDMtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVzZSBSZWdpb24gaW5zdGVhZCBvZiBJbnRSZWN0IGluIFBhZ2VDbGll
bnQgYW5kIFdlYlBhZ2VQcm94eSBzZXRWaWV3TmVlZHNEaXNwbGF5IG1ldGhvZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmUyNmRhOTcyYmRmZTlkZDFjMTQy
NjA5ZjFjMTY4MDFmMjIxNmY5My4uNzJlNjk3NDVkYjJlZmFkN2Y5YTc0YjNhNjYyODI5YTFlMmNi
ZGY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NTU1
LDIxICs1NTU1LDM2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2Fk
RXZlbnQoYm9vbCBzaG91bGREZWxheSkKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCkuZGVj
cmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogfQotICAgIAogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKK3N0YXRp
YyBTdHJpbmcmIHNoYXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIE1lZGlhUGxheWVy
OjpnZXRTaXRlc0luTWVkaWFDYWNoZShzaXRlcyk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICByZXR1cm4gc2hhcmVkTWVk
aWFDYWNoZURpcmVjdG9yeTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlh
Q2FjaGUoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCk7
CisgICAgc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKIH0KIAotdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkK
K2NvbnN0IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7
Ci0gICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7CisgICAgcmV0
dXJuIHNoYXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKK30KKworSGFzaFNldDxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiBIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlh
Q2FjaGUocGF0aCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hl
KGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtb2RpZmllZFNpbmNlKQoreworICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUocGF0
aCwgbW9kaWZpZWRTaW5jZSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCit7CisgICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVzZXRNZWRpYUVuZ2luZXMoKQpAQCAtNjE1NCw2ICs2MTY5LDExIEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25z
dAogICAgIHJldHVybiBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkubWVkaWFT
aG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKIH0KIAorY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJl
dHVybiBtZWRpYUNhY2hlRGlyZWN0b3J5KCk7Cit9CisKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCA0NjFkZmU4ZjhiYzg2NWFmMjE5OTIwNmYxNmYxZDU1ZTVkY2YyZTU2Li4x
MmNmNTJmNWE4Y2MzOGE5ZWNmMDA5NDcyMzhjZDY1ZGQwYjhhZGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzgyLDkgKzM4MiwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwogCiAgICAgLy8g
TWVkaWEgY2FjaGUgbWFuYWdlbWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBn
ZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWVkaWFDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlID0geyB9KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
KGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsK
ICAgICBzdGF0aWMgdm9pZCByZXNldE1lZGlhRW5naW5lcygpOwogCiAgICAgYm9vbCBpc1BsYXlp
bmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXlpbmc7IH0KQEAgLTU5OCw2ICs2MDAsNyBAQCBwcml2
YXRlOgogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBsYXllckNhY2hlZFJlc291cmNl
TG9hZGVyKCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
cj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIG92ZXJyaWRlOwogICAgIGJvb2wg
bWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBjb25zdCBTdHJpbmcmIG1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIEdy
YXBoaWNzRGV2aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29u
c3QgTWVkaWFQbGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA5OWI5ZDVjYWRlNzNlMGMxZmFk
MDlhNzdjZjVmNmRiMjk4YzM3YWE1Li5lYjdkNzkyZmRhYzk1ZGI4OGRmMDAxNmE4MjgxODgxMzZl
YWY2MjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCkBAIC0xNjgsMTMgKzE2OCwxMyBAQCBzdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5
IHsKICAgICBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKICAgICBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwogICAgIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVz
SW5NZWRpYUNhY2hlIGdldFNpdGVzSW5NZWRpYUNhY2hlOworICAgIE1lZGlhRW5naW5lT3JpZ2lu
c0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlOwogICAgIE1lZGlhRW5naW5lQ2xlYXJN
ZWRpYUNhY2hlIGNsZWFyTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZTsKKyAgICBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2luczsKICAgICBNZWRpYUVu
Z2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtOwogfTsKIAotc3RhdGljIHZv
aWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3Vw
cG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZUdldFNpdGVz
SW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGVGb3JTaXRlLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRp
YyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2lu
ZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmln
aW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVD
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsK
IAogc3RhdGljIGJvb2wgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcjsKIApAQCAtMjMyLDEzICsyMzIs
MTMgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBpbnN0YWxsZWRN
ZWRpYUVuZ2luZXMoKQogfQogCiBzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRp
YUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRT
dXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAg
IE1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlIGNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGVGb3JTaXRlIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3Vw
cG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAgTWVkaWFFbmdpbmVPcmlnaW5z
SW5NZWRpYUNhY2hlIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlIGNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0g
c3VwcG9ydHNLZXlTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yKTsKICAgICBBU1NF
UlQoZ2V0U3VwcG9ydGVkVHlwZXMpOwogICAgIEFTU0VSVChzdXBwb3J0c1R5cGUpOwogCi0gICAg
bXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVuZChNZWRpYVBsYXllckZh
Y3RvcnkgeyBjb25zdHJ1Y3RvciwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgZ2V0
U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0
ZSwgc3VwcG9ydHNLZXlTeXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5l
c1ZlY3RvcigpLmFwcGVuZChNZWRpYVBsYXllckZhY3RvcnkgeyBjb25zdHJ1Y3RvciwgZ2V0U3Vw
cG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRp
YUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsK
IH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgp
CkBAIC0xMDM0LDMwICsxMDM0LDQwIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmly
ZWQoKQogICAgIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKTsK
IH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmlu
Zz4mIHNpdGVzKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIGFkZFRvSGFzaChI
YXNoU2V0PFQ+JiB0b0hhc2gsIEhhc2hTZXQ8VD4mJiBmcm9tSGFzaCkKIHsKKyAgICBpZiAodG9I
YXNoLmlzRW1wdHkoKSkKKyAgICAgICAgdG9IYXNoID0gV1RGTW92ZShmcm9tSGFzaCk7CisgICAg
ZWxzZQorICAgICAgICB0b0hhc2guYWRkKGZyb21IYXNoLmJlZ2luKCksIGZyb21IYXNoLmVuZCgp
KTsKK30KKyAgICAKK0hhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6
Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6
IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5lLmdldFNpdGVz
SW5NZWRpYUNhY2hlKQorICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGVuZ2luZVNpdGVz
OwotICAgICAgICBlbmdpbmUuZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAg
ICAgICBzaXRlcy5hcHBlbmRWZWN0b3IoZW5naW5lU2l0ZXMpOworICAgICAgICBhdXRvIGVuZ2lu
ZU9yaWdpbnMgPSBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKKyAgICAgICAgYWRk
VG9IYXNoKG9yaWdpbnMsIFdURk1vdmUoZW5naW5lT3JpZ2lucykpOwogICAgIH0KKyAgICByZXR1
cm4gb3JpZ2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCkKK3Zv
aWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKICAgICBm
b3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlm
IChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlKQotICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFD
YWNoZSgpOworICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZv
clNpdGUoY29uc3QgU3RyaW5nJiBzaXRlKQordm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0
YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUpCi0gICAgICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShzaXRl
KTsKKyAgICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQorICAgICAg
ICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAppbmRleCA1ZWE1NTg3MTEwNTkzN2VlZTQwNjNlNzI1OTJhMWFlNTU3MTU0NWNiLi5hYzRm
ODUzMGY0ZmY0YTlmZDkwN2Y0YzBlY2VkYjVhNjRiYmQwZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVv
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CkBAIC0yMzYs
NiArMjM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG51
bGxwdHI7IH0KICAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nJiwgQXRvbWljU3RyaW5nKiA9IDApIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIG1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtZWRpYVBsYXllck1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRk
QXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CkBAIC0yOTIsOSAr
Mjk0LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiwgY29uc3QgTWVk
aWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAg
IHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0gICAgc3RhdGljIHZvaWQgZ2V0U2l0ZXNJbk1l
ZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2Fj
aGUoKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJ
bk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgYm9vbCBz
dXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsKQEAgLTYyOSwxMyArNjMxLDEzIEBAIHByaXZhdGU6
CiB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+IENyZWF0ZU1lZGlhRW5naW5lUGxheWVyOwogdHlw
ZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
R2V0U2l0ZXNJbk1lZGlhQ2FjaGUpKFZlY3RvcjxTdHJpbmc+Jik7Ci10eXBlZGVmIHZvaWQgKCpN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSkoKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
Q2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSkoY29uc3QgU3RyaW5nJik7Cit0eXBlZGVmIEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUp
KGNvbnN0IFN0cmluZyYgcGF0aCk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhRW5naW5lU3Vw
cG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKIAogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1l
ZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1
cHBvcnRzVHlwZSwKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1l
ZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogdHlwZWRl
ZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RlcikoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiBj
bGFzcyBNZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4
NTZlN2RkYzg1OTY4NjQ3MzYxOGRhMmExNGQ2Yzc5MC4uMDlhYzhjOTMzZmQyY2NkZDQ1Y2ZlZGNk
ZTk0YTYwYTc1ZTg3YzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBj
b25zdCB7IHJldHVybiAwOyB9CiAKLSAgICB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3Rv
cjxTdHJpbmc+JikgeyB9Ci0gICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKSB7IH0KLSAgICB2b2lk
IGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYp
IHsgcmV0dXJuIHsgfTsgfQorICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpIHsgfQorICAgIHZvaWQgY2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+JikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUJy
b3dzaW5nTW9kZShib29sKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0
NjhiMDY4MTEwZWJhMjMyZjJiYzZmZjA2MjZlZmJhMjAuLjY1OWE0N2FlZWQ4NjU1MTJiY2NmOWI0
YzcwZDU3ZmFhMTNmYmI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTg3LDYgKzg3LDEw
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFF
bmdpbmVSZWdpc3RyYXIpOwogCisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mKTsKKwogICAgIHZvaWQgc2V0QXNzZXQoUmV0YWluUHRyPGlkPik7CiAgICAg
dm9pZCB0cmFja3NDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDE1NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLmIwNTAzYjczOGE0
MDVjZGJiYWRlOTMxY2IyNjJkNjM3MzlmZTA0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtMTU4LDYgKzE1OCw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVy
TGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQogU09GVF9M
SU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yKQogU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVkFzc2V0Q2FjaGUpCiAKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJ
Q29udGV4dCkKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJSW1hZ2UpCkBAIC0yMjcsNiAr
MjI4LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU28KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFW
Rl9DQVBUSU9OUykKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENh
Y2hlS2V5LCBOU1N0cmluZyopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJM
QXNzZXRIVFRQQ29va2llc0tleSwgTlNTdHJpbmcqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5LCBOU1N0cmluZyop
CiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0
ZW50Q2FjaGVLZXksIE5TU3RyaW5nKikKQEAgLTI0Miw2ICsyNDQsNyBAQCBTT0ZUX0xJTktfUE9J
TlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVu
dCwgTlNTdHJpbgogCiAjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSBnZXRBVlVSTEFz
c2V0SFRUUENvb2tpZXNLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRl
VHJhY2tzS2V5IGdldEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkoKQorI2Rl
ZmluZSBBVlVSTEFzc2V0Q2FjaGVLZXkgZ2V0QVZVUkxBc3NldENhY2hlS2V5KCkKICNkZWZpbmUg
QVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSBnZXRBVlVSTEFzc2V0VXNlc05vUGVy
c2lzdGVudENhY2hlS2V5KCkKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0Rpc3Bs
YXlOYW1lS2V5IGdldEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSgpCiAj
ZGVmaW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5IGdl
dEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5KCkKQEAgLTQy
Miw3ICs0MjUsOTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIHsKICAgICBpZiAoaXNBdmFp
bGFibGUoKSkKICAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4o
cGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUs
IDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwg
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOworfQorCitzdGF0
aWMgQVZBc3NldENhY2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgTlNVUkwgKmFzc2V0Q2FjaGVVUkw7CisgICAgCisgICAgaWYgKHBhdGguaXNFbXB0eSgp
KQorICAgICAgICBhc3NldENhY2hlVVJMID0gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1w
b3JhcnlEaXJlY3RvcnkoKV0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTWVkaWFDYWNo
ZSIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBlbHNlCisgICAgICAgIGFzc2V0Q2FjaGVVUkwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIHJldHVy
biBbZ2V0QVZBc3NldENhY2hlQ2xhc3MoKSBhc3NldENhY2hlV2l0aFVSTDphc3NldENhY2hlVVJM
XTsKK30KKworSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAg
Zm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlRm9yUGF0aChwYXRoKSBhbGxLZXlzXSkg
eworICAgICAgICBVUkwga2V5QXNVUkwgPSBVUkwoVVJMKCksIGtleSk7CisgICAgICAgIGlmIChr
ZXlBc1VSTC5pc1ZhbGlkKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGtleUFzVVJMKSk7CisgICAgfQorICAgIHJldHVybiBvcmlnaW5zOworfQorCitz
dGF0aWMgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0b1N5c3RlbUNsb2Nr
VGltZShOU0RhdGUgKmRhdGUpCit7CisgICAgQVNTRVJUKGRhdGUpOworICAgIHVzaW5nIG5hbWVz
cGFjZSBzdGQ6OmNocm9ubzsKKworICAgIHJldHVybiBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQo
ZHVyYXRpb25fY2FzdDxzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihkdXJhdGlvbjxkb3VibGU+KGRh
dGUudGltZUludGVydmFsU2luY2UxOTcwKSkpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1l
ZGlhQ2FjaGUoKSIpOworICAgIAorICAgIEFWQXNzZXRDYWNoZSogYXNzZXRDYWNoZSA9IGFzc2V0
Q2FjaGVGb3JQYXRoKHBhdGgpOworICAgIAorICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNz
ZXRDYWNoZSBhbGxLZXlzXSkgeworICAgICAgICBpZiAodG9TeXN0ZW1DbG9ja1RpbWUoW2Fzc2V0
Q2FjaGUgbGFzdE1vZGlmaWVkRGF0ZU9mRW50cnlGb3JLZXk6a2V5XSkgPiBtb2RpZmllZFNpbmNl
KQorICAgICAgICAgICAgW2Fzc2V0Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICB9
CisKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXTsKKyAgICBOU1VSTCAqYmFzZVVSTCA9IFthc3NldENhY2hlIFVSTF07CisKKyAg
ICBpZiAobW9kaWZpZWRTaW5jZSA8PSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IHsgfSkgeworICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmJhc2VVUkwg
ZXJyb3I6bmlsXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBOU0FycmF5ICpw
cm9wZXJ0eUtleXMgPSBAW05TVVJMTmFtZUtleSwgTlNVUkxDb250ZW50TW9kaWZpY2F0aW9uRGF0
ZUtleSwgTlNVUkxJc1JlZ3VsYXJGaWxlS2V5XTsKKyAgICBOU0RpcmVjdG9yeUVudW1lcmF0b3Ig
KmVudW1lcmF0b3IgPSBbZmlsZU1hbmFnZXIgZW51bWVyYXRvckF0VVJMOmJhc2VVUkwgaW5jbHVk
aW5nUHJvcGVydGllc0ZvcktleXM6CisgICAgICAgIHByb3BlcnR5S2V5cyBvcHRpb25zOk5TRGly
ZWN0b3J5RW51bWVyYXRpb25Ta2lwc1N1YmRpcmVjdG9yeURlc2NlbmRhbnRzCisgICAgICAgIGVy
cm9ySGFuZGxlcjpuaWxdOworICAgIAorICAgIE5TTXV0YWJsZUFycmF5PE5TVVJMICo+ICp1cmxz
VG9EZWxldGUgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIHdoaWxlIChOU1VSTCAqZmls
ZVVSTCA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSB7CisgICAgICAgIE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBpZD4gKmZpbGVBdHRyaWJ1dGVzID0gW2ZpbGVVUkwgcmVzb3VyY2VWYWx1ZXNG
b3JLZXlzOnByb3BlcnR5S2V5cyBlcnJvcjpuaWxdOworICAgIAorICAgICAgICBpZiAoIVtmaWxl
QXR0cmlidXRlc1tOU1VSTE5hbWVLZXldIGhhc1ByZWZpeDpAIkNhY2hlZE1lZGlhLSJdKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoIVtmaWxlQXR0cmlidXRl
c1tOU1VSTElzUmVndWxhckZpbGVLZXldIGJvb2xWYWx1ZV0pCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShmaWxlQXR0cmlidXRl
c1tOU1VSTENvbnRlbnRNb2RpZmljYXRpb25EYXRlS2V5XSkgPD0gbW9kaWZpZWRTaW5jZSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgW3VybHNUb0RlbGV0ZSBhZGRP
YmplY3Q6ZmlsZVVSTF07CisgICAgfQorICAgIAorICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4g
dXJsc1RvRGVsZXRlKQorICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmZpbGVV
UkwgZXJyb3I6bmlsXTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKK3sKKyAgICBMT0coTWVk
aWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKCkiKTsKKyAgICBBVkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hl
Rm9yUGF0aChwYXRoKTsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2FjaGUgYWxs
S2V5c10pIHsKKyAgICAgICAgVVJMIGtleUFzVVJMID0gVVJMKFVSTCgpLCBrZXkpOworICAgICAg
ICBpZiAoa2V5QXNVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAob3JpZ2lucy5jb250
YWlucyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGtleUFzVVJMKSkpCisgICAgICAgICAgICAgICAg
W2Fzc2V0Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICAgICAgfQorICAgIH0KIH0K
IAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQpAQCAtODc0LDcgKzk2NSwxMSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRG
b3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgfQogI2VuZGlmCiAKLSAgICBbb3B0aW9ucyBz
ZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFwbGF5ZXIoKS0+Y2xpZW50KCkubWVk
aWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKV0gZm9yS2V5OkFWVVJMQXNzZXRVc2Vz
Tm9QZXJzaXN0ZW50Q2FjaGVLZXldOworICAgIGJvb2wgdXNlUGVyc2lzdGVudENhY2hlID0gcGxh
eWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCk7Cisg
ICAgW29wdGlvbnMgc2V0T2JqZWN0OkAoIXVzZVBlcnNpc3RlbnRDYWNoZSkgZm9yS2V5OkFWVVJM
QXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXldOworICAgIAorICAgIGlmICh1c2VQZXJzaXN0
ZW50Q2FjaGUpCisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDphc3NldENhY2hlRm9yUGF0aChw
bGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KCkpIGZvcktl
eTpBVlVSTEFzc2V0Q2FjaGVLZXldOwogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2Fs
VVJMKHVybCk7CiAgICAgbV9hdkFzc2V0ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5zdGFu
Y2UoKSBpbml0V2l0aFVSTDpjb2NvYVVSTCBvcHRpb25zOm9wdGlvbnMuZ2V0KCldKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0LmgKaW5kZXggZjM3M2ZmODU1OTYzNzM5OWJjZWQ0YTNkMmE4NDI4
NDQ2ZTE5YzEyOC4uNTlhM2RhNmYxNWFmODk0OTlhMTJkYTJkNDIwNjVmYzUxOWY0Yjg1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTY4LDkgKzY4LDkgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7
CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYp
OwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHN0YXRpYyB2b2lkIGNs
ZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcm
KTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0
aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWls
YWJsZSgpOwogCiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYjI3MDMxOGQyZGI4NDA1ZmNm
MTIzNGRiNjQ0N2UyMjU5YWIyYzg1NC4uMDlmNmRjODkzN2RiMjU5NTkyZTlkMDkzZTQzYmFlOTcy
ZTcxYzVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTc1LDcgKzE3NSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAg
ICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0PihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0
ZWRUeXBlcywKLSAgICAgICAgICAgIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgMCk7CisgICAgICAgICAg
ICBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgMCk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdChNZWRpYVBsYXllciogcGxheWVyKQpAQCAtMTMzOSwy
MyArMTMzOSwzMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgp
CiAgICAgcmV0dXJuIFFUS2l0TGlicmFyeSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpIAorSGFz
aFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3Jp
Z2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgVU5VU0VEX1BBUkFN
KHBhdGgpOworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAg
ICBOU0FycmF5ICptZWRpYVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUo
KTsKICAgICBmb3IgKE5TU3RyaW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpCi0gICAgICAgIHNpdGVz
LmFwcGVuZChzaXRlKTsKKyAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBTdHJpbmc6OmZyb21VVEY4KFtzaXRlIFVURjhTdHJpbmdd
KSkpKTsKKyAgICByZXR1cm4gb3JpZ2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNs
ZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKKyAgICBVTlVTRURfUEFSQU0ocGF0aCk7
CisgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOwogICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwogICAgIHdrUVRDbGVhck1l
ZGlhRG93bmxvYWRDYWNoZSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpj
bGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewot
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVG
b3JTaXRlKCkiKTsKLSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKHNpdGUp
OworICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CisgICAgZm9yIChhdXRv
JiBvcmlnaW4gOiBvcmlnaW5zKQorICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVG
b3JTaXRlKG9yaWdpbi0+dG9SYXdTdHJpbmcoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4NmRiNzkyZDI1ZjZm
YWFmZmRhNTFiNmQ1NGMwZTczNDNjYTViNzM2Li45OGRlOWQwNGZhNDJjOWVhM2RiNWZlZTAxZmUz
N2YzMDRkZjNlNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFj
L0FWRm91bmRhdGlvblNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMv
QVZGb3VuZGF0aW9uU1BJLmgKQEAgLTU1LDYgKzU1LDIxIEBAIE5TX0FTU1VNRV9OT05OVUxMX0VO
RAogCiAjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZBc3NldENhY2hlX1ByaXZhdGUuaD4KKyNlbHNlCitOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorQGludGVyZmFjZSBBVkFzc2V0Q2FjaGUgOiBOU09iamVjdAorKyAoQVZBc3NldENhY2hl
ICopYXNzZXRDYWNoZVdpdGhVUkw6KE5TVVJMICopVVJMOworLSAoaWQpaW5pdFdpdGhVUkw6KE5T
VVJMICopVVJMOworLSAoTlNBcnJheSAqKWFsbEtleXM7CistIChOU0RhdGUgKilsYXN0TW9kaWZp
ZWREYXRlT2ZFbnRyeUZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKXJlbW92ZUVudHJ5
Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
Y29weSkgTlNVUkwgKlVSTDsKK0BlbmQKK05TX0FTU1VNRV9OT05OVUxMX0VORAorI2VuZGlmCisK
ICNpZiBQTEFURk9STShJT1MpCiAKICNpZiBIQVZFKEFWS0lUKSAmJiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDhmZjI5ZjdhNjE5ZWFlYTgwNzZjNzY1NzZmZmFiMzli
NjgzMmE2NmYuLjY2ODg1YzcyMWY3ZDFlMGU5ZTM1MmM5N2I2NjhjZWMwNGQxNWZlYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTY1LDYgKzY1LDggQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVu
Y29kZXIgPDwgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCB3ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1lZGlhQ2Fj
aGVEaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8PCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgZW5jb2RlciA8PCBjb29r
aWVTdG9yYWdlRGlyZWN0b3J5OwogI2VuZGlmCkBAIC0xNjAsNiArMTYyLDEwIEBAIGJvb2wgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBXZWJQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVS
UykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVj
dG9yeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGU0NjBhOWU0OTFlNDQx
ZmQyZTRjZThkN2QxMmJjNTQ4YmM1OWFkZmIuLmI1ZmZkYWQ4ZmUwYjY5YjE0NmRkZjE2MDZkYjE5
YjAyMTJhODY0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNzIsNiArNzIsOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU3RyaW5nIHdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVj
dG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIFN0cmluZyBj
b29raWVTdG9yYWdlRGlyZWN0b3J5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5k
ZXggNDE2MDMzZTFhNjBiOTJjYzk1NGI3MWUzZGI2OTJjZGUzOTY5OWZlOS4uMTFhMTY5YjFjNzgy
ZTkyMGJmZjIzM2RlOGVlNGMwYjk2MWJhOGFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApA
QCAtNDYsNiArNDYsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKAogCiAgICAgY29uZmlndXJh
dGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAg
IGNvbmZpZ3VyYXRpb24tPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIGNv
bmZpZ3VyYXRpb24tPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpOwpAQCAtNTcsNiArNTgsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25z
KAogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQog
ICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCiAgICAgLCBtX2Rpc2tDYWNoZURpcmVjdG9y
eShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpCisgICAg
LCBtX21lZGlhQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKSkKICAgICAsIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpCiAgICAgLCBt
X2xvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKQpAQCAtNzksNiArODEs
NyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNvcHkoKQogICAgIGNvcHktPm1fZGlza0NhY2hlU2l6ZU92ZXJyaWRlID0gdGhpcy0+bV9k
aXNrQ2FjaGVTaXplT3ZlcnJpZGU7CiAgICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fZGlz
a0NhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgY29weS0+
bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAg
IGNvcHktPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5OwogICAgIGNvcHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+
bV9pbmplY3RlZEJ1bmRsZVBhdGg7CiAgICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSB0aGlzLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4
IGQyMmJiODM3Zjk0YjFlM2MyNTE3OWNiM2JlZmJkYjA5ZTVkMzhkNTYuLjY5M2Y4NjMyODFhNmI3
NjgzZTVhMTI4YzA5ZDM3NmJiYmFkNzg4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNjUs
NiArNjUsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBz
ZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9y
eSkgeyBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQogCisgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3Rvcnko
Y29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGly
ZWN0b3J5ID0gbWVkaWFDYWNoZURpcmVjdG9yeTsgfQorICAgIAogICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBt
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7
IH0KIApAQCAtMTAzLDYgKzEwNiw3IEBAIHByaXZhdGU6CiAKICAgICBXVEY6OlN0cmluZyBtX2Fw
cGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9kaXNrQ2FjaGVEaXJl
Y3Rvcnk7CisgICAgV1RGOjpTdHJpbmcgbV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIFdURjo6
U3RyaW5nIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9p
bmplY3RlZEJ1bmRsZVBhdGg7CiAgICAgV1RGOjpTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVE
YXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCAyYTJlYTQxMDBkNWFmNWY3YzUwYTNiNzc5YjgyZjIxZDE2NTA3ODI3
Li4zNmQxNjQ5ZjNjODY3ZDU4ZjAxZWUzODNiMmFlY2JmNDdkMzEyZGM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAg
LTExOCw2ICsxMTgsMTEgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmlu
ZGV4IDQ2NWE1ZWU4ZDYxOTcxYmNlMzVhZGQ3ZjVlMWY5NjNhMjZjYmIwYTUuLmEwMzc1NTM4ZTg3
NTdjNzFhNWM0NzJmODI4NjQ0MmQwNThiNTgxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsK
KyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAKICAgICBz
dGF0aWMgU3RyaW5nIGRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIHN0
YXRpYyBTdHJpbmcgZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwpAQCAtNjAsNiArNjEs
NyBAQCBwcml2YXRlOgogICAgIFdlYnNpdGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpDb25maWd1cmF0aW9uKTsKICAgICBXZWJzaXRlRGF0YVN0b3JlKCk7CiAKKyAgICBzdGF0
aWMgU3RyaW5nIHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiBkaXJlY3RvcnlOYW1lKTsKICAgICBzdGF0aWMgU3RyaW5nIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAgICAg
c3RhdGljIFN0cmluZyB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tCmluZGV4IDgyMzFhYmJjNjIwZWEzYjAxMTY1NTRkY2M0YzBmYjE5ZDRiZjI3ZDIuLmVkYTRj
MTQ5MjQ0NDY4NjQzNjViNjk4YjU1ZTVhMzcxNjc4NzRkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCkBAIC01Nyw2ICs1NywxMSBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5Rmls
ZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJOZXR3b3JrQ2FjaGUiKTsKIH0KIAorU3RyaW5nIFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4g
dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSIpOworfQor
CiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5KCkKIHsKICAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oIkluZGV4ZWREQiIpOwpAQCAtODIsNiArODcsMzMgQEAgU3RyaW5nIFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKICAgICBy
ZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291
cmNlTG9hZFN0YXRpc3RpY3MiKTsKIH0KIAorU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBE
aXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlO
YW1lKQoreworICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRp
YyBOU1VSTCAqdGVtcFVSTDsKKyAgICAKKyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57
CisgICAgICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5
RGlyZWN0b3J5KCldOworICAgICAgICBpZiAoIXVybCkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vz
c0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmll
ciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAg
aWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIg
PSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1
cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlz
RGlyZWN0b3J5OllFU107CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRlbXBVUkwgPSBb
W3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllF
U10gcmV0YWluXTsKKyAgICB9KTsKKyAgICAKKyAgICBOU1VSTCAqdXJsID0gW3RlbXBVUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsK
KyAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5
QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6bnVsbHB0cl0pCisgICAgICAgIExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJl
Y3RvcnkgJUAiLCB1cmwpOworICAgIAorICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5m
aWxlU3lzdGVtUmVwcmVzZW50YXRpb247Cit9CisKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpj
YWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeU5hbWUpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CkBAIC0x
NDQsNiArMTc2LDcgQEAgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdl
YnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREYXRhU3RvcmVDb25maWcKIAogICAgIGNvbmZpZ3VyYXRp
b24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGly
ZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBkZWZh
dWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi5tZWRpYUNhY2hl
RGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKIAogICAgIGNvbmZpZ3Vy
YXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1
bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggMzcxYzViMDI3NTZhNzMz
YTg1MTU1NGY5ZDhiOTljZDcyZTE3MzczZi4uMGU5YTU0MjVlNzc4ODBmYzY3NjQ4NjQ1MmM0Y2Qz
ZGYxNjIyZTA2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0KQEAgLTY0LDYgKzY0LDcgQEAgTlNTdHJpbmcgKldlYlN0
b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoUHJlZmUKIE5TU3RyaW5nICpXZWJLaXRKU0NKSVRFbmFibGVkRGVmYXVsdHNLZXkgPSBAIldl
YktpdEpTQ0pJVEVuYWJsZWREZWZhdWx0c0tleSI7CiBOU1N0cmluZyAqV2ViS2l0SlNDRlRMSklU
RW5hYmxlZERlZmF1bHRzS2V5ID0gQCJXZWJLaXRKU0NGVExKSVRFbmFibGVkRGVmYXVsdHNLZXki
OwogTlNTdHJpbmcgKldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9
IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViS2l0TWVk
aWFDYWNoZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5
IjsKIAogI2lmICFQTEFURk9STShJT1MpCiBzdGF0aWMgTlNTdHJpbmcgKldlYktpdEFwcGxpY2F0
aW9uRGlkQ2hhbmdlQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFjZU5vdGlmaWNhdGlv
biA9IEAiTlNBcHBsaWNhdGlvbkRpZENoYW5nZUFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRl
cmZhY2VOb3RpZmljYXRpb24iOwpAQCAtMzQwLDYgKzM0MSwyNSBAQCBTdHJpbmcgV2ViUHJvY2Vz
c1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiAgICAg
cmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5nU3ltbGlua3NJblBhdGgoW2xvY2FsU3RvcmFnZURpcmVj
dG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXSk7CiB9CiAKK1N0cmluZyBXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAg
cmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5lZWRlZCgpOworICAgIAorICAgIE5TU3RyaW5nICptZWRp
YUtleXNDYWNoZURpcmVjdG9yeSA9IFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIG9iamVjdEZvcktleTpXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXldOwor
ICAgIGlmICghbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgfHwgIVttZWRpYUtleXNDYWNoZURpcmVj
dG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7CisgICAgICAgIG1lZGlhS2V5
c0NhY2hlRGlyZWN0b3J5ID0gTlNUZW1wb3JhcnlEaXJlY3RvcnkoKTsKKyAgICAgICAgCisgICAg
ICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5T
U3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlk
ZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAg
ICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9j
ZXNzTmFtZTsKKyAgICAgICAgICAgIG1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW21lZGlhS2V5
c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVu
dGlmaWVyXTsKKyAgICAgICAgfQorICAgICAgICBtZWRpYUtleXNDYWNoZURpcmVjdG9yeSA9IFtt
ZWRpYUtleXNDYWNoZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJX
ZWJLaXQvTWVkaWFDYWNoZSJdOworICAgIH0KKyAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdT
eW1saW5rc0luUGF0aChbbWVkaWFLZXlzQ2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6
aW5nUGF0aF0pOworfQorCiBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVm
YXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKQogewogICAgIHJlZ2lzdGVyVXNlckRlZmF1
bHRzSWZOZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDA1N2NhMjkxNTBhZmI0NGE2MjA5MjQyYzU0ZTBlY2JmN2E4MmIzMGQuLmExMTlm
NzNjOWE2MTRlZDY4NjYwYzU4NzIyZGRiMmFhODJkZDdjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTI4LDYgKzEyOCw3IEBAIHN0YXRpYyBX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uKEFQSTo6CiAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAg
Y29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24uYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0
b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKICAg
ICBjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRp
b24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRpc2tD
YWNoZURpcmVjdG9yeSgpOwogCkBAIC01NDQsNiArNTQ1LDEwIEBAIFdlYlByb2Nlc3NQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIGlmICghcGFyYW1ldGVy
cy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsKIAorICAgIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IG1f
Y29uZmlndXJhdGlvbi0+bWVkaWFDYWNoZURpcmVjdG9yeSgpOworICAgIGlmICghcGFyYW1ldGVy
cy5tZWRpYUNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNo
ZURpcmVjdG9yeSwgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKKyAgICAKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIHBhcmFtZXRlcnMuY29v
a2llU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMtPmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA0ZDdm
MWY2ZTYzYjMwOThhNDY3YmJiYWQxYTEwODZhZjM0ODZmZmI3Li4zMmY5NWM2MDQxMmQyZGQ1OTZi
Yzg3NDU4NTVmOGY4YTZiNDQwMWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaApAQCAtMzU5LDYgKzM1OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5n
IGxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAg
c3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpOwogICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpOworICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0
TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1E
ZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgbGVn
YWN5UGxhdGZvcm1EZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIGJv
b2wgaXNOZXR3b3JrQ2FjaGVFbmFibGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMTgwNmMz
MWQ2MjliOGNiNzIzZWQzZWVlYjA0MzFhZjY5NzU4NmVkYS4uOWMwZjZjYjY4MDAwNjgwZjBjN2Jj
ZjM0M2U0NDc5ZDY1ODUxOWE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlv
bkNhY2hlU3RvcmFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9P
cmlnaW5Mb2NrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1
ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC03Nyw2ICs3OCw3IEBAIFdlYnNpdGVEYXRhU3RvcmU6Oldl
YnNpdGVEYXRhU3RvcmUoQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKQogICAgICwgbV9zZXNz
aW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgLCBtX25l
dHdvcmtDYWNoZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGly
ZWN0b3J5KSkKICAgICAsIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSkpCisgICAgLCBtX21lZGlhQ2FjaGVE
aXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkpKQogICAg
ICwgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ud2ViU1FM
RGF0YWJhc2VEaXJlY3RvcnkpKQogICAgICwgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFdU
Rk1vdmUoY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KSkKICAgICAsIG1f
c3RvcmFnZU1hbmFnZXIoU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRp
b24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KSkpCkBAIC0yNTUsNiArMjU3LDI3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcywgT3B0aW9uU2V0CiAKICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFj
a0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKGZldGNoT3B0aW9u
cywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAorICAgIGlmIChkYXRhVHlwZXMuY29u
dGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CisgICAgICAgIFN0cmluZ0NhcHR1
cmUgbWVkaWFDYWNoZURpcmVjdG9yeSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSB9OworICAgICAg
ICAKKyAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKKyAg
ICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW2ZldGNoT3B0aW9ucywgbWVkaWFDYWNoZURpcmVjdG9y
eSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnMgPSBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpvcmlnaW5zSW5NZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJlY3Rvcnkuc3RyaW5nKCkpOworICAg
ICAgICAgICAgV2Vic2l0ZURhdGEqIHdlYnNpdGVEYXRhID0gbmV3IFdlYnNpdGVEYXRhOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAg
ICAgICAgICAgICAgICBXZWJzaXRlRGF0YTo6RW50cnkgZW50cnkgeyBvcmlnaW4sIFdlYnNpdGVE
YXRhVHlwZTo6RGlza0NhY2hlLCAwIH07CisgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEtPmVu
dHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IAorICAgICAgICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdn
cmVnYXRvciwgb3JpZ2lucywgd2Vic2l0ZURhdGFdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjayhXVEZNb3ZlKCp3ZWJzaXRlRGF0YSkp
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlbGV0ZSB3ZWJzaXRlRGF0YTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBhdXRvIG5ldHdvcmtQ
cm9jZXNzQWNjZXNzVHlwZSA9IGNvbXB1dGVOZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRh
RmV0Y2goZGF0YVR5cGVzLCAhaXNQZXJzaXN0ZW50KCkpOwogICAgIGlmIChuZXR3b3JrUHJvY2Vz
c0FjY2Vzc1R5cGUgIT0gUHJvY2Vzc0FjY2Vzc1R5cGU6Ok5vbmUpIHsKICAgICAgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CkBAIC01MjksNiArNTUyLDE5IEBA
IHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFU
eXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hyCiAKICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9y
PiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAKKyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5z
KFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgeworICAgICAgICBTdHJpbmdDYXB0dXJlIG1l
ZGlhQ2FjaGVEaXJlY3RvcnkgeyBtX21lZGlhQ2FjaGVEaXJlY3RvcnkgfTsKKworICAgICAgICBj
YWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbbW9kaWZpZWRTaW5jZSwgbWVkaWFDYWNoZURpcmVjdG9yeSwgY2FsbGJhY2tB
Z2dyZWdhdG9yXSB7CisgICAgICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVh
ck1lZGlhQ2FjaGUobWVkaWFDYWNoZURpcmVjdG9yeS5zdHJpbmcoKSwgbW9kaWZpZWRTaW5jZSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworICAgIH0KKwogICAgIGF1dG8gbmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5l
dHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKGRhdGFUeXBlcywgIWlzUGVyc2lz
dGVudCgpKTsKICAgICBpZiAobmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nl
c3NUeXBlOjpOb25lKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNz
UG9vbHMoKSkgewpAQCAtNzU1LDcgKzc5MSwyNSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJl
bW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQog
ICAgIH07CiAKICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0
b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKSk7Ci0KKyAgICAKKyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRh
VHlwZTo6RGlza0NhY2hlKSkgeworICAgICAgICBTdHJpbmdDYXB0dXJlIG1lZGlhQ2FjaGVEaXJl
Y3RvcnkgeyBtX21lZGlhQ2FjaGVEaXJlY3RvcnkgfTsKKyAgICAgICAgSGFzaFNldDxSZWZQdHI8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVjb3JkcykgeworICAgICAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBvcmlnaW4gOiBkYXRhUmVjb3JkLm9yaWdpbnMpCisgICAgICAgICAgICAgICAgb3JpZ2lu
cy5hZGQob3JpZ2luKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W29yaWdpbnMsIG1lZGlhQ2FjaGVEaXJlY3RvcnksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAg
ICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucyhtZWRpYUNhY2hlRGlyZWN0b3J5LnN0cmluZygpLCBvcmlnaW5zKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdn
cmVnYXRvcl0geworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVu
ZGluZ0NhbGxiYWNrKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorICAg
IAogICAgIGF1dG8gbmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9j
ZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1vdmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsK
ICAgICBpZiAobmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpO
b25lKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKaW5kZXggMTAzZDYyMzgzMWI4NTI0YWY2YzAzNzQ3NmEwYjMzOWU1ZDdh
OTIxYS4uYTRhOWUxMDQzYjc2YTZlYjg4ZGZmM2M3MTExZjRmNjJhNzdlY2Y3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG5ldHdvcmtD
YWNoZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7
CiAKKyAgICAgICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyB3
ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVj
dG9yeTsKICAgICAgICAgU3RyaW5nIG1lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CkBAIC0xMTcs
NiArMTE4LDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0IFN0cmluZyBtX25ldHdvcmtDYWNoZURp
cmVjdG9yeTsKICAgICBjb25zdCBTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Owor
ICAgIGNvbnN0IFN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAKICAgICBjb25zdCBTdHJp
bmcgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb25zdCBTdHJpbmcgbV9tZWRpYUtl
eXNTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggOGJiZDQ3ZjBmOTRlZDVmYjNkZDNkMjRmYzdlNTg2MjhjYTVkNzU2OC4uZWYwYTE1
OGU5ZDAxMDU1NGNhMzc3YTE0MmJkYTY5YTM0ZDFlNTNjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC03Niw2ICs3Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9HbHlwaFBhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVs
ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CkBAIC0y
OTEsNiArMjkyLDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoIXBhcmFtZXRl
cnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIEFwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlOjpzaW5nbGV0b24oKS5zZXRDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJz
LmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwogCisgICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlh
Q2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9y
eSk7CisKICAgICBzZXRDYWNoZU1vZGVsKHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXJhbWV0ZXJz
LmNhY2hlTW9kZWwpKTsKIAogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQppbmRleCBmNzYxY2U2YjE4ZTQ4MTk0M2QzOGY4MzIyMjNjNDk1YTQ3NjYwNDk2Li5hMDg3
ZjkwZTc1NjFkZWI1NjQ0ODA2NDgzZmRjMWFhNWIzODliZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMTM1LDYgKzEz
NSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29u
c3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0
ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHko
cGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6
Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lv
bkhhbmRsZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFt
ZXRlcnMubWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFt
ZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275945</attachid>
            <date>2016-04-07 15:14:52 -0700</date>
            <delta_ts>2016-04-07 15:56:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155783-20160407151455.patch</filename>
            <type>text/plain</type>
            <size>54261</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1OGU0OTNlOGRkNGEz
MDUxNjU5NmY1OWFhYzc1Mjg1ZmQ5OTIyYy4uOWM4OTdiNTU5MTQ5YjczNzRmZjRjZTYxNjcxOGNl
MjY2NjkxMjBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE2LTA0LTA3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZp
ZWQgbG9jYXRpb24gb24gZGlzayBmb3IgYWxsIEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNo
ZQorICAgICAgICBjYW4gdGhlbiBiZSB1c2VkIHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1
c2VkIGJ5IEFWRm91bmRhdGlvbi4gSXQgaXMgdXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29u
dGVudHMgb2YgdGhlIGNhY2hlIGluIG9yaWdpbnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIg
dGhlIGNhY2hlIGNvbXBsZXRlbHkgb3IgcGFydGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFD
YWNoZSgpIGFuZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNl
Y3VyaXR5T3JpZ2luIGluc3RlYWQgb2YgdGhlIGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJl
cHJlc2VudCBvcmlnaW5zIGluIHRoZSBjYWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjptZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBs
YXllck1lZGlhQ2FjaGVEaXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVk
LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFkZE1lZGlhRW5naW5lKTogQWRkIG5ldyBjYWNoZSBtZXRob2RzLgorICAgICAgICAoV2Vi
Q29yZTo6YWRkVG9IYXNoKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVkIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNsaWVudDo6bWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGly
ZWN0b3J5KTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQ
cml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6
Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2U6OmdldFNpdGVzSW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlRm9y
U2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlhRW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4K
KyAgICAgICAgKFdlYkNvcmU6OmFzc2V0Q2FjaGVGb3JQYXRoKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRp
YUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp0b1N5c3RlbUNsb2NrVGltZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucyk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZvclVSTCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKTog
QWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVy
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaDoKKwog
MjAxNi0wMy0yMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbV2ViR0xdIE5vbi1wb3dlci1vZi10d28gdGV4dHVyZSBvcHRpbWl6YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBmMmM5ZjRlNjFiZGIyMjhiMmViYjAxNDAzNTdjN2NlMTQ2ZTNlNTM3Li4zY2EzZTE0MTUy
YTNmZGMwZjMyZGQ1NGYzMDcwM2YzNDgwNWU2OTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYg
QEAKKzIwMTYtMDQtMDcgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAg
ICAgIFdoZW4gY2xlYXJpbmcgY2FjaGUsIGFsc28gY2xlYXIgQVZGb3VuZGF0aW9uIGNhY2hlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzgzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5jbHVkZSB0
aGUgSFRNTE1lZGlhRWxlbWVudCBtZWRpYSBjYWNoZSB3aGVuIGRvaW5nIGRpc2sgY2FjaGUgb3Bl
cmF0aW9ucy4KKyAgICAgICAgQWRkIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIG1lZGlhIGNhY2hl
IGRpcmVjdG9yeS4gVGhpcyBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgYW5kIHRoZSB3ZWIgcHJvY2Vz
cworICAgICAgICB0byBhY2Nlc3MgdGhlIHNhbWUgY2FjaGUuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3Rv
cnkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMpOgorICAgICAgICAoQVBJOjpQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IEFkZCBtZWRpYSBj
YWNoZSBkaXJlY3RvcnkuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6
Y29weSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlZmF1bHQgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAg
IChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogTWVk
aWEgY2FjaGUgaXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQSTo6V2Vic2l0
ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6IEZvciBy
ZXNvdXJjZXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBJbml0IG1lZGlhIGNhY2hl
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVm
YXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uKTogQWRkIG1lZGlhQ2FjaGVEaXJlY3RvcnkuCisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKTogQWRkIG1lZGlhQ2FjaGVEaXJlY3Rvcnku
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
c2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKTogSW1wbGVtZW50IGZvciBtZWRpYUNhY2hlRGlyZWN0
b3J5LgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKTogSW1w
bGVtZW50IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nl
c3MpOiBJbml0aWFsaXplIG1lZGlhIGNhY2hlIGRpcmVjdG9yeS4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IENvbnN1bWUgc2FuZGJveCBleHRlbnNp
b24uCisKIDIwMTYtMDMtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFVzZSBSZWdpb24gaW5zdGVhZCBvZiBJbnRSZWN0IGluIFBhZ2VDbGll
bnQgYW5kIFdlYlBhZ2VQcm94eSBzZXRWaWV3TmVlZHNEaXNwbGF5IG1ldGhvZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmUyNmRhOTcyYmRmZTlkZDFjMTQy
NjA5ZjFjMTY4MDFmMjIxNmY5My4uNzJlNjk3NDVkYjJlZmFkN2Y5YTc0YjNhNjYyODI5YTFlMmNi
ZGY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NTU1
LDIxICs1NTU1LDM2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2Fk
RXZlbnQoYm9vbCBzaG91bGREZWxheSkKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCkuZGVj
cmVtZW50TG9hZEV2ZW50RGVsYXlDb3VudCgpOwogfQotICAgIAogCi12b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OmdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKK3N0YXRp
YyBTdHJpbmcmIHNoYXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIE1lZGlhUGxheWVy
OjpnZXRTaXRlc0luTWVkaWFDYWNoZShzaXRlcyk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICByZXR1cm4gc2hhcmVkTWVk
aWFDYWNoZURpcmVjdG9yeTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlh
Q2FjaGUoKQordm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCk7
CisgICAgc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKIH0KIAotdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkK
K2NvbnN0IFN0cmluZyYgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7
Ci0gICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7CisgICAgcmV0
dXJuIHNoYXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKK30KKworSGFzaFNldDxSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+PiBIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlh
Q2FjaGUocGF0aCk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hl
KGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtb2RpZmllZFNpbmNlKQoreworICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUocGF0
aCwgbW9kaWZpZWRTaW5jZSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCit7CisgICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVzZXRNZWRpYUVuZ2luZXMoKQpAQCAtNjE1NCw2ICs2MTY5LDExIEBAIGJvb2wgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25z
dAogICAgIHJldHVybiBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkubWVkaWFT
aG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKTsKIH0KIAorY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJl
dHVybiBtZWRpYUNhY2hlRGlyZWN0b3J5KCk7Cit9CisKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
bWVkaWFQbGF5ZXJTaG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaAppbmRleCA0NjFkZmU4ZjhiYzg2NWFmMjE5OTIwNmYxNmYxZDU1ZTVkY2YyZTU2Li4x
MmNmNTJmNWE4Y2MzOGE5ZWNmMDA5NDcyMzhjZDY1ZGQwYjhhZGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMzgyLDkgKzM4MiwxMSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwogCiAgICAgLy8g
TWVkaWEgY2FjaGUgbWFuYWdlbWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBn
ZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TWVkaWFDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGly
ZWN0b3J5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3Rk
OjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlID0geyB9KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
KGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsK
ICAgICBzdGF0aWMgdm9pZCByZXNldE1lZGlhRW5naW5lcygpOwogCiAgICAgYm9vbCBpc1BsYXlp
bmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXlpbmc7IH0KQEAgLTU5OCw2ICs2MDAsNyBAQCBwcml2
YXRlOgogICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBsYXllckNhY2hlZFJlc291cmNl
TG9hZGVyKCkgb3ZlcnJpZGU7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRl
cj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIG92ZXJyaWRlOwogICAgIGJvb2wg
bWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICBjb25zdCBTdHJpbmcmIG1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IG92
ZXJyaWRlOwogCiAjaWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIEdy
YXBoaWNzRGV2aWNlQWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29u
c3QgTWVkaWFQbGF5ZXIqKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA5OWI5ZDVjYWRlNzNlMGMxZmFk
MDlhNzdjZjVmNmRiMjk4YzM3YWE1Li5lYjdkNzkyZmRhYzk1ZGI4OGRmMDAxNmE4MjgxODgxMzZl
YWY2MjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCkBAIC0xNjgsMTMgKzE2OCwxMyBAQCBzdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5
IHsKICAgICBDcmVhdGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKICAgICBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwogICAgIE1lZGlhRW5naW5lU3Vw
cG9ydHNUeXBlIHN1cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVz
SW5NZWRpYUNhY2hlIGdldFNpdGVzSW5NZWRpYUNhY2hlOworICAgIE1lZGlhRW5naW5lT3JpZ2lu
c0luTWVkaWFDYWNoZSBvcmlnaW5zSW5NZWRpYUNhY2hlOwogICAgIE1lZGlhRW5naW5lQ2xlYXJN
ZWRpYUNhY2hlIGNsZWFyTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZTsKKyAgICBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2luczsKICAgICBNZWRpYUVu
Z2luZVN1cHBvcnRzS2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtOwogfTsKIAotc3RhdGljIHZv
aWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3Vw
cG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZUdldFNpdGVz
SW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGVGb3JTaXRlLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRp
YyB2b2lkIGFkZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2lu
ZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmln
aW5zSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVD
bGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsK
IAogc3RhdGljIGJvb2wgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcjsKIApAQCAtMjMyLDEzICsyMzIs
MTMgQEAgc3RhdGljIGNvbnN0IFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBpbnN0YWxsZWRN
ZWRpYUVuZ2luZXMoKQogfQogCiBzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRp
YUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRT
dXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAg
IE1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlIGNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGVGb3JTaXRlIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3Vw
cG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAgTWVkaWFFbmdpbmVPcmlnaW5z
SW5NZWRpYUNhY2hlIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlIGNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
IGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0g
c3VwcG9ydHNLZXlTeXN0ZW0pCiB7CiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yKTsKICAgICBBU1NF
UlQoZ2V0U3VwcG9ydGVkVHlwZXMpOwogICAgIEFTU0VSVChzdXBwb3J0c1R5cGUpOwogCi0gICAg
bXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVuZChNZWRpYVBsYXllckZh
Y3RvcnkgeyBjb25zdHJ1Y3RvciwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgZ2V0
U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0
ZSwgc3VwcG9ydHNLZXlTeXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5l
c1ZlY3RvcigpLmFwcGVuZChNZWRpYVBsYXllckZhY3RvcnkgeyBjb25zdHJ1Y3RvciwgZ2V0U3Vw
cG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRp
YUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsK
IH0KIAogc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgp
CkBAIC0xMDM0LDMwICsxMDM0LDQwIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmly
ZWQoKQogICAgIGxvYWRXaXRoTmV4dE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKTsK
IH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmlu
Zz4mIHNpdGVzKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIGFkZFRvSGFzaChI
YXNoU2V0PFQ+JiB0b0hhc2gsIEhhc2hTZXQ8VD4mJiBmcm9tSGFzaCkKIHsKKyAgICBpZiAodG9I
YXNoLmlzRW1wdHkoKSkKKyAgICAgICAgdG9IYXNoID0gV1RGTW92ZShmcm9tSGFzaCk7CisgICAg
ZWxzZQorICAgICAgICB0b0hhc2guYWRkKGZyb21IYXNoLmJlZ2luKCksIGZyb21IYXNoLmVuZCgp
KTsKK30KKyAgICAKK0hhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6
Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6
IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5lLmdldFNpdGVz
SW5NZWRpYUNhY2hlKQorICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGVuZ2luZVNpdGVz
OwotICAgICAgICBlbmdpbmUuZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAg
ICAgICBzaXRlcy5hcHBlbmRWZWN0b3IoZW5naW5lU2l0ZXMpOworICAgICAgICBhdXRvIGVuZ2lu
ZU9yaWdpbnMgPSBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKKyAgICAgICAgYWRk
VG9IYXNoKG9yaWdpbnMsIFdURk1vdmUoZW5naW5lT3JpZ2lucykpOwogICAgIH0KKyAgICByZXR1
cm4gb3JpZ2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCkKK3Zv
aWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6
Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKICAgICBm
b3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlm
IChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlKQotICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFD
YWNoZSgpOworICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmll
ZFNpbmNlKTsKICAgICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZv
clNpdGUoY29uc3QgU3RyaW5nJiBzaXRlKQordm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0
YWxsZWRNZWRpYUVuZ2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUpCi0gICAgICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShzaXRl
KTsKKyAgICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQorICAgICAg
ICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaAppbmRleCA1ZWE1NTg3MTEwNTkzN2VlZTQwNjNlNzI1OTJhMWFlNTU3MTU0NWNiLi5hYzRm
ODUzMGY0ZmY0YTlmZDkwN2Y0YzBlY2VkYjVhNjRiYmQwZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVJlc291cmNl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVv
VHJhY2tQcml2YXRlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CkBAIC0yMzYs
NiArMjM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlcj4gbWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG51
bGxwdHI7IH0KICAgICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWlj
U3RyaW5nJiwgQXRvbWljU3RyaW5nKiA9IDApIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
dmlydHVhbCBib29sIG1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtZWRpYVBsYXllck1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRk
QXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CkBAIC0yOTIsOSAr
Mjk0LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiwgY29uc3QgTWVk
aWFQbGF5ZXJTdXBwb3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0
ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAg
IHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7Ci0gICAgc3RhdGljIHZvaWQgZ2V0U2l0ZXNJbk1l
ZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2Fj
aGUoKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJ
bk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNo
ZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4+Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3Qg
U3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgYm9vbCBz
dXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25zdDsKQEAgLTYyOSwxMyArNjMxLDEzIEBAIHByaXZhdGU6
CiB0eXBlZGVmIHN0ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZT4gKE1lZGlhUGxheWVyKik+IENyZWF0ZU1lZGlhRW5naW5lUGxheWVyOwogdHlw
ZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJpbmcsIEFT
Q0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4mIHR5cGVzKTsKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1
cHBvcnRzVHlwZSAoKk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
R2V0U2l0ZXNJbk1lZGlhQ2FjaGUpKFZlY3RvcjxTdHJpbmc+Jik7Ci10eXBlZGVmIHZvaWQgKCpN
ZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSkoKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5l
Q2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSkoY29uc3QgU3RyaW5nJik7Cit0eXBlZGVmIEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUp
KGNvbnN0IFN0cmluZyYgcGF0aCk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhRW5naW5lU3Vw
cG9ydHNLZXlTeXN0ZW0pKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKTsKIAogdHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1l
ZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1
cHBvcnRzVHlwZSwKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVu
Z2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCBN
ZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1l
ZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogdHlwZWRl
ZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RlcikoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiBj
bGFzcyBNZWRpYVBsYXllckZhY3RvcnlTdXBwb3J0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4
NTZlN2RkYzg1OTY4NjQ3MzYxOGRhMmExNGQ2Yzc5MC4uMDlhYzhjOTMzZmQyY2NkZDQ1Y2ZlZGNk
ZTk0YTYwYTc1ZTg3YzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7IHJl
dHVybiAwOyB9CiAgICAgdmlydHVhbCB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBj
b25zdCB7IHJldHVybiAwOyB9CiAKLSAgICB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3Rv
cjxTdHJpbmc+JikgeyB9Ci0gICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKSB7IH0KLSAgICB2b2lk
IGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgSGFzaFNldDxS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYp
IHsgcmV0dXJuIHsgfTsgfQorICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYs
IHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpIHsgfQorICAgIHZvaWQgY2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4+JikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUJy
b3dzaW5nTW9kZShib29sKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0
NjhiMDY4MTEwZWJhMjMyZjJiYzZmZjA2MjZlZmJhMjAuLjY1OWE0N2FlZWQ4NjU1MTJiY2NmOWI0
YzcwZDU3ZmFhMTNmYmI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTg3LDYgKzg3LDEw
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFF
bmdpbmVSZWdpc3RyYXIpOwogCisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9p
ZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mKTsKKwogICAgIHZvaWQgc2V0QXNzZXQoUmV0YWluUHRyPGlkPik7CiAgICAg
dm9pZCB0cmFja3NDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmlu
ZGV4IDE1NDM3ZGRkOGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLmIwNTAzYjczOGE0
MDVjZGJiYWRlOTMxY2IyNjJkNjM3MzlmZTA0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpA
QCAtMTU4LDYgKzE1OCw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVy
TGF5ZXIpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQogU09GVF9M
SU5LX0NMQVNTKEFWRm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yKQogU09GVF9MSU5L
X0NMQVNTKEFWRm91bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZG
b3VuZGF0aW9uLCBBVkFzc2V0Q2FjaGUpCiAKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJ
Q29udGV4dCkKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJSW1hZ2UpCkBAIC0yMjcsNiAr
MjI4LDcgQEAgU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdp
YmxlT3V0cHV0VGV4dFN0eWxpbmdSZXNvbHV0aW9uU28KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFW
Rl9DQVBUSU9OUykKK1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENh
Y2hlS2V5LCBOU1N0cmluZyopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJM
QXNzZXRIVFRQQ29va2llc0tleSwgTlNTdHJpbmcqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3Vu
ZGF0aW9uLCBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5LCBOU1N0cmluZyop
CiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0
ZW50Q2FjaGVLZXksIE5TU3RyaW5nKikKQEAgLTI0Miw2ICsyNDQsNyBAQCBTT0ZUX0xJTktfUE9J
TlRFUihBVkZvdW5kYXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVu
dCwgTlNTdHJpbgogCiAjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSBnZXRBVlVSTEFz
c2V0SFRUUENvb2tpZXNLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRl
VHJhY2tzS2V5IGdldEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkoKQorI2Rl
ZmluZSBBVlVSTEFzc2V0Q2FjaGVLZXkgZ2V0QVZVUkxBc3NldENhY2hlS2V5KCkKICNkZWZpbmUg
QVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSBnZXRBVlVSTEFzc2V0VXNlc05vUGVy
c2lzdGVudENhY2hlS2V5KCkKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0Rpc3Bs
YXlOYW1lS2V5IGdldEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSgpCiAj
ZGVmaW5lIEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5IGdl
dEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5KCkKQEAgLTQy
Miw3ICs0MjUsOTUgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpy
ZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIHsKICAgICBpZiAoaXNBdmFp
bGFibGUoKSkKICAgICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0
dXJuIHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4o
cGxheWVyKTsgfSwKLSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUs
IDAsIDAsIDAsIHN1cHBvcnRzS2V5U3lzdGVtKTsKKyAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5
cGVzLCBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwg
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOworfQorCitzdGF0
aWMgQVZBc3NldENhY2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7
CisgICAgTlNVUkwgKmFzc2V0Q2FjaGVVUkw7CisgICAgCisgICAgaWYgKHBhdGguaXNFbXB0eSgp
KQorICAgICAgICBhc3NldENhY2hlVVJMID0gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1w
b3JhcnlEaXJlY3RvcnkoKV0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTWVkaWFDYWNo
ZSIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBlbHNlCisgICAgICAgIGFzc2V0Q2FjaGVVUkwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOnBhdGggaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIHJldHVy
biBbZ2V0QVZBc3NldENhY2hlQ2xhc3MoKSBhc3NldENhY2hlV2l0aFVSTDphc3NldENhY2hlVVJM
XTsKK30KKworSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAg
Zm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlRm9yUGF0aChwYXRoKSBhbGxLZXlzXSkg
eworICAgICAgICBVUkwga2V5QXNVUkwgPSBVUkwoVVJMKCksIGtleSk7CisgICAgICAgIGlmIChr
ZXlBc1VSTC5pc1ZhbGlkKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGtleUFzVVJMKSk7CisgICAgfQorICAgIHJldHVybiBvcmlnaW5zOworfQorCitz
dGF0aWMgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0b1N5c3RlbUNsb2Nr
VGltZShOU0RhdGUgKmRhdGUpCit7CisgICAgQVNTRVJUKGRhdGUpOworICAgIHVzaW5nIG5hbWVz
cGFjZSBzdGQ6OmNocm9ubzsKKworICAgIHJldHVybiBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQo
ZHVyYXRpb25fY2FzdDxzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihkdXJhdGlvbjxkb3VibGU+KGRh
dGUudGltZUludGVydmFsU2luY2UxOTcwKSkpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAg
ICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1l
ZGlhQ2FjaGUoKSIpOworICAgIAorICAgIEFWQXNzZXRDYWNoZSogYXNzZXRDYWNoZSA9IGFzc2V0
Q2FjaGVGb3JQYXRoKHBhdGgpOworICAgIAorICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNz
ZXRDYWNoZSBhbGxLZXlzXSkgeworICAgICAgICBpZiAodG9TeXN0ZW1DbG9ja1RpbWUoW2Fzc2V0
Q2FjaGUgbGFzdE1vZGlmaWVkRGF0ZU9mRW50cnlGb3JLZXk6a2V5XSkgPiBtb2RpZmllZFNpbmNl
KQorICAgICAgICAgICAgW2Fzc2V0Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICB9
CisKKyAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXTsKKyAgICBOU1VSTCAqYmFzZVVSTCA9IFthc3NldENhY2hlIFVSTF07CisKKyAg
ICBpZiAobW9kaWZpZWRTaW5jZSA8PSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3Bv
aW50IHsgfSkgeworICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmJhc2VVUkwg
ZXJyb3I6bmlsXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBOU0FycmF5ICpw
cm9wZXJ0eUtleXMgPSBAW05TVVJMTmFtZUtleSwgTlNVUkxDb250ZW50TW9kaWZpY2F0aW9uRGF0
ZUtleSwgTlNVUkxJc1JlZ3VsYXJGaWxlS2V5XTsKKyAgICBOU0RpcmVjdG9yeUVudW1lcmF0b3Ig
KmVudW1lcmF0b3IgPSBbZmlsZU1hbmFnZXIgZW51bWVyYXRvckF0VVJMOmJhc2VVUkwgaW5jbHVk
aW5nUHJvcGVydGllc0ZvcktleXM6CisgICAgICAgIHByb3BlcnR5S2V5cyBvcHRpb25zOk5TRGly
ZWN0b3J5RW51bWVyYXRpb25Ta2lwc1N1YmRpcmVjdG9yeURlc2NlbmRhbnRzCisgICAgICAgIGVy
cm9ySGFuZGxlcjpuaWxdOworICAgIAorICAgIE5TTXV0YWJsZUFycmF5PE5TVVJMICo+ICp1cmxz
VG9EZWxldGUgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIHdoaWxlIChOU1VSTCAqZmls
ZVVSTCA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdKSB7CisgICAgICAgIE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBpZD4gKmZpbGVBdHRyaWJ1dGVzID0gW2ZpbGVVUkwgcmVzb3VyY2VWYWx1ZXNG
b3JLZXlzOnByb3BlcnR5S2V5cyBlcnJvcjpuaWxdOworICAgIAorICAgICAgICBpZiAoIVtmaWxl
QXR0cmlidXRlc1tOU1VSTE5hbWVLZXldIGhhc1ByZWZpeDpAIkNhY2hlZE1lZGlhLSJdKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoIVtmaWxlQXR0cmlidXRl
c1tOU1VSTElzUmVndWxhckZpbGVLZXldIGJvb2xWYWx1ZV0pCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShmaWxlQXR0cmlidXRl
c1tOU1VSTENvbnRlbnRNb2RpZmljYXRpb25EYXRlS2V5XSkgPD0gbW9kaWZpZWRTaW5jZSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgW3VybHNUb0RlbGV0ZSBhZGRP
YmplY3Q6ZmlsZVVSTF07CisgICAgfQorICAgIAorICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4g
dXJsc1RvRGVsZXRlKQorICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmZpbGVV
UkwgZXJyb3I6bmlsXTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25P
YmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3Qg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKK3sKKyAgICBMT0coTWVk
aWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKCkiKTsKKyAgICBBVkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hl
Rm9yUGF0aChwYXRoKTsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2FjaGUgYWxs
S2V5c10pIHsKKyAgICAgICAgVVJMIGtleUFzVVJMID0gVVJMKFVSTCgpLCBrZXkpOworICAgICAg
ICBpZiAoa2V5QXNVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAob3JpZ2lucy5jb250
YWlucyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGtleUFzVVJMKSkpCisgICAgICAgICAgICAgICAg
W2Fzc2V0Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICAgICAgfQorICAgIH0KIH0K
IAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQpAQCAtODc0LDcgKzk2NSwxMSBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRG
b3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgfQogI2VuZGlmCiAKLSAgICBbb3B0aW9ucyBz
ZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFwbGF5ZXIoKS0+Y2xpZW50KCkubWVk
aWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKV0gZm9yS2V5OkFWVVJMQXNzZXRVc2Vz
Tm9QZXJzaXN0ZW50Q2FjaGVLZXldOworICAgIGJvb2wgdXNlUGVyc2lzdGVudENhY2hlID0gcGxh
eWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCk7Cisg
ICAgW29wdGlvbnMgc2V0T2JqZWN0OkAoIXVzZVBlcnNpc3RlbnRDYWNoZSkgZm9yS2V5OkFWVVJM
QXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXldOworICAgIAorICAgIGlmICh1c2VQZXJzaXN0
ZW50Q2FjaGUpCisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDphc3NldENhY2hlRm9yUGF0aChw
bGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KCkpIGZvcktl
eTpBVlVSTEFzc2V0Q2FjaGVLZXldOwogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2Fs
VVJMKHVybCk7CiAgICAgbV9hdkFzc2V0ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5zdGFu
Y2UoKSBpbml0V2l0aFVSTDpjb2NvYVVSTCBvcHRpb25zOm9wdGlvbnMuZ2V0KCldKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0LmgKaW5kZXggZjM3M2ZmODU1OTYzNzM5OWJjZWQ0YTNkMmE4NDI4
NDQ2ZTE5YzEyOC4uNTlhM2RhNmYxNWFmODk0OTlhMTJkYTJkNDIwNjVmYzUxOWY0Yjg1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTY4LDkgKzY4LDkgQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNl
SW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9y
dHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7
CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYp
OwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHN0YXRpYyB2b2lkIGNs
ZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcm
KTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0
aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhh
c2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWls
YWJsZSgpOwogCiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYjI3MDMxOGQyZGI4NDA1ZmNm
MTIzNGRiNjQ0N2UyMjU5YWIyYzg1NC4uMDlmNmRjODkzN2RiMjU5NTkyZTlkMDkzZTQzYmFlOTcy
ZTcxYzVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTc1LDcgKzE3NSw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVk
aWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAg
ICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1h
a2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0PihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0
ZWRUeXBlcywKLSAgICAgICAgICAgIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUs
IGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgMCk7CisgICAgICAgICAg
ICBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xl
YXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgMCk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdChNZWRpYVBsYXllciogcGxheWVyKQpAQCAtMTMzOSwy
MyArMTMzOSwzMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgp
CiAgICAgcmV0dXJuIFFUS2l0TGlicmFyeSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpIAorSGFz
aFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3Jp
Z2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgVU5VU0VEX1BBUkFN
KHBhdGgpOworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAg
ICBOU0FycmF5ICptZWRpYVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUo
KTsKICAgICBmb3IgKE5TU3RyaW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpCi0gICAgICAgIHNpdGVz
LmFwcGVuZChzaXRlKTsKKyAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBTdHJpbmc6OmZyb21VVEY4KFtzaXRlIFVURjhTdHJpbmdd
KSkpKTsKKyAgICByZXR1cm4gb3JpZ2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNs
ZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xv
Y2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKKyAgICBVTlVTRURfUEFSQU0ocGF0aCk7
CisgICAgVU5VU0VEX1BBUkFNKG1vZGlmaWVkU2luY2UpOwogICAgIExPRyhNZWRpYSwgIk1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwogICAgIHdrUVRDbGVhck1l
ZGlhRG93bmxvYWRDYWNoZSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpj
bGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK3ZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBw
YXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewot
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVG
b3JTaXRlKCkiKTsKLSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKHNpdGUp
OworICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclBy
aXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CisgICAgZm9yIChhdXRv
JiBvcmlnaW4gOiBvcmlnaW5zKQorICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVG
b3JTaXRlKG9yaWdpbi0+dG9SYXdTdHJpbmcoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQ6OmRpc2FibGVVbnN1cHBvcnRlZFRyYWNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4NmRiNzkyZDI1ZjZm
YWFmZmRhNTFiNmQ1NGMwZTczNDNjYTViNzM2Li45OGRlOWQwNGZhNDJjOWVhM2RiNWZlZTAxZmUz
N2YzMDRkZjNlNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFj
L0FWRm91bmRhdGlvblNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMv
QVZGb3VuZGF0aW9uU1BJLmgKQEAgLTU1LDYgKzU1LDIxIEBAIE5TX0FTU1VNRV9OT05OVUxMX0VO
RAogCiAjZW5kaWYgLy8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRG
T1JNKElPUykKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZBc3NldENhY2hlX1ByaXZhdGUuaD4KKyNlbHNlCitOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorQGludGVyZmFjZSBBVkFzc2V0Q2FjaGUgOiBOU09iamVjdAorKyAoQVZBc3NldENhY2hl
ICopYXNzZXRDYWNoZVdpdGhVUkw6KE5TVVJMICopVVJMOworLSAoaWQpaW5pdFdpdGhVUkw6KE5T
VVJMICopVVJMOworLSAoTlNBcnJheSAqKWFsbEtleXM7CistIChOU0RhdGUgKilsYXN0TW9kaWZp
ZWREYXRlT2ZFbnRyeUZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKXJlbW92ZUVudHJ5
Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
Y29weSkgTlNVUkwgKlVSTDsKK0BlbmQKK05TX0FTU1VNRV9OT05OVUxMX0VORAorI2VuZGlmCisK
ICNpZiBQTEFURk9STShJT1MpCiAKICNpZiBIQVZFKEFWS0lUKSAmJiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDhmZjI5ZjdhNjE5ZWFlYTgwNzZjNzY1NzZmZmFiMzli
NjgzMmE2NmYuLjY2ODg1YzcyMWY3ZDFlMGU5ZTM1MmM5N2I2NjhjZWMwNGQxNWZlYzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTY1LDYgKzY1LDggQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5j
b2RlciA8PCBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVu
Y29kZXIgPDwgd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCB3ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1lZGlhQ2Fj
aGVEaXJlY3Rvcnk7CisgICAgZW5jb2RlciA8PCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgZW5jb2RlciA8PCBjb29r
aWVTdG9yYWdlRGlyZWN0b3J5OwogI2VuZGlmCkBAIC0xNjAsNiArMTYyLDEwIEBAIGJvb2wgV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBXZWJQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVS
UykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVj
dG9yeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGU0NjBhOWU0OTFlNDQx
ZmQyZTRjZThkN2QxMmJjNTQ4YmM1OWFkZmIuLmI1ZmZkYWQ4ZmUwYjY5YjE0NmRkZjE2MDZkYjE5
YjAyMTJhODY0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNzIsNiArNzIsOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU3RyaW5nIHdlYlNRTERh
dGFiYXNlRGlyZWN0b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVj
dG9yeTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFDYWNoZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZTsKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIFN0cmluZyBj
b29raWVTdG9yYWdlRGlyZWN0b3J5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5k
ZXggNDE2MDMzZTFhNjBiOTJjYzk1NGI3MWUzZGI2OTJjZGUzOTY5OWZlOS4uMTFhMTY5YjFjNzgy
ZTkyMGJmZjIzM2RlOGVlNGMwYjk2MWJhOGFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApA
QCAtNDYsNiArNDYsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKAogCiAgICAgY29uZmlndXJh
dGlvbi0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNzUG9v
bDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAg
IGNvbmZpZ3VyYXRpb24tPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIGNv
bmZpZ3VyYXRpb24tPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9y
eSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0
b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0g
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpOwpAQCAtNTcsNiArNTgsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25z
KAogUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQog
ICAgIDogbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCkpCiAgICAgLCBtX2Rpc2tDYWNoZURpcmVjdG9y
eShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpCisgICAg
LCBtX21lZGlhQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2Fj
aGVEaXJlY3RvcnkoKSkKICAgICAsIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpCiAgICAgLCBt
X2xvY2FsU3RvcmFnZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9y
YWdlRGlyZWN0b3J5KCkpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKQpAQCAtNzksNiArODEs
NyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNvcHkoKQogICAgIGNvcHktPm1fZGlza0NhY2hlU2l6ZU92ZXJyaWRlID0gdGhpcy0+bV9k
aXNrQ2FjaGVTaXplT3ZlcnJpZGU7CiAgICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5ID0gdGhpcy0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fZGlz
a0NhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgY29weS0+
bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAg
IGNvcHktPm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5OwogICAgIGNvcHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+
bV9pbmplY3RlZEJ1bmRsZVBhdGg7CiAgICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnkg
PSB0aGlzLT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4
IGQyMmJiODM3Zjk0YjFlM2MyNTE3OWNiM2JlZmJkYjA5ZTVkMzhkNTYuLjY5M2Y4NjMyODFhNmI3
NjgzZTVhMTI4YzA5ZDM3NmJiYmFkNzg4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNjUs
NiArNjUsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVj
dG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBz
ZXREaXNrQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9y
eSkgeyBtX2Rpc2tDYWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQogCisgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBt
X21lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3Rvcnko
Y29uc3QgV1RGOjpTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGly
ZWN0b3J5ID0gbWVkaWFDYWNoZURpcmVjdG9yeTsgfQorICAgIAogICAgIGNvbnN0IFdURjo6U3Ry
aW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGly
ZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBt
X2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7
IH0KIApAQCAtMTAzLDYgKzEwNiw3IEBAIHByaXZhdGU6CiAKICAgICBXVEY6OlN0cmluZyBtX2Fw
cGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9kaXNrQ2FjaGVEaXJl
Y3Rvcnk7CisgICAgV1RGOjpTdHJpbmcgbV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIFdURjo6
U3RyaW5nIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9p
bmplY3RlZEJ1bmRsZVBhdGg7CiAgICAgV1RGOjpTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rv
cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVE
YXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCAyYTJlYTQxMDBkNWFmNWY3YzUwYTNiNzc5YjgyZjIxZDE2NTA3ODI3
Li5mYjJhY2Q2ZDZhNWFkYjk2YjM3OTQyZDhmN2RmNGZiZDk4OGY0NDM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAg
LTEzNyw1ICsxMzcsMTMgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKIH0KIAogI2VuZGlmCisgICAgCisjaWYgIVBMQVRG
T1JNKENPQ09BKQorU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MzY5IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU2MzcwCisgICAgcmV0dXJuIFN0cmluZygpOworfQorI2VuZGlmCiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURh
dGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0
b3JlLmgKaW5kZXggNDY1YTVlZThkNjE5NzFiY2UzNWFkZDdmNWUxZjk2M2EyNmNiYjBhNS4uYTAz
NzU1MzhlODc1N2M3MWE1YzQ3MmY4Mjg2NDQyZDA1OGI1ODEwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTQ5LDYgKzQ5
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVj
dG9yeSgpOworICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsK
IAogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7
CiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CkBAIC02
MCw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAgV2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNp
dGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24pOwogICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKIAor
ICAgIHN0YXRpYyBTdHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwogICAgIHN0YXRpYyBTdHJpbmcgY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1l
KTsKICAgICBzdGF0aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0KaW5kZXggODIzMWFiYmM2MjBlYTNiMDExNjU1NGRjYzRjMGZiMTlkNGJmMjdk
Mi4uZWRhNGMxNDkyNDQ0Njg2NDM2NWI2OThiNTVlNWEzNzE2Nzg3NGQ1NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0KQEAgLTU3LDYgKzU3LDExIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gY2FjaGVEaXJl
Y3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwogfQogCitTdHJp
bmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hl
Iik7Cit9CisKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJh
c2VEaXJlY3RvcnkoKQogewogICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0
ZW1SZXByZXNlbnRhdGlvbigiSW5kZXhlZERCIik7CkBAIC04Miw2ICs4NywzMyBAQCBTdHJpbmcg
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnko
KQogICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bigiUmVzb3VyY2VMb2FkU3RhdGlzdGljcyIpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRp
cmVjdG9yeU5hbWUpCit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Cisg
ICAgc3RhdGljIE5TVVJMICp0ZW1wVVJMOworICAgIAorICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXnsKKyAgICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNU
ZW1wb3JhcnlEaXJlY3RvcnkoKV07CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghV2ViS2l0
Ojpwcm9jZXNzSGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJ
ZGVudGlmaWVyID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAg
ICAgICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRl
bnRpZmllciA9IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAg
ICAgICAgIHVybCA9IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50
aWZpZXIgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGVt
cFVSTCA9IFtbdXJsIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJl
Y3Rvcnk6WUVTXSByZXRhaW5dOworICAgIH0pOworICAgIAorICAgIE5TVVJMICp1cmwgPSBbdGVt
cFVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9y
eTpZRVNdOworICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVE
aXJlY3RvcnlBdFVSTDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1
dGVzOm5pbCBlcnJvcjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3Jl
YXRlIGRpcmVjdG9yeSAlQCIsIHVybCk7CisgICAgCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVS
TC5wYXRoLmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKwogU3RyaW5nIFdlYnNpdGVEYXRh
U3RvcmU6OmNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmlu
ZyYgZGlyZWN0b3J5TmFtZSkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tl
bjsKQEAgLTE0NCw2ICsxNzYsNyBAQCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3Vy
YXRpb24gV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZwogCiAgICAgY29u
ZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9y
eSA9IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLm1l
ZGlhQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogCiAgICAg
Y29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGRlZmF1bHRXZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzNzFjNWIw
Mjc1NmE3MzNhODUxNTU0ZjlkOGI5OWNkNzJlMTczNzNmLi4wZTlhNTQyNWU3Nzg4MGZjNjc2NDg2
NDUyYzRjZDNkZjE2MjJlMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtNjQsNiArNjQsNyBAQCBOU1N0cmlu
ZyAqV2ViU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGhQcmVmZQogTlNTdHJpbmcgKldlYktpdEpTQ0pJVEVuYWJsZWREZWZhdWx0c0tl
eSA9IEAiV2ViS2l0SlNDSklURW5hYmxlZERlZmF1bHRzS2V5IjsKIE5TU3RyaW5nICpXZWJLaXRK
U0NGVExKSVRFbmFibGVkRGVmYXVsdHNLZXkgPSBAIldlYktpdEpTQ0ZUTEpJVEVuYWJsZWREZWZh
dWx0c0tleSI7CiBOU1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeURlZmF1
bHRzS2V5ID0gQCJXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IjsKK05TU3RyaW5nICpX
ZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2FjaGVE
aXJlY3RvcnkiOwogCiAjaWYgIVBMQVRGT1JNKElPUykKIHN0YXRpYyBOU1N0cmluZyAqV2ViS2l0
QXBwbGljYXRpb25EaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlTm90
aWZpY2F0aW9uID0gQCJOU0FwcGxpY2F0aW9uRGlkQ2hhbmdlQWNjZXNzaWJpbGl0eUVuaGFuY2Vk
VXNlckludGVyZmFjZU5vdGlmaWNhdGlvbiI7CkBAIC0zNDAsNiArMzQxLDI1IEBAIFN0cmluZyBX
ZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkKICAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbbG9jYWxTdG9y
YWdlRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKIH0KIAorU3RyaW5nIFdl
YlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkK
K3sKKyAgICByZWdpc3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CisgICAgCisgICAgTlNTdHJp
bmcgKm1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0
c0tleV07CisgICAgaWYgKCFtZWRpYUtleXNDYWNoZURpcmVjdG9yeSB8fCAhW21lZGlhS2V5c0Nh
Y2hlRGlyZWN0b3J5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAg
bWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOworICAgICAg
ICAKKyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAg
ICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0u
YnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAg
ICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0lu
Zm9dLnByb2Nlc3NOYW1lOworICAgICAgICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBb
bWVkaWFLZXlzQ2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1
bmRsZUlkZW50aWZpZXJdOworICAgICAgICB9CisgICAgICAgIG1lZGlhS2V5c0NhY2hlRGlyZWN0
b3J5ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAIldlYktpdC9NZWRpYUNhY2hlIl07CisgICAgfQorICAgIHJldHVybiBzdHJpbmdCeVJl
c29sdmluZ1N5bWxpbmtzSW5QYXRoKFttZWRpYUtleXNDYWNoZURpcmVjdG9yeSBzdHJpbmdCeVN0
YW5kYXJkaXppbmdQYXRoXSk7Cit9CisKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxh
dGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAgICAgcmVnaXN0ZXJV
c2VyRGVmYXVsdHNJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKaW5kZXggMDU3Y2EyOTE1MGFmYjQ0YTYyMDkyNDJjNTRlMGVjYmY3YTgyYjMw
ZC4uYTExOWY3M2M5YTYxNGVkNjg2NjBjNTg3MjJkZGIyYWE4MmRkN2NlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMjgsNiArMTI4LDcgQEAg
c3RhdGljIFdlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24oQVBJOjoKICAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURp
cmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KTsKICAgICBjb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
LmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLm1lZGlhQ2Fj
aGVEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9y
eSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29u
ZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uZGlza0NhY2hlRGlyZWN0b3J5KCk7CiAKQEAgLTU0NCw2ICs1NDUsMTAgQEAgV2ViUHJvY2Vz
c1Byb3h5JiBXZWJQcm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgaWYgKCFw
YXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRl
cnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCisgICAgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0
b3J5ID0gbV9jb25maWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CisgICAgaWYgKCFw
YXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5t
ZWRpYUNhY2hlRGlyZWN0b3J5LCBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOworICAgIAogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgcGFyYW1l
dGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+Y29va2llU3RvcmFnZURpcmVjdG9y
eSgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmlu
ZGV4IDRkN2YxZjZlNjNiMzA5OGE0NjdiYmJhZDFhMTA4NmFmMzQ4NmZmYjcuLjMyZjk1YzYwNDEy
ZDJkZDU5NmJjODc0NTg1NWY4ZjhhNmI0NDAxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0zNTksNiArMzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KTsKICAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9y
bURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQ
bGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFN0
cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBz
dGF0aWMgYm9vbCBpc05ldHdvcmtDYWNoZUVuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRl
eCAxODA2YzMxZDYyOWI4Y2I3MjNlZDNlZWViMDQzMWFmNjk3NTg2ZWRhLi45YzBmNmNiNjgwMDA2
ODBmMGM3YmNmMzQzZTQ0NzlkNjU4NTE5YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNr
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL09yaWdpbkxvY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTc3LDYgKzc4LDcgQEAgV2Vic2l0ZURhdGFT
dG9yZTo6V2Vic2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAg
LCBtX3Nlc3Npb25JRChXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAg
ICAsIG1fbmV0d29ya0NhY2hlRGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJhdGlvbi5uZXR3b3Jr
Q2FjaGVEaXJlY3RvcnkpKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdURk1v
dmUoY29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KSkKKyAgICAsIG1fbWVk
aWFDYWNoZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9y
eSkpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJhdGlv
bi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSkpCiAgICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpKQog
ICAgICwgbV9zdG9yYWdlTWFuYWdlcihTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFdURk1vdmUoY29u
ZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSkKQEAgLTI1NSw2ICsyNTcsMjcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+
IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoZmV0
Y2hPcHRpb25zLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogCisgICAgaWYgKGRhdGFU
eXBlcy5jb250YWlucyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKKyAgICAgICAgU3Ry
aW5nQ2FwdHVyZSBtZWRpYUNhY2hlRGlyZWN0b3J5IHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5IH07
CisgICAgICAgIAorICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFj
aygpOworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0Y2hPcHRpb25zLCBtZWRpYUNhY2hl
RGlyZWN0b3J5LCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIEhhc2hTZXQ8UmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2lucyA9IFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUobWVkaWFDYWNoZURpcmVjdG9yeS5zdHJpbmco
KSk7CisgICAgICAgICAgICBXZWJzaXRlRGF0YSogd2Vic2l0ZURhdGEgPSBuZXcgV2Vic2l0ZURh
dGE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lu
cykgeworICAgICAgICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdpbiwg
V2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUsIDAgfTsKKyAgICAgICAgICAgICAgICB3ZWJzaXRl
RGF0YS0+ZW50cmllcy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2Fs
bGJhY2tBZ2dyZWdhdG9yLCBvcmlnaW5zLCB3ZWJzaXRlRGF0YV0geworICAgICAgICAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUoKndlYnNp
dGVEYXRhKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVsZXRlIHdlYnNp
dGVEYXRhOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8g
bmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlw
ZUZvckRhdGFGZXRjaChkYXRhVHlwZXMsICFpc1BlcnNpc3RlbnQoKSk7CiAgICAgaWYgKG5ldHdv
cmtQcm9jZXNzQWNjZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9uZSkgewogICAgICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKQEAgLTUyOSw2ICs1
NTIsMTkgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgc3RkOjpjaHIKIAogICAgIFJlZlB0cjxDYWxsYmFja0Fn
Z3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3Jl
Z2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAorICAgIGlmIChkYXRhVHlwZXMu
Y29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CisgICAgICAgIFN0cmluZ0Nh
cHR1cmUgbWVkaWFDYWNoZURpcmVjdG9yeSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSB9OworCisg
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAg
IG1fcXVldWUtPmRpc3BhdGNoKFttb2RpZmllZFNpbmNlLCBtZWRpYUNhY2hlRGlyZWN0b3J5LCBj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQ6OmNsZWFyTWVkaWFDYWNoZShtZWRpYUNhY2hlRGlyZWN0b3J5LnN0cmluZygpLCBtb2RpZmll
ZFNpbmNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgICAgIGNhbGxiYWNr
QWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfSk7CisgICAgfQorCiAgICAgYXV0byBuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgPSBj
b21wdXRlTmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwoZGF0YVR5cGVzLCAh
aXNQZXJzaXN0ZW50KCkpOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgIT0gUHJv
Y2Vzc0FjY2Vzc1R5cGU6Ok5vbmUpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6
IHByb2Nlc3NQb29scygpKSB7CkBAIC03NTUsNyArNzkxLDI1IEBAIHZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNv
bnN0IFZlCiAgICAgfTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNr
QWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpKTsKLQorICAgIAorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CisgICAgICAgIFN0cmluZ0NhcHR1cmUgbWVkaWFD
YWNoZURpcmVjdG9yeSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSB9OworICAgICAgICBIYXNoU2V0
PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAgICAgIGZvciAo
Y29uc3QgYXV0byYgZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CisgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKKyAgICAgICAgICAgICAg
ICBvcmlnaW5zLmFkZChvcmlnaW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjYWxs
YmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbb3JpZ2lucywgbWVkaWFDYWNoZURpcmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7CisgICAgICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKG1lZGlhQ2FjaGVEaXJlY3Rvcnkuc3RyaW5nKCksIG9yaWdpbnMpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2Fs
bGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5y
ZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAg
ICB9CisgICAgCiAgICAgYXV0byBuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgPSBjb21wdXRlTmV0
d29ya1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwoZGF0YVR5cGVzLCAhaXNQZXJzaXN0
ZW50KCkpOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgIT0gUHJvY2Vzc0FjY2Vz
c1R5cGU6Ok5vbmUpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQ
b29scygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCAxMDNkNjIzODMxYjg1MjRhZjZjMDM3NDc2YTBi
MzM5ZTVkN2E5MjFhLi5hNGE5ZTEwNDNiNzZhNmViODhkZmYzYzcxMTFmNGY2MmE3N2VjZjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcg
bmV0d29ya0NhY2hlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeTsKIAorICAgICAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICAgICAg
U3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgbG9jYWxTdG9y
YWdlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsK
QEAgLTExNyw2ICsxMTgsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nIG1fbmV0d29y
a0NhY2hlRGlyZWN0b3J5OwogICAgIGNvbnN0IFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3Rvcnk7CisgICAgY29uc3QgU3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKIAogICAgIGNv
bnN0IFN0cmluZyBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNvbnN0IFN0cmluZyBt
X21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAppbmRleCA4YmJkNDdmMGY5NGVkNWZiM2RkM2QyNGZjN2U1ODYyOGNhNWQ3NTY4
Li5lZjBhMTU4ZTlkMDEwNTU0Y2EzNzdhMTQyYmRhNjlhMzRkMWU1M2M1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTc2LDYgKzc2LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HQ0NvbnRyb2xsZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dseXBoUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSFRN
TE1lZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2Uu
aD4KQEAgLTI5MSw2ICsyOTIsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9j
ZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGlmICgh
cGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAg
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNpbmdsZXRvbigpLnNldENhY2hlRGlyZWN0b3J5KHBh
cmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7CiAKKyAgICBpZiAoIXBhcmFtZXRl
cnMubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tZWRpYUNhY2hl
RGlyZWN0b3J5KTsKKwogICAgIHNldENhY2hlTW9kZWwoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBh
cmFtZXRlcnMuY2FjaGVNb2RlbCkpOwogCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmxhbmd1YWdlcy5p
c0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCmluZGV4IGY3NjFjZTZiMThlNDgxOTQzZDM4ZjgzMjIyM2M0OTVhNDc2NjA0
OTYuLmEwODdmOTBlNzU2MWRlYjU2NDQ4MDY0ODNmZGMxYWE1YjM4OWJkMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC0x
MzUsNiArMTM1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXIKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVSZXNvdXJj
ZVBhdGhFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJt
YW5lbnRseShwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5
RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50
bHkocGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50
bHkocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275950</attachid>
            <date>2016-04-07 15:56:41 -0700</date>
            <delta_ts>2016-04-10 17:32:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-155783-20160407155644.patch</filename>
            <type>text/plain</type>
            <size>56123</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU1OGU0OTNlOGRkNGEz
MDUxNjU5NmY1OWFhYzc1Mjg1ZmQ5OTIyYy4uODZlNjdkNTJjMTg1ODhkYTU1NzVmNTIwYzhlYjkx
NmM3MDIxYzUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTA0LTA3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworICAgICAgICByZGFyOi8vcHJvYmxl
bS8yNTI1MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZpZWQgbG9jYXRpb24gb24gZGlzayBmb3Ig
YWxsIEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNoZQorICAgICAgICBjYW4gdGhlbiBiZSB1
c2VkIHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1c2VkIGJ5IEFWRm91bmRhdGlvbi4gSXQg
aXMgdXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIGNhY2hlIGluIG9y
aWdpbnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIgdGhlIGNhY2hlIGNvbXBsZXRlbHkgb3Ig
cGFydGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFDYWNoZSgpIGFuZCBjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luIGluc3RlYWQgb2Yg
dGhlIGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJlcHJlc2VudCBvcmlnaW5zIGluIHRoZSBj
YWNoZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhY2hlRGlyZWN0b3J5KTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRp
YUNhY2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVh
ck1lZGlhQ2FjaGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3Rvcnkp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5N
ZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJN
ZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1lZGlhRW5naW5lKTogQWRk
IG5ldyBjYWNoZSBtZXRob2RzLgorICAgICAgICAoV2ViQ29yZTo6YWRkVG9IYXNoKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFk
ZGVkIHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlh
Q2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6
Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
ckNsaWVudDo6bWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xl
YXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmdldFNpdGVz
SW5NZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1l
ZGlhRW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OmFzc2V0
Q2FjaGVGb3JQYXRoKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjp0b1N5c3RlbUNsb2NrVGltZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKTogQWRk
ZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3Nl
dEZvclVSTCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNh
Y2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVk
aWFDYWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVR
VEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaDoKKwogMjAxNi0wMy0yMyAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR0xdIE5vbi1wb3dlci1vZi10
d28gdGV4dHVyZSBvcHRpbWl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmMmM5ZjRlNjFiZGIyMjhiMmVi
YjAxNDAzNTdjN2NlMTQ2ZTNlNTM3Li45MDY2MGM4OTA4YmEyZGNjZGFmYzI2NmViZDQ4YWUxYWRk
M2U3ZTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTYtMDQtMDcgIEplcmVteSBK
b25lcyAgPGplcmVteWpAYXBwbGUuY29tPgorCisgICAgICAgIFdoZW4gY2xlYXJpbmcgY2FjaGUs
IGFsc28gY2xlYXIgQVZGb3VuZGF0aW9uIGNhY2hlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NzgzCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI1
MjUyNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SW5jbHVkZSB0aGUgSFRNTE1lZGlhRWxlbWVudCBtZWRpYSBjYWNoZSB3aGVuIGRvaW5nIGRpc2sg
Y2FjaGUgb3BlcmF0aW9ucy4KKyAgICAgICAgQWRkIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIG1l
ZGlhIGNhY2hlIGRpcmVjdG9yeS4gVGhpcyBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgYW5kIHRoZSB3
ZWIgcHJvY2VzcworICAgICAgICB0byBhY2Nlc3MgdGhlIHNhbWUgY2FjaGUuCisKKyAgICAgICAg
KiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEFkZCBtZWRpYSBjYWNo
ZSBkaXJlY3RvcnkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMpOgorICAgICAgICAoQVBJ
OjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IEFk
ZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6Y29weSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlZmF1bHQgaW1wbGVtZW50
YXRpb24uCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06
CisgICAgICAgIChBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0
b3J5KTogTWVkaWEgY2FjaGUgaXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bik6IEZvciByZXNvdXJjZXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBJbml0IG1l
ZGlhIGNhY2hlIGRpcmVjdG9yeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBs
YXRmb3JtRGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uKTogQWRkIG1lZGlhQ2FjaGVEaXJlY3RvcnkuCisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKTogQWRkIG1lZGlhQ2FjaGVE
aXJlY3RvcnkuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRhKTogSW1wbGVtZW50IGZvciBtZWRpYUNh
Y2hlRGlyZWN0b3J5LgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVE
YXRhKTogSW1wbGVtZW50IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5LgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGly
ZWN0b3J5KTogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBJbml0aWFs
aXplIG1lZGlhIGNhY2hlIGRpcmVjdG9yeS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1J
bml0aWFsaXplV2ViUHJvY2Vzcyk6IENvbnN1bWUgc2FuZGJveCBleHRlbnNpb24uCisKIDIwMTYt
MDMtMjMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFVzZSBSZWdpb24gaW5zdGVhZCBvZiBJbnRSZWN0IGluIFBhZ2VDbGllbnQgYW5kIFdlYlBh
Z2VQcm94eSBzZXRWaWV3TmVlZHNEaXNwbGF5IG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNmUyNmRhOTcyYmRmZTlkZDFjMTQyNjA5ZjFjMTY4MDFm
MjIxNmY5My4uNzJlNjk3NDVkYjJlZmFkN2Y5YTc0YjNhNjYyODI5YTFlMmNiZGY4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01NTU1LDIxICs1NTU1LDM2
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0U2hvdWxkRGVsYXlMb2FkRXZlbnQoYm9vbCBz
aG91bGREZWxheSkKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50KCkuZGVjcmVtZW50TG9hZEV2
ZW50RGVsYXlDb3VudCgpOwogfQotICAgIAogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFNp
dGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+JiBzaXRlcykKK3N0YXRpYyBTdHJpbmcmIHNo
YXJlZE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQogewotICAgIE1lZGlhUGxheWVyOjpnZXRTaXRlc0lu
TWVkaWFDYWNoZShzaXRlcyk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2hh
cmVkTWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICByZXR1cm4gc2hhcmVkTWVkaWFDYWNoZURpcmVj
dG9yeTsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUoKQordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCk7CisgICAgc2hhcmVk
TWVkaWFDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKIH0KIAotdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK2NvbnN0IFN0cmlu
ZyYgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFDYWNoZURpcmVjdG9yeSgpCiB7Ci0gICAgTWVkaWFQ
bGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoc2l0ZSk7CisgICAgcmV0dXJuIHNoYXJlZE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKTsKK30KKworSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
PiBIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0
aCkKK3sKKyAgICByZXR1cm4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1lZGlhQ2FjaGUocGF0aCk7
Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNp
bmNlKQoreworICAgIE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUocGF0aCwgbW9kaWZpZWRT
aW5jZSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3Jp
Z2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPj4mIG9yaWdpbnMpCit7CisgICAgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMocGF0aCwgb3JpZ2lucyk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVzZXRN
ZWRpYUVuZ2luZXMoKQpAQCAtNjE1NCw2ICs2MTY5LDExIEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdAogICAgIHJldHVy
biBkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkubWVkaWFTaG91bGRVc2VQZXJz
aXN0ZW50Q2FjaGUoKTsKIH0KIAorY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdAoreworICAgIHJldHVybiBtZWRpYUNh
Y2hlRGlyZWN0b3J5KCk7Cit9CisKIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJT
aG91bGRXYWl0Rm9yUmVzcG9uc2VUb0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS5mcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRl
eCA0NjFkZmU4ZjhiYzg2NWFmMjE5OTIwNmYxNmYxZDU1ZTVkY2YyZTU2Li4xMmNmNTJmNWE4Y2Mz
OGE5ZWNmMDA5NDcyMzhjZDY1ZGQwYjhhZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuaApAQCAtMzgyLDkgKzM4MiwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwcml2YXRl
QnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVkaWEgY2FjaGUg
bWFuYWdlbWVudC4KLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVk
aWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFy
TWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIHZvaWQgc2V0TWVkaWFDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBtZWRpYUNhY2hlRGlyZWN0b3J5KCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4g
b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5
c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlID0geyB9KTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMg
dm9pZCByZXNldE1lZGlhRW5naW5lcygpOwogCiAgICAgYm9vbCBpc1BsYXlpbmcoKSBjb25zdCB7
IHJldHVybiBtX3BsYXlpbmc7IH0KQEAgLTU5OCw2ICs2MDAsNyBAQCBwcml2YXRlOgogICAgIENh
Y2hlZFJlc291cmNlTG9hZGVyKiBtZWRpYVBsYXllckNhY2hlZFJlc291cmNlTG9hZGVyKCkgb3Zl
cnJpZGU7CiAgICAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4gbWVkaWFQbGF5
ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIG92ZXJyaWRlOwogICAgIGJvb2wgbWVkaWFQbGF5ZXJT
aG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBTdHJp
bmcmIG1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IG92ZXJyaWRlOwogCiAj
aWYgUExBVEZPUk0oV0lOKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogICAgIEdyYXBoaWNzRGV2aWNl
QWRhcHRlciogbWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QgTWVkaWFQbGF5
ZXIqKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAppbmRleCA5OWI5ZDVjYWRlNzNlMGMxZmFkMDlhNzdjZjVmNmRi
Mjk4YzM3YWE1Li5lYjdkNzkyZmRhYzk1ZGI4OGRmMDAxNmE4MjgxODgxMzZlYWY2MjgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCkBA
IC0xNjgsMTMgKzE2OCwxMyBAQCBzdHJ1Y3QgTWVkaWFQbGF5ZXJGYWN0b3J5IHsKICAgICBDcmVh
dGVNZWRpYUVuZ2luZVBsYXllciBjb25zdHJ1Y3RvcjsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRl
ZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzOwogICAgIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlIHN1
cHBvcnRzVHlwZUFuZENvZGVjczsKLSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hl
IGdldFNpdGVzSW5NZWRpYUNhY2hlOworICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNo
ZSBvcmlnaW5zSW5NZWRpYUNhY2hlOwogICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlIGNs
ZWFyTWVkaWFDYWNoZTsKLSAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUgY2xl
YXJNZWRpYUNhY2hlRm9yU2l0ZTsKKyAgICBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2luczsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRz
S2V5U3lzdGVtIHN1cHBvcnRzS2V5U3lzdGVtOwogfTsKIAotc3RhdGljIHZvaWQgYWRkTWVkaWFF
bmdpbmUoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMs
IE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLCBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hl
LCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVG
b3JTaXRlLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKK3N0YXRpYyB2b2lkIGFkZE1l
ZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5
cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNh
Y2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zLCBNZWRpYUVuZ2luZVN1cHBvcnRzS2V5U3lzdGVtKTsKIAogc3RhdGljIGJv
b2wgaGF2ZU1lZGlhRW5naW5lc1ZlY3RvcjsKIApAQCAtMjMyLDEzICsyMzIsMTMgQEAgc3RhdGlj
IGNvbnN0IFZlY3RvcjxNZWRpYVBsYXllckZhY3Rvcnk+JiBpbnN0YWxsZWRNZWRpYUVuZ2luZXMo
KQogfQogCiBzdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2luZVBsYXll
ciBjb25zdHJ1Y3RvciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcyBnZXRTdXBwb3J0ZWRUeXBl
cywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5l
R2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xl
YXJNZWRpYUNhY2hlIGNsZWFyTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVG
b3JTaXRlIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0gc3VwcG9ydHNLZXlTeXN0ZW0pCisgICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hl
IG9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlIGNsZWFyTWVk
aWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zIGNsZWFyTWVkaWFD
YWNoZUZvck9yaWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlT
eXN0ZW0pCiB7CiAgICAgQVNTRVJUKGNvbnN0cnVjdG9yKTsKICAgICBBU1NFUlQoZ2V0U3VwcG9y
dGVkVHlwZXMpOwogICAgIEFTU0VSVChzdXBwb3J0c1R5cGUpOwogCi0gICAgbXV0YWJsZUluc3Rh
bGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFwcGVuZChNZWRpYVBsYXllckZhY3RvcnkgeyBjb25z
dHJ1Y3RvciwgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlh
Q2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgc3VwcG9ydHNL
ZXlTeXN0ZW0gfSk7CisgICAgbXV0YWJsZUluc3RhbGxlZE1lZGlhRW5naW5lc1ZlY3RvcigpLmFw
cGVuZChNZWRpYVBsYXllckZhY3RvcnkgeyBjb25zdHJ1Y3RvciwgZ2V0U3VwcG9ydGVkVHlwZXMs
IHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKIH0KIAogc3RhdGlj
IGNvbnN0IEF0b21pY1N0cmluZyYgYXBwbGljYXRpb25PY3RldFN0cmVhbSgpCkBAIC0xMDM0LDMw
ICsxMDM0LDQwIEBAIHZvaWQgTWVkaWFQbGF5ZXI6OnJlbG9hZFRpbWVyRmlyZWQoKQogICAgIGxv
YWRXaXRoTmV4dE1lZGlhRW5naW5lKG1fY3VycmVudE1lZGlhRW5naW5lKTsKIH0KIAotdm9pZCBN
ZWRpYVBsYXllcjo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mIHNpdGVzKQor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0YXRpYyB2b2lkIGFkZFRvSGFzaChIYXNoU2V0PFQ+JiB0
b0hhc2gsIEhhc2hTZXQ8VD4mJiBmcm9tSGFzaCkKIHsKKyAgICBpZiAodG9IYXNoLmlzRW1wdHko
KSkKKyAgICAgICAgdG9IYXNoID0gV1RGTW92ZShmcm9tSGFzaCk7CisgICAgZWxzZQorICAgICAg
ICB0b0hhc2guYWRkKGZyb21IYXNoLmJlZ2luKCksIGZyb21IYXNoLmVuZCgpKTsKK30KKyAgICAK
K0hhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXI6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1l
ZGlhRW5naW5lcygpKSB7Ci0gICAgICAgIGlmICghZW5naW5lLmdldFNpdGVzSW5NZWRpYUNhY2hl
KQorICAgICAgICBpZiAoIWVuZ2luZS5vcmlnaW5zSW5NZWRpYUNhY2hlKQogICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGVuZ2luZVNpdGVzOwotICAgICAgICBl
bmdpbmUuZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoZW5naW5lU2l0ZXMpOwotICAgICAgICBzaXRlcy5h
cHBlbmRWZWN0b3IoZW5naW5lU2l0ZXMpOworICAgICAgICBhdXRvIGVuZ2luZU9yaWdpbnMgPSBl
bmdpbmUub3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKKyAgICAgICAgYWRkVG9IYXNoKG9yaWdp
bnMsIFdURk1vdmUoZW5naW5lT3JpZ2lucykpOwogICAgIH0KKyAgICByZXR1cm4gb3JpZ2luczsK
IH0KIAotdm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlKCkKK3ZvaWQgTWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0
ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKIHsKICAgICBmb3IgKGF1dG8mIGVu
Z2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7CiAgICAgICAgIGlmIChlbmdpbmUuY2xl
YXJNZWRpYUNhY2hlKQotICAgICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZSgpOworICAg
ICAgICAgICAgZW5naW5lLmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKICAg
ICB9CiB9CiAKLXZvaWQgTWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3Qg
U3RyaW5nJiBzaXRlKQordm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lu
cyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2lu
Pj4mIG9yaWdpbnMpCiB7CiAgICAgZm9yIChhdXRvJiBlbmdpbmUgOiBpbnN0YWxsZWRNZWRpYUVu
Z2luZXMoKSkgewotICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpCi0g
ICAgICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShzaXRlKTsKKyAgICAgICAg
aWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKQorICAgICAgICAgICAgZW5naW5l
LmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMocGF0aCwgb3JpZ2lucyk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAppbmRleCA1
ZWE1NTg3MTEwNTkzN2VlZTQwNjNlNzI1OTJhMWFlNTU3MTU0NWNiLi5hYzRmODUzMGY0ZmY0YTlm
ZDkwN2Y0YzBlY2VkYjVhNjRiYmQwZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1NZWRpYVNlc3Npb24uaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdp
bkhhc2guaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpZGVvVHJhY2tQcml2YXRl
LmgiCiAjaW5jbHVkZSA8cnVudGltZS9VaW50OEFycmF5Lmg+CkBAIC0yMzYsNiArMjM3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcj4g
bWVkaWFQbGF5ZXJDcmVhdGVSZXNvdXJjZUxvYWRlcigpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgZG9lc0hhdmVBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiwgQXRv
bWljU3RyaW5nKiA9IDApIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IG1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBtZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJl
Y3RvcnkoKSBjb25zdCB7IHJldHVybiBlbXB0eVN0cmluZygpOyB9CiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgdmlydHVhbCB2b2lkIG1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQ
YXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPikgeyB9CkBAIC0yOTIsOSArMjk0LDkgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShj
b25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiwgY29uc3QgTWVkaWFQbGF5ZXJTdXBw
b3J0c1R5cGVDbGllbnQqKTsKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNo
U2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYpOwogICAgIHN0YXRpYyBib29s
IGlzQXZhaWxhYmxlKCk7Ci0gICAgc3RhdGljIHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVj
dG9yPFN0cmluZz4mKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKTsKLSAgICBz
dGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKGNvbnN0IFN0cmluZyYpOworICAgIHN0
YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29u
c3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1v
ZGlmaWVkU2luY2UpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMo
Y29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
Jik7CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlT
eXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiAgICAgYm9vbCBzdXBwb3J0c0Z1bGxz
Y3JlZW4oKSBjb25zdDsKQEAgLTYyOSwxMyArNjMxLDEzIEBAIHByaXZhdGU6CiB0eXBlZGVmIHN0
ZDo6ZnVuY3Rpb248c3RkOjp1bmlxdWVfcHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZT4g
KE1lZGlhUGxheWVyKik+IENyZWF0ZU1lZGlhRW5naW5lUGxheWVyOwogdHlwZWRlZiB2b2lkICgq
TWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcykoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vu
c2l0aXZlSGFzaD4mIHR5cGVzKTsKIHR5cGVkZWYgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSAo
Kk1lZGlhRW5naW5lU3VwcG9ydHNUeXBlKShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lR2V0U2l0ZXNJbk1l
ZGlhQ2FjaGUpKFZlY3RvcjxTdHJpbmc+Jik7Ci10eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZSkoKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNh
Y2hlRm9yU2l0ZSkoY29uc3QgU3RyaW5nJik7Cit0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gKCpNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUpKGNvbnN0IFN0cmlu
ZyYgcGF0aCk7Cit0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZSkoY29u
c3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1v
ZGlmaWVkU2luY2UpOwordHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKShjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4mKTsKIHR5cGVkZWYgYm9vbCAoKk1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0
ZW0pKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKIAog
dHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVSZWdpc3RyYXIpKENyZWF0ZU1lZGlhRW5naW5lUGxh
eWVyLCBNZWRpYUVuZ2luZVN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRzVHlwZSwK
LSAgICBNZWRpYUVuZ2luZUdldFNpdGVzSW5NZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVk
aWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCBNZWRpYUVuZ2luZVN1
cHBvcnRzS2V5U3lzdGVtKTsKKyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogdHlwZWRlZiB2b2lkICgqTWVk
aWFFbmdpbmVSZWdpc3RlcikoTWVkaWFFbmdpbmVSZWdpc3RyYXIpOwogCiBjbGFzcyBNZWRpYVBs
YXllckZhY3RvcnlTdXBwb3J0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmgKaW5kZXggZTU3OWFlOTM4NTZlN2RkYzg1OTY4
NjQ3MzYxOGRhMmExNGQ2Yzc5MC4uMDlhYzhjOTMzZmQyY2NkZDQ1Y2ZlZGNkZTk0YTYwYTc1ZTg3
YzliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVk
aWFQbGF5ZXJQcml2YXRlLmgKQEAgLTIxNCw5ICsyMTQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB1bnNpZ25lZCBhdWRpb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCB1bnNpZ25lZCB2aWRlb0RlY29kZWRCeXRlQ291bnQoKSBjb25zdCB7IHJldHVy
biAwOyB9CiAKLSAgICB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+Jikg
eyB9Ci0gICAgdm9pZCBjbGVhck1lZGlhQ2FjaGUoKSB7IH0KLSAgICB2b2lkIGNsZWFyTWVkaWFD
YWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIHsg
fTsgfQorICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIHN0ZDo6Y2hyb25v
OjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpIHsgfQorICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4+JikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nTW9kZShi
b29sKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IGY3ZmIxYWM0NjhiMDY4MTEwZWJh
MjMyZjJiYzZmZjA2MjZlZmJhMjAuLjY1OWE0N2FlZWQ4NjU1MTJiY2NmOWI0YzcwZDU3ZmFhMTNm
YmI0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTg3LDYgKzg3LDEwIEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3Ry
YXIpOwogCisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2lu
c0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlh
Q2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmln
aW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4m
KTsKKwogICAgIHZvaWQgc2V0QXNzZXQoUmV0YWluUHRyPGlkPik7CiAgICAgdm9pZCB0cmFja3ND
aGFuZ2VkKCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDE1NDM3ZGRk
OGVkNmYzZDBhMmJkYmU1NWU4ZjMxZGZhN2M0NmNkZGYuLmIwNTAzYjczOGE0MDVjZGJiYWRlOTMx
Y2IyNjJkNjM3MzlmZTA0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTU4LDYgKzE1
OCw3IEBAIFNPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWUGxheWVyTGF5ZXIpCiBTT0ZU
X0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0KQogU09GVF9MSU5LX0NMQVNTKEFW
Rm91bmRhdGlvbiwgQVZBc3NldEltYWdlR2VuZXJhdG9yKQogU09GVF9MSU5LX0NMQVNTKEFWRm91
bmRhdGlvbiwgQVZNZXRhZGF0YUl0ZW0pCitTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBB
VkFzc2V0Q2FjaGUpCiAKIFNPRlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJQ29udGV4dCkKIFNP
RlRfTElOS19DTEFTUyhDb3JlSW1hZ2UsIENJSW1hZ2UpCkBAIC0yMjcsNiArMjI4LDcgQEAgU09G
VF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlBsYXllckl0ZW1MZWdpYmxlT3V0cHV0VGV4
dFN0eWxpbmdSZXNvbHV0aW9uU28KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFWRl9DQVBUSU9OUykK
K1NPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldENhY2hlS2V5LCBOU1N0
cmluZyopCiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRIVFRQQ29v
a2llc0tleSwgTlNTdHJpbmcqKQogU09GVF9MSU5LX1BPSU5URVIoQVZGb3VuZGF0aW9uLCBBVlVS
TEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5LCBOU1N0cmluZyopCiBTT0ZUX0xJTktf
UE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXks
IE5TU3RyaW5nKikKQEAgLTI0Miw2ICsyNDQsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5k
YXRpb24sIEFWTWVkaWFDaGFyYWN0ZXJpc3RpY0lzQXV4aWxpYXJ5Q29udGVudCwgTlNTdHJpbgog
CiAjZGVmaW5lIEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSBnZXRBVlVSTEFzc2V0SFRUUENvb2tp
ZXNLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0T3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tzS2V5IGdl
dEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkoKQorI2RlZmluZSBBVlVSTEFz
c2V0Q2FjaGVLZXkgZ2V0QVZVUkxBc3NldENhY2hlS2V5KCkKICNkZWZpbmUgQVZVUkxBc3NldFVz
ZXNOb1BlcnNpc3RlbnRDYWNoZUtleSBnZXRBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hl
S2V5KCkKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0Rpc3BsYXlOYW1lS2V5IGdl
dEFWT3V0T2ZCYW5kQWx0ZXJuYXRlVHJhY2tEaXNwbGF5TmFtZUtleSgpCiAjZGVmaW5lIEFWT3V0
T2ZCYW5kQWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5IGdldEFWT3V0T2ZCYW5k
QWx0ZXJuYXRlVHJhY2tFeHRlbmRlZExhbmd1YWdlVGFnS2V5KCkKQEAgLTQyMiw3ICs0MjUsOTUg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlh
RW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmEKIHsKICAgICBpZiAoaXNBdmFpbGFibGUoKSkKICAg
ICAgICAgcmVnaXN0cmFyKFtdKE1lZGlhUGxheWVyKiBwbGF5ZXIpIHsgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQz4ocGxheWVyKTsgfSwK
LSAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0c1R5cGUsIDAsIDAsIDAsIHN1
cHBvcnRzS2V5U3lzdGVtKTsKKyAgICAgICAgICAgIGdldFN1cHBvcnRlZFR5cGVzLCBzdXBwb3J0
c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNh
Y2hlRm9yT3JpZ2lucywgc3VwcG9ydHNLZXlTeXN0ZW0pOworfQorCitzdGF0aWMgQVZBc3NldENh
Y2hlICphc3NldENhY2hlRm9yUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgTlNVUkwg
KmFzc2V0Q2FjaGVVUkw7CisgICAgCisgICAgaWYgKHBhdGguaXNFbXB0eSgpKQorICAgICAgICBh
c3NldENhY2hlVVJMID0gW1tOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlEaXJlY3Rv
cnkoKV0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiTWVkaWFDYWNoZSIgaXNEaXJlY3Rv
cnk6WUVTXTsKKyAgICBlbHNlCisgICAgICAgIGFzc2V0Q2FjaGVVUkwgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOnBhdGggaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIHJldHVybiBbZ2V0QVZBc3Nl
dENhY2hlQ2xhc3MoKSBhc3NldENhY2hlV2l0aFVSTDphc3NldENhY2hlVVJMXTsKK30KKworSGFz
aFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAgZm9yIChOU1N0cmlu
ZyAqa2V5IGluIFthc3NldENhY2hlRm9yUGF0aChwYXRoKSBhbGxLZXlzXSkgeworICAgICAgICBV
Ukwga2V5QXNVUkwgPSBVUkwoVVJMKCksIGtleSk7CisgICAgICAgIGlmIChrZXlBc1VSTC5pc1Zh
bGlkKCkpCisgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGtl
eUFzVVJMKSk7CisgICAgfQorICAgIHJldHVybiBvcmlnaW5zOworfQorCitzdGF0aWMgc3RkOjpj
aHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0b1N5c3RlbUNsb2NrVGltZShOU0RhdGUg
KmRhdGUpCit7CisgICAgQVNTRVJUKGRhdGUpOworICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ6OmNo
cm9ubzsKKworICAgIHJldHVybiBzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQoZHVyYXRpb25fY2Fz
dDxzeXN0ZW1fY2xvY2s6OmR1cmF0aW9uPihkdXJhdGlvbjxkb3VibGU+KGRhdGUudGltZUludGVy
dmFsU2luY2UxOTcwKSkpOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OmNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25vOjpz
eXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSkKK3sKKyAgICBMT0coTWVkaWEs
ICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGUoKSIp
OworICAgIAorICAgIEFWQXNzZXRDYWNoZSogYXNzZXRDYWNoZSA9IGFzc2V0Q2FjaGVGb3JQYXRo
KHBhdGgpOworICAgIAorICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBbYXNzZXRDYWNoZSBhbGxL
ZXlzXSkgeworICAgICAgICBpZiAodG9TeXN0ZW1DbG9ja1RpbWUoW2Fzc2V0Q2FjaGUgbGFzdE1v
ZGlmaWVkRGF0ZU9mRW50cnlGb3JLZXk6a2V5XSkgPiBtb2RpZmllZFNpbmNlKQorICAgICAgICAg
ICAgW2Fzc2V0Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICB9CisKKyAgICBOU0Zp
bGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsK
KyAgICBOU1VSTCAqYmFzZVVSTCA9IFthc3NldENhY2hlIFVSTF07CisKKyAgICBpZiAobW9kaWZp
ZWRTaW5jZSA8PSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IHsgfSkgewor
ICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmJhc2VVUkwgZXJyb3I6bmlsXTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBOU0FycmF5ICpwcm9wZXJ0eUtleXMg
PSBAW05TVVJMTmFtZUtleSwgTlNVUkxDb250ZW50TW9kaWZpY2F0aW9uRGF0ZUtleSwgTlNVUkxJ
c1JlZ3VsYXJGaWxlS2V5XTsKKyAgICBOU0RpcmVjdG9yeUVudW1lcmF0b3IgKmVudW1lcmF0b3Ig
PSBbZmlsZU1hbmFnZXIgZW51bWVyYXRvckF0VVJMOmJhc2VVUkwgaW5jbHVkaW5nUHJvcGVydGll
c0ZvcktleXM6CisgICAgICAgIHByb3BlcnR5S2V5cyBvcHRpb25zOk5TRGlyZWN0b3J5RW51bWVy
YXRpb25Ta2lwc1N1YmRpcmVjdG9yeURlc2NlbmRhbnRzCisgICAgICAgIGVycm9ySGFuZGxlcjpu
aWxdOworICAgIAorICAgIE5TTXV0YWJsZUFycmF5PE5TVVJMICo+ICp1cmxzVG9EZWxldGUgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIHdoaWxlIChOU1VSTCAqZmlsZVVSTCA9IFtlbnVt
ZXJhdG9yIG5leHRPYmplY3RdKSB7CisgICAgICAgIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKmZpbGVBdHRyaWJ1dGVzID0gW2ZpbGVVUkwgcmVzb3VyY2VWYWx1ZXNGb3JLZXlzOnByb3Bl
cnR5S2V5cyBlcnJvcjpuaWxdOworICAgIAorICAgICAgICBpZiAoIVtmaWxlQXR0cmlidXRlc1tO
U1VSTE5hbWVLZXldIGhhc1ByZWZpeDpAIkNhY2hlZE1lZGlhLSJdKQorICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoIVtmaWxlQXR0cmlidXRlc1tOU1VSTElzUmVn
dWxhckZpbGVLZXldIGJvb2xWYWx1ZV0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
CisgICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShmaWxlQXR0cmlidXRlc1tOU1VSTENvbnRl
bnRNb2RpZmljYXRpb25EYXRlS2V5XSkgPD0gbW9kaWZpZWRTaW5jZSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAKKyAgICAgICAgW3VybHNUb0RlbGV0ZSBhZGRPYmplY3Q6ZmlsZVVS
TF07CisgICAgfQorICAgIAorICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gdXJsc1RvRGVsZXRl
KQorICAgICAgICBbZmlsZU1hbmFnZXIgcmVtb3ZlSXRlbUF0VVJMOmZpbGVVUkwgZXJyb3I6bmls
XTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1l
ZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCki
KTsKKyAgICBBVkFzc2V0Q2FjaGUqIGFzc2V0Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0aChwYXRo
KTsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2FjaGUgYWxsS2V5c10pIHsKKyAg
ICAgICAgVVJMIGtleUFzVVJMID0gVVJMKFVSTCgpLCBrZXkpOworICAgICAgICBpZiAoa2V5QXNV
UkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAob3JpZ2lucy5jb250YWlucyhTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKGtleUFzVVJMKSkpCisgICAgICAgICAgICAgICAgW2Fzc2V0Q2FjaGUg
cmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9u
T2JqQyhNZWRpYVBsYXllciogcGxheWVyKQpAQCAtODc0LDcgKzk2NSwxMSBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3Qg
U3RyaW5nJiB1cmwpCiAgICAgfQogI2VuZGlmCiAKLSAgICBbb3B0aW9ucyBzZXRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhCb29sOiFwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJTaG91
bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKV0gZm9yS2V5OkFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50
Q2FjaGVLZXldOworICAgIGJvb2wgdXNlUGVyc2lzdGVudENhY2hlID0gcGxheWVyKCktPmNsaWVu
dCgpLm1lZGlhUGxheWVyU2hvdWxkVXNlUGVyc2lzdGVudENhY2hlKCk7CisgICAgW29wdGlvbnMg
c2V0T2JqZWN0OkAoIXVzZVBlcnNpc3RlbnRDYWNoZSkgZm9yS2V5OkFWVVJMQXNzZXRVc2VzTm9Q
ZXJzaXN0ZW50Q2FjaGVLZXldOworICAgIAorICAgIGlmICh1c2VQZXJzaXN0ZW50Q2FjaGUpCisg
ICAgICAgIFtvcHRpb25zIHNldE9iamVjdDphc3NldENhY2hlRm9yUGF0aChwbGF5ZXIoKS0+Y2xp
ZW50KCkubWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KCkpIGZvcktleTpBVlVSTEFzc2V0
Q2FjaGVLZXldOwogCiAgICAgTlNVUkwgKmNvY29hVVJMID0gY2Fub25pY2FsVVJMKHVybCk7CiAg
ICAgbV9hdkFzc2V0ID0gYWRvcHROUyhbYWxsb2NBVlVSTEFzc2V0SW5zdGFuY2UoKSBpbml0V2l0
aFVSTDpjb2NvYVVSTCBvcHRpb25zOm9wdGlvbnMuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0LmgKaW5kZXggZjM3M2ZmODU1OTYzNzM5OWJjZWQ0YTNkMmE4NDI4NDQ2ZTE5YzEyOC4u
NTlhM2RhNmYxNWFmODk0OTlhMTJkYTJkNDIwNjVmYzUxOWY0Yjg1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0LmgKQEAgLTY4LDkgKzY4LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVI
YXNoPiYgdHlwZXMpOwogICAgIHN0YXRpYyBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBv
cnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJik7CiAKLSAgICBzdGF0
aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIHN0YXRp
YyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0
aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3Rl
bV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVh
ck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAg
ICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1lZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2
YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggYjI3MDMxOGQyZGI4NDA1ZmNmMTIzNGRiNjQ0N2Uy
MjU5YWIyYzg1NC4uMDlmNmRjODkzN2RiMjU5NTkyZTlkMDkzZTQzYmFlOTcyZTcxYzVmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdp
c3RyYXIgcmVnaXN0cmFyCiB7CiAgICAgaWYgKGlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJlZ2lz
dHJhcihbXShNZWRpYVBsYXllciogcGxheWVyKSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0PihwbGF5ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKLSAg
ICAgICAgICAgIHN1cHBvcnRzVHlwZSwgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFD
YWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSwgMCk7CisgICAgICAgICAgICBzdXBwb3J0c1R5
cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
Rm9yT3JpZ2lucywgMCk7CiB9CiAKIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpNZWRpYVBsYXll
clByaXZhdGVRVEtpdChNZWRpYVBsYXllciogcGxheWVyKQpAQCAtMTMzOSwyMyArMTMzOSwzMCBA
QCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJu
IFFUS2l0TGlicmFyeSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRT
aXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpIAorSGFzaFNldDxSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFD
YWNoZShjb25zdCBTdHJpbmcmIHBhdGgpCiB7CisgICAgVU5VU0VEX1BBUkFNKHBhdGgpOworICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBOU0FycmF5ICpt
ZWRpYVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUoKTsKICAgICBmb3Ig
KE5TU3RyaW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpCi0gICAgICAgIHNpdGVzLmFwcGVuZChzaXRl
KTsKKyAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBTdHJpbmc6OmZyb21VVEY4KFtzaXRlIFVURjhTdHJpbmddKSkpKTsKKyAgICBy
ZXR1cm4gb3JpZ2luczsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJN
ZWRpYUNhY2hlKCkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNo
ZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9p
bnQgbW9kaWZpZWRTaW5jZSkKIHsKKyAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisgICAgVU5VU0VE
X1BBUkFNKG1vZGlmaWVkU2luY2UpOwogICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoKSIpOwogICAgIHdrUVRDbGVhck1lZGlhRG93bmxvYWRD
YWNoZSgpOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2Fj
aGVGb3JTaXRlKGNvbnN0IFN0cmluZyYgc2l0ZSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRL
aXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBI
YXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+JiBvcmlnaW5zKQogewotICAgIExPRyhNZWRp
YSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKCkiKTsK
LSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKHNpdGUpOworICAgIFVOVVNF
RF9QQVJBTShwYXRoKTsKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6
Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBv
cmlnaW5zKQorICAgICAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2FkQ2FjaGVGb3JTaXRlKG9yaWdp
bi0+dG9SYXdTdHJpbmcoKSk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmRp
c2FibGVVbnN1cHBvcnRlZFRyYWNrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaAppbmRleCA4NmRiNzkyZDI1ZjZmYWFmZmRhNTFiNmQ1
NGMwZTczNDNjYTViNzM2Li45OGRlOWQwNGZhNDJjOWVhM2RiNWZlZTAxZmUzN2YzMDRkZjNlNjAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlv
blNQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9u
U1BJLmgKQEAgLTU1LDYgKzU1LDIxIEBAIE5TX0FTU1VNRV9OT05OVUxMX0VORAogCiAjZW5kaWYg
Ly8gRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkgJiYgIVBMQVRGT1JNKElPUykKIAor
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZBc3Nl
dENhY2hlX1ByaXZhdGUuaD4KKyNlbHNlCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorQGludGVy
ZmFjZSBBVkFzc2V0Q2FjaGUgOiBOU09iamVjdAorKyAoQVZBc3NldENhY2hlICopYXNzZXRDYWNo
ZVdpdGhVUkw6KE5TVVJMICopVVJMOworLSAoaWQpaW5pdFdpdGhVUkw6KE5TVVJMICopVVJMOwor
LSAoTlNBcnJheSAqKWFsbEtleXM7CistIChOU0RhdGUgKilsYXN0TW9kaWZpZWREYXRlT2ZFbnRy
eUZvcktleTooTlNTdHJpbmcgKilrZXk7CistICh2b2lkKXJlbW92ZUVudHJ5Rm9yS2V5OihOU1N0
cmluZyAqKWtleTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkwg
KlVSTDsKK0BlbmQKK05TX0FTU1VNRV9OT05OVUxMX0VORAorI2VuZGlmCisKICNpZiBQTEFURk9S
TShJT1MpCiAKICNpZiBIQVZFKEFWS0lUKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuY3BwCmluZGV4IDhmZjI5ZjdhNjE5ZWFlYTgwNzZjNzY1NzZmZmFiMzliNjgzMmE2NmYuLjY2
ODg1YzcyMWY3ZDFlMGU5ZTM1MmM5N2I2NjhjZWMwNGQxNWZlYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAg
LTY1LDYgKzY1LDggQEAgdm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBhcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29kZXIgPDwgd2Vi
U1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCB3ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7
CisgICAgZW5jb2RlciA8PCBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogI2lm
IEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgZW5jb2RlciA8PCBjb29raWVTdG9yYWdlRGly
ZWN0b3J5OwogI2VuZGlmCkBAIC0xNjAsNiArMTYyLDEwIEBAIGJvb2wgV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJQ
cm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFt
ZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm1lZGlhQ2Fj
aGVEaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGU0NjBhOWU0OTFlNDQxZmQyZTRjZThkN2Qx
MmJjNTQ4YmM1OWFkZmIuLmI1ZmZkYWQ4ZmUwYjY5YjE0NmRkZjE2MDZkYjE5YjAyMTJhODY0ZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaApAQCAtNzIsNiArNzIsOCBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgU3RyaW5nIHdlYlNRTERhdGFiYXNlRGlyZWN0
b3J5OwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSB3ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKKyAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsKKyAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZTsKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAgIFN0cmluZyBjb29raWVTdG9yYWdl
RGlyZWN0b3J5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNDE2MDMzZTFh
NjBiOTJjYzk1NGI3MWUzZGI2OTJjZGUzOTY5OWZlOS4uMTFhMTY5YjFjNzgyZTkyMGJmZjIzM2Rl
OGVlNGMwYjk2MWJhOGFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcApAQCAtNDYsNiArNDYs
NyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKAogCiAgICAgY29uZmlndXJhdGlvbi0+bV9hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxh
dGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRp
b24tPm1fZGlza0NhY2hlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5
UGxhdGZvcm1EZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7CisgICAgY29uZmlndXJhdGlv
bi0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5
UGxhdGZvcm1EZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24t
Pm1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIGNv
bmZpZ3VyYXRpb24tPm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNz
UG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAg
Y29uZmlndXJhdGlvbi0+bV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9y
eSgpOwpAQCAtNTcsNiArNTgsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OmNyZWF0ZVdpdGhMZWdhY3lPcHRpb25zKAogUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24oKQogICAgIDogbV9hcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KCkpCiAgICAgLCBtX2Rpc2tDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0
YVN0b3JlOjpkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkpCisgICAgLCBtX21lZGlhQ2Fj
aGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rvcnko
KSkKICAgICAsIG1faW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6
ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkpCiAgICAgLCBtX2xvY2FsU3RvcmFn
ZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkpCiAgICAgLCBtX3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpKQpAQCAtNzksNiArODEsNyBAQCBSZWY8UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQog
ICAgIGNvcHktPm1fZGlza0NhY2hlU2l6ZU92ZXJyaWRlID0gdGhpcy0+bV9kaXNrQ2FjaGVTaXpl
T3ZlcnJpZGU7CiAgICAgY29weS0+bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gdGhpcy0+
bV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1fZGlza0NhY2hlRGlyZWN0
b3J5ID0gdGhpcy0+bV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAgY29weS0+bV9tZWRpYUNhY2hl
RGlyZWN0b3J5ID0gdGhpcy0+bV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIGNvcHktPm1faW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkgPSB0aGlzLT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5OwogICAgIGNvcHktPm1faW5qZWN0ZWRCdW5kbGVQYXRoID0gdGhpcy0+bV9pbmplY3RlZEJ1
bmRsZVBhdGg7CiAgICAgY29weS0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX2xv
Y2FsU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCmluZGV4IGQyMmJiODM3Zjk0
YjFlM2MyNTE3OWNiM2JlZmJkYjA5ZTVkMzhkNTYuLjY5M2Y4NjMyODFhNmI3NjgzZTVhMTI4YzA5
ZDM3NmJiYmFkNzg4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtNjUsNiArNjUsOSBAQCBw
dWJsaWM6CiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSgpIGNvbnN0
IHsgcmV0dXJuIG1fZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAgICAgdm9pZCBzZXREaXNrQ2FjaGVE
aXJlY3RvcnkoY29uc3QgV1RGOjpTdHJpbmcmIGRpc2tDYWNoZURpcmVjdG9yeSkgeyBtX2Rpc2tD
YWNoZURpcmVjdG9yeSA9IGRpc2tDYWNoZURpcmVjdG9yeTsgfQogCisgICAgY29uc3QgV1RGOjpT
dHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX21lZGlhQ2FjaGVE
aXJlY3Rvcnk7IH0KKyAgICB2b2lkIHNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgV1RGOjpT
dHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkpIHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbWVk
aWFDYWNoZURpcmVjdG9yeTsgfQorICAgIAogICAgIGNvbnN0IFdURjo6U3RyaW5nJiBpbmRleGVk
REJEYXRhYmFzZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERCRGF0YWJhc2VE
aXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KGNvbnN0
IFdURjo6U3RyaW5nJiBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSkgeyBtX2luZGV4ZWREQkRh
dGFiYXNlRGlyZWN0b3J5ID0gaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7IH0KIApAQCAtMTAz
LDYgKzEwNiw3IEBAIHByaXZhdGU6CiAKICAgICBXVEY6OlN0cmluZyBtX2FwcGxpY2F0aW9uQ2Fj
aGVEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7CisgICAg
V1RGOjpTdHJpbmcgbV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1faW5k
ZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcgbV9pbmplY3RlZEJ1bmRs
ZVBhdGg7CiAgICAgV1RGOjpTdHJpbmcgbV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCAyYTJlYTQxMDBkNWFmNWY3YzUwYTNiNzc5YjgyZjIxZDE2NTA3ODI3Li5mYjJhY2Q2ZDZh
NWFkYjk2YjM3OTQyZDhmN2RmNGZiZDk4OGY0NDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTEzNyw1ICsxMzcs
MTMgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCkKIH0KIAogI2VuZGlmCisgICAgCisjaWYgIVBMQVRGT1JNKENPQ09BKQor
U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU2MzY5IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU2MzcwCisgICAgcmV0dXJuIFN0cmluZygpOworfQorI2VuZGlmCiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXgg
NDY1YTVlZThkNjE5NzFiY2UzNWFkZDdmNWUxZjk2M2EyNmNiYjBhNS4uYTAzNzU1MzhlODc1N2M3
MWE1YzQ3MmY4Mjg2NDQyZDA1OGI1ODEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgp
OwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAg
IHN0YXRpYyBTdHJpbmcgZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKIAogICAgIHN0YXRp
YyBTdHJpbmcgZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGlj
IFN0cmluZyBkZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CkBAIC02MCw2ICs2MSw3IEBA
IHByaXZhdGU6CiAgICAgV2Vic2l0ZURhdGFTdG9yZShXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
OkNvbmZpZ3VyYXRpb24pOwogICAgIFdlYnNpdGVEYXRhU3RvcmUoKTsKIAorICAgIHN0YXRpYyBT
dHJpbmcgdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcm
IGRpcmVjdG9yeU5hbWUpOwogICAgIHN0YXRpYyBTdHJpbmcgY2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKICAgICBzdGF0
aWMgU3RyaW5nIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
aW5kZXggODIzMWFiYmM2MjBlYTNiMDExNjU1NGRjYzRjMGZiMTlkNGJmMjdkMi4uZWRhNGMxNDky
NDQ0Njg2NDM2NWI2OThiNTVlNWEzNzE2Nzg3NGQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29j
b2EubW0KQEAgLTU3LDYgKzU3LDExIEBAIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TmV0d29ya0NhY2hlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gY2FjaGVEaXJlY3RvcnlGaWxlU3lz
dGVtUmVwcmVzZW50YXRpb24oIk5ldHdvcmtDYWNoZSIpOwogfQogCitTdHJpbmcgV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiB0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJNZWRpYUNhY2hlIik7Cit9CisKIFN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KQogewogICAgIHJldHVybiB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRh
dGlvbigiSW5kZXhlZERCIik7CkBAIC04Miw2ICs4NywzMyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFT
dG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKQogICAgIHJldHVy
biB3ZWJzaXRlRGF0YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyIpOwogfQogCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6dGVtcERpcmVj
dG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUp
Cit7CisgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CisgICAgc3RhdGljIE5T
VVJMICp0ZW1wVVJMOworICAgIAorICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKKyAg
ICAgICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6TlNUZW1wb3JhcnlEaXJl
Y3RvcnkoKV07CisgICAgICAgIGlmICghdXJsKQorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNzSGFz
Q29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVyID0g
W05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAo
IWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9IFtO
U1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHVybCA9
IFt1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZpZXIgaXNEaXJl
Y3Rvcnk6WUVTXTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGVtcFVSTCA9IFtbdXJs
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktpdCIgaXNEaXJlY3Rvcnk6WUVTXSBy
ZXRhaW5dOworICAgIH0pOworICAgIAorICAgIE5TVVJMICp1cmwgPSBbdGVtcFVSTCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6ZGlyZWN0b3J5TmFtZSBpc0RpcmVjdG9yeTpZRVNdOworICAg
IGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVS
TDp1cmwgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJv
cjpudWxscHRyXSkKKyAgICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9y
eSAlQCIsIHVybCk7CisgICAgCisgICAgcmV0dXJuIHVybC5hYnNvbHV0ZVVSTC5wYXRoLmZpbGVT
eXN0ZW1SZXByZXNlbnRhdGlvbjsKK30KKwogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmNhY2hl
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
TmFtZSkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKQEAgLTE0NCw2
ICsxNzYsNyBAQCBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gV2Vic2l0
ZURhdGFTdG9yZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZwogCiAgICAgY29uZmlndXJhdGlvbi5h
cHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rv
cnkoKTsKICAgICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IGRlZmF1bHRO
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJl
Y3RvcnkgPSBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogCiAgICAgY29uZmlndXJhdGlv
bi53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IGRlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9y
eSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gZGVmYXVsdExv
Y2FsU3RvcmFnZURpcmVjdG9yeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQppbmRleCAzNzFjNWIwMjc1NmE3MzNhODUx
NTU0ZjlkOGI5OWNkNzJlMTczNzNmLi4wZTlhNTQyNWU3Nzg4MGZjNjc2NDg2NDUyYzRjZDNkZjE2
MjJlMDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtNjQsNiArNjQsNyBAQCBOU1N0cmluZyAqV2ViU3RvcmFn
ZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJXZWJLaXRMb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGhQ
cmVmZQogTlNTdHJpbmcgKldlYktpdEpTQ0pJVEVuYWJsZWREZWZhdWx0c0tleSA9IEAiV2ViS2l0
SlNDSklURW5hYmxlZERlZmF1bHRzS2V5IjsKIE5TU3RyaW5nICpXZWJLaXRKU0NGVExKSVRFbmFi
bGVkRGVmYXVsdHNLZXkgPSBAIldlYktpdEpTQ0ZUTEpJVEVuYWJsZWREZWZhdWx0c0tleSI7CiBO
U1N0cmluZyAqV2ViS2l0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeURlZmF1bHRzS2V5ID0gQCJX
ZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5IjsKK05TU3RyaW5nICpXZWJLaXRNZWRpYUNh
Y2hlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnkiOwog
CiAjaWYgIVBMQVRGT1JNKElPUykKIHN0YXRpYyBOU1N0cmluZyAqV2ViS2l0QXBwbGljYXRpb25E
aWRDaGFuZ2VBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50ZXJmYWNlTm90aWZpY2F0aW9uID0g
QCJOU0FwcGxpY2F0aW9uRGlkQ2hhbmdlQWNjZXNzaWJpbGl0eUVuaGFuY2VkVXNlckludGVyZmFj
ZU5vdGlmaWNhdGlvbiI7CkBAIC0zNDAsNiArMzQxLDI1IEBAIFN0cmluZyBXZWJQcm9jZXNzUG9v
bDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkKICAgICByZXR1
cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbbG9jYWxTdG9yYWdlRGlyZWN0b3J5
IHN0cmluZ0J5U3RhbmRhcmRpemluZ1BhdGhdKTsKIH0KIAorU3RyaW5nIFdlYlByb2Nlc3NQb29s
OjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZWdp
c3RlclVzZXJEZWZhdWx0c0lmTmVlZGVkKCk7CisgICAgCisgICAgTlNTdHJpbmcgKm1lZGlhS2V5
c0NhY2hlRGlyZWN0b3J5ID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
b2JqZWN0Rm9yS2V5OldlYktpdE1lZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tleV07CisgICAg
aWYgKCFtZWRpYUtleXNDYWNoZURpcmVjdG9yeSB8fCAhW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKKyAgICAgICAgbWVkaWFLZXlzQ2Fj
aGVEaXJlY3RvcnkgPSBOU1RlbXBvcmFyeURpcmVjdG9yeSgpOworICAgICAgICAKKyAgICAgICAg
aWYgKCFXZWJLaXQ6OnByb2Nlc3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJp
bmcgKmJ1bmRsZUlkZW50aWZpZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRp
ZmllcjsKKyAgICAgICAgICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAg
ICBidW5kbGVJZGVudGlmaWVyID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NO
YW1lOworICAgICAgICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBbbWVkaWFLZXlzQ2Fj
aGVEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OmJ1bmRsZUlkZW50aWZp
ZXJdOworICAgICAgICB9CisgICAgICAgIG1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW21lZGlh
S2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIldlYktp
dC9NZWRpYUNhY2hlIl07CisgICAgfQorICAgIHJldHVybiBzdHJpbmdCeVJlc29sdmluZ1N5bWxp
bmtzSW5QYXRoKFttZWRpYUtleXNDYWNoZURpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXppbmdQ
YXRoXSk7Cit9CisKIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0
TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpCiB7CiAgICAgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJ
Zk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
aW5kZXggMDU3Y2EyOTE1MGFmYjQ0YTYyMDkyNDJjNTRlMGVjYmY3YTgyYjMwZC4uYTExOWY3M2M5
YTYxNGVkNjg2NjBjNTg3MjJkZGIyYWE4MmRkN2NlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMjgsNiArMTI4LDcgQEAgc3RhdGljIFdlYnNp
dGVEYXRhU3RvcmU6OkNvbmZpZ3VyYXRpb24gbGVnYWN5V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24oQVBJOjoKICAgICBjb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBjb25m
aWd1cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5hcHBsaWNh
dGlvbkNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9u
Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3Rvcnkg
PSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSgpOwogICAgIGNv
bmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5u
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZGlza0NhY2hl
RGlyZWN0b3J5KCk7CiAKQEAgLTU0NCw2ICs1NDUsMTAgQEAgV2ViUHJvY2Vzc1Byb3h5JiBXZWJQ
cm9jZXNzUG9vbDo6Y3JlYXRlTmV3V2ViUHJvY2VzcygpCiAgICAgaWYgKCFwYXJhbWV0ZXJzLndl
YlNRTERhdGFiYXNlRGlyZWN0b3J5LmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMud2ViU1FMRGF0
YWJhc2VEaXJlY3RvcnksIHBhcmFtZXRlcnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNp
b25IYW5kbGUpOwogCisgICAgcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gbV9jb25m
aWd1cmF0aW9uLT5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CisgICAgaWYgKCFwYXJhbWV0ZXJzLm1l
ZGlhQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy5tZWRpYUNhY2hlRGly
ZWN0b3J5LCBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwor
ICAgIAogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgcGFyYW1ldGVycy5jb29raWVT
dG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+Y29va2llU3RvcmFnZURpcmVjdG9yeSgpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDRkN2YxZjZl
NjNiMzA5OGE0NjdiYmJhZDFhMTA4NmFmMzQ4NmZmYjcuLjMyZjk1YzYwNDEyZDJkZDU5NmJjODc0
NTg1NWY4ZjhhNmI0NDAxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCkBAIC0zNTksNiArMzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgbGVn
YWN5UGxhdGZvcm1EZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBzdGF0
aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3JtRGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCk7
CiAgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUtleXNTdG9yYWdl
RGlyZWN0b3J5KCk7CisgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRp
YUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQbGF0Zm9ybURlZmF1
bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQ
bGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgYm9vbCBp
c05ldHdvcmtDYWNoZUVuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAxODA2YzMxZDYy
OWI4Y2I3MjNlZDNlZWViMDQzMWFmNjk3NTg2ZWRhLi45YzBmNmNiNjgwMDA2ODBmMGM3YmNmMzQz
ZTQ0NzlkNjU4NTE5YTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAj
aW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhYmFzZVRyYWNrZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL09yaWdp
bkxvY2suaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8
d3RmL1J1bkxvb3AuaD4KQEAgLTc3LDYgKzc4LDcgQEAgV2Vic2l0ZURhdGFTdG9yZTo6V2Vic2l0
ZURhdGFTdG9yZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3Nlc3Npb25J
RChXZWJDb3JlOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAsIG1fbmV0d29y
a0NhY2hlRGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkpKQogICAgICwgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJh
dGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KSkKKyAgICAsIG1fbWVkaWFDYWNoZURpcmVj
dG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVjdG9yeSkpCiAgICAgLCBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJhdGlvbi53ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSkpCiAgICAgLCBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoV1RGTW92
ZShjb25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkpKQogICAgICwgbV9zdG9y
YWdlTWFuYWdlcihTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlKFdURk1vdmUoY29uZmlndXJhdGlvbi5s
b2NhbFN0b3JhZ2VEaXJlY3RvcnkpKSkKQEAgLTI1NSw2ICsyNTcsMjcgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpmZXRjaERhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVz
LCBPcHRpb25TZXQKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdn
cmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoZmV0Y2hPcHRpb25zLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogCisgICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKKyAgICAgICAgU3RyaW5nQ2FwdHVyZSBt
ZWRpYUNhY2hlRGlyZWN0b3J5IHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5IH07CisgICAgICAgIAor
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworICAgICAg
ICBtX3F1ZXVlLT5kaXNwYXRjaChbZmV0Y2hPcHRpb25zLCBtZWRpYUNhY2hlRGlyZWN0b3J5LCBj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAgICAgICAgICAgIEhhc2hTZXQ8UmVmUHRyPFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2lucyA9IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9y
aWdpbnNJbk1lZGlhQ2FjaGUobWVkaWFDYWNoZURpcmVjdG9yeS5zdHJpbmcoKSk7CisgICAgICAg
ICAgICBXZWJzaXRlRGF0YSogd2Vic2l0ZURhdGEgPSBuZXcgV2Vic2l0ZURhdGE7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykgeworICAgICAg
ICAgICAgICAgIFdlYnNpdGVEYXRhOjpFbnRyeSBlbnRyeSB7IG9yaWdpbiwgV2Vic2l0ZURhdGFU
eXBlOjpEaXNrQ2FjaGUsIDAgfTsKKyAgICAgICAgICAgICAgICB3ZWJzaXRlRGF0YS0+ZW50cmll
cy5hcHBlbmQoV1RGTW92ZShlbnRyeSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdh
dG9yLCBvcmlnaW5zLCB3ZWJzaXRlRGF0YV0geworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKFdURk1vdmUoKndlYnNpdGVEYXRhKSk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZGVsZXRlIHdlYnNpdGVEYXRhOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8gbmV0d29ya1Byb2Nl
c3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFGZXRj
aChkYXRhVHlwZXMsICFpc1BlcnNpc3RlbnQoKSk7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzQWNj
ZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6Tm9uZSkgewogICAgICAgICBmb3IgKGF1dG8m
IHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKQEAgLTUyOSw2ICs1NTIsMTkgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
IGRhdGFUeXBlcywgc3RkOjpjaHIKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNh
bGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpKTsKIAorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vi
c2l0ZURhdGFUeXBlOjpEaXNrQ2FjaGUpKSB7CisgICAgICAgIFN0cmluZ0NhcHR1cmUgbWVkaWFD
YWNoZURpcmVjdG9yeSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSB9OworCisgICAgICAgIGNhbGxi
YWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAgIG1fcXVldWUtPmRp
c3BhdGNoKFttb2RpZmllZFNpbmNlLCBtZWRpYUNhY2hlRGlyZWN0b3J5LCBjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsKKyAgICAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVk
aWFDYWNoZShtZWRpYUNhY2hlRGlyZWN0b3J5LnN0cmluZygpLCBtb2RpZmllZFNpbmNlKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgV1RGOjpSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nh
bGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+
cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7Cisg
ICAgfQorCiAgICAgYXV0byBuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgPSBjb21wdXRlTmV0d29y
a1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwoZGF0YVR5cGVzLCAhaXNQZXJzaXN0ZW50
KCkpOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgIT0gUHJvY2Vzc0FjY2Vzc1R5
cGU6Ok5vbmUpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKSB7CkBAIC03NTUsNyArNzkxLDI1IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3Zl
RGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIGNvbnN0IFZlCiAgICAg
fTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9
IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpKTsKLQorICAgIAorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBl
OjpEaXNrQ2FjaGUpKSB7CisgICAgICAgIFN0cmluZ0NhcHR1cmUgbWVkaWFDYWNoZURpcmVjdG9y
eSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSB9OworICAgICAgICBIYXNoU2V0PFJlZlB0cjxXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnM7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYg
ZGF0YVJlY29yZCA6IGRhdGFSZWNvcmRzKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IG9yaWdpbiA6IGRhdGFSZWNvcmQub3JpZ2lucykKKyAgICAgICAgICAgICAgICBvcmlnaW5zLmFk
ZChvcmlnaW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbb3Jp
Z2lucywgbWVkaWFDYWNoZURpcmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAg
ICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5z
KG1lZGlhQ2FjaGVEaXJlY3Rvcnkuc3RyaW5nKCksIG9yaWdpbnMpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5n
Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9CisgICAgCiAg
ICAgYXV0byBuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgPSBjb21wdXRlTmV0d29ya1Byb2Nlc3NB
Y2Nlc3NUeXBlRm9yRGF0YVJlbW92YWwoZGF0YVR5cGVzLCAhaXNQZXJzaXN0ZW50KCkpOwogICAg
IGlmIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgIT0gUHJvY2Vzc0FjY2Vzc1R5cGU6Ok5vbmUp
IHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAppbmRleCAxMDNkNjIzODMxYjg1MjRhZjZjMDM3NDc2YTBiMzM5ZTVkN2E5MjFh
Li5hNGE5ZTEwNDNiNzZhNmViODhkZmYzYzcxMTFmNGY2MmE3N2VjZjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKQEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbmV0d29ya0NhY2hl
RGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsKIAor
ICAgICAgICBTdHJpbmcgbWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIHdlYlNR
TERhdGFiYXNlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgbG9jYWxTdG9yYWdlRGlyZWN0b3J5
OwogICAgICAgICBTdHJpbmcgbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKQEAgLTExNyw2ICsx
MTgsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nIG1fbmV0d29ya0NhY2hlRGlyZWN0
b3J5OwogICAgIGNvbnN0IFN0cmluZyBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CisgICAg
Y29uc3QgU3RyaW5nIG1fbWVkaWFDYWNoZURpcmVjdG9yeTsKIAogICAgIGNvbnN0IFN0cmluZyBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgIGNvbnN0IFN0cmluZyBtX21lZGlhS2V5c1N0
b3JhZ2VEaXJlY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlByb2Nlc3NQb29sRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UHJvY2Vzc1Bvb2xFZmwuY3BwCmluZGV4IDEwYjVmMmEwNzRlMDFmOGY2YzU3OTIwMDEwZGQ4YmM5
MzBiYjcyMTcuLjI1NWVlODcyMTJjNGI4NTczODNkNzhkYTgzZDZjZDY0MGFiMGY3N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3Bw
CkBAIC04Nyw2ICs4NywxMSBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKQogICAgIHJldHVybiBBUEk6OldlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiB9CiAKK1N0
cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFDYWNoZURpcmVj
dG9yeSgpCit7CisgICAgcmV0dXJuIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewogICAgIGluaXRpYWxpemVJbnNwZWN0b3JTZXJ2ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKaW5kZXggNGVmY2UzOWQ5
ZDAzMzQ1NmNjODY1MTQ1Y2ZhMzc1NjMxYzNmOTFmNS4uOTdhZmI3MDFmZmFjMmMzNjhiN2IwYzY3
YmJiZjMyODcyZjFlYjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0
ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAKQEAgLTg2LDYgKzg2LDExIEBAIFdURjo6U3RyaW5nIFdl
YlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCkKICAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeSgpOwogfQogCitXVEY6OlN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVn
YWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKK30KKwog
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGluaXRJbnNwZWN0b3JT
ZXJ2ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDhi
YmQ0N2YwZjk0ZWQ1ZmIzZGQzZDI0ZmM3ZTU4NjI4Y2E1ZDc1NjguLmVmMGExNThlOWQwMTA1NTRj
YTM3N2ExNDJiZGE2OWEzNGQxZTUzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtNzYsNiArNzYsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2Fk
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dDQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR2x5cGhQYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JY29uRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTRE9N
V2luZG93Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYW5ndWFnZS5oPgpAQCAtMjkxLDYgKzI5Miw5
IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgaWYgKCFwYXJhbWV0ZXJzLmFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTo6c2luZ2xldG9uKCkuc2V0Q2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5hcHBsaWNhdGlv
bkNhY2hlRGlyZWN0b3J5KTsKIAorICAgIGlmICghcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0
b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TWVk
aWFDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkpOworCiAgICAg
c2V0Q2FjaGVNb2RlbChzdGF0aWNfY2FzdDx1aW50MzJfdD4ocGFyYW1ldGVycy5jYWNoZU1vZGVs
KSk7CiAKICAgICBpZiAoIXBhcmFtZXRlcnMubGFuZ3VhZ2VzLmlzRW1wdHkoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXgg
Zjc2MWNlNmIxOGU0ODE5NDNkMzhmODMyMjIzYzQ5NWE0NzY2MDQ5Ni4uYTA4N2Y5MGU3NTYxZGVi
NTY0NDgwNjQ4M2ZkYzFhYTViMzg5YmQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTEzNSw2ICsxMzUsNyBAQCB2b2lk
IFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcgogICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5l
bnRseShwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZVJlc291cmNlUGF0aEV4dGVuc2lvbkhhbmRs
ZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMu
d2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRl
bnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmFwcGxpY2F0aW9uQ2FjaGVEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGUpOworICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJt
YW5lbnRseShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwog
ICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLm1lZGlh
S2V5U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAjaWYgUExBVEZPUk0oSU9TKQog
ICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmNvb2tp
ZVN0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwo=
</data>
<flag name="review"
          id="300247"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276170</attachid>
            <date>2016-04-11 13:27:14 -0700</date>
            <delta_ts>2016-04-11 17:34:49 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-155783-20160411132723.patch</filename>
            <type>text/plain</type>
            <size>55900</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmZjVmNDQ4NDE3YTc1
ZjRkNTQ4ZjE4MjFhYTE2ZGFlODU1NGM3NC4uZWMwYjg1NjVlZDViZGY4OGUxMWJkN2U0ZDM5NjRj
NTc0MWIxNDUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTA0LTA3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworICAgICAgICByZGFyOi8vcHJvYmxl
bS8yNTI1MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IFVzZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZpZWQgbG9jYXRpb24gb24gZGlzayBmb3IgYWxs
IEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNoZQorICAgICAgICBjYW4gdGhlbiBiZSB1c2Vk
IHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1c2VkIGJ5IEFWRm91bmRhdGlvbi4gSXQgaXMg
dXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIGNhY2hlIGluIG9yaWdp
bnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIgdGhlIGNhY2hlIGNvbXBsZXRlbHkgb3IgcGFy
dGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFDYWNoZSgpIGFuZCBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luIGluc3RlYWQgb2YgdGhl
IGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJlcHJlc2VudCBvcmlnaW5zIGluIHRoZSBjYWNo
ZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNh
Y2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1l
ZGlhQ2FjaGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5NZWRp
YUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNs
ZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRp
YUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1lZGlhRW5naW5lKTogQWRkIG5l
dyBjYWNoZSBtZXRob2RzLgorICAgICAgICAoV2ViQ29yZTo6YWRkVG9IYXNoKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVk
IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0
U2l0ZXNJbk1lZGlhQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNs
aWVudDo6bWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJN
ZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmdldFNpdGVzSW5N
ZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlh
RW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OmFzc2V0Q2Fj
aGVGb3JQYXRoKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0b1N5c3RlbUNsb2NrVGltZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQg
cGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZv
clVSTCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hl
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xl
YXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFD
YWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
c3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaDoKKwogMjAxNi0wNC0xMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERPTVRva2VuTGlzdC5jb250YWlucygpIHNob3Vs
ZCBub3QgdGhyb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNzc5N2Q1MWUzMzUxZTA3OGFkM2MzNDZmNWExZDYy
ZmE1OGU3Y2UxLi41ZDMwNmYzZDVmMDVjNjZmYmQ3NGY4ZDIxNmU3ZWViZDMzZTVlZmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTYtMDQtMDcgIEplcmVteSBKb25lcyAgPGplcmVt
eWpAYXBwbGUuY29tPgorCisgICAgICAgIFdoZW4gY2xlYXJpbmcgY2FjaGUsIGFsc28gY2xlYXIg
QVZGb3VuZGF0aW9uIGNhY2hlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1NzgzCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI1MjUyNTQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW5jbHVkZSB0aGUgSFRN
TE1lZGlhRWxlbWVudCBtZWRpYSBjYWNoZSB3aGVuIGRvaW5nIGRpc2sgY2FjaGUgb3BlcmF0aW9u
cy4KKyAgICAgICAgQWRkIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIG1lZGlhIGNhY2hlIGRpcmVj
dG9yeS4gVGhpcyBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgYW5kIHRoZSB3ZWIgcHJvY2VzcworICAg
ICAgICB0byBhY2Nlc3MgdGhlIHNhbWUgY2FjaGUuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6IEFk
ZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMpOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IEFkZCBtZWRpYSBjYWNoZSBk
aXJlY3RvcnkuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6
IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogTWVkaWEgY2Fj
aGUgaXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6IEZvciByZXNvdXJj
ZXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBJbml0IG1lZGlhIGNhY2hlIGRpcmVj
dG9yeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1l
ZGlhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
KTogQWRkIG1lZGlhQ2FjaGVEaXJlY3RvcnkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKTogQWRkIG1lZGlhQ2FjaGVEaXJlY3RvcnkuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZmV0Y2hEYXRhKTogSW1wbGVtZW50IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKTogSW1wbGVtZW50
IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNz
UG9vbEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0
Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBJbml0aWFsaXplIG1lZGlhIGNhY2hl
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6IENvbnN1bWUgc2FuZGJveCBleHRlbnNpb24uCisKIDIwMTYtMDQtMTEgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxOTkyOTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBhNzI3NzlmYmI4ZTc4ODgzZjMyNjg5OTJjNmI2NmYxM2FhMzY0MzcyLi4zZjRmNjQ1
OWU0ZGViYmYzMDYyZTU3MjgxYzlkMGQxZDlmOTA2NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU1OTMsMjEgKzU1OTMsMzYgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYWRFdmVudChib29sIHNob3VsZERlbGF5KQogICAg
IGVsc2UKICAgICAgICAgZG9jdW1lbnQoKS5kZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7
CiB9Ci0gICAgCiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUo
VmVjdG9yPFN0cmluZz4mIHNpdGVzKQorc3RhdGljIFN0cmluZyYgc2hhcmVkTWVkaWFDYWNoZURp
cmVjdG9yeSgpCiB7Ci0gICAgTWVkaWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRpYUNhY2hlKHNpdGVz
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzaGFyZWRNZWRpYUNhY2hlRGly
ZWN0b3J5OworICAgIHJldHVybiBzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5OwogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZSgpCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIE1l
ZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUoKTsKKyAgICBzaGFyZWRNZWRpYUNhY2hlRGlyZWN0
b3J5KCkgPSBwYXRoOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUoY29uc3QgU3RyaW5nJiBzaXRlKQorY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRp
YUNhY2hlRm9yU2l0ZShzaXRlKTsKKyAgICByZXR1cm4gc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9y
eSgpOworfQorCitIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IEhUTUxNZWRpYUVsZW1l
bnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVy
biBNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisgICAgTWVk
aWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKK30KKwordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykK
K3sKKyAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmln
aW5zKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXNldE1lZGlhRW5naW5lcygpCkBA
IC02MTkyLDYgKzYyMDcsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNo
b3VsZFVzZVBlcnNpc3RlbnRDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitj
b25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVj
dG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKK30KKwog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNo
YWxsZW5nZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGVkYTQ4NTcyNmZmOWY4MTdjYzVi
Y2RjMjM2NWM3OTVhMzQ5NDBhZTEuLjdlZGQ0NDQxN2E3OTgxNzczMjYzZDJiNGY5NTRjNGE5Nzgy
N2UyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zODAsOSAr
MzgwLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNZWRpYUNhY2hl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25z
dCBTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNv
bnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFD
YWNoZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IG1vZGlmaWVkU2luY2UgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiYpOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVkaWFFbmdpbmVz
KCk7CiAKICAgICBib29sIGlzUGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWluZzsgfQpA
QCAtNTk3LDYgKzU5OSw3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1l
ZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8UGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVy
KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtZWRpYVBsYXllclNob3VsZFVzZVBlcnNpc3RlbnRDYWNo
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFN0cmluZyYgbWVkaWFQbGF5ZXJNZWRpYUNh
Y2hlRGlyZWN0b3J5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShXSU4pICYmIFVT
RShBVkZPVU5EQVRJT04pCiAgICAgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdy
YXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDBhZDYxM2JiODBkMjY5Y2ZmNjdkZmFkYWE5M2EzYmFlZjAyZTdhODguLjFiODFkNGRmOGEy
ZjA0NTVhNWUyY2NhNmJjMzZjNzVmMTdiNmI2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE3MCwxMyArMTcwLDEzIEBAIHN0
cnVjdCBNZWRpYVBsYXllckZhY3RvcnkgewogICAgIENyZWF0ZU1lZGlhRW5naW5lUGxheWVyIGNv
bnN0cnVjdG9yOwogICAgIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlw
ZXM7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzOwot
ICAgIE1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGU7
CisgICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlIG9yaWdpbnNJbk1lZGlhQ2FjaGU7
CiAgICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlOwotICAgIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlOwor
ICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zOwogICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlT
eXN0ZW07CiB9OwogCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2lu
ZVBsYXllciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5
cGUsIE1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3Vw
cG9ydHNLZXlTeXN0ZW0pOworc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFF
bmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9y
dHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJN
ZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5n
aW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogCiBzdGF0aWMgYm9vbCBoYXZlTWVkaWFFbmdpbmVzVmVj
dG9yOwogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxh
eWVyRmFjdG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiB9CiAKIHN0YXRpYyB2b2lkIGFk
ZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyIGNvbnN0cnVjdG9yLCBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBn
ZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRp
YUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUgY2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZSwgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkK
KyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZSwg
TWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFF
bmdpbmVTdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkKIHsKICAgICBBU1NFUlQo
Y29uc3RydWN0b3IpOwogICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7CiAgICAgQVNTRVJU
KHN1cHBvcnRzVHlwZSk7CiAKLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9y
KCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IGNvbnN0cnVjdG9yLCBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKKyAgICBtdXRh
YmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9y
eSB7IGNvbnN0cnVjdG9yLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5z
SW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMs
IHN1cHBvcnRzS2V5U3lzdGVtIH0pOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBh
cHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTEwNDIsMzAgKzEwNDIsMzkgQEAgdm9pZCBNZWRp
YVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZCgpCiAgICAgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUo
bV9jdXJyZW50TWVkaWFFbmdpbmUpOwogfQogCi12b2lkIE1lZGlhUGxheWVyOjpnZXRTaXRlc0lu
TWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
c3RhdGljIHZvaWQgYWRkVG9IYXNoKEhhc2hTZXQ8VD4mIHRvSGFzaCwgSGFzaFNldDxUPiYmIGZy
b21IYXNoKQogeworICAgIGlmICh0b0hhc2guaXNFbXB0eSgpKQorICAgICAgICB0b0hhc2ggPSBX
VEZNb3ZlKGZyb21IYXNoKTsKKyAgICBlbHNlCisgICAgICAgIHRvSGFzaC5hZGQoZnJvbUhhc2gu
YmVnaW4oKSwgZnJvbUhhc2guZW5kKCkpOworfQorICAgIAorSGFzaFNldDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwog
ICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKLSAgICAg
ICAgaWYgKCFlbmdpbmUuZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUpCisgICAgICAgIGlmICghZW5naW5l
Lm9yaWdpbnNJbk1lZGlhQ2FjaGUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gZW5naW5lU2l0ZXM7Ci0gICAgICAgIGVuZ2luZS5nZXRTaXRlc0luTWVkaWFD
YWNoZShlbmdpbmVTaXRlcyk7Ci0gICAgICAgIHNpdGVzLmFwcGVuZFZlY3RvcihlbmdpbmVTaXRl
cyk7CisgICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNo
ZShwYXRoKSk7CiAgICAgfQorICAgIHJldHVybiBvcmlnaW5zOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyOjpjbGVhck1lZGlhQ2FjaGUoKQordm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hl
KGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtb2RpZmllZFNpbmNlKQogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpIHsKICAgICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUpCi0gICAg
ICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlKCk7CisgICAgICAgICAgICBlbmdpbmUuY2xl
YXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2UpOwogICAgIH0KIH0KIAotdm9pZCBNZWRp
YVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcmIHNpdGUpCit2b2lk
IE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKICAg
ICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAg
IGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSkKLSAgICAgICAgICAgIGVuZ2luZS5j
bGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNpdGUpOworICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMpCisgICAgICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhwYXRoLCBvcmlnaW5zKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGI5Njk0YWRiMzcyYzRiMGNhMzY5
M2VjMDI4Nzk1N2IxYmY3NTA3ZjIuLjkzMDUwMTcxMGUzYTliMWNlNjg0YzMzMDQ3YzIxNTJlY2Ux
Y2E5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlIDxydW50
aW1lL1VpbnQ4QXJyYXkuaD4KQEAgLTIzNiw2ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRpYVBsYXllckNyZWF0ZVJl
c291cmNlTG9hZGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgYm9vbCBkb2Vz
SGF2ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBBdG9taWNTdHJpbmcqID0gMCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRV
c2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBj
b25zdCBTdHJpbmcmIG1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+KSB7IH0KQEAgLTI5Miw5ICsyOTQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMmLCBjb25zdCBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCopOwog
ICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKLSAg
ICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAg
IHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVk
aWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CisgICAg
c3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CiAKICAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwpAQCAt
NjMwLDEzICs2MzIsMTMgQEAgcHJpdmF0ZToKIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjxzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiAoTWVkaWFQbGF5ZXIqKT4gQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXI7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1cHBvcnRl
ZFR5cGVzKShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
OwogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0
c1R5cGUpKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwot
dHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSkoVmVjdG9yPFN0
cmluZz4mKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlKSgpOwot
dHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlKShjb25zdCBT
dHJpbmcmKTsKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiAoKk1lZGlh
RW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoKTsKK3R5cGVkZWYg
dm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlKShjb25zdCBTdHJpbmcmIHBhdGgsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7Cit0eXBl
ZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOwogdHlw
ZWRlZiBib29sICgqTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSkoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiB0eXBlZGVmIHZvaWQgKCpNZWRp
YUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3Vw
cG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5lR2V0
U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2lu
ZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwor
ICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVT
dXBwb3J0c0tleVN5c3RlbSk7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVyKShN
ZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAppbmRleCBkOTE5ZjU0MzM3YTQ1N2MxMGVjNjhiYTVhMjBlYjdkZTNiOGZlYzcz
Li44OWMwYzE5ZWRhY2M3NmVmN2JmYzljYjZlN2EwYjg2MjY4NzA2ZmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApA
QCAtMjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGF1ZGlvRGVj
b2RlZEJ5dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVk
IHZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZvaWQg
Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKSB7IH0KLSAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZSgpIHsgfQotICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBT
dHJpbmcmKSB7IH0KKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJ
bk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJikgeyByZXR1cm4geyB9OyB9CisgICAgdm9pZCBjbGVh
ck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCkgeyB9CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgKaW5kZXggZDZkZTc2MmMxZmUyYmY4NDZhYWFlMjQ1M2M2YzU1YjBiYWRjYTlk
NC4uMGU1Y2YxMWJjZmRjMDkyNTczOWZiYjdiNmI2Y2VkZGUzNzI4YmFjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaApAQCAtODcsNiArODcsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKKyAgICBzdGF0aWMg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcm
LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwor
ICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwg
Y29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOworCiAgICAgdm9pZCBzZXRB
c3NldChSZXRhaW5QdHI8aWQ+KTsKICAgICB2b2lkIHRyYWNrc0NoYW5nZWQoKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYjllODA3MjZmZjA0YTQ1MWY1ZjU1Mzk2ODk2
MDJiNDQxYTZiZDcwYy4uODE2ZjY3YTk4NGI2YTQyZDdjYjc2NmIyNjA0MWViMTdjNTY4N2M2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNTgsNiArMTU4LDcgQEAgU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXllcikKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5k
YXRpb24sIEFWVVJMQXNzZXQpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFzc2V0
SW1hZ2VHZW5lcmF0b3IpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRh
SXRlbSkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRDYWNoZSkKIAogU09G
VF9MSU5LX0NMQVNTKENvcmVJbWFnZSwgQ0lDb250ZXh0KQogU09GVF9MSU5LX0NMQVNTKENvcmVJ
bWFnZSwgQ0lJbWFnZSkKQEAgLTIyNyw2ICsyMjgsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZv
dW5kYXRpb24sIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25T
bwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0Q2FjaGVLZXksIE5TU3RyaW5nKikKIFNPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldEhUVFBDb29raWVzS2V5LCBOU1N0cmluZyop
CiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRl
cm5hdGVUcmFja3NLZXksIE5TU3RyaW5nKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlv
biwgQVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSwgTlNTdHJpbmcqKQpAQCAtMjQy
LDYgKzI0NCw3IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50LCBOU1N0cmluCiAKICNkZWZpbmUgQVZVUkxBc3Nl
dEhUVFBDb29raWVzS2V5IGdldEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSgpCiAjZGVmaW5lIEFW
VVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkgZ2V0QVZVUkxBc3NldE91dE9mQmFu
ZEFsdGVybmF0ZVRyYWNrc0tleSgpCisjZGVmaW5lIEFWVVJMQXNzZXRDYWNoZUtleSBnZXRBVlVS
TEFzc2V0Q2FjaGVLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hl
S2V5IGdldEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXkoKQogI2RlZmluZSBBVk91
dE9mQmFuZEFsdGVybmF0ZVRyYWNrRGlzcGxheU5hbWVLZXkgZ2V0QVZPdXRPZkJhbmRBbHRlcm5h
dGVUcmFja0Rpc3BsYXlOYW1lS2V5KCkKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFj
a0V4dGVuZGVkTGFuZ3VhZ2VUYWdLZXkgZ2V0QVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0V4dGVu
ZGVkTGFuZ3VhZ2VUYWdLZXkoKQpAQCAtNDIyLDcgKzQyNSw5NSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQogICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3Vw
cG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNLZXlTeXN0ZW0pOwor
ICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVk
aWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBw
b3J0c0tleVN5c3RlbSk7Cit9CisKK3N0YXRpYyBBVkFzc2V0Q2FjaGUgKmFzc2V0Q2FjaGVGb3JQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBOU1VSTCAqYXNzZXRDYWNoZVVSTDsKKyAg
ICAKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGFzc2V0Q2FjaGVVUkwgPSBbW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpXSBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJNZWRpYUNhY2hlIiBpc0RpcmVjdG9yeTpZRVNdOworICAgIGVsc2UK
KyAgICAgICAgYXNzZXRDYWNoZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0Rp
cmVjdG9yeTpZRVNdOworCisgICAgcmV0dXJuIFtnZXRBVkFzc2V0Q2FjaGVDbGFzcygpIGFzc2V0
Q2FjaGVXaXRoVVJMOmFzc2V0Q2FjaGVVUkxdOworfQorCitIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luczsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2Fj
aGVGb3JQYXRoKHBhdGgpIGFsbEtleXNdKSB7CisgICAgICAgIFVSTCBrZXlBc1VSTCA9IFVSTChV
UkwoKSwga2V5KTsKKyAgICAgICAgaWYgKGtleUFzVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAg
IG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoa2V5QXNVUkwpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG9yaWdpbnM7Cit9CisKK3N0YXRpYyBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKK3sKKyAgICBBU1NF
UlQoZGF0ZSk7CisgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCisgICAgcmV0dXJu
IHN5c3RlbV9jbG9jazo6dGltZV9wb2ludChkdXJhdGlvbl9jYXN0PHN5c3RlbV9jbG9jazo6ZHVy
YXRpb24+KGR1cmF0aW9uPGRvdWJsZT4oZGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzApKSk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNh
Y2hlKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlKQoreworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZSgpIik7CisgICAgCisgICAgQVZBc3Nl
dENhY2hlKiBhc3NldENhY2hlID0gYXNzZXRDYWNoZUZvclBhdGgocGF0aCk7CisgICAgCisgICAg
Zm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CisgICAgICAgIGlm
ICh0b1N5c3RlbUNsb2NrVGltZShbYXNzZXRDYWNoZSBsYXN0TW9kaWZpZWREYXRlT2ZFbnRyeUZv
cktleTprZXldKSA+IG1vZGlmaWVkU2luY2UpCisgICAgICAgICAgICBbYXNzZXRDYWNoZSByZW1v
dmVFbnRyeUZvcktleTprZXldOworICAgIH0KKworICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5h
Z2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgIE5TVVJMICpiYXNlVVJM
ID0gW2Fzc2V0Q2FjaGUgVVJMXTsKKworICAgIGlmIChtb2RpZmllZFNpbmNlIDw9IHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgeyB9KSB7CisgICAgICAgIFtmaWxlTWFuYWdl
ciByZW1vdmVJdGVtQXRVUkw6YmFzZVVSTCBlcnJvcjpuaWxdOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIE5TQXJyYXkgKnByb3BlcnR5S2V5cyA9IEBbTlNVUkxOYW1lS2V5LCBO
U1VSTENvbnRlbnRNb2RpZmljYXRpb25EYXRlS2V5LCBOU1VSTElzUmVndWxhckZpbGVLZXldOwor
ICAgIE5TRGlyZWN0b3J5RW51bWVyYXRvciAqZW51bWVyYXRvciA9IFtmaWxlTWFuYWdlciBlbnVt
ZXJhdG9yQXRVUkw6YmFzZVVSTCBpbmNsdWRpbmdQcm9wZXJ0aWVzRm9yS2V5czoKKyAgICAgICAg
cHJvcGVydHlLZXlzIG9wdGlvbnM6TlNEaXJlY3RvcnlFbnVtZXJhdGlvblNraXBzU3ViZGlyZWN0
b3J5RGVzY2VuZGFudHMKKyAgICAgICAgZXJyb3JIYW5kbGVyOm5pbF07CisgICAgCisgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PE5TVVJMICo+PiB1cmxzVG9EZWxldGUgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKE5TVVJMICpmaWxlVVJMIDog
ZW51bWVyYXRvcikgeworICAgICAgICBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICpmaWxl
QXR0cmlidXRlcyA9IFtmaWxlVVJMIHJlc291cmNlVmFsdWVzRm9yS2V5czpwcm9wZXJ0eUtleXMg
ZXJyb3I6bmlsXTsKKyAgICAKKyAgICAgICAgaWYgKCFbZmlsZUF0dHJpYnV0ZXNbTlNVUkxOYW1l
S2V5XSBoYXNQcmVmaXg6QCJDYWNoZWRNZWRpYS0iXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAKKyAgICAgICAgaWYgKCFbZmlsZUF0dHJpYnV0ZXNbTlNVUkxJc1JlZ3VsYXJGaWxl
S2V5XSBib29sVmFsdWVdKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAg
ICBpZiAodG9TeXN0ZW1DbG9ja1RpbWUoZmlsZUF0dHJpYnV0ZXNbTlNVUkxDb250ZW50TW9kaWZp
Y2F0aW9uRGF0ZUtleV0pIDw9IG1vZGlmaWVkU2luY2UpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgCisgICAgICAgIFt1cmxzVG9EZWxldGUgYWRkT2JqZWN0OmZpbGVVUkxdOworICAg
IH0KKyAgICAKKyAgICBmb3IgKE5TVVJMICpmaWxlVVJMIGluIHVybHNUb0RlbGV0ZS5nZXQoKSkK
KyAgICAgICAgW2ZpbGVNYW5hZ2VyIHJlbW92ZUl0ZW1BdFVSTDpmaWxlVVJMIGVycm9yOm5pbF07
Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRp
YUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgsIGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCit7CisgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucygpIik7
CisgICAgQVZBc3NldENhY2hlKiBhc3NldENhY2hlID0gYXNzZXRDYWNoZUZvclBhdGgocGF0aCk7
CisgICAgZm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CisgICAg
ICAgIFVSTCBrZXlBc1VSTCA9IFVSTChVUkwoKSwga2V5KTsKKyAgICAgICAgaWYgKGtleUFzVVJM
LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgaWYgKG9yaWdpbnMuY29udGFpbnMoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShrZXlBc1VSTCkpKQorICAgICAgICAgICAgICAgIFthc3NldENhY2hlIHJl
bW92ZUVudHJ5Rm9yS2V5OmtleV07CisgICAgICAgIH0KKyAgICB9CiB9CiAKIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMoTWVkaWFQbGF5ZXIqIHBsYXllcikKQEAgLTg3NCw3ICs5NjUsMTEgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjcmVhdGVBVkFzc2V0Rm9yVVJMKGNvbnN0IFN0
cmluZyYgdXJsKQogICAgIH0KICNlbmRpZgogCi0gICAgW29wdGlvbnMgc2V0T2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoQm9vbDohcGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyU2hvdWxk
VXNlUGVyc2lzdGVudENhY2hlKCldIGZvcktleTpBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENh
Y2hlS2V5XTsKKyAgICBib29sIHVzZVBlcnNpc3RlbnRDYWNoZSA9IHBsYXllcigpLT5jbGllbnQo
KS5tZWRpYVBsYXllclNob3VsZFVzZVBlcnNpc3RlbnRDYWNoZSgpOworICAgIFtvcHRpb25zIHNl
dE9iamVjdDpAKCF1c2VQZXJzaXN0ZW50Q2FjaGUpIGZvcktleTpBVlVSTEFzc2V0VXNlc05vUGVy
c2lzdGVudENhY2hlS2V5XTsKKyAgICAKKyAgICBpZiAodXNlUGVyc2lzdGVudENhY2hlKQorICAg
ICAgICBbb3B0aW9ucyBzZXRPYmplY3Q6YXNzZXRDYWNoZUZvclBhdGgocGxheWVyKCktPmNsaWVu
dCgpLm1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgpKSBmb3JLZXk6QVZVUkxBc3NldENh
Y2hlS2V5XTsKIAogICAgIE5TVVJMICpjb2NvYVVSTCA9IGNhbm9uaWNhbFVSTCh1cmwpOwogICAg
IG1fYXZBc3NldCA9IGFkb3B0TlMoW2FsbG9jQVZVUkxBc3NldEluc3RhbmNlKCkgaW5pdFdpdGhV
Ukw6Y29jb2FVUkwgb3B0aW9uczpvcHRpb25zLmdldCgpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVR
VEtpdC5oCmluZGV4IGYzNzNmZjg1NTk2MzczOTliY2VkNGEzZDJhODQyODQ0NmUxOWMxMjguLjU5
YTNkYTZmMTVhZjg5NDk5YTEyZGEyZDQyMDY1ZmM1MTlmNGI4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5oCkBAIC02OCw5ICs2OCw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
Z2V0U3VwcG9ydGVkVHlwZXMoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIHR5cGVzKTsKICAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBzdXBwb3J0
c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYpOwogCi0gICAgc3RhdGlj
IHZvaWQgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKTsKLSAgICBzdGF0aWMg
dm9pZCBjbGVhck1lZGlhQ2FjaGUoKTsKLSAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVG
b3JTaXRlKGNvbnN0IFN0cmluZyYpOworICAgIHN0YXRpYyBIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IG9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGlj
IHZvaWQgY2xlYXJNZWRpYUNhY2hlKGNvbnN0IFN0cmluZyYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1f
Y2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CisgICAgc3RhdGljIHZvaWQgY2xlYXJN
ZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4+Jik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKIAogICAg
IFBsYXRmb3JtTWVkaWEgcGxhdGZvcm1NZWRpYSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IDgyOWI2ZWUxZDkyNDQxNGE0NTllMTExOGVmNDczNzEw
NzQ1MTJmNjIuLmM0NmNjMTFlNDI1Zjk3ODM1YjExNDg3NmMxNzlkZjRhMmY2ZWY5MjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclBy
aXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0
cmFyIHJlZ2lzdHJhcgogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQogICAgICAgICByZWdpc3Ry
YXIoW10oTWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRp
YVBsYXllclByaXZhdGVRVEtpdD4ocGxheWVyKTsgfSwgZ2V0U3VwcG9ydGVkVHlwZXMsCi0gICAg
ICAgICAgICBzdXBwb3J0c1R5cGUsIGdldFNpdGVzSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2Fj
aGUsIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIDApOworICAgICAgICAgICAgc3VwcG9ydHNUeXBl
LCBvcmlnaW5zSW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZv
ck9yaWdpbnMsIDApOwogfQogCiBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6TWVkaWFQbGF5ZXJQ
cml2YXRlUVRLaXQoTWVkaWFQbGF5ZXIqIHBsYXllcikKQEAgLTEzMzksMjMgKzEzMzksMzAgQEAg
Ym9vbCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6aXNBdmFpbGFibGUoKQogICAgIHJldHVybiBR
VEtpdExpYnJhcnkoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Z2V0U2l0
ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mIHNpdGVzKSAKK0hhc2hTZXQ8UmVmUHRyPFNl
Y3VyaXR5T3JpZ2luPj4gTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6Om9yaWdpbnNJbk1lZGlhQ2Fj
aGUoY29uc3QgU3RyaW5nJikKIHsKKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+
IG9yaWdpbnM7CiAgICAgTlNBcnJheSAqbWVkaWFTaXRlcyA9IHdrUVRHZXRTaXRlc0luTWVkaWFE
b3dubG9hZENhY2hlKCk7Ci0gICAgZm9yIChOU1N0cmluZyAqc2l0ZSBpbiBtZWRpYVNpdGVzKQot
ICAgICAgICBzaXRlcy5hcHBlbmQoc2l0ZSk7CisgICAgCisgICAgZm9yIChOU1N0cmluZyAqc2l0
ZSBpbiBtZWRpYVNpdGVzKSB7CisgICAgICAgIFVSTCBzaXRlQXNVUkwgPSBVUkwoVVJMKCksIHNp
dGUpOworICAgICAgICBpZiAoc2l0ZUFzVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIG9yaWdp
bnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2l0ZUFzVVJMKSk7CisgICAgfQorICAgIHJl
dHVybiBvcmlnaW5zOwogfQogCi12b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1l
ZGlhQ2FjaGUoKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hl
KGNvbnN0IFN0cmluZyYsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQpCiB7
CiAgICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNo
ZSgpIik7CiAgICAgd2tRVENsZWFyTWVkaWFEb3dubG9hZENhY2hlKCk7CiB9CiAKLXZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5n
JiBzaXRlKQordm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4+JiBvcmlnaW5zKQogewotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0
OjpjbGVhck1lZGlhQ2FjaGVGb3JTaXRlKCkiKTsKLSAgICB3a1FUQ2xlYXJNZWRpYURvd25sb2Fk
Q2FjaGVGb3JTaXRlKHNpdGUpOworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkiKTsKKyAgICBmb3IgKGF1dG8mIG9yaWdp
biA6IG9yaWdpbnMpCisgICAgICAgIHdrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUo
b3JpZ2luLT50b1Jhd1N0cmluZygpKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6ZGlzYWJsZVVuc3VwcG9ydGVkVHJhY2tzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oCmluZGV4IDg2ZGI3OTJkMjVmNmZhYWZmZGE1
MWI2ZDU0YzBlNzM0M2NhNWI3MzYuLjk4ZGU5ZDA0ZmE0MmM5ZWEzZGI1ZmVlMDFmZTM3ZjMwNGRm
M2U2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3Vu
ZGF0aW9uU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5k
YXRpb25TUEkuaApAQCAtNTUsNiArNTUsMjEgQEAgTlNfQVNTVU1FX05PTk5VTExfRU5ECiAKICNl
bmRpZiAvLyBFTkFCTEUoV0lSRUxFU1NfUExBWUJBQ0tfVEFSR0VUKSAmJiAhUExBVEZPUk0oSU9T
KQogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPEFWRm91bmRhdGlvbi9B
VkFzc2V0Q2FjaGVfUHJpdmF0ZS5oPgorI2Vsc2UKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCitA
aW50ZXJmYWNlIEFWQXNzZXRDYWNoZSA6IE5TT2JqZWN0CisrIChBVkFzc2V0Q2FjaGUgKilhc3Nl
dENhY2hlV2l0aFVSTDooTlNVUkwgKilVUkw7CistIChpZClpbml0V2l0aFVSTDooTlNVUkwgKilV
Ukw7CistIChOU0FycmF5ICopYWxsS2V5czsKKy0gKE5TRGF0ZSAqKWxhc3RNb2RpZmllZERhdGVP
ZkVudHJ5Rm9yS2V5OihOU1N0cmluZyAqKWtleTsKKy0gKHZvaWQpcmVtb3ZlRW50cnlGb3JLZXk6
KE5TU3RyaW5nICopa2V5OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBO
U1VSTCAqVVJMOworQGVuZAorTlNfQVNTVU1FX05PTk5VTExfRU5ECisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKElPUykKIAogI2lmIEhBVkUoQVZLSVQpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAKaW5kZXggMjJkOGQ2Yzk2MWVhZTllNjNiYmZjYWM0NTVlNTQ3MTNkYjRhNjM4
Yy4uYjlhMzJjYzNjMGRlMjhkZWVlMjczYjk2NTdjMzc5ZjYzN2E5NDg1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cApAQCAtNjUsNiArNjUsOCBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAgICAgZW5jb2RlciA8
PCB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IHdlYlNRTERhdGFiYXNl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgbWVkaWFDYWNoZURpcmVj
dG9yeTsKKyAgICBlbmNvZGVyIDw8IG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CiAjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBlbmNvZGVyIDw8IGNvb2tpZVN0b3Jh
Z2VEaXJlY3Rvcnk7CiAjZW5kaWYKQEAgLTE1OSw2ICsxNjEsMTAgQEAgYm9vbCBXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IFdlYlByb2MKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVk
aWFDYWNoZURpcmVjdG9yeSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxURVJTKQogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNzMzOGEyOGZiYzBhMWM0OGMwMzk2
OTk4MjY2NGFhZDIxMGE1ZjgwOC4uNWU3MWIyODgyZjljOGQ0ODVhODllYWUyOTlhZDQ3OTZmZDRk
NTI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCkBAIC03Miw2ICs3Miw4IEBAIHN0cnVjdCBXZWJQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgYXBwbGljYXRpb25D
YWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICAgICBTdHJpbmcgd2ViU1FMRGF0YWJhc2VE
aXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5Owor
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9u
SGFuZGxlOwogI2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgU3RyaW5nIGNvb2tpZVN0
b3JhZ2VEaXJlY3Rvcnk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAppbmRleCA0MTYw
MzNlMWE2MGI5MmNjOTU0YjcxZTNkYjY5MmNkZTM5Njk5ZmU5Li4xMWExNjliMWM3ODJlOTIwYmZm
MjMzZGU4ZWU0YzBiOTYxYmE4YWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCkBAIC00Niw2
ICs0Niw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoCiAKICAgICBjb25maWd1cmF0aW9uLT5t
X2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdh
Y3lQbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmln
dXJhdGlvbi0+bV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBjb25maWd1
cmF0aW9uLT5tX21lZGlhQ2FjaGVEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjps
ZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJh
dGlvbi0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bv
b2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CiAg
ICAgY29uZmlndXJhdGlvbi0+bV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBXZWJLaXQ6OldlYlBy
b2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsK
ICAgICBjb25maWd1cmF0aW9uLT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSBXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUtleXNTdG9yYWdlRGly
ZWN0b3J5KCk7CkBAIC01Nyw2ICs1OCw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+
IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMoCiBQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbigpCiAgICAgOiBt
X2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKSkKICAgICAsIG1fZGlza0NhY2hlRGlyZWN0b3J5KFdlYnNp
dGVEYXRhU3RvcmU6OmRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKSkKKyAgICAsIG1fbWVk
aWFDYWNoZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVj
dG9yeSgpKQogICAgICwgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKSkKICAgICAsIG1fbG9jYWxT
dG9yYWdlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJl
Y3RvcnkoKSkKICAgICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdFdlYlNRTERhdGFiYXNlRGlyZWN0b3J5KCkpCkBAIC03OSw2ICs4MSw3IEBAIFJl
ZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29w
eSgpCiAgICAgY29weS0+bV9kaXNrQ2FjaGVTaXplT3ZlcnJpZGUgPSB0aGlzLT5tX2Rpc2tDYWNo
ZVNpemVPdmVycmlkZTsKICAgICBjb3B5LT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSB0
aGlzLT5tX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9kaXNrQ2FjaGVE
aXJlY3RvcnkgPSB0aGlzLT5tX2Rpc2tDYWNoZURpcmVjdG9yeTsKKyAgICBjb3B5LT5tX21lZGlh
Q2FjaGVEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgY29weS0+
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1faW5kZXhlZERCRGF0YWJhc2VE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV9pbmplY3RlZEJ1bmRsZVBhdGggPSB0aGlzLT5tX2luamVj
dGVkQnVuZGxlUGF0aDsKICAgICBjb3B5LT5tX2xvY2FsU3RvcmFnZURpcmVjdG9yeSA9IHRoaXMt
Pm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggNjczMzFl
OTcwZTc1MmY3ZDhiZmQzMTJlMjAyMzRjOTIyY2I1N2FiYi4uYjEyOTNkMzAxZmE2OGE2M2YxNDY3
YzM2ZTdhYzE3ZjljMjI1MjIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC02NSw2ICs2NSw5
IEBAIHB1YmxpYzoKICAgICBjb25zdCBXVEY6OlN0cmluZyYgZGlza0NhY2hlRGlyZWN0b3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9kaXNrQ2FjaGVEaXJlY3Rvcnk7IH0KICAgICB2b2lkIHNldERpc2tD
YWNoZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgZGlza0NhY2hlRGlyZWN0b3J5KSB7IG1f
ZGlza0NhY2hlRGlyZWN0b3J5ID0gZGlza0NhY2hlRGlyZWN0b3J5OyB9CiAKKyAgICBjb25zdCBX
VEY6OlN0cmluZyYgbWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFD
YWNoZURpcmVjdG9yeTsgfQorICAgIHZvaWQgc2V0TWVkaWFDYWNoZURpcmVjdG9yeShjb25zdCBX
VEY6OlN0cmluZyYgbWVkaWFDYWNoZURpcmVjdG9yeSkgeyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnkg
PSBtZWRpYUNhY2hlRGlyZWN0b3J5OyB9CisgICAgCiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGlu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
Y29uc3QgV1RGOjpTdHJpbmcmIGluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KSB7IG1faW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkgPSBpbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsgfQogCkBA
IC0xMDIsNiArMTA1LDcgQEAgcHJpdmF0ZToKIAogICAgIFdURjo6U3RyaW5nIG1fYXBwbGljYXRp
b25DYWNoZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2Rpc2tDYWNoZURpcmVjdG9yeTsK
KyAgICBXVEY6OlN0cmluZyBtX21lZGlhQ2FjaGVEaXJlY3Rvcnk7CiAgICAgV1RGOjpTdHJpbmcg
bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2luamVjdGVk
QnVuZGxlUGF0aDsKICAgICBXVEY6OlN0cmluZyBtX2xvY2FsU3RvcmFnZURpcmVjdG9yeTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUu
Y3BwCmluZGV4IDJhMmVhNDEwMGQ1YWY1ZjdjNTBhM2I3NzliODJmMjFkMTY1MDc4MjcuLmZiMmFj
ZDZkNmE1YWRiOTZiMzc5NDJkOGY3ZGY0ZmJkOTg4ZjQ0MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTM3LDUg
KzEzNywxMyBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3RvcnkoKQogfQogCiAjZW5kaWYKKyAgICAKKyNpZiAhUExBVEZPUk0oQ09D
T0EpCitTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3Rvcnko
KQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTYzNjkgYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTYzNzAKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisjZW5kaWYKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaApp
bmRleCA0NjVhNWVlOGQ2MTk3MWJjZTM1YWRkN2Y1ZTFmOTYzYTI2Y2JiMGE1Li5hMDM3NTUzOGU4
NzU3YzcxYTVjNDcyZjgyODY0NDJkMDU4YjU4MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaApAQCAtNDksNiArNDksNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0
b3J5KCk7CiAgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5KCk7
CisgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwogCiAgICAg
c3RhdGljIFN0cmluZyBkZWZhdWx0SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBz
dGF0aWMgU3RyaW5nIGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKTsKQEAgLTYwLDYgKzYx
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJzaXRlRGF0YVN0b3JlKFdlYktpdDo6V2Vic2l0ZURhdGFT
dG9yZTo6Q29uZmlndXJhdGlvbik7CiAgICAgV2Vic2l0ZURhdGFTdG9yZSgpOwogCisgICAgc3Rh
dGljIFN0cmluZyB0ZW1wRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAgICAgc3RhdGljIFN0cmluZyBjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpOwogICAg
IHN0YXRpYyBTdHJpbmcgd2Vic2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRp
b24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbQppbmRleCA4MjMxYWJiYzYyMGVhM2IwMTE2NTU0ZGNjNGMwZmIxOWQ0YmYyN2QyLi5lZGE0
YzE0OTI0NDQ2ODY0MzY1YjY5OGI1NWU1YTM3MTY3ODc0ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL0FQSVdlYnNpdGVEYXRhU3Rv
cmVDb2NvYS5tbQpAQCAtNTcsNiArNTcsMTEgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRl
ZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogICAgIHJldHVybiBjYWNoZURpcmVjdG9yeUZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbigiTmV0d29ya0NhY2hlIik7CiB9CiAKK1N0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IHRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIk1lZGlhQ2FjaGUiKTsKK30K
KwogU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVj
dG9yeSgpCiB7CiAgICAgcmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJl
c2VudGF0aW9uKCJJbmRleGVkREIiKTsKQEAgLTgyLDYgKzg3LDMzIEBAIFN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiAgICAg
cmV0dXJuIHdlYnNpdGVEYXRhRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIik7CiB9CiAKK1N0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjp0ZW1w
RGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5
TmFtZSkKK3sKKyAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKKyAgICBzdGF0
aWMgTlNVUkwgKnRlbXBVUkw7CisgICAgCisgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
eworICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFy
eURpcmVjdG9yeSgpXTsKKyAgICAgICAgaWYgKCF1cmwpCisgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFXZWJLaXQ6OnByb2Nl
c3NIYXNDb250YWluZXIoKSkgeworICAgICAgICAgICAgTlNTdHJpbmcgKmJ1bmRsZUlkZW50aWZp
ZXIgPSBbTlNCdW5kbGUgbWFpbkJ1bmRsZV0uYnVuZGxlSWRlbnRpZmllcjsKKyAgICAgICAgICAg
IGlmICghYnVuZGxlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICBidW5kbGVJZGVudGlmaWVy
ID0gW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dLnByb2Nlc3NOYW1lOworICAgICAgICAgICAg
dXJsID0gW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRlbnRpZmllciBp
c0RpcmVjdG9yeTpZRVNdOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZW1wVVJMID0g
W1t1cmwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0IiBpc0RpcmVjdG9yeTpZ
RVNdIHJldGFpbl07CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKnVybCA9IFt0ZW1wVVJMIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpkaXJlY3RvcnlOYW1lIGlzRGlyZWN0b3J5OllFU107
CisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9y
eUF0VVJMOnVybCB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmls
IGVycm9yOm51bGxwdHJdKQorICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBjcmVhdGUgZGly
ZWN0b3J5ICVAIiwgdXJsKTsKKyAgICAKKyAgICByZXR1cm4gdXJsLmFic29sdXRlVVJMLnBhdGgu
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uOworfQorCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6
Y2FjaGVEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJl
Y3RvcnlOYW1lKQogewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwpAQCAt
MTQ0LDYgKzE3Niw3IEBAIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBX
ZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGF0YVN0b3JlQ29uZmlnCiAKICAgICBjb25maWd1cmF0
aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5ID0gZGVm
YXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNo
ZURpcmVjdG9yeSA9IGRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAKICAgICBjb25maWd1
cmF0aW9uLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gZGVmYXVsdFdlYlNRTERhdGFiYXNlRGly
ZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBkZWZh
dWx0TG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGJmYTBhOWE4OTdiMTI1
MjAwZmEwYThlYmMxZjAxZGM0NGYxOGY2MzAuLjEwNjUyMjk4ZjIxM2IzYjAxMTAwZTBmMTM1YTEy
MWI2N2QwMTA4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC02NCw2ICs2NCw3IEBAIE5TU3RyaW5nICpXZWJT
dG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkgPSBAIldlYktpdExvY2FsU3RvcmFnZURhdGFiYXNl
UGF0aFByZWZlCiBOU1N0cmluZyAqV2ViS2l0SlNDSklURW5hYmxlZERlZmF1bHRzS2V5ID0gQCJX
ZWJLaXRKU0NKSVRFbmFibGVkRGVmYXVsdHNLZXkiOwogTlNTdHJpbmcgKldlYktpdEpTQ0ZUTEpJ
VEVuYWJsZWREZWZhdWx0c0tleSA9IEAiV2ViS2l0SlNDRlRMSklURW5hYmxlZERlZmF1bHRzS2V5
IjsKIE5TU3RyaW5nICpXZWJLaXRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5RGVmYXVsdHNLZXkg
PSBAIldlYktpdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkiOworTlNTdHJpbmcgKldlYktpdE1l
ZGlhQ2FjaGVEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFDYWNoZURpcmVjdG9y
eSI7CiAKICNpZiAhUExBVEZPUk0oSU9TKQogc3RhdGljIE5TU3RyaW5nICpXZWJLaXRBcHBsaWNh
dGlvbkRpZENoYW5nZUFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VOb3RpZmljYXRp
b24gPSBAIk5TQXBwbGljYXRpb25EaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5RW5oYW5jZWRVc2VySW50
ZXJmYWNlTm90aWZpY2F0aW9uIjsKQEAgLTMzNiw2ICszMzcsMjUgQEAgU3RyaW5nIFdlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3RvcnkoKQogICAg
IHJldHVybiBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtsb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOwogfQogCitTdHJpbmcgV2ViUHJvY2Vz
c1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAg
IHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKKyAgICAKKyAgICBOU1N0cmluZyAqbWVk
aWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBvYmplY3RGb3JLZXk6V2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeURlZmF1bHRzS2V5XTsK
KyAgICBpZiAoIW1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHx8ICFbbWVkaWFLZXlzQ2FjaGVEaXJl
Y3RvcnkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICBtZWRpYUtl
eXNDYWNoZURpcmVjdG9yeSA9IE5TVGVtcG9yYXJ5RGlyZWN0b3J5KCk7CisgICAgICAgIAorICAg
ICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAgICAgICAgICBO
U1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxlXS5idW5kbGVJ
ZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQorICAgICAgICAg
ICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10ucHJv
Y2Vzc05hbWU7CisgICAgICAgICAgICBtZWRpYUtleXNDYWNoZURpcmVjdG9yeSA9IFttZWRpYUtl
eXNDYWNoZURpcmVjdG9yeSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6YnVuZGxlSWRl
bnRpZmllcl07CisgICAgICAgIH0KKyAgICAgICAgbWVkaWFLZXlzQ2FjaGVEaXJlY3RvcnkgPSBb
bWVkaWFLZXlzQ2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
V2ViS2l0L01lZGlhQ2FjaGUiXTsKKyAgICB9CisgICAgcmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5n
U3ltbGlua3NJblBhdGgoW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5U3RhbmRhcmRp
emluZ1BhdGhdKTsKK30KKwogU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURl
ZmF1bHRNZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KCkKIHsKICAgICByZWdpc3RlclVzZXJEZWZh
dWx0c0lmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCBmZTczYjNmZTk5ZjRiOTMzMmIzYzRmNWM5YTg4YjEzNDA0MTM1ODc1Li4zM2Fi
ZWVhZWFjNjdiNzg4ODY0NjU2MmQ2ZWU1MzI1ZjkzNTY2ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTEyOCw2ICsxMjgsNyBAQCBzdGF0aWMg
V2Vic2l0ZURhdGFTdG9yZTo6Q29uZmlndXJhdGlvbiBsZWdhY3lXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbihBUEk6OgogICAgIGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5
ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAg
IGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLmFw
cGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFDYWNoZURpcmVj
dG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAg
ICAgY29uZmlndXJhdGlvbi5tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLm1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0
aW9uLm5ldHdvcmtDYWNoZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5kaXNr
Q2FjaGVEaXJlY3RvcnkoKTsKIApAQCAtNTQ0LDYgKzU0NSwxMCBAQCBXZWJQcm9jZXNzUHJveHkm
IFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICBpZiAoIXBhcmFtZXRl
cnMud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkuaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkocGFyYW1ldGVycy53ZWJT
UUxEYXRhYmFzZURpcmVjdG9yeSwgcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSk7CiAKKyAgICBwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkgPSBt
X2NvbmZpZ3VyYXRpb24tPm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAoIXBhcmFtZXRl
cnMubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1lZGlhQ2Fj
aGVEaXJlY3RvcnksIHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CisgICAgCiAjaWYgRU5BQkxFKFNFQ0NPTVBfRklMVEVSUykKICAgICBwYXJhbWV0ZXJzLmNv
b2tpZVN0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5jb29raWVTdG9yYWdlRGlyZWN0b3J5KCk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZGFi
NWYyMDVhMjc5OGJkYzA1MzY0YmNjOWJiZTgzZTdiMWYyMDM3NS4uYThiMzg2NzFjZDNlN2UyN2U0
NWM2NmE1ZWU4ZjczY2MyYzEzYTA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmgKQEAgLTM2MSw2ICszNjEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmlu
ZyBsZWdhY3lQbGF0Zm9ybURlZmF1bHRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogICAg
IHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3Rv
cnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0
b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3JtRGVmYXVs
dE1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGxl
Z2FjeVBsYXRmb3JtRGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBi
b29sIGlzTmV0d29ya0NhY2hlRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDI4NzRm
ZjQ0NjA0ZTRkNWVkYTYzN2YyMThiYzlhN2FiNWZkN2FiNGUuLjkxOWVlYTYyOTFhZTI5YzE2ZmEx
YmRjOTM4MGU1OWRkOGUxYzIzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRp
b25DYWNoZVN0b3JhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RhdGFiYXNlVHJhY2tlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
T3JpZ2luTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtNzcsNiArNzgsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpX
ZWJzaXRlRGF0YVN0b3JlKENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICAgICAsIG1fc2Vz
c2lvbklEKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICwgbV9u
ZXR3b3JrQ2FjaGVEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZURp
cmVjdG9yeSkpCiAgICAgLCBtX2FwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoV1RGTW92ZShjb25m
aWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkpKQorICAgICwgbV9tZWRpYUNhY2hl
RGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5KSkKICAg
ICAsIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1cmF0aW9uLndlYlNR
TERhdGFiYXNlRGlyZWN0b3J5KSkKICAgICAsIG1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeShX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSkpCiAgICAgLCBt
X3N0b3JhZ2VNYW5hZ2VyKFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGUoV1RGTW92ZShjb25maWd1cmF0
aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSkpKQpAQCAtMjU1LDYgKzI1NywyNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRh
VHlwZXMsIE9wdGlvblNldAogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYobmV3IENhbGxiYWNrQWdncmVnYXRvcihmZXRjaE9wdGlv
bnMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAKKyAgICBpZiAoZGF0YVR5cGVzLmNv
bnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgeworICAgICAgICBTdHJpbmdDYXB0
dXJlIG1lZGlhQ2FjaGVEaXJlY3RvcnkgeyBtX21lZGlhQ2FjaGVEaXJlY3RvcnkgfTsKKyAgICAg
ICAgCisgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7Cisg
ICAgICAgIG1fcXVldWUtPmRpc3BhdGNoKFtmZXRjaE9wdGlvbnMsIG1lZGlhQ2FjaGVEaXJlY3Rv
cnksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgSGFzaFNldDxSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zID0gV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6b3JpZ2luc0luTWVkaWFDYWNoZShtZWRpYUNhY2hlRGlyZWN0b3J5LnN0cmluZygpKTsKKyAg
ICAgICAgICAgIFdlYnNpdGVEYXRhKiB3ZWJzaXRlRGF0YSA9IG5ldyBXZWJzaXRlRGF0YTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKSB7Cisg
ICAgICAgICAgICAgICAgV2Vic2l0ZURhdGE6OkVudHJ5IGVudHJ5IHsgb3JpZ2luLCBXZWJzaXRl
RGF0YVR5cGU6OkRpc2tDYWNoZSwgMCB9OworICAgICAgICAgICAgICAgIHdlYnNpdGVEYXRhLT5l
bnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Fn
Z3JlZ2F0b3IsIG9yaWdpbnMsIHdlYnNpdGVEYXRhXSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGTW92ZSgqd2Vic2l0ZURhdGEp
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBkZWxldGUgd2Vic2l0ZURhdGE7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAgYXV0byBuZXR3b3Jr
UHJvY2Vzc0FjY2Vzc1R5cGUgPSBjb21wdXRlTmV0d29ya1Byb2Nlc3NBY2Nlc3NUeXBlRm9yRGF0
YUZldGNoKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAobmV0d29ya1Byb2Nl
c3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lKSB7CiAgICAgICAgIGZvciAo
YXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewpAQCAtNTI5LDYgKzU1MiwxOSBA
QCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4gZGF0YVR5cGVzLCBzdGQ6OmNocgogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRv
cj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gYWRvcHRSZWYobmV3IENhbGxiYWNrQWdncmVnYXRvcihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogCisgICAgaWYgKGRhdGFUeXBlcy5jb250YWlu
cyhXZWJzaXRlRGF0YVR5cGU6OkRpc2tDYWNoZSkpIHsKKyAgICAgICAgU3RyaW5nQ2FwdHVyZSBt
ZWRpYUNhY2hlRGlyZWN0b3J5IHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5IH07CisKKyAgICAgICAg
Y2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgbV9xdWV1
ZS0+ZGlzcGF0Y2goW21vZGlmaWVkU2luY2UsIG1lZGlhQ2FjaGVEaXJlY3RvcnksIGNhbGxiYWNr
QWdncmVnYXRvcl0geworICAgICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xl
YXJNZWRpYUNhY2hlKG1lZGlhQ2FjaGVEaXJlY3Rvcnkuc3RyaW5nKCksIG1vZGlmaWVkU2luY2Up
OworICAgICAgICAgICAgCisgICAgICAgICAgICBXVEY6OlJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdh
dG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KTsKKyAgICB9CisKICAgICBhdXRvIG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSA9IGNvbXB1dGVO
ZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhUmVtb3ZhbChkYXRhVHlwZXMsICFpc1BlcnNp
c3RlbnQoKSk7CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSAhPSBQcm9jZXNzQWNj
ZXNzVHlwZTo6Tm9uZSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpIHsKQEAgLTc1NSw3ICs3OTEsMjUgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpy
ZW1vdmVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgY29uc3QgVmUK
ICAgICB9OwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdh
dG9yID0gYWRvcHRSZWYobmV3IENhbGxiYWNrQWdncmVnYXRvcihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSkpOwotCisgICAgCisgICAgaWYgKGRhdGFUeXBlcy5jb250YWlucyhXZWJzaXRlRGF0
YVR5cGU6OkRpc2tDYWNoZSkpIHsKKyAgICAgICAgU3RyaW5nQ2FwdHVyZSBtZWRpYUNhY2hlRGly
ZWN0b3J5IHsgbV9tZWRpYUNhY2hlRGlyZWN0b3J5IH07CisgICAgICAgIEhhc2hTZXQ8UmVmUHRy
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKKyAgICAgICAgZm9yIChjb25zdCBh
dXRvJiBkYXRhUmVjb3JkIDogZGF0YVJlY29yZHMpIHsKKyAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgb3JpZ2luIDogZGF0YVJlY29yZC5vcmlnaW5zKQorICAgICAgICAgICAgICAgIG9yaWdp
bnMuYWRkKG9yaWdpbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAgIG1fcXVldWUtPmRpc3BhdGNo
KFtvcmlnaW5zLCBtZWRpYUNhY2hlRGlyZWN0b3J5LCBjYWxsYmFja0FnZ3JlZ2F0b3JdIHsKKyAg
ICAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMobWVkaWFDYWNoZURpcmVjdG9yeS5zdHJpbmcoKSwgb3JpZ2lucyk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBl
bmRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKyAg
ICAKICAgICBhdXRvIG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSA9IGNvbXB1dGVOZXR3b3JrUHJv
Y2Vzc0FjY2Vzc1R5cGVGb3JEYXRhUmVtb3ZhbChkYXRhVHlwZXMsICFpc1BlcnNpc3RlbnQoKSk7
CiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSAhPSBQcm9jZXNzQWNjZXNzVHlwZTo6
Tm9uZSkgewogICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCmluZGV4IDEwM2Q2MjM4MzFiODUyNGFmNmMwMzc0NzZhMGIzMzllNWQ3
YTkyMWEuLmE0YTllMTA0M2I3NmE2ZWI4OGRmZjNjNzExMWY0ZjYyYTc3ZWNmNzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBuZXR3b3Jr
Q2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
OwogCisgICAgICAgIFN0cmluZyBtZWRpYUNhY2hlRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcg
d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyBsb2NhbFN0b3JhZ2VEaXJl
Y3Rvcnk7CiAgICAgICAgIFN0cmluZyBtZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwpAQCAtMTE3
LDYgKzExOCw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBTdHJpbmcgbV9uZXR3b3JrQ2FjaGVE
aXJlY3Rvcnk7CiAgICAgY29uc3QgU3RyaW5nIG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeTsK
KyAgICBjb25zdCBTdHJpbmcgbV9tZWRpYUNhY2hlRGlyZWN0b3J5OwogCiAgICAgY29uc3QgU3Ry
aW5nIG1fd2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29uc3QgU3RyaW5nIG1fbWVkaWFL
ZXlzU3RvcmFnZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViUHJvY2Vzc1Bvb2xFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQcm9jZXNzUG9vbEVmbC5jcHAKaW5kZXggMTBiNWYyYTA3NGUwMWY4ZjZjNTc5MjAwMTBk
ZDhiYzkzMGJiNzIxNy4uMjU1ZWU4NzIxMmM0Yjg1NzM4M2Q3OGRhODNkNmNkNjQwYWIwZjc3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVm
bC5jcHAKQEAgLTg3LDYgKzg3LDExIEBAIFN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxh
dGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKIH0K
IAorU3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hl
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
TWVkaWFDYWNoZURpcmVjdG9yeSgpOworfQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMpCiB7CiAgICAgaW5pdGlhbGl6ZUluc3BlY3RvclNlcnZlcigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAppbmRleCA0ZWZj
ZTM5ZDlkMDMzNDU2Y2M4NjUxNDVjZmEzNzU2MzFjM2Y5MWY1Li45N2FmYjcwMWZmYWMyYzM2OGI3
YjBjNjdiYmJmMzI4NzJmMWViNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZ3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcApAQCAtODYsNiArODYsMTEgQEAgV1RGOjpTdHJp
bmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVE
aXJlY3RvcnkoKQogICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRBcHBs
aWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiB9CiAKK1dURjo6U3RyaW5nIFdlYlByb2Nlc3NQb29s
OjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1
cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwor
fQorCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKFdl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaW5pdEluc3Bl
Y3RvclNlcnZlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggYzhkM2MxZjRkNTlmOWIwZjg1MzdjYTY4N2NlNDU1NTI2ZWVmZTMyOC4uMTFiNjJiNDJiNGVh
YjllM2QyNjk4NzgzODAwODI2Y2FjNGZlM2IxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCkBAIC03Nyw2ICs3Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR0NDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9HbHlwaFBhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNZWRpYUVsZW1lbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ljb25EYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SlNET01XaW5kb3cuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xhbmd1YWdlLmg+CkBAIC0yOTMsNiAr
Mjk0LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBpZiAoIXBhcmFtZXRlcnMuYXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCiAgICAgICAgIEFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlOjpzaW5nbGV0b24oKS5zZXRDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLmFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkpOwogCisgICAgaWYgKCFwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVE
aXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRNZWRpYUNhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSk7CisK
ICAgICBzZXRDYWNoZU1vZGVsKHN0YXRpY19jYXN0PHVpbnQzMl90PihwYXJhbWV0ZXJzLmNhY2hl
TW9kZWwpKTsKIAogICAgIGlmICghcGFyYW1ldGVycy5sYW5ndWFnZXMuaXNFbXB0eSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpp
bmRleCBmNzYxY2U2YjE4ZTQ4MTk0M2QzOGY4MzIyMjNjNDk1YTQ3NjYwNDk2Li5hMDg3ZjkwZTc1
NjFkZWI1NjQ0ODA2NDgzZmRjMWFhNWIzODliZDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtMTM1LDYgKzEzNSw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBl
cm1hbmVudGx5KHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlUmVzb3VyY2VQYXRoRXh0ZW5zaW9u
SGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1l
dGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3Vt
ZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMu
bWVkaWFLZXlTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICNpZiBQTEFURk9STShJ
T1MpCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5KHBhcmFtZXRlcnMu
Y29va2llU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276191</attachid>
            <date>2016-04-11 17:11:42 -0700</date>
            <delta_ts>2016-04-11 18:00:03 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>bug-155783-20160411171151.patch</filename>
            <type>text/plain</type>
            <size>55875</size>
            <attacher name="Jeremy Jones">jeremyj-wk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmFmZjVmNDQ4NDE3YTc1
ZjRkNTQ4ZjE4MjFhYTE2ZGFlODU1NGM3NC4uZWMwYjg1NjVlZDViZGY4OGUxMWJkN2U0ZDM5NjRj
NTc0MWIxNDUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE2LTA0LTA3ICBKZXJl
bXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIGNsZWFyaW5nIGNh
Y2hlLCBhbHNvIGNsZWFyIEFWRm91bmRhdGlvbiBjYWNoZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTc4MworICAgICAgICByZGFyOi8vcHJvYmxl
bS8yNTI1MjU0MQorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IFVzZSBBVkFzc2V0Q2FjaGUgYXQgYSBzcGVjaWZpZWQgbG9jYXRpb24gb24gZGlzayBmb3IgYWxs
IEFWVVJMQXNzZXRzLiBUaGlzIEFWQXNzZXRDYWNoZQorICAgICAgICBjYW4gdGhlbiBiZSB1c2Vk
IHRvIG1hbmFnZSB0aGUgY2FjaGUgc3RvcmFnZSB1c2VkIGJ5IEFWRm91bmRhdGlvbi4gSXQgaXMg
dXNlZCB0byBxdWVyeSB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIGNhY2hlIGluIG9yaWdp
bnNJbk1lZGlhQ2FjaGUoKSBhbmQgdG8gY2xlYXIgdGhlIGNhY2hlIGNvbXBsZXRlbHkgb3IgcGFy
dGlhbGx5IGluCisgICAgICAgIGNsZWFyTWVkaWFDYWNoZSgpIGFuZCBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zKCkuCisKKyAgICAgICAgVXNlIFNlY3VyaXR5T3JpZ2luIGluc3RlYWQgb2YgdGhl
IGxlc3MgZm9ybWFsIHNpdGUgU3RyaW5nIHRvIHJlcHJlc2VudCBvcmlnaW5zIGluIHRoZSBjYWNo
ZS4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNh
Y2hlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1l
ZGlhQ2FjaGUpOiBBZGRlZCBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck1lZGlhQ2FjaGVEaXJlY3RvcnkpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmdldFNpdGVzSW5NZWRp
YUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNs
ZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y2xlYXJNZWRp
YUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01l
ZGlhUGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZE1lZGlhRW5naW5lKTogQWRkIG5l
dyBjYWNoZSBtZXRob2RzLgorICAgICAgICAoV2ViQ29yZTo6YWRkVG9IYXNoKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZSk6IEFkZGVk
IHBhcmFtZXRlci4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2Fj
aGVGb3JPcmlnaW5zKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6Z2V0
U2l0ZXNJbk1lZGlhQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhUGxheWVyLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllckNs
aWVudDo6bWVkaWFQbGF5ZXJNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXJQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6Om9yaWdpbnNJbk1lZGlhQ2FjaGUpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZTo6Y2xlYXJN
ZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlSW50ZXJmYWNlOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U6OmdldFNpdGVzSW5N
ZWRpYUNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUludGVyZmFjZTo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpyZWdpc3Rlck1lZGlh
RW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAgICAgICAgKFdlYkNvcmU6OmFzc2V0Q2Fj
aGVGb3JQYXRoKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDOjpvcmlnaW5zSW5NZWRpYUNhY2hlKTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjp0b1N5c3RlbUNsb2NrVGltZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlKTogQWRkZWQg
cGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQzo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y3JlYXRlQVZBc3NldEZv
clVSTCk6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZVFUS2l0OjpyZWdpc3Rlck1lZGlhRW5naW5lKTogQWRkZWQgY2FjaGUgbWV0aG9kcy4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpvcmlnaW5zSW5NZWRpYUNhY2hl
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xl
YXJNZWRpYUNhY2hlKTogQWRkZWQgcGFyYW1ldGVyLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFD
YWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVRVEtp
dDo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
c3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaDoKKwogMjAxNi0wNC0xMSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERPTVRva2VuTGlzdC5jb250YWlucygpIHNob3Vs
ZCBub3QgdGhyb3cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNzc5N2Q1MWUzMzUxZTA3OGFkM2MzNDZmNWExZDYy
ZmE1OGU3Y2UxLi41ZDMwNmYzZDVmMDVjNjZmYmQ3NGY4ZDIxNmU3ZWViZDMzZTVlZmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTEgQEAKKzIwMTYtMDQtMDcgIEplcmVteSBKb25lcyAgPGplcmVt
eWpAYXBwbGUuY29tPgorCisgICAgICAgIFdoZW4gY2xlYXJpbmcgY2FjaGUsIGFsc28gY2xlYXIg
QVZGb3VuZGF0aW9uIGNhY2hlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU1NzgzCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzI1MjUyNTQxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW5jbHVkZSB0aGUgSFRN
TE1lZGlhRWxlbWVudCBtZWRpYSBjYWNoZSB3aGVuIGRvaW5nIGRpc2sgY2FjaGUgb3BlcmF0aW9u
cy4KKyAgICAgICAgQWRkIGEgc2FuZGJveCBleHRlbnNpb24gZm9yIG1lZGlhIGNhY2hlIGRpcmVj
dG9yeS4gVGhpcyBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgYW5kIHRoZSB3ZWIgcHJvY2VzcworICAg
ICAgICB0byBhY2Nlc3MgdGhlIHNhbWUgY2FjaGUuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6IEFk
ZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjo6Y3JlYXRlV2l0aExlZ2FjeU9wdGlvbnMpOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbik6IEFkZCBtZWRpYSBjYWNoZSBk
aXJlY3RvcnkuCisgICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6
IEFkZCBtZWRpYSBjYWNoZSBkaXJlY3RvcnkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSk6IERlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9BUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChBUEk6
OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogTWVkaWEgY2Fj
aGUgaXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFT
dG9yZTo6dGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbik6IEZvciByZXNvdXJj
ZXMgaW4gdGVtcG9yYXJ5IGRpcmVjdG9yeS4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdERhdGFTdG9yZUNvbmZpZ3VyYXRpb24pOiBJbml0IG1lZGlhIGNhY2hlIGRpcmVj
dG9yeS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1l
ZGlhQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
KTogQWRkIG1lZGlhQ2FjaGVEaXJlY3RvcnkuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKTogQWRkIG1lZGlhQ2FjaGVEaXJlY3RvcnkuCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
RGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURh
dGFTdG9yZTo6ZmV0Y2hEYXRhKTogSW1wbGVtZW50IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKTogSW1wbGVtZW50
IGZvciBtZWRpYUNhY2hlRGlyZWN0b3J5LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNz
UG9vbEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0
Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL2d0ay9XZWJQcm9jZXNzUG9vbEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KTogQWRkZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBJbml0aWFsaXplIG1lZGlhIGNhY2hl
IGRpcmVjdG9yeS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJv
Y2Vzcyk6IENvbnN1bWUgc2FuZGJveCBleHRlbnNpb24uCisKIDIwMTYtMDQtMTEgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxOTkyOTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAppbmRleCBhNzI3NzlmYmI4ZTc4ODgzZjMyNjg5OTJjNmI2NmYxM2FhMzY0MzcyLi4zZjRmNjQ1
OWU0ZGViYmYzMDYyZTU3MjgxYzlkMGQxZDlmOTA2NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU1OTMsMjEgKzU1OTMsMzYgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzZXRTaG91bGREZWxheUxvYWRFdmVudChib29sIHNob3VsZERlbGF5KQogICAg
IGVsc2UKICAgICAgICAgZG9jdW1lbnQoKS5kZWNyZW1lbnRMb2FkRXZlbnREZWxheUNvdW50KCk7
CiB9Ci0gICAgCiAKLXZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUo
VmVjdG9yPFN0cmluZz4mIHNpdGVzKQorc3RhdGljIFN0cmluZyYgc2hhcmVkTWVkaWFDYWNoZURp
cmVjdG9yeSgpCiB7Ci0gICAgTWVkaWFQbGF5ZXI6OmdldFNpdGVzSW5NZWRpYUNhY2hlKHNpdGVz
KTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzaGFyZWRNZWRpYUNhY2hlRGly
ZWN0b3J5OworICAgIHJldHVybiBzaGFyZWRNZWRpYUNhY2hlRGlyZWN0b3J5OwogfQogCi12b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNoZSgpCit2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIE1l
ZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGUoKTsKKyAgICBzaGFyZWRNZWRpYUNhY2hlRGlyZWN0
b3J5KCkgPSBwYXRoOwogfQogCi12b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsZWFyTWVkaWFDYWNo
ZUZvclNpdGUoY29uc3QgU3RyaW5nJiBzaXRlKQorY29uc3QgU3RyaW5nJiBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYUNhY2hlRGlyZWN0b3J5KCkKIHsKLSAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRp
YUNhY2hlRm9yU2l0ZShzaXRlKTsKKyAgICByZXR1cm4gc2hhcmVkTWVkaWFDYWNoZURpcmVjdG9y
eSgpOworfQorCitIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IEhUTUxNZWRpYUVsZW1l
bnQ6Om9yaWdpbnNJbk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHJldHVy
biBNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZShwYXRoKTsKK30KKwordm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoLCBzdGQ6OmNo
cm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpCit7CisgICAgTWVk
aWFQbGF5ZXI6OmNsZWFyTWVkaWFDYWNoZShwYXRoLCBtb2RpZmllZFNpbmNlKTsKK30KKwordm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykK
K3sKKyAgICBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhwYXRoLCBvcmln
aW5zKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZXNldE1lZGlhRW5naW5lcygpCkBA
IC02MTkyLDYgKzYyMDcsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNo
b3VsZFVzZVBlcnNpc3RlbnRDYWNoZSgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitj
b25zdCBTdHJpbmcmIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVj
dG9yeSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKK30KKwog
Ym9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclNob3VsZFdhaXRGb3JSZXNwb25zZVRv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNo
YWxsZW5nZSkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGVkYTQ4NTcyNmZmOWY4MTdjYzVi
Y2RjMjM2NWM3OTVhMzQ5NDBhZTEuLjdlZGQ0NDQxN2E3OTgxNzczMjYzZDJiNGY5NTRjNGE5Nzgy
N2UyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0zODAsOSAr
MzgwLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7CiAKICAgICAvLyBNZWRpYSBjYWNoZSBtYW5hZ2VtZW50LgotICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRpYUNhY2hlKFZlY3RvcjxTdHJpbmc+
Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlKCk7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25z
dCBTdHJpbmcmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNZWRpYUNhY2hl
RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBjb25z
dCBTdHJpbmcmIG1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNv
bnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFD
YWNoZShjb25zdCBTdHJpbmcmLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50
IG1vZGlmaWVkU2luY2UgPSB7IH0pOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFzaFNldDxSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+PiYpOwogICAgIHN0YXRpYyB2b2lkIHJlc2V0TWVkaWFFbmdpbmVz
KCk7CiAKICAgICBib29sIGlzUGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWluZzsgfQpA
QCAtNTk3LDYgKzU5OSw3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIG1l
ZGlhUGxheWVyQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBvdmVycmlkZTsKICAgICBSZWZQdHI8UGxh
dGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRpYVBsYXllckNyZWF0ZVJlc291cmNlTG9hZGVy
KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBtZWRpYVBsYXllclNob3VsZFVzZVBlcnNpc3RlbnRDYWNo
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IFN0cmluZyYgbWVkaWFQbGF5ZXJNZWRpYUNh
Y2hlRGlyZWN0b3J5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBQTEFURk9STShXSU4pICYmIFVT
RShBVkZPVU5EQVRJT04pCiAgICAgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBtZWRpYVBsYXllckdy
YXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdCBNZWRpYVBsYXllciopIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCmlu
ZGV4IDBhZDYxM2JiODBkMjY5Y2ZmNjdkZmFkYWE5M2EzYmFlZjAyZTdhODguLjFiODFkNGRmOGEy
ZjA0NTVhNWUyY2NhNmJjMzZjNzVmMTdiNmI2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKQEAgLTE3MCwxMyArMTcwLDEzIEBAIHN0
cnVjdCBNZWRpYVBsYXllckZhY3RvcnkgewogICAgIENyZWF0ZU1lZGlhRW5naW5lUGxheWVyIGNv
bnN0cnVjdG9yOwogICAgIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMgZ2V0U3VwcG9ydGVkVHlw
ZXM7CiAgICAgTWVkaWFFbmdpbmVTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlQW5kQ29kZWNzOwot
ICAgIE1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUgZ2V0U2l0ZXNJbk1lZGlhQ2FjaGU7
CisgICAgTWVkaWFFbmdpbmVPcmlnaW5zSW5NZWRpYUNhY2hlIG9yaWdpbnNJbk1lZGlhQ2FjaGU7
CiAgICAgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlOwotICAgIE1l
ZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlOwor
ICAgIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyBjbGVhck1lZGlhQ2FjaGVG
b3JPcmlnaW5zOwogICAgIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0gc3VwcG9ydHNLZXlT
eXN0ZW07CiB9OwogCi1zdGF0aWMgdm9pZCBhZGRNZWRpYUVuZ2luZShDcmVhdGVNZWRpYUVuZ2lu
ZVBsYXllciwgTWVkaWFFbmdpbmVTdXBwb3J0ZWRUeXBlcywgTWVkaWFFbmdpbmVTdXBwb3J0c1R5
cGUsIE1lZGlhRW5naW5lR2V0U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRp
YUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3Vw
cG9ydHNLZXlTeXN0ZW0pOworc3RhdGljIHZvaWQgYWRkTWVkaWFFbmdpbmUoQ3JlYXRlTWVkaWFF
bmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9y
dHNUeXBlLCBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJN
ZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMsIE1lZGlhRW5n
aW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwogCiBzdGF0aWMgYm9vbCBoYXZlTWVkaWFFbmdpbmVzVmVj
dG9yOwogCkBAIC0yMzQsMTMgKzIzNCwxMyBAQCBzdGF0aWMgY29uc3QgVmVjdG9yPE1lZGlhUGxh
eWVyRmFjdG9yeT4mIGluc3RhbGxlZE1lZGlhRW5naW5lcygpCiB9CiAKIHN0YXRpYyB2b2lkIGFk
ZE1lZGlhRW5naW5lKENyZWF0ZU1lZGlhRW5naW5lUGxheWVyIGNvbnN0cnVjdG9yLCBNZWRpYUVu
Z2luZVN1cHBvcnRlZFR5cGVzIGdldFN1cHBvcnRlZFR5cGVzLCBNZWRpYUVuZ2luZVN1cHBvcnRz
VHlwZSBzdXBwb3J0c1R5cGUsCi0gICAgTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSBn
ZXRTaXRlc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRp
YUNhY2hlLCBNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUgY2xlYXJNZWRpYUNhY2hl
Rm9yU2l0ZSwgTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkK
KyAgICBNZWRpYUVuZ2luZU9yaWdpbnNJbk1lZGlhQ2FjaGUgb3JpZ2luc0luTWVkaWFDYWNoZSwg
TWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGUgY2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2luZUNs
ZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFF
bmdpbmVTdXBwb3J0c0tleVN5c3RlbSBzdXBwb3J0c0tleVN5c3RlbSkKIHsKICAgICBBU1NFUlQo
Y29uc3RydWN0b3IpOwogICAgIEFTU0VSVChnZXRTdXBwb3J0ZWRUeXBlcyk7CiAgICAgQVNTRVJU
KHN1cHBvcnRzVHlwZSk7CiAKLSAgICBtdXRhYmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9y
KCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9yeSB7IGNvbnN0cnVjdG9yLCBnZXRTdXBwb3J0ZWRU
eXBlcywgc3VwcG9ydHNUeXBlLCBnZXRTaXRlc0luTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hl
LCBjbGVhck1lZGlhQ2FjaGVGb3JTaXRlLCBzdXBwb3J0c0tleVN5c3RlbSB9KTsKKyAgICBtdXRh
YmxlSW5zdGFsbGVkTWVkaWFFbmdpbmVzVmVjdG9yKCkuYXBwZW5kKE1lZGlhUGxheWVyRmFjdG9y
eSB7IGNvbnN0cnVjdG9yLCBnZXRTdXBwb3J0ZWRUeXBlcywgc3VwcG9ydHNUeXBlLCBvcmlnaW5z
SW5NZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMs
IHN1cHBvcnRzS2V5U3lzdGVtIH0pOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBh
cHBsaWNhdGlvbk9jdGV0U3RyZWFtKCkKQEAgLTEwNDIsMzAgKzEwNDIsMzkgQEAgdm9pZCBNZWRp
YVBsYXllcjo6cmVsb2FkVGltZXJGaXJlZCgpCiAgICAgbG9hZFdpdGhOZXh0TWVkaWFFbmdpbmUo
bV9jdXJyZW50TWVkaWFFbmdpbmUpOwogfQogCi12b2lkIE1lZGlhUGxheWVyOjpnZXRTaXRlc0lu
TWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYgc2l0ZXMpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgor
c3RhdGljIHZvaWQgYWRkVG9IYXNoKEhhc2hTZXQ8VD4mIHRvSGFzaCwgSGFzaFNldDxUPiYmIGZy
b21IYXNoKQogeworICAgIGlmICh0b0hhc2guaXNFbXB0eSgpKQorICAgICAgICB0b0hhc2ggPSBX
VEZNb3ZlKGZyb21IYXNoKTsKKyAgICBlbHNlCisgICAgICAgIHRvSGFzaC5hZGQoZnJvbUhhc2gu
YmVnaW4oKSwgZnJvbUhhc2guZW5kKCkpOworfQorICAgIAorSGFzaFNldDxSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+PiBNZWRpYVBsYXllcjo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcm
IHBhdGgpCit7CisgICAgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zOwog
ICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVkaWFFbmdpbmVzKCkpIHsKLSAgICAg
ICAgaWYgKCFlbmdpbmUuZ2V0U2l0ZXNJbk1lZGlhQ2FjaGUpCisgICAgICAgIGlmICghZW5naW5l
Lm9yaWdpbnNJbk1lZGlhQ2FjaGUpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgVmVj
dG9yPFN0cmluZz4gZW5naW5lU2l0ZXM7Ci0gICAgICAgIGVuZ2luZS5nZXRTaXRlc0luTWVkaWFD
YWNoZShlbmdpbmVTaXRlcyk7Ci0gICAgICAgIHNpdGVzLmFwcGVuZFZlY3RvcihlbmdpbmVTaXRl
cyk7CisgICAgICAgIGFkZFRvSGFzaChvcmlnaW5zLCBlbmdpbmUub3JpZ2luc0luTWVkaWFDYWNo
ZShwYXRoKSk7CiAgICAgfQorICAgIHJldHVybiBvcmlnaW5zOwogfQogCi12b2lkIE1lZGlhUGxh
eWVyOjpjbGVhck1lZGlhQ2FjaGUoKQordm9pZCBNZWRpYVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hl
KGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2lu
dCBtb2RpZmllZFNpbmNlKQogewogICAgIGZvciAoYXV0byYgZW5naW5lIDogaW5zdGFsbGVkTWVk
aWFFbmdpbmVzKCkpIHsKICAgICAgICAgaWYgKGVuZ2luZS5jbGVhck1lZGlhQ2FjaGUpCi0gICAg
ICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlKCk7CisgICAgICAgICAgICBlbmdpbmUuY2xl
YXJNZWRpYUNhY2hlKHBhdGgsIG1vZGlmaWVkU2luY2UpOwogICAgIH0KIH0KIAotdm9pZCBNZWRp
YVBsYXllcjo6Y2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcmIHNpdGUpCit2b2lk
IE1lZGlhUGxheWVyOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucykKIHsKICAg
ICBmb3IgKGF1dG8mIGVuZ2luZSA6IGluc3RhbGxlZE1lZGlhRW5naW5lcygpKSB7Ci0gICAgICAg
IGlmIChlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZSkKLSAgICAgICAgICAgIGVuZ2luZS5j
bGVhck1lZGlhQ2FjaGVGb3JTaXRlKHNpdGUpOworICAgICAgICBpZiAoZW5naW5lLmNsZWFyTWVk
aWFDYWNoZUZvck9yaWdpbnMpCisgICAgICAgICAgICBlbmdpbmUuY2xlYXJNZWRpYUNhY2hlRm9y
T3JpZ2lucyhwYXRoLCBvcmlnaW5zKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCmluZGV4IGI5Njk0YWRiMzcyYzRiMGNhMzY5
M2VjMDI4Nzk1N2IxYmY3NTA3ZjIuLjkzMDUwMTcxMGUzYTliMWNlNjg0YzMzMDQ3YzIxNTJlY2Ux
Y2E5NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlh
UGxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybU1l
ZGlhU2Vzc2lvbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja1ByaXZhdGUuaCIKICNpbmNsdWRlIDxydW50
aW1lL1VpbnQ4QXJyYXkuaD4KQEAgLTIzNiw2ICsyMzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyPiBtZWRpYVBsYXllckNyZWF0ZVJl
c291cmNlTG9hZGVyKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgYm9vbCBkb2Vz
SGF2ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmLCBBdG9taWNTdHJpbmcqID0gMCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgbWVkaWFQbGF5ZXJTaG91bGRV
c2VQZXJzaXN0ZW50Q2FjaGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBj
b25zdCBTdHJpbmcmIG1lZGlhUGxheWVyTWVkaWFDYWNoZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7IH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICB2aXJ0
dWFsIHZvaWQgbWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+KSB7IH0KQEAgLTI5Miw5ICsyOTQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIE1l
ZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMmLCBjb25zdCBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCopOwog
ICAgIHN0YXRpYyB2b2lkIGdldFN1cHBvcnRlZFR5cGVzKEhhc2hTZXQ8U3RyaW5nLCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+Jik7CiAgICAgc3RhdGljIGJvb2wgaXNBdmFpbGFibGUoKTsKLSAg
ICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3RyaW5nPiYpOwotICAg
IHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVk
aWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7CisgICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRy
PFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgp
OworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmIHBhdGgsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7CisgICAg
c3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhjb25zdCBTdHJpbmcmIHBhdGgs
IGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBzdGF0aWMgYm9v
bCBzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSk7CiAKICAgICBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0OwpAQCAt
NjMwLDEzICs2MzIsMTMgQEAgcHJpdmF0ZToKIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjxzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiAoTWVkaWFQbGF5ZXIqKT4gQ3Jl
YXRlTWVkaWFFbmdpbmVQbGF5ZXI7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVN1cHBvcnRl
ZFR5cGVzKShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMp
OwogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdpbmVTdXBwb3J0
c1R5cGUpKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwot
dHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVHZXRTaXRlc0luTWVkaWFDYWNoZSkoVmVjdG9yPFN0
cmluZz4mKTsKLXR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlKSgpOwot
dHlwZWRlZiB2b2lkICgqTWVkaWFFbmdpbmVDbGVhck1lZGlhQ2FjaGVGb3JTaXRlKShjb25zdCBT
dHJpbmcmKTsKK3R5cGVkZWYgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiAoKk1lZGlh
RW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSkoY29uc3QgU3RyaW5nJiBwYXRoKTsKK3R5cGVkZWYg
dm9pZCAoKk1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlKShjb25zdCBTdHJpbmcmIHBhdGgsIHN0
ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSk7Cit0eXBl
ZGVmIHZvaWQgKCpNZWRpYUVuZ2luZUNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMpKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOwogdHlw
ZWRlZiBib29sICgqTWVkaWFFbmdpbmVTdXBwb3J0c0tleVN5c3RlbSkoY29uc3QgU3RyaW5nJiBr
ZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwogCiB0eXBlZGVmIHZvaWQgKCpNZWRp
YUVuZ2luZVJlZ2lzdHJhcikoQ3JlYXRlTWVkaWFFbmdpbmVQbGF5ZXIsIE1lZGlhRW5naW5lU3Vw
cG9ydGVkVHlwZXMsIE1lZGlhRW5naW5lU3VwcG9ydHNUeXBlLAotICAgIE1lZGlhRW5naW5lR2V0
U2l0ZXNJbk1lZGlhQ2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlLCBNZWRpYUVuZ2lu
ZUNsZWFyTWVkaWFDYWNoZUZvclNpdGUsIE1lZGlhRW5naW5lU3VwcG9ydHNLZXlTeXN0ZW0pOwor
ICAgIE1lZGlhRW5naW5lT3JpZ2luc0luTWVkaWFDYWNoZSwgTWVkaWFFbmdpbmVDbGVhck1lZGlh
Q2FjaGUsIE1lZGlhRW5naW5lQ2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgTWVkaWFFbmdpbmVT
dXBwb3J0c0tleVN5c3RlbSk7CiB0eXBlZGVmIHZvaWQgKCpNZWRpYUVuZ2luZVJlZ2lzdGVyKShN
ZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKIGNsYXNzIE1lZGlhUGxheWVyRmFjdG9yeVN1cHBvcnQg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXll
clByaXZhdGUuaAppbmRleCBkOTE5ZjU0MzM3YTQ1N2MxMGVjNjhiYTVhMjBlYjdkZTNiOGZlYzcz
Li44OWMwYzE5ZWRhY2M3NmVmN2JmYzljYjZlN2EwYjg2MjY4NzA2ZmIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllclByaXZhdGUuaApA
QCAtMjE0LDkgKzIxNCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGF1ZGlvRGVj
b2RlZEJ5dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHVuc2lnbmVk
IHZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIHZvaWQg
Z2V0U2l0ZXNJbk1lZGlhQ2FjaGUoVmVjdG9yPFN0cmluZz4mKSB7IH0KLSAgICB2b2lkIGNsZWFy
TWVkaWFDYWNoZSgpIHsgfQotICAgIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBT
dHJpbmcmKSB7IH0KKyAgICBIYXNoU2V0PFJlZlB0cjxTZWN1cml0eU9yaWdpbj4+IG9yaWdpbnNJ
bk1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJikgeyByZXR1cm4geyB9OyB9CisgICAgdm9pZCBjbGVh
ck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGlt
ZV9wb2ludCkgeyB9CisgICAgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0
cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKSB7IH0KIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdNb2RlKGJvb2wpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb25PYmpDLmgKaW5kZXggZDZkZTc2MmMxZmUyYmY4NDZhYWFlMjQ1M2M2YzU1YjBiYWRjYTlk
NC4uMGU1Y2YxMWJjZmRjMDkyNTczOWZiYjdiNmI2Y2VkZGUzNzI4YmFjMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaApAQCAtODcsNiArODcsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhcik7CiAKKyAgICBzdGF0aWMg
SGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBvcmlnaW5zSW5NZWRpYUNhY2hlKGNvbnN0
IFN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZShjb25zdCBTdHJpbmcm
LCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UpOwor
ICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvck9yaWdpbnMoY29uc3QgU3RyaW5nJiwg
Y29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYpOworCiAgICAgdm9pZCBzZXRB
c3NldChSZXRhaW5QdHI8aWQ+KTsKICAgICB2b2lkIHRyYWNrc0NoYW5nZWQoKSBvdmVycmlkZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggYjllODA3MjZmZjA0YTQ1MWY1ZjU1Mzk2ODk2
MDJiNDQxYTZiZDcwYy4uMDllMzcwNmRmNzM4MTdmMzgxMzA0NGIwODMyMjJlYzg1MzU2NGQxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC0xNTgsNiArMTU4LDcgQEAgU09GVF9MSU5LX0NM
QVNTKEFWRm91bmRhdGlvbiwgQVZQbGF5ZXJMYXllcikKIFNPRlRfTElOS19DTEFTUyhBVkZvdW5k
YXRpb24sIEFWVVJMQXNzZXQpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVkFzc2V0
SW1hZ2VHZW5lcmF0b3IpCiBTT0ZUX0xJTktfQ0xBU1MoQVZGb3VuZGF0aW9uLCBBVk1ldGFkYXRh
SXRlbSkKK1NPRlRfTElOS19DTEFTUyhBVkZvdW5kYXRpb24sIEFWQXNzZXRDYWNoZSkKIAogU09G
VF9MSU5LX0NMQVNTKENvcmVJbWFnZSwgQ0lDb250ZXh0KQogU09GVF9MSU5LX0NMQVNTKENvcmVJ
bWFnZSwgQ0lJbWFnZSkKQEAgLTIyNyw2ICsyMjgsNyBAQCBTT0ZUX0xJTktfUE9JTlRFUihBVkZv
dW5kYXRpb24sIEFWUGxheWVySXRlbUxlZ2libGVPdXRwdXRUZXh0U3R5bGluZ1Jlc29sdXRpb25T
bwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVZGX0NBUFRJT05TKQorU09GVF9MSU5LX1BPSU5URVIo
QVZGb3VuZGF0aW9uLCBBVlVSTEFzc2V0Q2FjaGVLZXksIE5TU3RyaW5nKikKIFNPRlRfTElOS19Q
T0lOVEVSKEFWRm91bmRhdGlvbiwgQVZVUkxBc3NldEhUVFBDb29raWVzS2V5LCBOU1N0cmluZyop
CiBTT0ZUX0xJTktfUE9JTlRFUihBVkZvdW5kYXRpb24sIEFWVVJMQXNzZXRPdXRPZkJhbmRBbHRl
cm5hdGVUcmFja3NLZXksIE5TU3RyaW5nKikKIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlv
biwgQVZVUkxBc3NldFVzZXNOb1BlcnNpc3RlbnRDYWNoZUtleSwgTlNTdHJpbmcqKQpAQCAtMjQy
LDYgKzI0NCw3IEBAIFNPRlRfTElOS19QT0lOVEVSKEFWRm91bmRhdGlvbiwgQVZNZWRpYUNoYXJh
Y3RlcmlzdGljSXNBdXhpbGlhcnlDb250ZW50LCBOU1N0cmluCiAKICNkZWZpbmUgQVZVUkxBc3Nl
dEhUVFBDb29raWVzS2V5IGdldEFWVVJMQXNzZXRIVFRQQ29va2llc0tleSgpCiAjZGVmaW5lIEFW
VVJMQXNzZXRPdXRPZkJhbmRBbHRlcm5hdGVUcmFja3NLZXkgZ2V0QVZVUkxBc3NldE91dE9mQmFu
ZEFsdGVybmF0ZVRyYWNrc0tleSgpCisjZGVmaW5lIEFWVVJMQXNzZXRDYWNoZUtleSBnZXRBVlVS
TEFzc2V0Q2FjaGVLZXkoKQogI2RlZmluZSBBVlVSTEFzc2V0VXNlc05vUGVyc2lzdGVudENhY2hl
S2V5IGdldEFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXkoKQogI2RlZmluZSBBVk91
dE9mQmFuZEFsdGVybmF0ZVRyYWNrRGlzcGxheU5hbWVLZXkgZ2V0QVZPdXRPZkJhbmRBbHRlcm5h
dGVUcmFja0Rpc3BsYXlOYW1lS2V5KCkKICNkZWZpbmUgQVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFj
a0V4dGVuZGVkTGFuZ3VhZ2VUYWdLZXkgZ2V0QVZPdXRPZkJhbmRBbHRlcm5hdGVUcmFja0V4dGVu
ZGVkTGFuZ3VhZ2VUYWdLZXkoKQpAQCAtNDIyLDcgKzQyNSw5NSBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnJlZ2lzdGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVS
ZWdpc3RyYQogewogICAgIGlmIChpc0F2YWlsYWJsZSgpKQogICAgICAgICByZWdpc3RyYXIoW10o
TWVkaWFQbGF5ZXIqIHBsYXllcikgeyByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDPihwbGF5ZXIpOyB9LAotICAgICAgICAgICAgZ2V0U3Vw
cG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgMCwgMCwgMCwgc3VwcG9ydHNLZXlTeXN0ZW0pOwor
ICAgICAgICAgICAgZ2V0U3VwcG9ydGVkVHlwZXMsIHN1cHBvcnRzVHlwZSwgb3JpZ2luc0luTWVk
aWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlLCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zLCBzdXBw
b3J0c0tleVN5c3RlbSk7Cit9CisKK3N0YXRpYyBBVkFzc2V0Q2FjaGUgKmFzc2V0Q2FjaGVGb3JQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBOU1VSTCAqYXNzZXRDYWNoZVVSTDsKKyAg
ICAKKyAgICBpZiAocGF0aC5pc0VtcHR5KCkpCisgICAgICAgIGFzc2V0Q2FjaGVVUkwgPSBbW05T
VVJMIGZpbGVVUkxXaXRoUGF0aDpOU1RlbXBvcmFyeURpcmVjdG9yeSgpXSBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJNZWRpYUNhY2hlIiBpc0RpcmVjdG9yeTpZRVNdOworICAgIGVsc2UK
KyAgICAgICAgYXNzZXRDYWNoZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6cGF0aCBpc0Rp
cmVjdG9yeTpZRVNdOworCisgICAgcmV0dXJuIFtnZXRBVkFzc2V0Q2FjaGVDbGFzcygpIGFzc2V0
Q2FjaGVXaXRoVVJMOmFzc2V0Q2FjaGVVUkxdOworfQorCitIYXNoU2V0PFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4+IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om9yaWdpbnNJbk1l
ZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIEhhc2hTZXQ8UmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPj4gb3JpZ2luczsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gW2Fzc2V0Q2Fj
aGVGb3JQYXRoKHBhdGgpIGFsbEtleXNdKSB7CisgICAgICAgIFVSTCBrZXlBc1VSTCA9IFVSTChV
UkwoKSwga2V5KTsKKyAgICAgICAgaWYgKGtleUFzVVJMLmlzVmFsaWQoKSkKKyAgICAgICAgICAg
IG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoa2V5QXNVUkwpKTsKKyAgICB9Cisg
ICAgcmV0dXJuIG9yaWdpbnM7Cit9CisKK3N0YXRpYyBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0aW1lX3BvaW50IHRvU3lzdGVtQ2xvY2tUaW1lKE5TRGF0ZSAqZGF0ZSkKK3sKKyAgICBBU1NF
UlQoZGF0ZSk7CisgICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDo6Y2hyb25vOworCisgICAgcmV0dXJu
IHN5c3RlbV9jbG9jazo6dGltZV9wb2ludChkdXJhdGlvbl9jYXN0PHN5c3RlbV9jbG9jazo6ZHVy
YXRpb24+KGR1cmF0aW9uPGRvdWJsZT4oZGF0ZS50aW1lSW50ZXJ2YWxTaW5jZTE5NzApKSk7Cit9
CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6Y2xlYXJNZWRpYUNh
Y2hlKGNvbnN0IFN0cmluZyYgcGF0aCwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9w
b2ludCBtb2RpZmllZFNpbmNlKQoreworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNsZWFyTWVkaWFDYWNoZSgpIik7CisgICAgCisgICAgQVZBc3Nl
dENhY2hlKiBhc3NldENhY2hlID0gYXNzZXRDYWNoZUZvclBhdGgocGF0aCk7CisgICAgCisgICAg
Zm9yIChOU1N0cmluZyAqa2V5IGluIFthc3NldENhY2hlIGFsbEtleXNdKSB7CisgICAgICAgIGlm
ICh0b1N5c3RlbUNsb2NrVGltZShbYXNzZXRDYWNoZSBsYXN0TW9kaWZpZWREYXRlT2ZFbnRyeUZv
cktleTprZXldKSA+IG1vZGlmaWVkU2luY2UpCisgICAgICAgICAgICBbYXNzZXRDYWNoZSByZW1v
dmVFbnRyeUZvcktleTprZXldOworICAgIH0KKworICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5h
Z2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgIE5TVVJMICpiYXNlVVJM
ID0gW2Fzc2V0Q2FjaGUgVVJMXTsKKworICAgIGlmIChtb2RpZmllZFNpbmNlIDw9IHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgeyB9KSB7CisgICAgICAgIFtmaWxlTWFuYWdl
ciByZW1vdmVJdGVtQXRVUkw6YmFzZVVSTCBlcnJvcjpuaWxdOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIE5TQXJyYXkgKnByb3BlcnR5S2V5cyA9IEBbTlNVUkxOYW1lS2V5LCBO
U1VSTENvbnRlbnRNb2RpZmljYXRpb25EYXRlS2V5LCBOU1VSTElzUmVndWxhckZpbGVLZXldOwor
ICAgIE5TRGlyZWN0b3J5RW51bWVyYXRvciAqZW51bWVyYXRvciA9IFtmaWxlTWFuYWdlciBlbnVt
ZXJhdG9yQXRVUkw6YmFzZVVSTCBpbmNsdWRpbmdQcm9wZXJ0aWVzRm9yS2V5czoKKyAgICAgICAg
cHJvcGVydHlLZXlzIG9wdGlvbnM6TlNEaXJlY3RvcnlFbnVtZXJhdGlvblNraXBzU3ViZGlyZWN0
b3J5RGVzY2VuZGFudHMKKyAgICAgICAgZXJyb3JIYW5kbGVyOm5pbF07CisgICAgCisgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiB1cmxzVG9EZWxldGUgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKE5TVVJMICpmaWxlVVJMIDogZW51bWVyYXRv
cikgeworICAgICAgICBOU0RpY3Rpb25hcnkgKmZpbGVBdHRyaWJ1dGVzID0gW2ZpbGVVUkwgcmVz
b3VyY2VWYWx1ZXNGb3JLZXlzOnByb3BlcnR5S2V5cyBlcnJvcjpuaWxdOworICAgIAorICAgICAg
ICBpZiAoIVtmaWxlQXR0cmlidXRlc1tOU1VSTE5hbWVLZXldIGhhc1ByZWZpeDpAIkNhY2hlZE1l
ZGlhLSJdKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAoIVtm
aWxlQXR0cmlidXRlc1tOU1VSTElzUmVndWxhckZpbGVLZXldIGJvb2xWYWx1ZV0pCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0b1N5c3RlbUNsb2NrVGltZShm
aWxlQXR0cmlidXRlc1tOU1VSTENvbnRlbnRNb2RpZmljYXRpb25EYXRlS2V5XSkgPD0gbW9kaWZp
ZWRTaW5jZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAKKyAgICAgICAgW3VybHNU
b0RlbGV0ZSBhZGRPYmplY3Q6ZmlsZVVSTF07CisgICAgfQorICAgIAorICAgIGZvciAoTlNVUkwg
KmZpbGVVUkwgaW4gdXJsc1RvRGVsZXRlLmdldCgpKQorICAgICAgICBbZmlsZU1hbmFnZXIgcmVt
b3ZlSXRlbUF0VVJMOmZpbGVVUkwgZXJyb3I6bmlsXTsKK30KKwordm9pZCBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0
cmluZyYgcGF0aCwgY29uc3QgSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lu
cykKK3sKKyAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKCkiKTsKKyAgICBBVkFzc2V0Q2FjaGUqIGFzc2V0
Q2FjaGUgPSBhc3NldENhY2hlRm9yUGF0aChwYXRoKTsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkg
aW4gW2Fzc2V0Q2FjaGUgYWxsS2V5c10pIHsKKyAgICAgICAgVVJMIGtleUFzVVJMID0gVVJMKFVS
TCgpLCBrZXkpOworICAgICAgICBpZiAoa2V5QXNVUkwuaXNWYWxpZCgpKSB7CisgICAgICAgICAg
ICBpZiAob3JpZ2lucy5jb250YWlucyhTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGtleUFzVVJMKSkp
CisgICAgICAgICAgICAgICAgW2Fzc2V0Q2FjaGUgcmVtb3ZlRW50cnlGb3JLZXk6a2V5XTsKKyAg
ICAgICAgfQorICAgIH0KIH0KIAogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQyhNZWRpYVBsYXllciogcGxheWVyKQpA
QCAtODc0LDcgKzk2NSwxMSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6OmNyZWF0ZUFWQXNzZXRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgfQogI2VuZGlm
CiAKLSAgICBbb3B0aW9ucyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOiFwbGF5
ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJTaG91bGRVc2VQZXJzaXN0ZW50Q2FjaGUoKV0gZm9y
S2V5OkFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXldOworICAgIGJvb2wgdXNlUGVy
c2lzdGVudENhY2hlID0gcGxheWVyKCktPmNsaWVudCgpLm1lZGlhUGxheWVyU2hvdWxkVXNlUGVy
c2lzdGVudENhY2hlKCk7CisgICAgW29wdGlvbnMgc2V0T2JqZWN0OkAoIXVzZVBlcnNpc3RlbnRD
YWNoZSkgZm9yS2V5OkFWVVJMQXNzZXRVc2VzTm9QZXJzaXN0ZW50Q2FjaGVLZXldOworICAgIAor
ICAgIGlmICh1c2VQZXJzaXN0ZW50Q2FjaGUpCisgICAgICAgIFtvcHRpb25zIHNldE9iamVjdDph
c3NldENhY2hlRm9yUGF0aChwbGF5ZXIoKS0+Y2xpZW50KCkubWVkaWFQbGF5ZXJNZWRpYUNhY2hl
RGlyZWN0b3J5KCkpIGZvcktleTpBVlVSTEFzc2V0Q2FjaGVLZXldOwogCiAgICAgTlNVUkwgKmNv
Y29hVVJMID0gY2Fub25pY2FsVVJMKHVybCk7CiAgICAgbV9hdkFzc2V0ID0gYWRvcHROUyhbYWxs
b2NBVlVSTEFzc2V0SW5zdGFuY2UoKSBpbml0V2l0aFVSTDpjb2NvYVVSTCBvcHRpb25zOm9wdGlv
bnMuZ2V0KCldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKaW5kZXggZjM3M2ZmODU1OTYz
NzM5OWJjZWQ0YTNkMmE4NDI4NDQ2ZTE5YzEyOC4uNTlhM2RhNmYxNWFmODk0OTlhMTJkYTJkNDIw
NjVmYzUxOWY0Yjg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKQEAgLTY4LDkgKzY4
LDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBnZXRTdXBwb3J0ZWRUeXBlcyhIYXNoU2V0
PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgdHlwZXMpOwogICAgIHN0YXRpYyBN
ZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIHN1cHBvcnRzVHlwZShjb25zdCBNZWRpYUVuZ2luZVN1
cHBvcnRQYXJhbWV0ZXJzJik7CiAKLSAgICBzdGF0aWMgdm9pZCBnZXRTaXRlc0luTWVkaWFDYWNo
ZShWZWN0b3I8U3RyaW5nPiYpOwotICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZSgpOwot
ICAgIHN0YXRpYyB2b2lkIGNsZWFyTWVkaWFDYWNoZUZvclNpdGUoY29uc3QgU3RyaW5nJik7Cisg
ICAgc3RhdGljIEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luc0luTWVkaWFD
YWNoZShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGUoY29u
c3QgU3RyaW5nJiwgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmll
ZFNpbmNlKTsKKyAgICBzdGF0aWMgdm9pZCBjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0
IFN0cmluZyYsIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mKTsKICAgICBz
dGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogCiAgICAgUGxhdGZvcm1NZWRpYSBwbGF0Zm9ybU1l
ZGlhKCkgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXgg
ODI5YjZlZTFkOTI0NDE0YTQ1OWUxMTE4ZWY0NzM3MTA3NDUxMmY2Mi4uYzQ2Y2MxMWU0MjVmOTc4
MzViMTE0ODc2YzE3OWRmNGEyZjZlZjkyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5t
bQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnJlZ2lz
dGVyTWVkaWFFbmdpbmUoTWVkaWFFbmdpbmVSZWdpc3RyYXIgcmVnaXN0cmFyCiB7CiAgICAgaWYg
KGlzQXZhaWxhYmxlKCkpCiAgICAgICAgIHJlZ2lzdHJhcihbXShNZWRpYVBsYXllciogcGxheWVy
KSB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0PihwbGF5
ZXIpOyB9LCBnZXRTdXBwb3J0ZWRUeXBlcywKLSAgICAgICAgICAgIHN1cHBvcnRzVHlwZSwgZ2V0
U2l0ZXNJbk1lZGlhQ2FjaGUsIGNsZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yU2l0
ZSwgMCk7CisgICAgICAgICAgICBzdXBwb3J0c1R5cGUsIG9yaWdpbnNJbk1lZGlhQ2FjaGUsIGNs
ZWFyTWVkaWFDYWNoZSwgY2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucywgMCk7CiB9CiAKIE1lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0OjpNZWRpYVBsYXllclByaXZhdGVRVEtpdChNZWRpYVBsYXllciog
cGxheWVyKQpAQCAtMTMzOSwyMyArMTMzOSwzMCBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZVFU
S2l0Ojppc0F2YWlsYWJsZSgpCiAgICAgcmV0dXJuIFFUS2l0TGlicmFyeSgpOwogfQogCi12b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpnZXRTaXRlc0luTWVkaWFDYWNoZShWZWN0b3I8U3Ry
aW5nPiYgc2l0ZXMpIAorSGFzaFNldDxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBNZWRpYVBsYXll
clByaXZhdGVRVEtpdDo6b3JpZ2luc0luTWVkaWFDYWNoZShjb25zdCBTdHJpbmcmKQogeworICAg
IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4gb3JpZ2luczsKICAgICBOU0FycmF5ICpt
ZWRpYVNpdGVzID0gd2tRVEdldFNpdGVzSW5NZWRpYURvd25sb2FkQ2FjaGUoKTsKLSAgICBmb3Ig
KE5TU3RyaW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpCi0gICAgICAgIHNpdGVzLmFwcGVuZChzaXRl
KTsKKyAgICAKKyAgICBmb3IgKE5TU3RyaW5nICpzaXRlIGluIG1lZGlhU2l0ZXMpIHsKKyAgICAg
ICAgVVJMIHNpdGVBc1VSTCA9IFVSTChVUkwoKSwgc2l0ZSk7CisgICAgICAgIGlmIChzaXRlQXNV
UkwuaXNWYWxpZCgpKQorICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShzaXRlQXNVUkwpKTsKKyAgICB9CisgICAgcmV0dXJuIG9yaWdpbnM7CiB9CiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZSgpCit2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGUoY29uc3QgU3RyaW5nJiwgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVRVEtpdDo6Y2xlYXJNZWRpYUNhY2hlKCkiKTsKICAgICB3a1FUQ2xlYXJNZWRp
YURvd25sb2FkQ2FjaGUoKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6Y2xl
YXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcmIHNpdGUpCit2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVFUS2l0OjpjbGVhck1lZGlhQ2FjaGVGb3JPcmlnaW5zKGNvbnN0IFN0cmluZyYsIGNv
bnN0IEhhc2hTZXQ8UmVmUHRyPFNlY3VyaXR5T3JpZ2luPj4mIG9yaWdpbnMpCiB7Ci0gICAgTE9H
KE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvclNpdGUo
KSIpOwotICAgIHdrUVRDbGVhck1lZGlhRG93bmxvYWRDYWNoZUZvclNpdGUoc2l0ZSk7CisgICAg
TE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OmNsZWFyTWVkaWFDYWNoZUZvck9y
aWdpbnMoKSIpOworICAgIGZvciAoYXV0byYgb3JpZ2luIDogb3JpZ2lucykKKyAgICAgICAgd2tR
VENsZWFyTWVkaWFEb3dubG9hZENhY2hlRm9yU2l0ZShvcmlnaW4tPnRvUmF3U3RyaW5nKCkpOwog
fQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0OjpkaXNhYmxlVW5zdXBwb3J0ZWRUcmFj
a3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5k
YXRpb25TUEkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9tYWMvQVZGb3VuZGF0aW9u
U1BJLmgKaW5kZXggODZkYjc5MmQyNWY2ZmFhZmZkYTUxYjZkNTRjMGU3MzQzY2E1YjczNi4uOThk
ZTlkMDRmYTQyYzllYTNkYjVmZWUwMWZlMzdmMzA0ZGYzZTYwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3BpL21hYy9BVkZvdW5kYXRpb25TUEkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcGkvbWFjL0FWRm91bmRhdGlvblNQSS5oCkBAIC01NSw2ICs1NSwy
MSBAQCBOU19BU1NVTUVfTk9OTlVMTF9FTkQKIAogI2VuZGlmIC8vIEVOQUJMRShXSVJFTEVTU19Q
TEFZQkFDS19UQVJHRVQpICYmICFQTEFURk9STShJT1MpCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJO
QUxfU0RLKQorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQXNzZXRDYWNoZV9Qcml2YXRlLmg+Cisj
ZWxzZQorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KK0BpbnRlcmZhY2UgQVZBc3NldENhY2hlIDog
TlNPYmplY3QKKysgKEFWQXNzZXRDYWNoZSAqKWFzc2V0Q2FjaGVXaXRoVVJMOihOU1VSTCAqKVVS
TDsKKy0gKGlkKWluaXRXaXRoVVJMOihOU1VSTCAqKVVSTDsKKy0gKE5TQXJyYXkgKilhbGxLZXlz
OworLSAoTlNEYXRlICopbGFzdE1vZGlmaWVkRGF0ZU9mRW50cnlGb3JLZXk6KE5TU3RyaW5nICop
a2V5OworLSAodm9pZClyZW1vdmVFbnRyeUZvcktleTooTlNTdHJpbmcgKilrZXk7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJMICpVUkw7CitAZW5kCitOU19BU1NV
TUVfTk9OTlVMTF9FTkQKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaWYgSEFWRShB
VktJVCkgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCAyMmQ4ZDZj
OTYxZWFlOWU2M2JiZmNhYzQ1NWU1NDcxM2RiNGE2MzhjLi5iOWEzMmNjM2MwZGUyOGRlZWUyNzNi
OTY1N2MzNzlmNjM3YTk0ODU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC02NSw2ICs2NSw4IEBAIHZvaWQg
V2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZTsKICAgICBlbmNvZGVyIDw8IHdlYlNRTERhdGFiYXNlRGlyZWN0b3J5
OwogICAgIGVuY29kZXIgPDwgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7
CisgICAgZW5jb2RlciA8PCBtZWRpYUNhY2hlRGlyZWN0b3J5OworICAgIGVuY29kZXIgPDwgbWVk
aWFDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKICNpZiBFTkFCTEUoU0VDQ09NUF9GSUxU
RVJTKQogICAgIGVuY29kZXIgPDwgY29va2llU3RvcmFnZURpcmVjdG9yeTsKICNlbmRpZgpAQCAt
MTU5LDYgKzE2MSwxMCBAQCBib29sIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgV2ViUHJvYwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5KSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5tZWRp
YUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
I2lmIEVOQUJMRShTRUNDT01QX0ZJTFRFUlMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaAppbmRleCA3MzM4YTI4ZmJjMGExYzQ4YzAzOTY5OTgyNjY0YWFkMjEwYTVmODA4Li41ZTcx
YjI4ODJmOWM4ZDQ4NWE4OWVhZTI5OWFkNDc5NmZkNGQ1Mjg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTcyLDYg
KzcyLDggQEAgc3RydWN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBhcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlOwogICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgd2ViU1FMRGF0YWJhc2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Cisg
ICAgU3RyaW5nIG1lZGlhQ2FjaGVEaXJlY3Rvcnk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIG1lZGlhQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CiAjaWYgRU5BQkxFKFNFQ0NP
TVBfRklMVEVSUykKICAgICBTdHJpbmcgY29va2llU3RvcmFnZURpcmVjdG9yeTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDQxNjAzM2UxYTYwYjkyY2M5NTRiNzFlM2RiNjky
Y2RlMzk2OTlmZTkuLjExYTE2OWIxYzc4MmU5MjBiZmYyMzNkZThlZTRjMGI5NjFiYThhZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAgUmVmPFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjcmVhdGVXaXRoTGVnYWN5
T3B0aW9ucygKIAogICAgIGNvbmZpZ3VyYXRpb24tPm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxpY2F0
aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLT5tX2Rpc2tDYWNoZURpcmVj
dG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpOworICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVkaWFDYWNoZURpcmVj
dG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLT5tX2luZGV4ZWREQkRhdGFiYXNl
RGlyZWN0b3J5ID0gV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZhdWx0
SW5kZXhlZERCRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLT5tX2xvY2Fs
U3RvcmFnZURpcmVjdG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPm1fbWVk
aWFLZXlzU3RvcmFnZURpcmVjdG9yeSA9IFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBs
YXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkoKTsKQEAgLTU3LDYgKzU4LDcg
QEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
OjpjcmVhdGVXaXRoTGVnYWN5T3B0aW9ucygKIFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6UHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uKCkKICAgICA6IG1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9y
eShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpKQog
ICAgICwgbV9kaXNrQ2FjaGVEaXJlY3RvcnkoV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdv
cmtDYWNoZURpcmVjdG9yeSgpKQorICAgICwgbV9tZWRpYUNhY2hlRGlyZWN0b3J5KFdlYnNpdGVE
YXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCkpCiAgICAgLCBtX2luZGV4ZWRE
QkRhdGFiYXNlRGlyZWN0b3J5KFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRJbmRleGVkREJEYXRh
YmFzZURpcmVjdG9yeSgpKQogICAgICwgbV9sb2NhbFN0b3JhZ2VEaXJlY3RvcnkoV2Vic2l0ZURh
dGFTdG9yZTo6ZGVmYXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpKQogICAgICwgbV93ZWJTUUxE
YXRhYmFzZURpcmVjdG9yeShXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0V2ViU1FMRGF0YWJhc2VE
aXJlY3RvcnkoKSkKQEAgLTc5LDYgKzgxLDcgQEAgUmVmPFByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKICAgICBjb3B5LT5tX2Rpc2tDYWNo
ZVNpemVPdmVycmlkZSA9IHRoaXMtPm1fZGlza0NhY2hlU2l6ZU92ZXJyaWRlOwogICAgIGNvcHkt
Pm1fYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fYXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeTsKICAgICBjb3B5LT5tX2Rpc2tDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1fZGlza0Nh
Y2hlRGlyZWN0b3J5OworICAgIGNvcHktPm1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IHRoaXMtPm1f
bWVkaWFDYWNoZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5ID0gdGhpcy0+bV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeTsKICAgICBjb3B5LT5tX2lu
amVjdGVkQnVuZGxlUGF0aCA9IHRoaXMtPm1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIGNvcHkt
Pm1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5ID0gdGhpcy0+bV9sb2NhbFN0b3JhZ2VEaXJlY3Rvcnk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaAppbmRleCA2NzMzMWU5NzBlNzUyZjdkOGJmZDMxMmUyMDIzNGM5
MjJjYjU3YWJiLi5iMTI5M2QzMDFmYTY4YTYzZjE0NjdjMzZlN2FjMTdmOWMyMjUyMjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKQEAgLTY1LDYgKzY1LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2Rpc2tDYWNo
ZURpcmVjdG9yeTsgfQogICAgIHZvaWQgc2V0RGlza0NhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6
U3RyaW5nJiBkaXNrQ2FjaGVEaXJlY3RvcnkpIHsgbV9kaXNrQ2FjaGVEaXJlY3RvcnkgPSBkaXNr
Q2FjaGVEaXJlY3Rvcnk7IH0KIAorICAgIGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGly
ZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUNhY2hlRGlyZWN0b3J5OyB9CisgICAgdm9p
ZCBzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KGNvbnN0IFdURjo6U3RyaW5nJiBtZWRpYUNhY2hlRGly
ZWN0b3J5KSB7IG1fbWVkaWFDYWNoZURpcmVjdG9yeSA9IG1lZGlhQ2FjaGVEaXJlY3Rvcnk7IH0K
KyAgICAKICAgICBjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhlZERCRGF0YWJhc2VEaXJlY3Rvcnko
KSBjb25zdCB7IHJldHVybiBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9CiAgICAgdm9p
ZCBzZXRJbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeShjb25zdCBXVEY6OlN0cmluZyYgaW5kZXhl
ZERCRGF0YWJhc2VEaXJlY3RvcnkpIHsgbV9pbmRleGVkREJEYXRhYmFzZURpcmVjdG9yeSA9IGlu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5OyB9CiAKQEAgLTEwMiw2ICsxMDUsNyBAQCBwcml2YXRl
OgogCiAgICAgV1RGOjpTdHJpbmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OwogICAgIFdU
Rjo6U3RyaW5nIG1fZGlza0NhY2hlRGlyZWN0b3J5OworICAgIFdURjo6U3RyaW5nIG1fbWVkaWFD
YWNoZURpcmVjdG9yeTsKICAgICBXVEY6OlN0cmluZyBtX2luZGV4ZWREQkRhdGFiYXNlRGlyZWN0
b3J5OwogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFdURjo6U3Ry
aW5nIG1fbG9jYWxTdG9yYWdlRGlyZWN0b3J5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMmEyZWE0MTAwZDVhZjVm
N2M1MGEzYjc3OWI4MmYyMWQxNjUwNzgyNy4uZmIyYWNkNmQ2YTVhZGI5NmIzNzk0MmQ4ZjdkZjRm
YmQ5ODhmNDQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQ
SVdlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xMzcsNSArMTM3LDEzIEBAIFN0cmluZyBXZWJzaXRl
RGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpCiB9CiAK
ICNlbmRpZgorICAgIAorI2lmICFQTEFURk9STShDT0NPQSkKK1N0cmluZyBXZWJzaXRlRGF0YVN0
b3JlOjpkZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgLy8gRklYTUU6IEltcGxl
bWVudC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM2OSBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NjM3MAorICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKyNlbmRpZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDQ2NWE1ZWU4ZDYxOTcxYmNlMzVh
ZGQ3ZjVlMWY5NjNhMjZjYmIwYTUuLmEwMzc1NTM4ZTg3NTdjNzFhNWM0NzJmODI4NjQ0MmQwNThi
NTgxMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZURhdGFTdG9yZS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJp
bmcgZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5n
IGRlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKTsKKyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1
bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7CiAKICAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRJbmRl
eGVkREJEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgZGVmYXVsdExvY2Fs
U3RvcmFnZURpcmVjdG9yeSgpOwpAQCAtNjAsNiArNjEsNyBAQCBwcml2YXRlOgogICAgIFdlYnNp
dGVEYXRhU3RvcmUoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uKTsKICAg
ICBXZWJzaXRlRGF0YVN0b3JlKCk7CiAKKyAgICBzdGF0aWMgU3RyaW5nIHRlbXBEaXJlY3RvcnlG
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKTsKICAg
ICBzdGF0aWMgU3RyaW5nIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNv
bnN0IFN0cmluZyYgZGlyZWN0b3J5TmFtZSk7CiAgICAgc3RhdGljIFN0cmluZyB3ZWJzaXRlRGF0
YURpcmVjdG9yeUZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eU5hbWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L0FQSVdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IDgyMzFhYmJjNjIwZWEz
YjAxMTY1NTRkY2M0YzBmYjE5ZDRiZjI3ZDIuLmVkYTRjMTQ5MjQ0NDY4NjQzNjViNjk4YjU1ZTVh
MzcxNjc4NzRkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCkBAIC01Nyw2ICs1Nywx
MSBAQCBTdHJpbmcgV2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9y
eSgpCiAgICAgcmV0dXJuIGNhY2hlRGlyZWN0b3J5RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKCJO
ZXR3b3JrQ2FjaGUiKTsKIH0KIAorU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRp
YUNhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gdGVtcERpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbigiTWVkaWFDYWNoZSIpOworfQorCiBTdHJpbmcgV2Vic2l0ZURhdGFTdG9y
ZTo6ZGVmYXVsdEluZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCkKIHsKICAgICByZXR1cm4gd2Vi
c2l0ZURhdGFEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIkluZGV4ZWREQiIpOwpA
QCAtODIsNiArODcsMzMgQEAgU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KCkKICAgICByZXR1cm4gd2Vic2l0ZURhdGFEaXJlY3Rv
cnlGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oIlJlc291cmNlTG9hZFN0YXRpc3RpY3MiKTsKIH0K
IAorU3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OnRlbXBEaXJlY3RvcnlGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgU3RyaW5nJiBkaXJlY3RvcnlOYW1lKQoreworICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZVRva2VuOworICAgIHN0YXRpYyBOU1VSTCAqdGVtcFVSTDsKKyAgICAK
KyAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CisgICAgICAgIE5TVVJMICp1cmwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOk5TVGVtcG9yYXJ5RGlyZWN0b3J5KCldOworICAgICAgICBp
ZiAoIXVybCkKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIAorICAgICAgICBpZiAoIVdlYktpdDo6cHJvY2Vzc0hhc0NvbnRhaW5lcigpKSB7CisgICAg
ICAgICAgICBOU1N0cmluZyAqYnVuZGxlSWRlbnRpZmllciA9IFtOU0J1bmRsZSBtYWluQnVuZGxl
XS5idW5kbGVJZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQor
ICAgICAgICAgICAgICAgIGJ1bmRsZUlkZW50aWZpZXIgPSBbTlNQcm9jZXNzSW5mbyBwcm9jZXNz
SW5mb10ucHJvY2Vzc05hbWU7CisgICAgICAgICAgICB1cmwgPSBbdXJsIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyIGlzRGlyZWN0b3J5OllFU107CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHRlbXBVUkwgPSBbW3VybCBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJXZWJLaXQiIGlzRGlyZWN0b3J5OllFU10gcmV0YWluXTsKKyAgICB9KTsKKyAg
ICAKKyAgICBOU1VSTCAqdXJsID0gW3RlbXBVUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OmRpcmVjdG9yeU5hbWUgaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBpZiAoIVtbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dXJsIHdpdGhJbnRlcm1lZGlh
dGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bnVsbHB0cl0pCisgICAgICAg
IExPR19FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJUAiLCB1cmwpOworICAgIAor
ICAgIHJldHVybiB1cmwuYWJzb2x1dGVVUkwucGF0aC5maWxlU3lzdGVtUmVwcmVzZW50YXRpb247
Cit9CisKIFN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpjYWNoZURpcmVjdG9yeUZpbGVTeXN0ZW1S
ZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIGRpcmVjdG9yeU5hbWUpCiB7CiAgICAgc3RhdGlj
IGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CkBAIC0xNDQsNiArMTc2LDcgQEAgV2ViS2l0OjpX
ZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1cmF0aW9uIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRE
YXRhU3RvcmVDb25maWcKIAogICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVj
dG9yeSA9IGRlZmF1bHRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJh
dGlvbi5uZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBkZWZhdWx0TmV0d29ya0NhY2hlRGlyZWN0b3J5
KCk7CisgICAgY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gZGVmYXVsdE1lZGlh
Q2FjaGVEaXJlY3RvcnkoKTsKIAogICAgIGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJl
Y3RvcnkgPSBkZWZhdWx0V2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0
aW9uLmxvY2FsU3RvcmFnZURpcmVjdG9yeSA9IGRlZmF1bHRMb2NhbFN0b3JhZ2VEaXJlY3Rvcnko
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0KaW5kZXggYmZhMGE5YTg5N2IxMjUyMDBmYTBhOGViYzFmMDFkYzQ0ZjE4ZjYz
MC4uMTA2NTIyOThmMjEzYjNiMDExMDBlMGYxMzVhMTIxYjY3ZDAxMDhkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
QEAgLTY0LDYgKzY0LDcgQEAgTlNTdHJpbmcgKldlYlN0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tl
eSA9IEAiV2ViS2l0TG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoUHJlZmUKIE5TU3RyaW5nICpXZWJL
aXRKU0NKSVRFbmFibGVkRGVmYXVsdHNLZXkgPSBAIldlYktpdEpTQ0pJVEVuYWJsZWREZWZhdWx0
c0tleSI7CiBOU1N0cmluZyAqV2ViS2l0SlNDRlRMSklURW5hYmxlZERlZmF1bHRzS2V5ID0gQCJX
ZWJLaXRKU0NGVExKSVRFbmFibGVkRGVmYXVsdHNLZXkiOwogTlNTdHJpbmcgKldlYktpdE1lZGlh
S2V5c1N0b3JhZ2VEaXJlY3RvcnlEZWZhdWx0c0tleSA9IEAiV2ViS2l0TWVkaWFLZXlzU3RvcmFn
ZURpcmVjdG9yeSI7CitOU1N0cmluZyAqV2ViS2l0TWVkaWFDYWNoZURpcmVjdG9yeURlZmF1bHRz
S2V5ID0gQCJXZWJLaXRNZWRpYUNhY2hlRGlyZWN0b3J5IjsKIAogI2lmICFQTEFURk9STShJT1Mp
CiBzdGF0aWMgTlNTdHJpbmcgKldlYktpdEFwcGxpY2F0aW9uRGlkQ2hhbmdlQWNjZXNzaWJpbGl0
eUVuaGFuY2VkVXNlckludGVyZmFjZU5vdGlmaWNhdGlvbiA9IEAiTlNBcHBsaWNhdGlvbkRpZENo
YW5nZUFjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VOb3RpZmljYXRpb24iOwpAQCAt
MzM2LDYgKzMzNywyNSBAQCBTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVm
YXVsdExvY2FsU3RvcmFnZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIHN0cmluZ0J5UmVzb2x2aW5n
U3ltbGlua3NJblBhdGgoW2xvY2FsU3RvcmFnZURpcmVjdG9yeSBzdHJpbmdCeVN0YW5kYXJkaXpp
bmdQYXRoXSk7CiB9CiAKK1N0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5UGxhdGZvcm1EZWZh
dWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmVnaXN0ZXJVc2VyRGVmYXVsdHNJZk5l
ZWRlZCgpOworICAgIAorICAgIE5TU3RyaW5nICptZWRpYUtleXNDYWNoZURpcmVjdG9yeSA9IFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpXZWJLaXRN
ZWRpYUNhY2hlRGlyZWN0b3J5RGVmYXVsdHNLZXldOworICAgIGlmICghbWVkaWFLZXlzQ2FjaGVE
aXJlY3RvcnkgfHwgIVttZWRpYUtleXNDYWNoZURpcmVjdG9yeSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7CisgICAgICAgIG1lZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gTlNUZW1w
b3JhcnlEaXJlY3RvcnkoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghV2ViS2l0Ojpwcm9jZXNz
SGFzQ29udGFpbmVyKCkpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpidW5kbGVJZGVudGlmaWVy
ID0gW05TQnVuZGxlIG1haW5CdW5kbGVdLmJ1bmRsZUlkZW50aWZpZXI7CisgICAgICAgICAgICBp
ZiAoIWJ1bmRsZUlkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgYnVuZGxlSWRlbnRpZmllciA9
IFtOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXS5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIG1l
ZGlhS2V5c0NhY2hlRGlyZWN0b3J5ID0gW21lZGlhS2V5c0NhY2hlRGlyZWN0b3J5IHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpidW5kbGVJZGVudGlmaWVyXTsKKyAgICAgICAgfQorICAg
ICAgICBtZWRpYUtleXNDYWNoZURpcmVjdG9yeSA9IFttZWRpYUtleXNDYWNoZURpcmVjdG9yeSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJXZWJLaXQvTWVkaWFDYWNoZSJdOworICAg
IH0KKyAgICByZXR1cm4gc3RyaW5nQnlSZXNvbHZpbmdTeW1saW5rc0luUGF0aChbbWVkaWFLZXlz
Q2FjaGVEaXJlY3Rvcnkgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF0pOworfQorCiBTdHJpbmcg
V2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhS2V5c1N0b3JhZ2VEaXJl
Y3RvcnkoKQogewogICAgIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IGZlNzNiM2ZlOTlmNGI5
MzMyYjNjNGY1YzlhODhiMTM0MDQxMzU4NzUuLjMzYWJlZWFlYWM2N2I3ODg4NjQ2NTYyZDZlZTUz
MjVmOTM1NjZmMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtMTI4LDYgKzEyOCw3IEBAIHN0YXRpYyBXZWJzaXRlRGF0YVN0b3JlOjpDb25maWd1
cmF0aW9uIGxlZ2FjeVdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uKEFQSTo6CiAgICAgY29u
ZmlndXJhdGlvbi5sb2NhbFN0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5KCk7CiAgICAgY29uZmlndXJhdGlvbi53ZWJTUUxEYXRh
YmFzZURpcmVjdG9yeSA9IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi53ZWJTUUxEYXRhYmFzZURp
cmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSA9
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5KCk7Cisg
ICAgY29uZmlndXJhdGlvbi5tZWRpYUNhY2hlRGlyZWN0b3J5ID0gcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBjb25maWd1cmF0aW9uLm1lZGlhS2V5
c1N0b3JhZ2VEaXJlY3RvcnkgPSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeSgpOwogICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5
ID0gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmRpc2tDYWNoZURpcmVjdG9yeSgpOwogCkBAIC01
NDQsNiArNTQ1LDEwIEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5l
d1dlYlByb2Nlc3MoKQogICAgIGlmICghcGFyYW1ldGVycy53ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eS5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJl
YWRXcml0ZURpcmVjdG9yeShwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5LCBwYXJh
bWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAorICAgIHBh
cmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSA9IG1fY29uZmlndXJhdGlvbi0+bWVkaWFDYWNo
ZURpcmVjdG9yeSgpOworICAgIGlmICghcGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKKyAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdy
aXRlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSwgcGFyYW1ldGVycy5t
ZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKKyAgICAKICNpZiBFTkFCTEUoU0VD
Q09NUF9GSUxURVJTKQogICAgIHBhcmFtZXRlcnMuY29va2llU3RvcmFnZURpcmVjdG9yeSA9IHRo
aXMtPmNvb2tpZVN0b3JhZ2VEaXJlY3RvcnkoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBkYWI1ZjIwNWEyNzk4YmRjMDUzNjRiY2M5YmJl
ODNlN2IxZjIwMzc1Li5hOGIzODY3MWNkM2U3ZTI3ZTQ1YzY2YTVlZThmNzNjYzJjMTNhMDRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMzYxLDYgKzM2
MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3JtRGVmYXVsdElu
ZGV4ZWREQkRhdGFiYXNlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIFN0cmluZyBsZWdhY3lQbGF0
Zm9ybURlZmF1bHRXZWJTUUxEYXRhYmFzZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcg
bGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeSgpOworICAgIHN0
YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0TWVkaWFDYWNoZURpcmVjdG9yeSgpOwog
ICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURp
cmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5UGxhdGZvcm1EZWZhdWx0TmV0d29y
a0NhY2hlRGlyZWN0b3J5KCk7CiAgICAgc3RhdGljIGJvb2wgaXNOZXR3b3JrQ2FjaGVFbmFibGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggMjg3NGZmNDQ2MDRlNGQ1ZWRhNjM3ZjIxOGJjOWE3
YWI1ZmQ3YWI0ZS4uOTE5ZWVhNjI5MWFlMjljMTZmYTFiZGM5MzgwZTU5ZGQ4ZTFjMjNjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRh
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGF0YWJhc2VUcmFja2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9IVE1MTWVk
aWFFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9PcmlnaW5Mb2NrLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC03
Nyw2ICs3OCw3IEBAIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNpdGVEYXRhU3RvcmUoQ29uZmlndXJh
dGlvbiBjb25maWd1cmF0aW9uKQogICAgICwgbV9zZXNzaW9uSUQoV2ViQ29yZTo6U2Vzc2lvbklE
OjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAgLCBtX25ldHdvcmtDYWNoZURpcmVjdG9yeShXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlRGlyZWN0b3J5KSkKICAgICAsIG1fYXBwbGlj
YXRpb25DYWNoZURpcmVjdG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24uYXBwbGljYXRpb25DYWNo
ZURpcmVjdG9yeSkpCisgICAgLCBtX21lZGlhQ2FjaGVEaXJlY3RvcnkoV1RGTW92ZShjb25maWd1
cmF0aW9uLm1lZGlhQ2FjaGVEaXJlY3RvcnkpKQogICAgICwgbV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ud2ViU1FMRGF0YWJhc2VEaXJlY3RvcnkpKQogICAg
ICwgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5KFdURk1vdmUoY29uZmlndXJhdGlvbi5tZWRp
YUtleXNTdG9yYWdlRGlyZWN0b3J5KSkKICAgICAsIG1fc3RvcmFnZU1hbmFnZXIoU3RvcmFnZU1h
bmFnZXI6OmNyZWF0ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24ubG9jYWxTdG9yYWdlRGlyZWN0b3J5
KSkpCkBAIC0yNTUsNiArMjU3LDI3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZmV0Y2hEYXRh
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0CiAKICAgICBS
ZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihu
ZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKGZldGNoT3B0aW9ucywgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpKTsKIAorICAgIGlmIChkYXRhVHlwZXMuY29udGFpbnMoV2Vic2l0ZURhdGFUeXBlOjpE
aXNrQ2FjaGUpKSB7CisgICAgICAgIFN0cmluZ0NhcHR1cmUgbWVkaWFDYWNoZURpcmVjdG9yeSB7
IG1fbWVkaWFDYWNoZURpcmVjdG9yeSB9OworICAgICAgICAKKyAgICAgICAgY2FsbGJhY2tBZ2dy
ZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2go
W2ZldGNoT3B0aW9ucywgbWVkaWFDYWNoZURpcmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7
CisgICAgICAgICAgICBIYXNoU2V0PFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4+IG9y
aWdpbnMgPSBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvcmlnaW5zSW5NZWRpYUNhY2hlKG1l
ZGlhQ2FjaGVEaXJlY3Rvcnkuc3RyaW5nKCkpOworICAgICAgICAgICAgV2Vic2l0ZURhdGEqIHdl
YnNpdGVEYXRhID0gbmV3IFdlYnNpdGVEYXRhOworICAgICAgICAgICAgCisgICAgICAgICAgICBm
b3IgKGF1dG8mIG9yaWdpbiA6IG9yaWdpbnMpIHsKKyAgICAgICAgICAgICAgICBXZWJzaXRlRGF0
YTo6RW50cnkgZW50cnkgeyBvcmlnaW4sIFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlLCAwIH07
CisgICAgICAgICAgICAgICAgd2Vic2l0ZURhdGEtPmVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50
cnkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgV1RGOjpSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvciwgb3JpZ2lucywgd2Vic2l0
ZURhdGFdIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRp
bmdDYWxsYmFjayhXVEZNb3ZlKCp3ZWJzaXRlRGF0YSkpOworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGRlbGV0ZSB3ZWJzaXRlRGF0YTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICB9KTsKKyAgICB9CisKICAgICBhdXRvIG5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZSA9IGNvbXB1
dGVOZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGVGb3JEYXRhRmV0Y2goZGF0YVR5cGVzLCAhaXNQZXJz
aXN0ZW50KCkpOwogICAgIGlmIChuZXR3b3JrUHJvY2Vzc0FjY2Vzc1R5cGUgIT0gUHJvY2Vzc0Fj
Y2Vzc1R5cGU6Ok5vbmUpIHsKICAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CkBAIC01MjksNiArNTUyLDE5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
cmVtb3ZlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIHN0ZDo6Y2hy
CiAKICAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBh
ZG9wdFJlZihuZXcgQ2FsbGJhY2tBZ2dyZWdhdG9yKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KSk7CiAKKyAgICBpZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0Nh
Y2hlKSkgeworICAgICAgICBTdHJpbmdDYXB0dXJlIG1lZGlhQ2FjaGVEaXJlY3RvcnkgeyBtX21l
ZGlhQ2FjaGVEaXJlY3RvcnkgfTsKKworICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBl
bmRpbmdDYWxsYmFjaygpOworICAgICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbbW9kaWZpZWRTaW5j
ZSwgbWVkaWFDYWNoZURpcmVjdG9yeSwgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAg
ICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpjbGVhck1lZGlhQ2FjaGUobWVkaWFDYWNoZURp
cmVjdG9yeS5zdHJpbmcoKSwgbW9kaWZpZWRTaW5jZSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIFdURjo6UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsK
KyAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPnJlbW92ZVBlbmRpbmdDYWxsYmFj
aygpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0KKwogICAgIGF1dG8gbmV0
d29ya1Byb2Nlc3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZv
ckRhdGFSZW1vdmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAobmV0d29y
a1Byb2Nlc3NBY2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lKSB7CiAgICAgICAg
IGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewpAQCAtNzU1LDcgKzc5
MSwyNSBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBjb25zdCBWZQogICAgIH07CiAKICAgICBSZWZQdHI8Q2Fs
bGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBhZG9wdFJlZihuZXcgQ2FsbGJh
Y2tBZ2dyZWdhdG9yKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7Ci0KKyAgICAKKyAgICBp
ZiAoZGF0YVR5cGVzLmNvbnRhaW5zKFdlYnNpdGVEYXRhVHlwZTo6RGlza0NhY2hlKSkgeworICAg
ICAgICBTdHJpbmdDYXB0dXJlIG1lZGlhQ2FjaGVEaXJlY3RvcnkgeyBtX21lZGlhQ2FjaGVEaXJl
Y3RvcnkgfTsKKyAgICAgICAgSGFzaFNldDxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+
PiBvcmlnaW5zOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGRhdGFSZWNvcmQgOiBkYXRhUmVj
b3JkcykgeworICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBvcmlnaW4gOiBkYXRhUmVjb3Jk
Lm9yaWdpbnMpCisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQob3JpZ2luKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJh
Y2soKTsKKyAgICAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW29yaWdpbnMsIG1lZGlhQ2FjaGVEaXJl
Y3RvcnksIGNhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6Y2xlYXJNZWRpYUNhY2hlRm9yT3JpZ2lucyhtZWRpYUNhY2hlRGlyZWN0b3J5
LnN0cmluZygpLCBvcmlnaW5zKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgV1RGOjpSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NhbGxiYWNrQWdncmVnYXRvcl0geworICAgICAgICAgICAg
ICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfQorICAgIAogICAgIGF1dG8gbmV0d29ya1Byb2Nl
c3NBY2Nlc3NUeXBlID0gY29tcHV0ZU5ldHdvcmtQcm9jZXNzQWNjZXNzVHlwZUZvckRhdGFSZW1v
dmFsKGRhdGFUeXBlcywgIWlzUGVyc2lzdGVudCgpKTsKICAgICBpZiAobmV0d29ya1Byb2Nlc3NB
Y2Nlc3NUeXBlICE9IFByb2Nlc3NBY2Nlc3NUeXBlOjpOb25lKSB7CiAgICAgICAgIGZvciAoYXV0
byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggMTAz
ZDYyMzgzMWI4NTI0YWY2YzAzNzQ3NmEwYjMzOWU1ZDdhOTIxYS4uYTRhOWUxMDQzYjc2YTZlYjg4
ZGZmM2M3MTExZjRmNjJhNzdlY2Y3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC02MSw2ICs2MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgU3RyaW5nIG5ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICAgICAg
U3RyaW5nIGFwcGxpY2F0aW9uQ2FjaGVEaXJlY3Rvcnk7CiAKKyAgICAgICAgU3RyaW5nIG1lZGlh
Q2FjaGVEaXJlY3Rvcnk7CiAgICAgICAgIFN0cmluZyB3ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsK
ICAgICAgICAgU3RyaW5nIGxvY2FsU3RvcmFnZURpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIG1l
ZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CkBAIC0xMTcsNiArMTE4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIGNvbnN0IFN0cmluZyBtX25ldHdvcmtDYWNoZURpcmVjdG9yeTsKICAgICBjb25zdCBTdHJp
bmcgbV9hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5OworICAgIGNvbnN0IFN0cmluZyBtX21lZGlh
Q2FjaGVEaXJlY3Rvcnk7CiAKICAgICBjb25zdCBTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURpcmVj
dG9yeTsKICAgICBjb25zdCBTdHJpbmcgbV9tZWRpYUtleXNTdG9yYWdlRGlyZWN0b3J5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQcm9jZXNzUG9vbEVmbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcApp
bmRleCAxMGI1ZjJhMDc0ZTAxZjhmNmM1NzkyMDAxMGRkOGJjOTMwYmI3MjE3Li4yNTVlZTg3MjEy
YzRiODU3MzgzZDc4ZGE4M2Q2Y2Q2NDBhYjBmNzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcApAQCAtODcsNiArODcsMTEgQEAg
U3RyaW5nIFdlYlByb2Nlc3NQb29sOjpsZWdhY3lQbGF0Zm9ybURlZmF1bHRBcHBsaWNhdGlvbkNh
Y2hlRGlyZWN0b3J5KCkKICAgICByZXR1cm4gQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0
QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpOwogfQogCitTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6
OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1lZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVy
biBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Cit9
CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKICAgICBpbml0aWFsaXpl
SW5zcGVjdG9yU2VydmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Z3RrL1dlYlByb2Nlc3NQb29sR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsv
V2ViUHJvY2Vzc1Bvb2xHdGsuY3BwCmluZGV4IDRlZmNlMzlkOWQwMzM0NTZjYzg2NTE0NWNmYTM3
NTYzMWMzZjkxZjUuLjk3YWZiNzAxZmZhYzJjMzY4YjdiMGM2N2JiYmYzMjg3MmYxZWI1NTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc1Bvb2xHdGsu
Y3BwCkBAIC04Niw2ICs4NiwxMSBAQCBXVEY6OlN0cmluZyBXZWJQcm9jZXNzUG9vbDo6bGVnYWN5
UGxhdGZvcm1EZWZhdWx0QXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSgpCiAgICAgcmV0dXJuIEFQ
STo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdEFwcGxpY2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsK
IH0KIAorV1RGOjpTdHJpbmcgV2ViUHJvY2Vzc1Bvb2w6OmxlZ2FjeVBsYXRmb3JtRGVmYXVsdE1l
ZGlhQ2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBBUEk6OldlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHRNZWRpYUNhY2hlRGlyZWN0b3J5KCk7Cit9CisKIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKICAgICBpbml0SW5zcGVjdG9yU2VydmVyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCBjOGQzYzFmNGQ1OWY5YjBmODUzN2Nh
Njg3Y2U0NTU1MjZlZWZlMzI4Li4xMWI2MmI0MmI0ZWFiOWUzZDI2OTg3ODM4MDA4MjZjYWM0ZmUz
YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTc3LDYg
Kzc3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9HQ0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dseXBoUGFnZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTE1lZGlhRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSWNv
bkRhdGFiYXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTVdpbmRvdy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvTGFuZ3VhZ2UuaD4KQEAgLTI5Myw2ICsyOTQsOSBAQCB2b2lkIFdlYlByb2Nlc3M6
OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogICAgIGlmICghcGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKICAgICAgICAgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OnNpbmdsZXRvbigpLnNl
dENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMuYXBwbGljYXRpb25DYWNoZURpcmVjdG9yeSk7CiAK
KyAgICBpZiAoIXBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAg
ICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkocGFy
YW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5KTsKKwogICAgIHNldENhY2hlTW9kZWwoc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHBhcmFtZXRlcnMuY2FjaGVNb2RlbCkpOwogCiAgICAgaWYgKCFwYXJh
bWV0ZXJzLmxhbmd1YWdlcy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGY3NjFjZTZiMThlNDgxOTQzZDM4
ZjgzMjIyM2M0OTVhNDc2NjA0OTYuLmEwODdmOTBlNzU2MWRlYjU2NDQ4MDY0ODNmZGMxYWE1YjM4
OWJkMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvY29jb2EvV2ViUHJv
Y2Vzc0NvY29hLm1tCkBAIC0xMzUsNiArMTM1LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXIK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy51aVBy
b2Nlc3NCdW5kbGVSZXNvdXJjZVBhdGhFeHRlbnNpb25IYW5kbGUpOwogICAgIFNhbmRib3hFeHRl
bnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLndlYlNRTERhdGFiYXNlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFu
ZW50bHkocGFyYW1ldGVycy5hcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxl
KTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5t
ZWRpYUNhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKICAgICBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5tZWRpYUtleVN0b3JhZ2VEaXJlY3RvcnlF
eHRlbnNpb25IYW5kbGUpOwogI2lmIFBMQVRGT1JNKElPUykKICAgICBTYW5kYm94RXh0ZW5zaW9u
Ojpjb25zdW1lUGVybWFuZW50bHkocGFyYW1ldGVycy5jb29raWVTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>