<?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>100419</bug_id>
          
          <creation_ts>2012-10-25 14:52:51 -0700</creation_ts>
          <short_desc>String::createCFString should return a RetainPtr</short_desc>
          <delta_ts>2013-05-24 13:58:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>benjamin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>751235</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-25 14:52:51 -0700</bug_when>
    <thetext>String::createCFString should return a RetainPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751244</commentid>
    <comment_count>1</comment_count>
      <attachid>170736</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-25 14:59:16 -0700</bug_when>
    <thetext>Created attachment 170736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751282</commentid>
    <comment_count>2</comment_count>
      <attachid>170736</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-25 15:34:07 -0700</bug_when>
    <thetext>Comment on attachment 170736
Patch

Attachment 170736 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14552746</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751336</commentid>
    <comment_count>3</comment_count>
      <attachid>170736</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-25 16:27:12 -0700</bug_when>
    <thetext>Comment on attachment 170736
Patch

Attachment 170736 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14593382</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751339</commentid>
    <comment_count>4</comment_count>
      <attachid>170764</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-25 16:30:20 -0700</bug_when>
    <thetext>Created attachment 170764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751353</commentid>
    <comment_count>5</comment_count>
      <attachid>170764</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-25 17:04:35 -0700</bug_when>
    <thetext>Comment on attachment 170764
Patch

Attachment 170764 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14564763</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751376</commentid>
    <comment_count>6</comment_count>
      <attachid>170764</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-25 17:38:03 -0700</bug_when>
    <thetext>Comment on attachment 170764
Patch

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

Fantastic patch. One big mistake though. You’ll see it.

&gt; Source/WTF/ChangeLog:16
&gt; +        (AtomicString):

Please remove bogus lines like this even if the script generates them.

&gt; Source/WTF/ChangeLog:18
&gt; +        (WTF):

Ditto.

&gt; Source/WTF/ChangeLog:19
&gt; +        (StringImpl):

Ditto.

&gt; Source/WTF/ChangeLog:21
&gt; +        (String):

Ditto.

&gt; Source/WebCore/loader/archive/cf/LegacyWebArchive.cpp:94
&gt; +    if (RetainPtr&lt;CFStringRef&gt; cfURL = resource-&gt;url().string().createCFString())

Does this end up using the move constructor?

&gt; Source/WebCore/platform/RuntimeApplicationChecks.cpp:49
&gt; +    RetainPtr&lt;CFStringRef&gt; bundleIdentifierToCompare(AdoptCF, bundleIdentifierString.createCFString().get());

Oops!!!!!!! No!

&gt; Source/WebCore/platform/graphics/cg/ImageBufferCG.cpp:380
&gt; +    return RetainPtr&lt;CFStringRef&gt;(AdoptCF, UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType.createCFString().get(), 0));

Can this call the adoptCF function instead? I noticed you did that a lot.

&gt; Source/WebCore/platform/graphics/cg/ImageSourceCGMac.mm:37
&gt; +    RetainPtr&lt;CFStringRef&gt; mime = adoptCF(UTTypeCopyPreferredTagWithClass(uti.createCFString().get(), kUTTagClassMIMEType));
&gt;      return mime.get();

Can this not use a local variable at all?

&gt; Source/WebCore/platform/graphics/cg/ImageSourceCGMac.mm:43
&gt; +    RetainPtr&lt;CFStringRef&gt; extension = adoptCF(UTTypeCopyPreferredTagWithClass(uti.createCFString().get(), kUTTagClassFilenameExtension));
&gt;      return extension.get();

Can this not use a local variable at all?

&gt; Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm:285
&gt; +                    runFontData = fontCache()-&gt;getCachedFontData(m_font.fontDescription(), String(fontName.get()), false, FontCache::DoNotRetain).get();

Not sure I understand why this change was needed.

&gt; Source/WebCore/platform/mac/ClipboardMac.mm:102
&gt; +    RetainPtr&lt;CFStringRef&gt; utiType(AdoptCF, UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, mimeType.createCFString().get(), NULL));

Can this use the adoptCF function?

&gt; Source/WebCore/platform/mac/SSLKeyGeneratorMac.cpp:66
&gt; +    RetainPtr&lt;CFStringRef&gt; result(AdoptCF, wkSignedPublicKeyAndChallengeString(keySize, challengeString.createCFString().get(), keyDescription.get()));
&gt;  
&gt;      return result.get();

If you used the adoptCF function here then you would not need the “result” local variable any more.

&gt; Source/WebCore/platform/network/cf/DNSCFNet.cpp:93
&gt; +    RetainPtr&lt;CFHostRef&gt; host(AdoptCF, CFHostCreateWithName(0, hostname.createCFString().get()));

Maybe the adoptCF function here?

&gt; Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp:210
&gt; +            m_httpHeaderFields.set(String((CFStringRef)keys[i]), String((CFStringRef)values[i]));

Why is this now necessary?

&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:55
&gt;      String key = &quot;com.apple.WebKit.searchField:&quot; + name;
&gt; -    return RetainPtr&lt;CFStringRef&gt;(AdoptCF, key.createCFString());
&gt; +    return key.createCFString();

Probably don’t need a local variable any more here.

&gt; Source/WebKit/cf/WebCoreSupport/WebInspectorClientCF.cpp:94
&gt; -    RetainPtr&lt;CFPropertyListRef&gt; objectToStore;
&gt; -    objectToStore.adoptCF(setting.createCFString());
&gt; +    RetainPtr&lt;CFPropertyListRef&gt; objectToStore = setting.createCFString();
&gt;      ASSERT(objectToStore);
&gt;  
&gt; -    RetainPtr&lt;CFStringRef&gt; preferencesKey(AdoptCF, createKeyForPreferences(key));
&gt; +    RetainPtr&lt;CFStringRef&gt; preferencesKey = createKeyForPreferences(key);
&gt;      CFPreferencesSetAppValue(preferencesKey.get(), objectToStore.get(), kCFPreferencesCurrentApplication);

Don’t really need the local variables here any more.

&gt; Source/WebKit2/Platform/mac/ModuleMac.mm:33
&gt; +    RetainPtr&lt;CFURLRef&gt; bundleURL(AdoptCF, CFURLCreateWithFileSystemPath(kCFAllocatorDefault, m_path.createCFString().get(), kCFURLPOSIXPathStyle, FALSE));

Could use the adoptCF function here.

&gt; Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:355
&gt; +    RetainPtr&lt;CFURLRef&gt; bundleURL(AdoptCF, CFURLCreateWithFileSystemPath(kCFAllocatorDefault, pluginPath.createCFString().get(), kCFURLPOSIXPathStyle, false));

Could use the adoptCF function here.

&gt; Source/WebKit2/Shared/Plugins/Netscape/mac/NetscapePluginModuleMac.mm:397
&gt; +    RetainPtr&lt;CFURLRef&gt; bundleURL(AdoptCF, CFURLCreateWithFileSystemPath(kCFAllocatorDefault, pluginPath.createCFString().get(), kCFURLPOSIXPathStyle, false));

Could use the adoptCF function here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751407</commentid>
    <comment_count>7</comment_count>
      <attachid>170779</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-25 18:29:59 -0700</bug_when>
    <thetext>Created attachment 170779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751408</commentid>
    <comment_count>8</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-25 18:31:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 170764 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170764&amp;action=review
&gt; 
&gt; Does this end up using the move constructor?

Yes.

&gt; 
&gt; &gt; Source/WebCore/platform/RuntimeApplicationChecks.cpp:49
&gt; &gt; +    RetainPtr&lt;CFStringRef&gt; bundleIdentifierToCompare(AdoptCF, bundleIdentifierString.createCFString().get());
&gt; 
&gt; Oops!!!!!!! No!

Oops!!!!!!! Fixed!

&gt; &gt; Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm:285
&gt; &gt; +                    runFontData = fontCache()-&gt;getCachedFontData(m_font.fontDescription(), String(fontName.get()), false, FontCache::DoNotRetain).get();
&gt; 
&gt; Not sure I understand why this change was needed.

It&apos;s because I removed the AtomicString constructor that takes a CFStringRef. The rationale is in the ChangeLog.


&gt; &gt; Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp:210
&gt; &gt; +            m_httpHeaderFields.set(String((CFStringRef)keys[i]), String((CFStringRef)values[i]));
&gt; 
&gt; Why is this now necessary?

See my answer above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751444</commentid>
    <comment_count>9</comment_count>
      <attachid>170779</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-25 19:02:15 -0700</bug_when>
    <thetext>Comment on attachment 170779
Patch

Attachment 170779 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14546863</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751493</commentid>
    <comment_count>10</comment_count>
      <attachid>170798</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-25 20:39:27 -0700</bug_when>
    <thetext>Created attachment 170798
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751500</commentid>
    <comment_count>11</comment_count>
      <attachid>170798</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-10-25 21:00:37 -0700</bug_when>
    <thetext>Comment on attachment 170798
Patch

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

&gt; Source/WTF/ChangeLog:13
&gt; +        WTFString.h creates a naming conflict between JSC::Debugger and the Debugger function and there&apos;s currently
&gt; +        no AtomicStringCF.cpp where we could safely include RetainPtr.h. Furthermore, these functions were only used
&gt; +        twice throughout WebCore so just use the StringImpl and String functions instead.

Which functions use the AtomicString constructor? I had special plan for those two constructors, I may even have a radar for it.
I did not know there were not used a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751504</commentid>
    <comment_count>12</comment_count>
      <attachid>170802</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-25 21:03:21 -0700</bug_when>
    <thetext>Created attachment 170802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751519</commentid>
    <comment_count>13</comment_count>
      <attachid>170802</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-25 21:40:12 -0700</bug_when>
    <thetext>Comment on attachment 170802
Patch

Attachment 170802 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14555897</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752686</commentid>
    <comment_count>14</comment_count>
      <attachid>171076</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-26 22:37:53 -0700</bug_when>
    <thetext>Created attachment 171076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752695</commentid>
    <comment_count>15</comment_count>
      <attachid>171076</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-26 23:10:51 -0700</bug_when>
    <thetext>Comment on attachment 171076
Patch

Attachment 171076 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14607356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752815</commentid>
    <comment_count>16</comment_count>
      <attachid>171099</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-27 12:14:33 -0700</bug_when>
    <thetext>Created attachment 171099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752834</commentid>
    <comment_count>17</comment_count>
      <attachid>171099</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-27 13:49:07 -0700</bug_when>
    <thetext>Comment on attachment 171099
Patch

Attachment 171099 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14611561</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752856</commentid>
    <comment_count>18</comment_count>
      <attachid>171110</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-27 17:15:53 -0700</bug_when>
    <thetext>Created attachment 171110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752858</commentid>
    <comment_count>19</comment_count>
      <attachid>171110</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-27 17:46:13 -0700</bug_when>
    <thetext>Comment on attachment 171110
Patch

Attachment 171110 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14616624</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752871</commentid>
    <comment_count>20</comment_count>
      <attachid>171114</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-27 19:25:33 -0700</bug_when>
    <thetext>Created attachment 171114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752872</commentid>
    <comment_count>21</comment_count>
      <attachid>171114</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-27 20:02:39 -0700</bug_when>
    <thetext>Comment on attachment 171114
Patch

Attachment 171114 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14611651</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752896</commentid>
    <comment_count>22</comment_count>
      <attachid>171122</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-27 22:39:43 -0700</bug_when>
    <thetext>Created attachment 171122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752910</commentid>
    <comment_count>23</comment_count>
      <attachid>171122</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-27 23:16:01 -0700</bug_when>
    <thetext>Comment on attachment 171122
Patch

Attachment 171122 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14617649</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752974</commentid>
    <comment_count>24</comment_count>
      <attachid>171137</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-28 12:16:43 -0700</bug_when>
    <thetext>Created attachment 171137
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753545</commentid>
    <comment_count>25</comment_count>
      <attachid>171137</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-29 09:56:22 -0700</bug_when>
    <thetext>Comment on attachment 171137
Patch

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

&gt; Source/WTF/wtf/text/AtomicString.h:-141
&gt; -    AtomicString(CFStringRef s) :  m_string(add(String(s).impl())) { }

Was anyone using this? If so, we should make sure they have an efficient version. This version is not efficient, because it allocates a StringImpl that is likely deallocated a moment later once it’s found in the atomic string table.

&gt; Source/WTF/wtf/text/AtomicString.h:-142
&gt; -    CFStringRef createCFString() const { return m_string.createCFString(); }

Removing this seems fine.

&gt; Source/WTF/wtf/text/AtomicString.h:141
&gt;      AtomicString(NSString* s) : m_string(add(String(s).impl())) { }

If we’re actually using this function, we should change it to not allocate a StringImpl that is likely deallocated a moment later once it’s found in the atomic string table.

&gt; Source/WebCore/platform/cf/FileSystemCF.cpp:66
&gt; +    return RetainPtr&lt;CFURLRef&gt;(AdoptCF, CFURLCreateWithFileSystemPath(0, path.createCFString().get(), pathStyle, FALSE));

adoptCF function here?

&gt; Source/WebCore/platform/graphics/mac/ComplexTextControllerCoreText.mm:285
&gt; +                    runFontData = fontCache()-&gt;getCachedFontData(m_font.fontDescription(), String(fontName.get()), false, FontCache::DoNotRetain).get();

Why is the explicit String conversion needed here, again? Is this a place where we are creating an AtomicString? If so, then it does seem too bad to me that we are allocating and then destroying a StringImp for the font name each time.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:1004
&gt; +    RetainPtr&lt;CFStringRef&gt; cfIdentifier = String(base + &quot;.PrivateBrowsing&quot;).createCFString();

I don’t think the String is needed around (base + &quot;.PrivateBrowsing&quot;).

&gt; Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp:210
&gt; +            m_httpHeaderFields.set(String((CFStringRef)keys[i]), String((CFStringRef)values[i]));

Same question about explicit String conversion as above. Is this for making an AtomicString? And if so, isn’t it a bit wasteful to make and destroy a StringImpl every time?

&gt; Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp:106
&gt; +                    m_httpHeaderFields.set(String(commonHeaderFields[i]), String(value));

Ditto.

&gt; Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp:124
&gt; +                m_httpHeaderFields.set(String((CFStringRef)keys[i]), String((CFStringRef)values[i]));

Ditto.

&gt; Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp:390
&gt; +    return String(&quot;WebKit socket stream, &quot; + handle-&gt;m_url.string()).createCFString().leakRef();

I don’t think the String() is needed around the (&quot;WebKit socket stream, &quot; + handle-&gt;m_url.string()) expression here.

&gt; Source/WebCore/platform/win/SearchPopupMenuWin.cpp:55
&gt;      String key = &quot;com.apple.WebKit.searchField:&quot; + name;
&gt; -    return RetainPtr&lt;CFStringRef&gt;(AdoptCF, key.createCFString());
&gt; +    return key.createCFString();

Could be done all on one line.

&gt; Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp:182
&gt; +    return String(&quot;com.apple.WebKit.searchField:&quot; + name).createCFString();

I don’t think the String is needed before (&quot;com.apple.WebKit.searchField:&quot; + name).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753892</commentid>
    <comment_count>26</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-29 17:14:35 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (From update of attachment 171137 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171137&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/text/AtomicString.h:-141
&gt; &gt; -    AtomicString(CFStringRef s) :  m_string(add(String(s).impl())) { }
&gt; 
&gt; Was anyone using this? If so, we should make sure they have an efficient version. This version is not efficient, because it allocates a StringImpl that is likely deallocated a moment later once it’s found in the atomic string table.

Yes. I made it efficient in #100701, so I won&apos;t be removing it.

I&gt; &gt; Source/WTF/wtf/text/AtomicString.h:141
&gt; &gt;      AtomicString(NSString* s) : m_string(add(String(s).impl())) { }
&gt; 
&gt; If we’re actually using this function, we should change it to not allocate a StringImpl that is likely deallocated a moment later once it’s found in the atomic string table.

Ditto.

&gt; Why is the explicit String conversion needed here, again? Is this a place where we are creating an AtomicString? If so, then it does seem too bad to me that we are allocating and then destroying a StringImp for the font name each time.
&gt; 

Ditto.

&gt; &gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:1004
&gt; &gt; +    RetainPtr&lt;CFStringRef&gt; cfIdentifier = String(base + &quot;.PrivateBrowsing&quot;).createCFString();
&gt; 
&gt; I don’t think the String is needed around (base + &quot;.PrivateBrowsing&quot;).

It is - otherwise I get:

error: no member named &apos;createCFString&apos; in &apos;WTF::StringAppend&lt;const char *, WTF::String&gt;&apos;

&gt; &gt; Source/WebCore/platform/network/cf/ResourceRequestCFNet.cpp:210
&gt; &gt; +            m_httpHeaderFields.set(String((CFStringRef)keys[i]), String((CFStringRef)values[i]));
&gt; 
&gt; Same question about explicit String conversion as above. Is this for making an AtomicString? And if so, isn’t it a bit wasteful to make and destroy a StringImpl every time?

I removed this now since AtomicString(CFStringRef) is efficient.

&gt; 
&gt; &gt; Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp:106
&gt; &gt; +                    m_httpHeaderFields.set(String(commonHeaderFields[i]), String(value));
&gt; 
&gt; Ditto.
&gt; 

Ditto.

&gt; &gt; Source/WebCore/platform/network/cf/ResourceResponseCFNet.cpp:124
&gt; &gt; +                m_httpHeaderFields.set(String((CFStringRef)keys[i]), String((CFStringRef)values[i]));
&gt; 
&gt; Ditto.

Ditto.

&gt; 
&gt; &gt; Source/WebCore/platform/network/cf/SocketStreamHandleCFNet.cpp:390
&gt; &gt; +    return String(&quot;WebKit socket stream, &quot; + handle-&gt;m_url.string()).createCFString().leakRef();
&gt; 
&gt; I don’t think the String() is needed around the (&quot;WebKit socket stream, &quot; + handle-&gt;m_url.string()) expression here.

Again, getting:

error: no member named &apos;createCFString&apos; in &apos;WTF::StringAppend&lt;const char *, WTF::String&gt;&apos;

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/cf/WebPageProxyCF.cpp:182
&gt; &gt; +    return String(&quot;com.apple.WebKit.searchField:&quot; + name).createCFString();
&gt; 
&gt; I don’t think the String is needed before (&quot;com.apple.WebKit.searchField:&quot; + name).

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753893</commentid>
    <comment_count>27</comment_count>
      <attachid>171344</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-29 17:20:40 -0700</bug_when>
    <thetext>Created attachment 171344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753897</commentid>
    <comment_count>28</comment_count>
      <attachid>171347</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-29 17:33:46 -0700</bug_when>
    <thetext>Created attachment 171347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753898</commentid>
    <comment_count>29</comment_count>
      <attachid>171348</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-29 17:36:10 -0700</bug_when>
    <thetext>Created attachment 171348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753899</commentid>
    <comment_count>30</comment_count>
      <attachid>171349</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-29 17:45:36 -0700</bug_when>
    <thetext>Created attachment 171349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753904</commentid>
    <comment_count>31</comment_count>
      <attachid>171350</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-29 18:02:13 -0700</bug_when>
    <thetext>Created attachment 171350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754415</commentid>
    <comment_count>32</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-30 09:10:36 -0700</bug_when>
    <thetext>Committed r132916: &lt;http://trac.webkit.org/changeset/132916&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893303</commentid>
    <comment_count>33</comment_count>
      <attachid>202820</attachid>
    <who name="Tobias Netzel">tobias.netzel</who>
    <bug_when>2013-05-24 07:47:51 -0700</bug_when>
    <thetext>Created attachment 202820
don&apos;t adopt CFStringRefs twice

I&apos;m currently running into problems with CFStrings that have apparently been adopted twice.
Please check if the proposed patch is correct, and if that&apos;s the case I&apos;ll prepare a new bug with a committable patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893426</commentid>
    <comment_count>34</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-24 13:58:08 -0700</bug_when>
    <thetext>&gt; I&apos;m currently running into problems with CFStrings that have apparently been adopted twice.
&gt; Please check if the proposed patch is correct, and if that&apos;s the case I&apos;ll prepare a new bug with a committable patch.

Looks reasonable.
Please file a separate bug and attach a WebKit patch to it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170736</attachid>
            <date>2012-10-25 14:59:16 -0700</date>
            <delta_ts>2012-10-25 16:30:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121025145749.patch</filename>
            <type>text/plain</type>
            <size>45509</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNmMGI4Njg5ZjdhOTdiYjdlNWRmYTM3
ZWM2MzI0MGNmMGU5MjBmYzAuLmRmZmQwODE4ZDI3NWVkYzdhNmViZDAxNTk0ODI2ODBkZGZiNTY4
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuaDoKKyAgICAgICAgKFN0cmluZyk6CisKIDIwMTItMDktMjcgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJv
dmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGZvciBMaXN0SGFzaFNldApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGFjM2FmNmI3OWY2ZjgzZjhlZmE1NjMwMTgzMDAzODFiZjg3NjFlMGMuLjkwMzQ2ZDdkMWJjODZh
NTk5NTNhNTYwMGI1NDY3ZWU5ZGQzY2JkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAor
MjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxl
cnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tP
YmplY3QpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChX
ZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdl
VGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0dNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZvckltYWdlU291cmNl
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJj
ZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxl
cjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9t
SFRNTENsaXBib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21Db2NvYVR5
cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6
OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NG
LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5n
SW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcg
Kik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZW5jb2RlKToKKwogMjAxMi0xMC0yNSAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBpbnNwZWN0b3IgdGVzdHMgZmFpbGluZyBhZnRlciByMTMyNDU0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCmluZGV4
IDU4NjNlOTJmNGZmYmVlNDBmMjRlZWY5NTJiM2EwNzUwN2Q0MmVjYzUuLjZlMGFlZDVmZmE1NmU3
MWYyYjA1NjI5M2ZmY2ZjMGVlMDU5YTVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2Yv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBj
YWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChjcmVhdGVLZXlGb3JQcmVm
ZXJlbmNlcyk6CisgICAgICAgIChwb3B1bGF0ZVNldHRpbmcpOgorICAgICAgICAoc3RvcmVTZXR0
aW5nKToKKwogMjAxMi0wOS0wNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFBhcnQgMiBvZiByZW1vdmluZyBQbGF0Zm9ybVN0cmluZy5oLCByZW1vdmUgUGxhdGZvcm1T
dHJpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDY0ZTNiZDZkNTAwZDk0ZTdhZDYyN2MxNTRjMTU3MWMxNWE3
NGVhZGMuLmY1MGYwMjQzMzk3ZjhhMjgxY2I4ZDA0YTAwNjIwMzM3YzE0ZTg5ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwzMCBAQAogMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJl
dHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAg
ICAgICAqIFBsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok1vZHVs
ZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8pOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTUlNRVR5cGVzUHJl
ZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlQ0ZEaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlD
Ri5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OmF1dG9zYXZlS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUmVzb3Vy
Y2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2luKToKKworMjAxMi0xMC0y
NSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIEFzc2Vy
dGlvbiBmYWlsdXJlIHRyeWluZyB0byBkaXNwYXRjaCBub3RpZmljYXRpb24gbWVzc2FnZXMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDM4NwogICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTI1NzMxOTU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aAppbmRleCA2YWM2MGU2YWQ1NzI0MzM5NzhmNWZiNGI0ODgwYTlmYjQwMTA1YzY2Li43ZGEwZGQ0
ZjNhMDE3MTliNDZjZWE5YjE4OGRiZGZhNWU2OTNjY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmgKQEAgLTEzNywxMCArMTM3LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
cmVtb3ZlKFN0cmluZ0ltcGwqKTsKICAgICAKLSNpZiBVU0UoQ0YpCi0gICAgQXRvbWljU3RyaW5n
KENGU3RyaW5nUmVmIHMpIDogIG1fc3RyaW5nKGFkZChTdHJpbmcocykuaW1wbCgpKSkgeyB9Ci0g
ICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5j
cmVhdGVDRlN0cmluZygpOyB9Ci0jZW5kaWYgICAgCiAjaWZkZWYgX19PQkpDX18KICAgICBBdG9t
aWNTdHJpbmcoTlNTdHJpbmcqIHMpIDogbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7
IH0KICAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAwMDY3YmViZWVkOTBmZjc0MzczMmNkYWFmNTYw
YWFmNTkyMDk4NGVjLi42NzY3NzkwNmRiMDI1MDNlMjE3OTQxNzQzOTYyNDExZmIyMzI2NTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNjcsNiArNjcsNyBAQCBzdHJ1Y3QgQ2hhckJ1
ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3I7CiBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwog
c3RydWN0IFN1YnN0cmluZ1RyYW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9y
OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKIAogZW51bSBUZXh0Q2FzZVNl
bnNpdGl2aXR5IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUgfTsKIApA
QCAtNzEzLDcgKzcxNCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgV1RG
OjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFVTRShDRikKLSAgICBDRlN0cmluZ1JlZiBj
cmVhdGVDRlN0cmluZygpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJp
bmcoKTsKICNlbmRpZgogI2lmZGVmIF9fT0JKQ19fCiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA1MGMwNDhkNjNmM2RjZjFjNTM4NjU1NjZlNDcy
NGYxYTgyNDhmZTA3Li5kNjdhZDMyOTkyYzI0MGYxZTU1MmY2ZWMzZWZjMDgwMDhiM2JhODM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8b2Jq
Yy9vYmpjLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9f
Q0ZTdHJpbmcgKiBDRlN0cmluZ1JlZjsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQpCiBRVF9C
RUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFTdHJpbmc7CkBAIC0zODYsNyArMzgyLDcgQEAgcHVibGlj
OgogCiAjaWYgVVNFKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7Ci0gICAgQ0ZTdHJpbmdS
ZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNy
ZWF0ZUNGU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMmNmMGRiNTYxOGUzODIw
Y2RmNDQ2NDU1ODM0MWY2OTRmNTNkMWZhMy4uYmUyNGZkYjNmZGIxMzdjODBiNmYwYTRmYjg4NzQx
YWIzNDFhNGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMjQ4LDggKzI0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBPYmpjQ2xh
c3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0
Q2xhc3MoKSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChhZG9w
dFB0cihuZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5k
ZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKSk7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAqPihleGVjLT5jYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgbmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lLmdl
dCgpKTsKKyAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVu
dGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5z
dGFuY2UtPmludm9rZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwogICAg
IH0KICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCAzNTc2ZDY0ZGZjNDgyYTQxZDU0ZTEzZWZk
MTk3ODE2MmI3ODA3YTdmLi5kNzdmODc0YjA5ZGMyMDA5YmJlZDAzNTI0MTgzNWJmZTg2Zjg4ZTNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJB
cmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lX
ZWJBcmNoaXZlLmNwcApAQCAtOTEsOCArOTEsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgog
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJj
aGl2ZVJlc291cmNlRGF0YUtleSwgY2ZEYXRhLmdldCgpKTsKICAgICAKICAgICAvLyBSZXNvdXJj
ZSBVUkwgY2Fubm90IGJlIG51bGwKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVVJMKEFk
b3B0Q0YsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBp
ZiAoY2ZVUkwpCisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwgPSByZXNvdXJj
ZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VVUkxL
ZXksIGNmVVJMLmdldCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVn
YWN5V2ViQXJjaGl2ZSAtIE5VTEwgcmVzb3VyY2UgVVJMIGlzIGludmFsaWQgLSByZXR1cm5pbmcg
bnVsbCBwcm9wZXJ0eSBsaXN0Iik7CkBAIC0xMDEsMjMgKzEwMCwxNyBAQCBSZXRhaW5QdHI8Q0ZE
aWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNl
bnRhdGlvbihBcgogCiAgICAgLy8gRnJhbWVOYW1lIHNob3VsZCBiZSBsZWZ0IG91dCBpZiBlbXB0
eSBmb3Igc3VicmVzb3VyY2VzLCBidXQgYWx3YXlzIGluY2x1ZGVkIGZvciBtYWluIHJlc291cmNl
cwogICAgIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKHJlc291cmNlLT5mcmFtZU5hbWUoKSk7Ci0g
ICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpIHx8IGlzTWFpblJlc291cmNlKSB7Ci0gICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZGcmFtZU5hbWUoQWRvcHRDRiwgZnJhbWVOYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZUZyYW1lTmFtZUtleSwgY2ZGcmFtZU5h
bWUuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkgfHwgaXNNYWlu
UmVzb3VyY2UpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQo
KSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRnJhbWVOYW1lS2V5LCBmcmFtZU5hbWUuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgCiAgICAgLy8gU2V0IE1JTUVUeXBlLCBUZXh0RW5jb2Rp
bmdOYW1lLCBhbmQgUmVzb3VyY2VSZXNwb25zZSBvbmx5IGlmIHRoZXkgYWN0dWFsbHkgZXhpc3QK
ICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKHJlc291cmNlLT5taW1lVHlwZSgpKTsKLSAgICBp
ZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmTUlNRVR5cGUoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlTUlNRVR5cGVLZXksIGNmTUlNRVR5cGUuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAo
IW1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtleSwgbWltZVR5
cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmcocmVzb3VyY2UtPnRleHRFbmNvZGluZygpKTsKLSAgICBpZiAoIXRleHRFbmNvZGlu
Zy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlRleHRFbmNv
ZGluZyhBZG9wdENGLCB0ZXh0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJl
c291cmNlVGV4dEVuY29kaW5nTmFtZUtleSwgY2ZUZXh0RW5jb2RpbmcuZ2V0KCkpOwotICAgIH0K
KyAgICBpZiAoIXRleHRFbmNvZGluZy5pc0VtcHR5KCkpCisgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVGV4dEVu
Y29kaW5nTmFtZUtleSwgdGV4dEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAg
ICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJl
c291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBhYmYxYmNhNWU4NTQxMGJhODdkNWNhYjgy
NTAwZDk2OWYxMDkyNmE3Li42OTA4NDNiMTM3NzgzNDgyODBlYzdlYTViNDM3Mzg4ZTlkZGM2NDFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAt
NTQsMTMgKzU0LDEyIEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmlu
ZyBmb3JtYXQsIC4uLikKICNpZiBVU0UoQ0YpCiAgICAgdmFfbGlzdCBhcmd1bWVudHM7CiAgICAg
dmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Zm9ybWF0Q0ZTdHJpbmcoQWRvcHRDRiwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkpOwogCiAjaWYg
Q09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCiAjZW5kaWYKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdp
dGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0Q0ZTdHJpbmcuZ2V0KCksIGFyZ3VtZW50
cykpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGFyZ3VtZW50cykpOwogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCkBAIC0yNjAsNyArMjU5LDcgQEAgU3RyaW5nIGNvbnRl
eHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3Ry
aW5nKQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJMb29rIFVwIGluIERpY3Rpb25hcnkiLCAi
TG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQgbWVudSBpdGVtIik7CiAjZWxzZQogI2lmIFVT
RShDRikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJpbmcoQWRvcHRD
RiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0
ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2VsZWN0ZWRDRlN0cmlu
ZyA9IHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVh
dGVDRlN0cmluZygpOwogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NU
UklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGgg
c2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKICNlbHNlCiAgICAgcmV0
dXJuIFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAiTG9vayBVcCBj
b250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8c2VsZWN0aW9u
PiIsIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKSk7CkBA
IC03MzgsOCArNzM3LDcgQEAgU3RyaW5nIGtleWdlbk1lbnVJdGVtMjA0OCgpCiAKIFN0cmluZyBr
ZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRlN0cmluZyhBZG9wdENGLCBob3N0LmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiS2V5
IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4g
dGFnIiksIGhvc3RDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0
cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtleWNoYWluIGtleSBn
ZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdC5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKIH0KIAogI2VuZGlmCkBAIC03NjIsOCArNzYwLDcgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICNpZiBVU0UoQ0Yp
CiAjaWYgIVBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwNjAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpbGVu
YW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0
YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5Q3VycmVudCgp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVD
b3B5Q3VycmVudCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJGb3JtYXR0ZXJSZWY+IGZvcm1h
dHRlcihBZG9wdENGLCBDRk51bWJlckZvcm1hdHRlckNyZWF0ZSgwLCBsb2NhbGUuZ2V0KCksIGtD
Rk51bWJlckZvcm1hdHRlckRlY2ltYWxTdHlsZSkpOwogCiAgICAgaW50IHdpZHRoSW50ID0gc2l6
ZS53aWR0aCgpOwpAQCAtNzc0LDcgKzc3MSw3IEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgUmV0YWluUHRyPENGTnVt
YmVyUmVmPiBoZWlnaHQoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlw
ZSwgJmhlaWdodEludCkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaGVpZ2h0U3RyaW5n
KEFkb3B0Q0YsIENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlU3RyaW5nV2l0aE51bWJlcigwLCBmb3Jt
YXR0ZXIuZ2V0KCksIGhlaWdodC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBm
b3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgp
IiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJp
bmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklO
RygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFn
ZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsK
ICNlbHNlCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNGU3RyaW5nKEFkb3B0
Q0YsIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6
ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUg
Zm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4
KSIpLCBmaWxlbmFtZUNGU3RyaW5nLmdldCgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5jcHAKaW5kZXggMWI4ZDAwNmYyNTE5YWE4YThmM2E4YzQ1MGVmZDI3MzQxOGFmNDI4NC4u
YTM3YzNlZmU5ZThmNjUyYWU1MTJhN2EyZTBjOGEyODlhNzhlODc4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCkBAIC00
Niw3ICs0Niw3IEBAIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc0VxdWFsVG8oY29uc3QgU3RyaW5n
JiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQogICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVJ
ZGVudGlmaWVyVG9Db21wYXJlKEFkb3B0Q0YsIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVJZGVudGlmaWVy
VG9Db21wYXJlKEFkb3B0Q0YsIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZShidW5kbGVJZGVudGlmaWVyLCBi
dW5kbGVJZGVudGlmaWVyVG9Db21wYXJlLmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKaW5kZXggOGVmNTBlZWIwY2Iw
ODRkMWI5YjIzYjg3YzNiZmE4OTgzOTJiOGEyZC4uYzE4NzA2NjMzNTY1MDU1NzlhZmQ3YjYxYWMx
NzM5MDQwNjQ0ZjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmls
ZVN5c3RlbUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVt
Q0YuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1N0cmluZyBm
aWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmluZygp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVhdGVDRlN0
cmluZygpOwogCiAgICAgaWYgKCFjZlN0cmluZykKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsK
QEAgLTYzLDggKzYzLDcgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29uc3QgU3Ry
aW5nJiBwYXRoKQogI2Vsc2UKICAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsK
ICNlbmRpZgotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0Q0YsIENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4o
QWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmluZygpKS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkp
OworICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0
aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0aFN0eWxl
LCBGQUxTRSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDIx
ZTlkYjRjMjhkOWEyNTUxMzUyMGFjZTcwODQwM2FjNWU3N2FiOTMuLjQxNzEzMmJjOTdmMDY4MGNh
ZWQ3ODU1YmI4MjIwYTI2MWE3NzFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zNzcsOCArMzc3LDcgQEAg
c3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHV0aUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlQ0ZTdHJp
bmcoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmll
ckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZUNGU3RyaW5nLmdldCgpLCAwKSk7
CisgICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dN
YWMubW0KaW5kZXggYmQ1MGEzMTc1ZjNiNDI1YTg4MjZjZDJhNTZhNjJlMjE5MzY5NjMzNy4uNjA5
OTUzOGI2ZThjYTFiNjM2ZDA3NmZjY2ViNTdlYmQ3NjA4YzgwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBA
IC0zMywxNSArMzMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgTUlNRVR5cGVG
b3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1dGlyZWYoQWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZShBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFn
V2l0aENsYXNzKHV0aXJlZi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbWltZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dp
dGhDbGFzcyh1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkp
OwogICAgIHJldHVybiBtaW1lLmdldCgpOwogfQogCiBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9u
Rm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQogewotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdHlwZShBZG9wdENGLCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24oQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJl
ZFRhZ1dpdGhDbGFzcyh0eXBlLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24gPSBhZG9wdENGKFVUVHlwZUNv
cHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRh
Z0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKICAgICByZXR1cm4gZXh0ZW5zaW9uLmdldCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29t
cGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KaW5kZXggNGNiODc2
YzM2NWVjOWRkNzE2MGExZDJmZGUwOWU3ZjMyZjAwYmFjOS4uNTdmNzBmZmYyOGU3NGY2ZmUxNTc3
ODczNWNiMDMyMDQ3YWEzMTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5tbQpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpj
b2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2NvbXBsZXhUZXh0UnVucy5hcHBlbmQoQ29tcGxleFRleHRS
dW46OmNyZWF0ZShtX2ZvbnQucHJpbWFyeUZvbnQoKSwgY3AsIHN0cmluZ0xvY2F0aW9uICsgcnVu
UmFuZ2UubG9jYXRpb24sIHJ1blJhbmdlLmxlbmd0aCwgbV9ydW4ubHRyKCkpKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIHJ1bkZvbnREYXRhID0gZm9udENhY2hlKCktPmdldENhY2hlZEZvbnREYXRh
KG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgZm9udE5hbWUuZ2V0KCksIGZhbHNlLCBGb250Q2Fj
aGU6OkRvTm90UmV0YWluKS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuRm9udERhdGEg
PSBmb250Q2FjaGUoKS0+Z2V0Q2FjaGVkRm9udERhdGEobV9mb250LmZvbnREZXNjcmlwdGlvbigp
LCBTdHJpbmcoZm9udE5hbWUuZ2V0KCkpLCBmYWxzZSwgRm9udENhY2hlOjpEb05vdFJldGFpbiku
Z2V0KCk7CiAjaWYgIVBMQVRGT1JNKFdYKQogICAgICAgICAgICAgICAgICAgICAvLyBDb3JlIFRl
eHQgbWF5IGhhdmUgdXNlZCBhIGZvbnQgdGhhdCBpcyBub3Qga25vd24gdG8gTlNGb250TWFuYWdl
ci4gSW4gdGhhdCBjYXNlLCBmYWxsIGJhY2sgb24KICAgICAgICAgICAgICAgICAgICAgLy8gdXNp
bmcgdGhlIGZvbnQgYXMgcmV0dXJuZWQsIGV2ZW4gdGhvdWdoIGl0IG1heSBub3QgaGF2ZSB0aGUg
YmVzdCBOU0ZvbnRSZW5kZXJpbmdNb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9D
bGlwYm9hcmRNYWMubW0KaW5kZXggYmQ4ODAyMDQ0MWIwZTlhZTAwYmFkYWYzNmIyZjRmNWE2YTZi
ZWFlNy4uMzA2NmFkNzA5ZDYxZmY1M2M5MmJjMTJhNGJkYTcxYTEyZTY0NmY5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC05OSw3ICs5OSw3IEBA
IHN0YXRpYyBTdHJpbmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKIAogICAgIC8vIFRyeSBVVEkgbm93CiAgICAgU3RyaW5nIG1pbWVUeXBlID0gcVR5
cGU7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0Q0YsIFVUVHlwZUNy
ZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5
cGUuY3JlYXRlQ0ZTdHJpbmcoKSwgTlVMTCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dXRpVHlwZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtV
VFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwp
KTsKICAgICBpZiAodXRpVHlwZSkgewogICAgICAgICBDRlN0cmluZ1JlZiBwYlR5cGUgPSBVVFR5
cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQ
Ym9hcmRUeXBlKTsKICAgICAgICAgaWYgKHBiVHlwZSkKQEAgLTExMiwxMSArMTEyLDggQEAgc3Rh
dGljIFN0cmluZyBjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKQogCiBzdGF0aWMgU3RyaW5nIHV0aVR5cGVGcm9tQ29jb2FUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGVDRiA9IGFkb3B0Q0YodHlw
ZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aVR5cGUo
QWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFz
c05TUGJvYXJkVHlwZSwgdHlwZUNGLmdldCgpLCAwKSk7Ci0gICAgaWYgKHV0aVR5cGUpIHsKLSAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUp
KTsKLSAgICAgICAgaWYgKG1pbWVUeXBlKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHV0aVR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWco
a1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUsIHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkp
KSB7CisgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gYWRvcHRD
RihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0Ns
YXNzTUlNRVR5cGUpKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcobWltZVR5cGUuZ2V0KCkp
OwogICAgIH0KICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwCmluZGV4IDBhMWE0ZDhjNzUxNGRhOTEz
NzM5YmU1ZTM0NDZkNDk3ZDk1YTQ3OGIuLjcxYWIxZDZkMDdjMmMxNWJmZWUzNThmYjAyOWFjOWIx
ZDcwZWI3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlH
ZW5lcmF0b3JNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlH
ZW5lcmF0b3JNYWMuY3BwCkBAIC02MCw5ICs2MCw4IEBAIFN0cmluZyBzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNo
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNoYWxsZW5nZVN0cmluZ0NGKEFkb3B0Q0YsIGNoYWxsZW5nZVN0cmluZy5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleURlc2NyaXB0aW9uKEFk
b3B0Q0YsIGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwgd2tTaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlU3RyaW5nQ0YuZ2V0
KCksIGtleURlc2NyaXB0aW9uLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBr
ZXlEZXNjcmlwdGlvbiA9IGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRl
Q0ZTdHJpbmcoKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCB3
a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJp
bmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga2V5RGVzY3JpcHRpb24uZ2V0KCkpKTsKIAogICAg
IHJldHVybiByZXN1bHQuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDNmOTAxYTU0MWRlMDBlZWJlYzI0MzIyZDA0Mzk2
ZWU0YTIyMDVmYjYuLmM2Yjc4Y2Y2MWM3ZjM3MzA3NGIzNjgyOTUwNjE0OWQzNTE1Zjc4ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCkBA
IC05MCw4ICs5MCw3IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0bmFtZUNGKEFkb3B0Q0YsIGhvc3RuYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QoQWRvcHRDRiwg
Q0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWVDRi5nZXQoKSkpOworICAgIFJldGFpblB0
cjxDRkhvc3RSZWY+IGhvc3QoQWRvcHRDRiwgQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgIGlmICghaG9zdCkgewogICAgICAgICBk
ZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5j
cHAKaW5kZXggMDFlOGI4YWU1YzBkMWM2YTZhOGYwMzMwODVlOTBmMDEwYmMxZjdjNi4uZjU3YTdl
ZWExYjkwYTExY2U2NDE2ZGNiMTAwZWRkN2MyMDcyMzFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
CkBAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5n
IGJhc2UgPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNO
dWxsKCkgPyBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJEZWZhdWx0QmFz
ZSgpIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyKEFkb3B0Q0YsIFN0cmluZyhiYXNl
ICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3Np
bmciKS5jcmVhdGVDRlN0cmluZygpOwogCiAgICAgcHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKCkgPSBj
cmVhdGVQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAppbmRleCBkODZjNzZiYzZmNDVjMTgxNjQ4ZTBh
Nzc2Y2QzOWJhZTg5MDg0MGQ2Li40YTdjZDkwMmFlOWYwMjg3ZDg5OGQ5MmJkOTg1ZGQ3NjZkNDJh
MTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKCkKICAgICBpZiAobV9jb25uZWN0
aW9uVHlwZSA9PSBVbmtub3duKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGhvc3QoQWRvcHRDRiwgbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwor
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdCA9IG1fdXJsLmhvc3QoKS5jcmVhdGVDRlN0
cmluZygpOwogCiAgICAgLy8gQ3JlYXRpbmcgc3RyZWFtcyB0byBmaW5hbCBkZXN0aW5hdGlvbiwg
bm90IHRvIHByb3h5LgogICAgIENGUmVhZFN0cmVhbVJlZiByZWFkU3RyZWFtID0gMDsKQEAgLTM1
OSwxMiArMzU5LDEwIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGVu
dGlhbHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogICAgIFN0cmluZyBwYXNzd29y
ZDsKICAgICBpZiAoIW1fc2VudFN0b3JlZENyZWRlbnRpYWxzICYmIGdldFN0b3JlZENPTk5FQ1RQ
cm94eUNyZWRlbnRpYWxzKHByb3RlY3Rpb25TcGFjZSwgbG9naW4sIHBhc3N3b3JkKSkgewogICAg
ICAgICAvLyBUcnkgdG8gYXBwbHkgc3RvcmVkIGNyZWRlbnRpYWxzLCBpZiB3ZSBoYXZlbid0IHRy
aWVkIHRob3NlIGFscmVhZHkuCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9naW5D
RihBZG9wdENGLCBsb2dpbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBwYXNzd29yZENGKEFkb3B0Q0YsIHBhc3N3b3JkLmNyZWF0ZUNGU3RyaW5nKCkp
OwotICAgICAgICAvLyBDcmVhdGluZyBhIHRlbXBvcmFyeSByZXF1ZXN0IHRvIG1ha2UgQ0ZOZXR3
b3JrIGFwcGx5IGNyZWRlbnRpYWxzIHRvIGl0LiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGNhbm5vdCB3
b3JrIHdpdGggTlRMTSBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9y
YXJ5IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkgY3JlZGVudGlhbHMgdG8gaXQuIFVu
Zm9ydHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0aCBOVExNIGF1dGhlbnRpY2F0aW9uLgog
ICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gZHVtbXlSZXF1ZXN0KEFkb3B0Q0Ys
IENGSFRUUE1lc3NhZ2VDcmVhdGVSZXF1ZXN0KDAsIENGU1RSKCJHRVQiKSwgbV9odHRwc1VSTC5n
ZXQoKSwga0NGSFRUUFZlcnNpb24xXzEpKTsKIAotICAgICAgICBCb29sZWFuIGFwcGxpZWRDcmVk
ZW50aWFscyA9IENGSFRUUE1lc3NhZ2VBcHBseUNyZWRlbnRpYWxzKGR1bW15UmVxdWVzdC5nZXQo
KSwgYXV0aGVudGljYXRpb24uZ2V0KCksIGxvZ2luQ0YuZ2V0KCksIHBhc3N3b3JkQ0YuZ2V0KCks
IDApOworICAgICAgICBCb29sZWFuIGFwcGxpZWRDcmVkZW50aWFscyA9IENGSFRUUE1lc3NhZ2VB
cHBseUNyZWRlbnRpYWxzKGR1bW15UmVxdWVzdC5nZXQoKSwgYXV0aGVudGljYXRpb24uZ2V0KCks
IGxvZ2luLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhc3N3b3JkLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDApOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFwcGxpZWRDcmVkZW50aWFscywgYXBw
bGllZENyZWRlbnRpYWxzKTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByb3h5
QXV0aG9yaXphdGlvblN0cmluZyhBZG9wdENGLCBDRkhUVFBNZXNzYWdlQ29weUhlYWRlckZpZWxk
VmFsdWUoZHVtbXlSZXF1ZXN0LmdldCgpLCBDRlNUUigiUHJveHktQXV0aG9yaXphdGlvbiIpKSk7
CkBAIC0zODksNyArMzg3LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RD
cmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiBDRlN0cmluZ1JlZiBT
b2NrZXRTdHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqIGluZm8pCiB7
CiAgICAgU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxTb2NrZXRTdHJl
YW1IYW5kbGUqPihpbmZvKTsKLSAgICByZXR1cm4gU3RyaW5nKCJXZWJLaXQgc29ja2V0IHN0cmVh
bSwgIiArIGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgcmV0
dXJuIFN0cmluZygiV2ViS2l0IHNvY2tldCBzdHJlYW0sICIgKyBoYW5kbGUtPm1fdXJsLnN0cmlu
ZygpKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKIH0KIAogc3RydWN0IE1haW5UaHJlYWRF
dmVudENhbGxiYWNrSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KaW5kZXggOTMyMTZjYjU1ZTg1Nzcz
MTM2ZjNlOGMzYTA3Y2U2ZmI1NTZlMDZkMi4uZTY5MzQ4NDgxYWIwYTAyMTM3OTRkYTI0ZWZiY2M0
ZjU2ZGMwMDhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpAQCAtMTYzLDkgKzE2Myw5IEBAIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgICAgIE5TTXV0
YWJsZUFycmF5ICplbmNvZGluZ0ZhbGxiYWNrcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAg
ICAgICAgIHVuc2lnbmVkIGNvdW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
IT0gY291bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZW5jb2RpbmdOYW1lID0g
bV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVh
dGVDRlN0cmluZygpOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuc0VuY29kaW5nID0gQ0ZT
dHJpbmdDb252ZXJ0RW5jb2RpbmdUb05TU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdDb252ZXJ0SUFO
QUNoYXJTZXROYW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUpKTsKLSAgICAgICAgICAgIENGUmVs
ZWFzZShlbmNvZGluZ05hbWUpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBl
bmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFj
a0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5z
RW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRFbmNvZGluZ1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0
cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZS5nZXQoKSkp
OworCiAgICAgICAgICAgICBpZiAobnNFbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFs
aWRJZCkKICAgICAgICAgICAgICAgICBbZW5jb2RpbmdGYWxsYmFja3MgYWRkT2JqZWN0OltOU051
bWJlciBudW1iZXJXaXRoVW5zaWduZWRMb25nOm5zRW5jb2RpbmddXTsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJl
c3BvbnNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVS
TFJlc3BvbnNlLm1tCmluZGV4IDZhYTc2ZjZkZDc4NGRhMDlkN2JmZjdlMWU2ODU1ZTc1Y2FkYWU5
OWMuLmY5NzEwYjJkZDI1MTg0NjIwMTUxMzI0MmY0MGYzYTQxMjY0ZjIyZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVz
cG9uc2UubW0KQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3Nh
cnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogICAgIH0KICAgICAKICAgICBpZiAoIXJl
c3VsdCkgewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5n
ID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAg
c3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IFdlYkNvcmU6OmRlZmF1
bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgICAgICByZXN1bHQg
PSBkZWZhdWx0TUlNRVR5cGVTdHJpbmc7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAppbmRleCA0ZTNmY2VkNDQ0NjQ5YTlj
NWNlZjM2NGVjMDYyZmU4ZGIxODg0ZjA5Li4wZjY2OGQxMGY4ZTQxN2Y1NmVhOTNhMDg1ODEyNGNk
ZjJiYTQxN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5
cGhlbmF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlw
aGVuYXRpb25DRi5jcHAKQEAgLTQ2LDggKzQ2LDcgQEAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBB
dG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4gPjo6Y3JlYXQK
IHRlbXBsYXRlPD4KIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3RyaW5nS2V5ZWRNUlVD
YWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0
b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmTG9jYWxlSWRlbnRpZmllcihBZG9wdENGLCBsb2NhbGVJZGVudGlmaWVyLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlKEFkb3B0Q0YsIENG
TG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNmTG9jYWxlSWRlbnRpZmllci5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2Fs
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsb2NhbGVJZGVudGlmaWVyLmltcGwoKS0+Y3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlv
bkF2YWlsYWJsZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogMDsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKaW5kZXggZDdjZGE3OTYy
OTg2MjU3M2EzNWM2YTkyNjg1NzUyMzA1YWI2YzI3ZS4uMjY5N2U3NmYwYmY1OTIzYjE1MmZlZGQ3
MTAzN2U5NzExNDkyNmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9jZi9TdHJpbmdDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9T
dHJpbmdDRi5jcHAKQEAgLTIzLDggKzIzLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogI2lmIFVTRShDRikKLQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsK
IApAQCAtNTEsNyArNTEsNyBAQCBTdHJpbmc6OlN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiAgICAg
fQogfQogCi1DRlN0cmluZ1JlZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKK1JldGFp
blB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2ltcGwpCiAgICAgICAgIHJldHVybiBDRlNUUigiIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggN2EyZDgyZTQwMmQy
NGIzN2JiYzA3MWY0N2Y5OGUwYTg2NTE4NDkyMS4uMWRhNTYxYjYwNjJiY2FiNDllMDliZmU3OTc4
MmIyNzNmMGRhMDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9j
Zi9TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2Yv
U3RyaW5nSW1wbENGLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMzIsNyArMTMz
LDcgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAKIH0KIAotQ0ZTdHJp
bmdSZWYgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQorUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiB7CiAgICAgaWYgKCFtX2xlbmd0aCB8fCAh
aXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgaWYgKGlzOEJpdCgpKQpAQCAtMTUzLDcgKzE1NCw3
IEBAIENGU3RyaW5nUmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKICAgICAvLyBDb3Jl
Rm91bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIg
Y3VycmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAg
IFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IDA7CiAKLSAgICByZXR1
cm4gc3RyaW5nOworICAgIHJldHVybiBhZG9wdENGKHN0cmluZyk7CiB9CiAKIC8vIE9uIFN0cmlu
Z0ltcGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0aGUgU3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KaW5kZXggNmY1ZTk1M2JhMTkyNWU1NDViYmI1YWM1M2Uy
MTQ3NmJiOGYwM2E1Ny4uMmYwODhhN2ViMzYzYzVhY2QwMTQyZjM4NzA5NWI5NjJjMTgxNmE2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFj
Lm1tCkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+
CiAKICNpbmNsdWRlICJGb3VuZGF0aW9uRXh0cmFzLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcg
KigpCiB7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpKTsKKyAg
ICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENv
ZGVjTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01h
Yy5jcHAKaW5kZXggMzEyNDEyZmFhYjhhYzIzNjI4NjUwM2RhY2E1YTkyOGJlYmQ0Mzk2Ni4uYTcw
NDc0OTUyMGZkZDMyZDRlMWUwMGZjZmMwZGVhZjM4N2NiYTlkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCkBAIC0yODQsNyArMjg0
LDcgQEAgQ1N0cmluZyBUZXh0Q29kZWNNYWM6OmVuY29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVy
cywgc2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGUKICAgICAvLyBFbmNvZGluZyB3aWxsIGNoYW5n
ZSB0aGUgeWVuIHNpZ24gYmFjayBpbnRvIGEgYmFja3NsYXNoLgogICAgIFN0cmluZyBjb3B5KGNo
YXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgY29weS5yZXBsYWNlKCdcXCcsIG1fYmFja3NsYXNoQXND
dXJyZW5jeVN5bWJvbCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMoQWRvcHRDRiwg
Y29weS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmcyA9
IGNvcHkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIENGSW5kZXggc3RhcnRQb3MgPSAwOwogICAg
IENGSW5kZXggY2hhcmFjdGVyc0xlZnQgPSBDRlN0cmluZ0dldExlbmd0aChjZnMuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudENGLmNwcAppbmRleCA4Mzc0N2YyMjM1NTZhNmFjMmFhMTY4OWRmZGZhYzFmMWVmMTdj
NDc3Li5hNWUzODc5NjZlZWI5ODZlY2QyYjlmZDU5NTNkODNhYjQ5YzZlMDVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcApAQCAtNjMsMTUgKzYzLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBz
dGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkIjsKIAotc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBjcmVhdGVL
ZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKK3N0YXRpYyBpbmxpbmUgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtl
eSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleUNGU3RyaW5nKEFkb3B0Q0YsIGtl
eS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0
KDAsIDAsIENGU1RSKCJXZWJLaXQgV2ViIEluc3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5Q0ZT
dHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1h
dCgwLCAwLCBDRlNUUigiV2ViS2l0IFdlYiBJbnNwZWN0b3IgU2V0dGluZyAtICVAIiksIGtleS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5j
ZXMoa2V5KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleSA9IGNy
ZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSk7CiAgICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0
UmVmPiB2YWx1ZShBZG9wdENGLCBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKHByZWZlcmVuY2Vz
S2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbikpOwogCiAgICAgaWYg
KCF2YWx1ZSkKQEAgLTg4LDExICs4NywxMCBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNldHRpbmco
Y29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogc2V0dGluZykKIAogc3RhdGljIHZvaWQgc3RvcmVT
ZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCiB7Ci0gICAg
UmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiBvYmplY3RUb1N0b3JlOwotICAgIG9iamVjdFRv
U3RvcmUuYWRvcHRDRihzZXR0aW5nLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxD
RlByb3BlcnR5TGlzdFJlZj4gb2JqZWN0VG9TdG9yZSA9IHNldHRpbmcuY3JlYXRlQ0ZTdHJpbmco
KTsKICAgICBBU1NFUlQob2JqZWN0VG9TdG9yZSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSkp
OworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkgPSBjcmVhdGVLZXlG
b3JQcmVmZXJlbmNlcyhrZXkpOwogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShwcmVmZXJl
bmNlc0tleS5nZXQoKSwgb2JqZWN0VG9TdG9yZS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50
QXBwbGljYXRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9t
YWMvTW9kdWxlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5t
bQppbmRleCA0YTM1YjZhMmQ4YTMyYzVkZDgzNDk3MmNkMmZkZjJhZGMzOTFlNjFhLi5mNjNiYjIz
MzEwODBjZTA5ZTY4ODBiODNiMWE5OGMxNmRjYjdhOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL21hYy9Nb2R1bGVNYWMubW0KQEAgLTMwLDggKzMwLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1
bmRsZVBhdGgoQWRvcHRDRiwgbV9wYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0
aFN0eWxlLCBGQUxTRSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0
Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1f
cGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0Up
KTsKICAgICBpZiAoIWJ1bmRsZVVSTCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1t
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpp
bmRleCBkZTdkNTgzMWY2MDhjMzgzMGUzYzliZTE0YjM5NDY1ZWIyYzcxYzNiLi42NzFmMjBkNmRj
YWJlMWZjMWJhMzk1NTdkNWU2MjhlZTdlZDdlZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTI3OSw4ICsyNzks
NyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgsIGNvbnN0IFN0cmluZyYgc2FuZGJveFBybwogICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVj
dG9yeVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNmUGx1Z2luUGF0aCA9IGFkb3B0Q0YocGx1Z2luUGF0aC5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQbHVnaW5QYXRoLmdldCgpLCBrQ0ZVUkxQT1NJ
WFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9
IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGx1Z2luUGF0aC5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBp
ZiAoIXBsdWdpblVSTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTIsOCArMjkxLDcgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25z
dCBTdHJpbmcmIHNhbmRib3hQcm8KICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTYW5kYm94UHJvZmlsZURp
cmVjdG9yeVBhdGggPSBhZG9wdENGKHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0
b3J5ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlNhbmRib3hQ
cm9maWxlRGlyZWN0b3J5UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRD
RihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzYW5kYm94UHJvZmlsZURpcmVjdG9y
eVBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUp
KTsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZTdHJp
bmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlmaWVy
KTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoUmVsYXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1lLmdl
dCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5
LmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXgg
ODFiMzhlMGVjOGZlM2M0MTg4OTc5ZWVmZDA2MjI3YjM3MGZkNGEzZS4uOTVkM2VmNzY3YmQyYzFj
Yjc4YWIxNjRiYjYzNTYzYjNjN2VkOTA4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdp
bk1vZHVsZU1hYy5tbQpAQCAtMzUyLDggKzM1Miw3IEBAIHN0YXRpYyBib29sIGdldFBsdWdpbklu
Zm9Gcm9tQ2FyYm9uUmVzb3VyY2VzKENGQnVuZGxlUmVmIGJ1bmRsZSwgUGx1Z2luTW9kdWxlSW5m
CiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0aC5n
ZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJM
UmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZV
UkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlhbGl6
ZSB0aGUgYnVuZGxlLgogICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0Ys
IENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOwpA
QCAtMzk1LDggKzM5NCw3IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbklu
Zm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJCiAKIGJvb2wgTmV0c2Nh
cGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZlcmVuY2VzKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBh
dGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhT
dHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENG
LCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwbHVn
aW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxz
ZSkpOwogICAgIAogICAgIC8vIFRyeSB0byBpbml0aWFsaXplIHRoZSBidW5kbGUuCiAgICAgUmV0
YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUoQWRvcHRDRiwgQ0ZCdW5kbGVDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAppbmRleCBjZGZmMzQ0Njlh
MjM5M2QzNWFkYmFiYzRjYjBhMzhiYTBmNTYyMzI0Li43YzFmMjQwZWNjNDhiOGI0YzE5MTNlMDU0
YzU4YWIzYTQ4YTJiNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Yv
V2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
Zi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKQEAgLTk0LDkgKzk0LDkgQEAgQ0ZEaWN0aW9uYXJ5
UmVmIFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24o
V2ViUGFnZVByb3gKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybChBZG9wdENGLCBtX2VudHJpZXNbaV0t
PnVybCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHRpdGxlKEFkb3B0Q0YsIG1fZW50cmllc1tpXS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBvcmlnaW5hbFVSTChBZG9wdENGLCBtX2Vu
dHJpZXNbaV0tPm9yaWdpbmFsVVJMKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXJsID0gbV9lbnRyaWVzW2ldLT51cmwoKS5jcmVhdGVDRlN0cmlu
ZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlID0gbV9lbnRyaWVzW2ld
LT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gb3JpZ2luYWxVUkwgPSBtX2VudHJpZXNbaV0tPm9yaWdpbmFsVVJMKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyB1c2VzIHRoZSBDb3JlSVBDIGRhdGEgZW5j
b2RpbmcgZm9ybWF0LCB3aGljaCBtZWFucyB0aGF0IHdoZW5ldmVyIHdlIGNoYW5nZSB0aGUgQ29y
ZUlQQyBlbmNvZGluZyB3ZSBuZWVkIHRvIGJ1bXAgdGhlIEN1cnJlbnRTZXNzaW9uU3RhdGVEYXRh
VmVyc2lvbgogICAgICAgICAvLyBjb25zdGFudCBpbiBXZWJQYWdlUHJveHlDRi5jcHAuIFRoZSBD
b3JlSVBDIGRhdGEgZm9ybWF0IGlzIG1lYW50IHRvIGJlIGFuIGltcGxlbWVudGF0aW9uIGRldGFp
bCwgYW5kIG5vdCBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgd3JpdHRlbiB0byBkaXNrLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKaW5kZXggNzlk
ZDhjZWQwMmQ3Y2UwZDRmM2MyNDA0ODE4YjgwMWJlNDBmMWY3YS4uZmFjMDJjMWI0NjkwZjEyMzZl
OWFhNzhkYWNhNDkyYjFjNDI2M2ExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Y2YvV2ViUGFnZVByb3h5Q0YuY3BwCkBAIC02NSw3ICs2NSw3IEBAIFBhc3NSZWZQdHI8V2ViRGF0
YT4gV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGVEYXRhKFdlYlBhZ2VQcm94eVNlc3Npb25TdGF0
ZUZpbHRlCiAgICAgICAgIGlmIChwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBwcm92aXNpb25hbFVSTCA9IG1fbWFpbkZyYW1lLT5wcm92aXNpb25hbFVSTCgpOwogICAgICAg
ICBpZiAoIXByb3Zpc2lvbmFsVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcHJvdmlzaW9u
YWxVUkxTdHJpbmcuYWRvcHRDRihwcm92aXNpb25hbFVSTC5jcmVhdGVDRlN0cmluZygpKTsKKyAg
ICAgICAgICAgIHByb3Zpc2lvbmFsVVJMU3RyaW5nID0gcHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZT
dHJpbmcoKTsKICAgICAgICAgICAgIGtleXNbbnVtVmFsdWVzXSA9IFByb3Zpc2lvbmFsVVJMS2V5
KCk7CiAgICAgICAgICAgICB2YWx1ZXNbbnVtVmFsdWVzXSA9IHByb3Zpc2lvbmFsVVJMU3RyaW5n
LmdldCgpOwogICAgICAgICAgICAgKytudW1WYWx1ZXM7CkBAIC0xNzksOCArMTc5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YShXZWJEYXRhKiB3ZWJE
YXRhKQogCiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBT
dHJpbmcmIG5hbWUpCiB7Ci0gICAgU3RyaW5nIGtleSA9ICJjb20uYXBwbGUuV2ViS2l0LnNlYXJj
aEZpZWxkOiIgKyBuYW1lOwotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0
Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICByZXR1cm4gU3RyaW5nKCJjb20uYXBwbGUu
V2ViS2l0LnNlYXJjaEZpZWxkOiIgKyBuYW1lKS5jcmVhdGVDRlN0cmluZygpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQpAQCAtMTkyLDEwICsxOTEsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mCiAKICAgICBpZiAoc2l6ZV90IHNpemUgPSBzZWFyY2hJdGVtcy5z
aXplKCkpIHsKICAgICAgICAgaXRlbXMuYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBz
aXplLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGl0
ZW0oQWRvcHRDRiwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAg
ICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIGl0ZW0uZ2V0KCkpOwotICAgICAgICB9
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKICAgICB9CiAKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoYXV0
b3NhdmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRB
cHBsaWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291
cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA2
ODEwZjBhYmRiOWRiZWJhOTlmYTNlMWU5YjBmMDZjZTQ1YWUwNDk0Li4zOTU2NDljNTBiZjRkNmRm
MDRiYzc1NDBiNTRiYWY1OWRiMmMzNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFu
YWdlci5jcHAKQEAgLTExOCw4ICsxMTgsNyBAQCB2b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
OjpjbGVhckNhY2hlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5EYXRhLAogI2lm
IFVTRShDRlVSTENBQ0hFKQogICAgIGlmIChyZXNvdXJjZUNhY2hlc1RvQ2xlYXIgIT0gSW5NZW1v
cnlSZXNvdXJjZUNhY2hlc09ubHkpIHsgCiAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJh
eVJlZj4gaG9zdEFycmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0
KEFkb3B0Q0YsIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkFy
cmF5QXBwZW5kVmFsdWUoaG9zdEFycmF5LmdldCgpLCBob3N0LmdldCgpKTsKKyAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwgb3JpZ2luLT5ob3N0KCkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAKICAgICAgICAgY2xlYXJDRlVSTENhY2hlRm9ySG9zdE5hbWVzKGhv
c3RBcnJheS5nZXQoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170764</attachid>
            <date>2012-10-25 16:30:20 -0700</date>
            <delta_ts>2012-10-25 18:29:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121025162853.patch</filename>
            <type>text/plain</type>
            <size>63147</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNmMGI4Njg5ZjdhOTdiYjdlNWRmYTM3
ZWM2MzI0MGNmMGU5MjBmYzAuLmRmZmQwODE4ZDI3NWVkYzdhNmViZDAxNTk0ODI2ODBkZGZiNTY4
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuaDoKKyAgICAgICAgKFN0cmluZyk6CisKIDIwMTItMDktMjcgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJv
dmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGZvciBMaXN0SGFzaFNldApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGFjM2FmNmI3OWY2ZjgzZjhlZmE1NjMwMTgzMDAzODFiZjg3NjFlMGMuLjkwMzQ2ZDdkMWJjODZh
NTk5NTNhNTYwMGI1NDY3ZWU5ZGQzY2JkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAor
MjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxl
cnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tP
YmplY3QpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChX
ZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdl
VGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0dNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZvckltYWdlU291cmNl
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJj
ZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxl
cjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9t
SFRNTENsaXBib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21Db2NvYVR5
cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6
OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NG
LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5n
SW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcg
Kik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZW5jb2RlKToKKwogMjAxMi0xMC0yNSAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBpbnNwZWN0b3IgdGVzdHMgZmFpbGluZyBhZnRlciByMTMyNDU0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCmluZGV4
IDU4NjNlOTJmNGZmYmVlNDBmMjRlZWY5NTJiM2EwNzUwN2Q0MmVjYzUuLjZlMGFlZDVmZmE1NmU3
MWYyYjA1NjI5M2ZmY2ZjMGVlMDU5YTVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2Yv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBj
YWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChjcmVhdGVLZXlGb3JQcmVm
ZXJlbmNlcyk6CisgICAgICAgIChwb3B1bGF0ZVNldHRpbmcpOgorICAgICAgICAoc3RvcmVTZXR0
aW5nKToKKwogMjAxMi0wOS0wNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFBhcnQgMiBvZiByZW1vdmluZyBQbGF0Zm9ybVN0cmluZy5oLCByZW1vdmUgUGxhdGZvcm1T
dHJpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDY0ZTNiZDZkNTAwZDk0ZTdhZDYyN2MxNTRjMTU3MWMxNWE3
NGVhZGMuLmY1MGYwMjQzMzk3ZjhhMjgxY2I4ZDA0YTAwNjIwMzM3YzE0ZTg5ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwzMCBAQAogMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJl
dHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAg
ICAgICAqIFBsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok1vZHVs
ZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8pOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTUlNRVR5cGVzUHJl
ZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlQ0ZEaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlD
Ri5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OmF1dG9zYXZlS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUmVzb3Vy
Y2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2luKToKKworMjAxMi0xMC0y
NSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIEFzc2Vy
dGlvbiBmYWlsdXJlIHRyeWluZyB0byBkaXNwYXRjaCBub3RpZmljYXRpb24gbWVzc2FnZXMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDM4NwogICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTI1NzMxOTU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aAppbmRleCA2YWM2MGU2YWQ1NzI0MzM5NzhmNWZiNGI0ODgwYTlmYjQwMTA1YzY2Li43ZGEwZGQ0
ZjNhMDE3MTliNDZjZWE5YjE4OGRiZGZhNWU2OTNjY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmgKQEAgLTEzNywxMCArMTM3LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
cmVtb3ZlKFN0cmluZ0ltcGwqKTsKICAgICAKLSNpZiBVU0UoQ0YpCi0gICAgQXRvbWljU3RyaW5n
KENGU3RyaW5nUmVmIHMpIDogIG1fc3RyaW5nKGFkZChTdHJpbmcocykuaW1wbCgpKSkgeyB9Ci0g
ICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5j
cmVhdGVDRlN0cmluZygpOyB9Ci0jZW5kaWYgICAgCiAjaWZkZWYgX19PQkpDX18KICAgICBBdG9t
aWNTdHJpbmcoTlNTdHJpbmcqIHMpIDogbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7
IH0KICAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAwMDY3YmViZWVkOTBmZjc0MzczMmNkYWFmNTYw
YWFmNTkyMDk4NGVjLi42NzY3NzkwNmRiMDI1MDNlMjE3OTQxNzQzOTYyNDExZmIyMzI2NTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNjcsNiArNjcsNyBAQCBzdHJ1Y3QgQ2hhckJ1
ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3I7CiBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwog
c3RydWN0IFN1YnN0cmluZ1RyYW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9y
OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKIAogZW51bSBUZXh0Q2FzZVNl
bnNpdGl2aXR5IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUgfTsKIApA
QCAtNzEzLDcgKzcxNCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgV1RG
OjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFVTRShDRikKLSAgICBDRlN0cmluZ1JlZiBj
cmVhdGVDRlN0cmluZygpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJp
bmcoKTsKICNlbmRpZgogI2lmZGVmIF9fT0JKQ19fCiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA1MGMwNDhkNjNmM2RjZjFjNTM4NjU1NjZlNDcy
NGYxYTgyNDhmZTA3Li5kNjdhZDMyOTkyYzI0MGYxZTU1MmY2ZWMzZWZjMDgwMDhiM2JhODM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8b2Jq
Yy9vYmpjLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9f
Q0ZTdHJpbmcgKiBDRlN0cmluZ1JlZjsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQpCiBRVF9C
RUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFTdHJpbmc7CkBAIC0zODYsNyArMzgyLDcgQEAgcHVibGlj
OgogCiAjaWYgVVNFKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7Ci0gICAgQ0ZTdHJpbmdS
ZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNy
ZWF0ZUNGU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMmNmMGRiNTYxOGUzODIw
Y2RmNDQ2NDU1ODM0MWY2OTRmNTNkMWZhMy4uYmUyNGZkYjNmZGIxMzdjODBiNmYwYTRmYjg4NzQx
YWIzNDFhNGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMjQ4LDggKzI0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBPYmpjQ2xh
c3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0
Q2xhc3MoKSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChhZG9w
dFB0cihuZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5k
ZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKSk7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAqPihleGVjLT5jYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgbmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lLmdl
dCgpKTsKKyAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVu
dGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5z
dGFuY2UtPmludm9rZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwogICAg
IH0KICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggOTdmZTk1YjNhNDRkNDE4NWUyMTI2ZjZiYjZlZGJlY2Y0MzlmZWVlZS4uNzVkZjk5YWYz
NmJiNjAwMjY3YjlhNzJkNWM5MTU4OTBjNGRjNWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05MTYsOCArOTE2LDcgQEAgc3RhdGljIEtVUkwgY3JlYXRl
RmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgLy8gYXBwIGNhY2hlIG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29k
ZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0Yp
ICYmIFBMQVRGT1JNKFdJTikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGF0aChBZG9w
dENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZV
UkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQYXRoLmdldCgp
LCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gY2ZVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOwog
ICAgIEtVUkwgdXJsKGNmVVJMLmdldCgpKTsKICNlbHNlCiAgICAgS1VSTCB1cmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CmluZGV4IDM1NzZkNjRkZmM0ODJhNDFkNTRlMTNlZmQxOTc4MTYyYjc4MDdhN2YuLmQ3N2Y4NzRi
MDlkYzIwMDliYmVkMDM1MjQxODM1YmZlODZmODhlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MSw4ICs5
MSw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBjZkRh
dGEuZ2V0KCkpOwogICAgIAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwoQWRvcHRDRiwgcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmIChjZlVSTCkKKyAgICBpZiAoUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0
KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVVSTEtleSwgY2ZVUkwuZ2V0KCkpOwogICAgIGVs
c2UgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTlVMTCByZXNv
dXJjZSBVUkwgaXMgaW52YWxpZCAtIHJldHVybmluZyBudWxsIHByb3BlcnR5IGxpc3QiKTsKQEAg
LTEwMSwyMyArMTAwLDE3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAKICAgICAvLyBGcmFt
ZU5hbWUgc2hvdWxkIGJlIGxlZnQgb3V0IGlmIGVtcHR5IGZvciBzdWJyZXNvdXJjZXMsIGJ1dCBh
bHdheXMgaW5jbHVkZWQgZm9yIG1haW4gcmVzb3VyY2VzCiAgICAgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUocmVzb3VyY2UtPmZyYW1lTmFtZSgpKTsKLSAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5
KCkgfHwgaXNNYWluUmVzb3VyY2UpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZkZyYW1lTmFtZShBZG9wdENGLCBmcmFtZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRnJhbWVOYW1lS2V5LCBjZkZyYW1lTmFtZS5nZXQoKSk7Ci0gICAgfQorICAgIGlm
ICghZnJhbWVOYW1lLmlzRW1wdHkoKSB8fCBpc01haW5SZXNvdXJjZSkKKyAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VGcmFtZU5hbWVLZXksIGZyYW1lTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAK
ICAgICAvLyBTZXQgTUlNRVR5cGUsIFRleHRFbmNvZGluZ05hbWUsIGFuZCBSZXNvdXJjZVJlc3Bv
bnNlIG9ubHkgaWYgdGhleSBhY3R1YWxseSBleGlzdAogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUocmVzb3VyY2UtPm1pbWVUeXBlKCkpOwotICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZNSU1FVHlwZShBZG9wdENGLCBtaW1l
VHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJv
cGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtleSwgY2ZN
SU1FVHlwZS5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZU1JTUVUeXBlS2V5LCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKICAgICAKICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyhyZXNvdXJjZS0+dGV4dEVu
Y29kaW5nKCkpOwotICAgIGlmICghdGV4dEVuY29kaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVGV4dEVuY29kaW5nKEFkb3B0Q0YsIHRleHRFbmNvZGlu
Zy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5
LCBjZlRleHRFbmNvZGluZy5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghdGV4dEVuY29kaW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgp
LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5LCB0ZXh0RW5jb2Rp
bmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSBy
ZXNvdXJjZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJl
c291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CmluZGV4IGFiZjFiY2E1ZTg1NDEwYmE4N2Q1Y2FiODI1MDBkOTY5ZjEwOTI2YTcuLjY5MDg0M2Ix
Mzc3ODM0ODI4MGVjN2VhNWI0MzczODhlOWRkYzY0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC01NCwxMyArNTQsMTIgQEAgc3RhdGljIFN0
cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogI2lmIFVTRShD
RikKICAgICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1h
dCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb3JtYXRDRlN0cmluZyhBZG9wdENGLCBm
b3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdmb3JtYXQtbm9ubGl0ZXJhbCIKICNlbmRpZgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
cmVzdWx0KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cygwLCAw
LCBmb3JtYXRDRlN0cmluZy5nZXQoKSwgYXJndW1lbnRzKSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3Vt
ZW50cygwLCAwLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXJndW1lbnRzKSk7CiAj
aWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYK
QEAgLTI2MCw3ICsyNTksNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0
aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiAgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIsICJMb29rIFVwIGluIERpY3Rpb25hcnkgY29u
dGV4dCBtZW51IGl0ZW0iKTsKICNlbHNlCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc2VsZWN0ZWRDRlN0cmluZyhBZG9wdENGLCB0cnVuY2F0ZWRTdHJpbmdGb3JMb29r
dXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBzZWxlY3RlZENGU3RyaW5nID0gdHJ1bmNhdGVkU3RyaW5nRm9yTG9v
a3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnCVA4oCdIiwg
Ikxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVk
Q0ZTdHJpbmcuZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBV
cCDigJw8c2VsZWN0aW9uPuKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2Vs
ZWN0ZWQgd29yZCIpLnJlcGxhY2UoIjxzZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9v
a3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpKTsKQEAgLTczOCw4ICs3MzcsNyBAQCBTdHJpbmcg
a2V5Z2VuTWVudUl0ZW0yMDQ4KCkKIAogU3RyaW5nIGtleWdlbktleWNoYWluSXRlbU5hbWUoY29u
c3QgU3RyaW5nJiBob3N0KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdENGU3Ry
aW5nKEFkb3B0Q0YsIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtleWNo
YWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdENGU3RyaW5nLmdldCgp
KTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBm
cm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRh
ZyIpLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiAjZW5kaWYKQEAgLTc2Miw4
ICs3NjAsNyBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBJbnRTaXplJiBzaXplKQogewogI2lmIFVTRShDRikKICNpZiAhUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBmaWxl
bmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2Fs
ZShBZG9wdENGLCBDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgIFJldGFpblB0cjxDRkxvY2Fs
ZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOwogICAgIFJldGFp
blB0cjxDRk51bWJlckZvcm1hdHRlclJlZj4gZm9ybWF0dGVyKEFkb3B0Q0YsIENGTnVtYmVyRm9y
bWF0dGVyQ3JlYXRlKDAsIGxvY2FsZS5nZXQoKSwga0NGTnVtYmVyRm9ybWF0dGVyRGVjaW1hbFN0
eWxlKSk7CiAKICAgICBpbnQgd2lkdGhJbnQgPSBzaXplLndpZHRoKCk7CkBAIC03NzQsNyArNzcx
LDcgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGhlaWdodChBZG9wdENGLCBD
Rk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaGVpZ2h0SW50KSk7CiAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBoZWlnaHRTdHJpbmcoQWRvcHRDRiwgQ0ZOdW1iZXJGb3JtYXR0
ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1hdHRlci5nZXQoKSwgaGVpZ2h0LmdldCgp
KSk7CiAKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVA
ICVAw5clQCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVz
ZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmluZy5nZXQo
KSwgd2lkdGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndp
bmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5
bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3Ry
aW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJp
bmcoKSk7CiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIl
QCAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1
c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0
KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAppbmRleCAxYjhkMDA2ZjI1
MTlhYThhOGYzYThjNDUwZWZkMjczNDE4YWY0Mjg0Li5hMzdjM2VmZTllOGY2NTJhZTUxMmE3YTJl
MGM4YTI4OWE3OGU4NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGJvb2wg
bWFpbkJ1bmRsZUlzRXF1YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcp
CiAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBhcmUoQWRvcHRD
RiwgYnVuZGxlSWRlbnRpZmllclN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBhcmUoQWRvcHRDRiwgYnVuZGxl
SWRlbnRpZmllclN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICByZXR1cm4gQ0ZT
dHJpbmdDb21wYXJlKGJ1bmRsZUlkZW50aWZpZXIsIGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBhcmUu
Z2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
YnVuZGxlSWRlbnRpZmllclN0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmls
ZVN5c3RlbUNGLmNwcAppbmRleCA4ZWY1MGVlYjBjYjA4NGQxYjliMjNiODdjM2JmYTg5ODM5MmI4
YTJkLi5jMTg3MDY2MzM1NjUwNTU3OWFmZDdiNjFhYzE3MzkwNDA2NDRmNzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmlu
ZyhBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBpZiAoIWNmU3Ry
aW5nKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwpAQCAtNjMsOCArNjMsNyBAQCBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZWxzZQogICAgIHBh
dGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwogI2VuZGlmCi0gICAgcmV0dXJuIFJldGFp
blB0cjxDRlVSTFJlZj4oQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwK
LSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3Ry
aW5nKCkpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7CisgICAgcmV0dXJuIFJldGFpblB0cjxD
RlVSTFJlZj4oQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCA5
N2ZiMGI2MDk0NjhmNGVkMzViMWUxOTM4ZDk4YmJkODk0MjIyNTg2Li44NTZhNGZjYWRlZDJmMGI2
MjYwZjVlOTJiZTExNDVkYzEyYTVjODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25X
aW4uY3BwCkBAIC0xNTEsOCArMTUxLDcgQEAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1D
QUFuaW1hdGlvbihBbmltYXRpb25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGEKICAgICBl
bHNlCiAgICAgICAgIG1fYW5pbWF0aW9uLmFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FD
RktleWZyYW1lQW5pbWF0aW9uKSk7CiAgICAgCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBz
KEFkb3B0Q0YsIGtleVBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkFuaW1hdGlvblNl
dEtleVBhdGgobV9hbmltYXRpb24uZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZBbmltYXRpb25T
ZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgpLCBrZXlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogfQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRm
b3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5k
ZXggNzAxNjhiMjEwNGRiMzY5ZGEwNzU3YTExNDQ2MjIxMTFiYzMwNjFmMC4uZGQ2MTYzMzdlOTM2
NmViNzljOTZjNjcyYjczOTNiNjkyNDM2ZmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5j
cHAKQEAgLTE3NiwxMCArMTc2LDggQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0
YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKQogc3RhdGljIHZvaWQgcmVzdWJtaXRBbGxB
bmltYXRpb25zKFBsYXRmb3JtQ0FMYXllciogbGF5ZXIpCiB7CiAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXll
ci0+YW5pbWF0aW9ucygpLmVuZCgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQ
bGF0Zm9ybUNBQW5pbWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRp
b25zKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gcyhBZG9wdENGLCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBD
QUNGTGF5ZXJBZGRBbmltYXRpb24obGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgcy5nZXQoKSwgaXQt
PnZhbHVlLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKLSAgICB9CisgICAgZm9yIChIYXNoTWFwPFN0
cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bGF5ZXItPmFuaW1hdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIENB
Q0ZMYXllckFkZEFuaW1hdGlvbihsYXllci0+cGxhdGZvcm1MYXllcigpLCBpdC0+a2V5LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGl0LT52YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSk7CiB9CiAK
IHZvaWQgUGxhdGZvcm1DQUxheWVyOjplbnN1cmVBbmltYXRpb25zU3VibWl0dGVkKCkKQEAgLTI5
Nyw4ICsyOTUsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6YWRkQW5pbWF0aW9uRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9uKgogICAgIC8vIEFkZCBpdCB0byB0
aGUgYW5pbWF0aW9uIGxpc3QKICAgICBtX2FuaW1hdGlvbnMuYWRkKGtleSwgYW5pbWF0aW9uKTsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCks
IGFuaW1hdGlvbi0+cGxhdGZvcm1BbmltYXRpb24oKSk7CisgICAgQ0FDRkxheWVyQWRkQW5pbWF0
aW9uKG1fbGF5ZXIuZ2V0KCksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhbmltYXRpb24t
PnBsYXRmb3JtQW5pbWF0aW9uKCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBU
ZWxsIHRoZSBob3N0IGFib3V0IGl0IHNvIHdlIGNhbiBmaXJlIHRoZSBzdGFydCBhbmltYXRpb24g
ZXZlbnQKQEAgLTMxMiw4ICszMDksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQW5p
bWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQogICAgIC8vIFJlbW92ZSBpdCBmcm9tIHRo
ZSBhbmltYXRpb24gbGlzdAogICAgIG1fYW5pbWF0aW9ucy5yZW1vdmUoa2V5KTsKIAotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAg
IENBQ0ZMYXllclJlbW92ZUFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBrZXkuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CiAKICAgICAvLyBXZSBkb24ndCAicmVtb3ZlIiBhIGxheWVyIGZyb20gQWJz
dHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB3aGVuIGl0IGxvc2VzIGFuIGFuaW1hdGlvbi4KICAgICAv
LyBUaGVyZSBtYXkgYmUgb3RoZXIgYWN0aXZlIGFuaW1hdGlvbnMgb24gdGhlIGxheWVyIGFuZCBp
ZiBhbiBhbmltYXRpb24KQEAgLTU4Niw4ICs1ODIsNyBAQCBTdHJpbmcgUGxhdGZvcm1DQUxheWVy
OjpuYW1lKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5hbWUoY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgdmFs
dWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxheWVyU2V0TmFtZShtX2xheWVyLmdldCgp
LCBzLmdldCgpKTsKKyAgICBDQUNGTGF5ZXJTZXROYW1lKG1fbGF5ZXIuZ2V0KCksIHZhbHVlLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IGM0MzBjZjI4NDYxNDY2
NDdiZjYxZmM3YTcxNjI5ZjUyZjAyMWZhNmEuLjE1Mjc1YjNhZTVmZTVjMWM2YTRmOGY4NGZkNjY5
MGQyMWZjZjU4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNw
cApAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVw
ZGF0ZVRpbGVzKCkKIAogI2lmbmRlZiBOREVCVUcKICAgICAgICAgICAgIFN0cmluZyBuYW1lID0g
IlRpbGUgKCIgKyBTdHJpbmc6Om51bWJlcihpKSArICIsIiArIFN0cmluZzo6bnVtYmVyKGopICsg
IikiOwotICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmFtZSh0aWxlLCBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+KEFkb3B0Q0YsIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCkpOworICAgICAgICAg
ICAgQ0FDRkxheWVyU2V0TmFtZSh0aWxlLCBuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
I2VuZGlmCiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCmluZGV4IDIxZTlkYjRjMjhkOWEyNTUx
MzUyMGFjZTcwODQwM2FjNWU3N2FiOTMuLjQxNzEzMmJjOTdmMDY4MGNhZWQ3ODU1YmI4MjIwYTI2
MWE3NzFmN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zNzcsOCArMzc3LDcgQEAgc3RhdGljIGlubGluZSBD
RlN0cmluZ1JlZiBqcGVnVVRJKCkKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZy
b21NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogI2lmIFBMQVRGT1JNKE1BQykK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlQ0ZTdHJpbmcoQWRvcHRDRiwgbWlt
ZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4oQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdD
bGFzc01JTUVUeXBlLCBtaW1lVHlwZUNGU3RyaW5nLmdldCgpLCAwKSk7CisgICAgcmV0dXJuIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRp
ZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCAwKSk7CiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0IGlz
IHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KaW5kZXggYmQ1
MGEzMTc1ZjNiNDI1YTg4MjZjZDJhNTZhNjJlMjE5MzY5NjMzNy4uNjA5OTUzOGI2ZThjYTFiNjM2
ZDA3NmZjY2ViNTdlYmQ3NjA4YzgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBAIC0zMywxNSArMzMsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgTUlNRVR5cGVGb3JJbWFnZVNvdXJjZVR5
cGUoY29uc3QgU3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGly
ZWYoQWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbWltZShBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aXJl
Zi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gbWltZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwogICAgIHJldHVybiBt
aW1lLmdldCgpOwogfQogCiBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VU
eXBlKGNvbnN0IFN0cmluZyYgdXRpKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdHlw
ZShBZG9wdENGLCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBleHRlbnNpb24oQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh0
eXBlLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBleHRlbnNpb24gPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdX
aXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVF
eHRlbnNpb24pKTsKICAgICByZXR1cm4gZXh0ZW5zaW9uLmdldCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9s
bGVyQ29yZVRleHQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29t
cGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KaW5kZXggNGNiODc2YzM2NWVjOWRkNzE2MGEx
ZDJmZGUwOWU3ZjMyZjAwYmFjOS4uNTdmNzBmZmYyOGU3NGY2ZmUxNTc3ODczNWNiMDMyMDQ3YWEz
MTYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQpAQCAtMjgy
LDcgKzI4Miw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRl
eHRSdW5zRm9yQ2hhcmFjdGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2NvbXBsZXhUZXh0UnVucy5hcHBlbmQoQ29tcGxleFRleHRSdW46OmNyZWF0ZShtX2Zv
bnQucHJpbWFyeUZvbnQoKSwgY3AsIHN0cmluZ0xvY2F0aW9uICsgcnVuUmFuZ2UubG9jYXRpb24s
IHJ1blJhbmdlLmxlbmd0aCwgbV9ydW4ubHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJ1
bkZvbnREYXRhID0gZm9udENhY2hlKCktPmdldENhY2hlZEZvbnREYXRhKG1fZm9udC5mb250RGVz
Y3JpcHRpb24oKSwgZm9udE5hbWUuZ2V0KCksIGZhbHNlLCBGb250Q2FjaGU6OkRvTm90UmV0YWlu
KS5nZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgcnVuRm9udERhdGEgPSBmb250Q2FjaGUoKS0+
Z2V0Q2FjaGVkRm9udERhdGEobV9mb250LmZvbnREZXNjcmlwdGlvbigpLCBTdHJpbmcoZm9udE5h
bWUuZ2V0KCkpLCBmYWxzZSwgRm9udENhY2hlOjpEb05vdFJldGFpbikuZ2V0KCk7CiAjaWYgIVBM
QVRGT1JNKFdYKQogICAgICAgICAgICAgICAgICAgICAvLyBDb3JlIFRleHQgbWF5IGhhdmUgdXNl
ZCBhIGZvbnQgdGhhdCBpcyBub3Qga25vd24gdG8gTlNGb250TWFuYWdlci4gSW4gdGhhdCBjYXNl
LCBmYWxsIGJhY2sgb24KICAgICAgICAgICAgICAgICAgICAgLy8gdXNpbmcgdGhlIGZvbnQgYXMg
cmV0dXJuZWQsIGV2ZW4gdGhvdWdoIGl0IG1heSBub3QgaGF2ZSB0aGUgYmVzdCBOU0ZvbnRSZW5k
ZXJpbmdNb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBi
b2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0K
aW5kZXggYmQ4ODAyMDQ0MWIwZTlhZTAwYmFkYWYzNmIyZjRmNWE2YTZiZWFlNy4uMzA2NmFkNzA5
ZDYxZmY1M2M5MmJjMTJhNGJkYTcxYTEyZTY0NmY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBTdHJpbmcg
Y29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogICAg
IC8vIFRyeSBVVEkgbm93CiAgICAgU3RyaW5nIG1pbWVUeXBlID0gcVR5cGU7Ci0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElk
ZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJp
bmcoKSwgTlVMTCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlwZShBZG9wdENG
LCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5
cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwpKTsKICAgICBpZiAodXRp
VHlwZSkgewogICAgICAgICBDRlN0cmluZ1JlZiBwYlR5cGUgPSBVVFR5cGVDb3B5UHJlZmVycmVk
VGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlKTsKICAg
ICAgICAgaWYgKHBiVHlwZSkKQEAgLTExMiwxMSArMTEyLDggQEAgc3RhdGljIFN0cmluZyBjb2Nv
YVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiBzdGF0aWMg
U3RyaW5nIHV0aVR5cGVGcm9tQ29jb2FUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGVDRiA9IGFkb3B0Q0YodHlwZS5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aVR5cGUoQWRvcHRDRiwgVVRUeXBl
Q3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSwg
dHlwZUNGLmdldCgpLCAwKSk7Ci0gICAgaWYgKHV0aVR5cGUpIHsKLSAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0
aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAgICAgICAgaWYg
KG1pbWVUeXBlKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aVR5cGUgPSBhZG9w
dENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bi
b2FyZFR5cGUsIHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpKSB7CisgICAgICAgIGlm
IChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJl
ZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKSkK
ICAgICAgICAgICAgIHJldHVybiBTdHJpbmcobWltZVR5cGUuZ2V0KCkpOwogICAgIH0KICAgICBy
ZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U1NMS2V5R2VuZXJhdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xL
ZXlHZW5lcmF0b3JNYWMuY3BwCmluZGV4IDBhMWE0ZDhjNzUxNGRhOTEzNzM5YmU1ZTM0NDZkNDk3
ZDk1YTQ3OGIuLjcxYWIxZDZkMDdjMmMxNWJmZWUzNThmYjAyOWFjOWIxZDcwZWI3M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
CkBAIC02MCw5ICs2MCw4IEBAIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNoYWxsZW5n
ZVN0cmluZ0NGKEFkb3B0Q0YsIGNoYWxsZW5nZVN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleURlc2NyaXB0aW9uKEFkb3B0Q0YsIGtleWdlbktl
eWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwgd2tTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlU3RyaW5nQ0YuZ2V0KCksIGtleURlc2NyaXB0
aW9uLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlEZXNjcmlwdGlvbiA9
IGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCB3a1NpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmcuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwga2V5RGVzY3JpcHRpb24uZ2V0KCkpKTsKIAogICAgIHJldHVybiByZXN1bHQu
Z2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0F1dGhlbnRpY2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmNwcAppbmRleCA4N2EzZmFiOGE3NDM3YWUxMGFmNDM5YTRlNGUw
MmNkMmUxYTMwZGViLi43YjFkNGZhNDc4N2YxZDFlMGQ5ZTNhNGRlODFmM2ViNTQ2ZDBjZWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0
aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAKQEAgLTExOSwxMyArMTE5LDcgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNy
ZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4g
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlV2l0aElkZW50aXR5QW5kQ2VydGlmaWNhdGVBcnJheShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBjb3JlQ3JlZGVudGlhbC5pZGVudGl0eSgpLCBjb3JlQ3JlZGVudGlh
bC5jZXJ0aWZpY2F0ZXMoKSwgcGVyc2lzdGVuY2UpOwogI2VuZGlmCiAKLSAgICBDRlN0cmluZ1Jl
ZiB1c2VyID0gY29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZT
dHJpbmdSZWYgcGFzc3dvcmQgPSBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3Ry
aW5nKCk7Ci0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIHJlc3VsdCA9IENGVVJMQ3JlZGVudGlhbENy
ZWF0ZSgwLCB1c2VyLCBwYXNzd29yZCwgMCwgcGVyc2lzdGVuY2UpOwotICAgIENGUmVsZWFzZSh1
c2VyKTsKLSAgICBDRlJlbGVhc2UocGFzc3dvcmQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKIH0KIAogQ0ZVUkxQcm90ZWN0aW9uU3Bh
Y2VSZWYgY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCkBAIC0xOTIs
MTMgKzE4Niw3IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgY29yZVNwYWNlKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKLSAgICBDRlN0cmluZ1JlZiBob3N0ID0gY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0
cmluZygpOwotICAgIENGU3RyaW5nUmVmIHJlYWxtID0gY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRl
Q0ZTdHJpbmcoKTsKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiByZXN1bHQgPSBDRlVSTFBy
b3RlY3Rpb25TcGFjZUNyZWF0ZSgwLCBob3N0LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBl
LCByZWFsbSwgc2NoZW1lKTsKLSAgICBDRlJlbGVhc2UoaG9zdCk7Ci0gICAgQ0ZSZWxlYXNlKHJl
YWxtKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTFByb3RlY3Rp
b25TcGFjZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGNvcmVTcGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIHNjaGVtZSk7CiB9CiAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRl
bnRpYWxSZWYgY2ZDcmVkZW50aWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1ZDZkNzM5MjZjNDRlZTQ4ODAx
ODJmZmZlODk4MWFjZjM4YTc2YjBhLi41MDE3OTcxZGUxNGE0NTRhODRmOWEzODhiYjQ3ZjY0ODQ4
OTFkYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nv
b2tpZUphckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgc2V0Q29va2llcyhE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICAvLyBjb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRvZXNuJ3QgcGFyc2UgY29v
a2llcyB3aXRob3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gdmFsdWUuY29u
dGFpbnMoJz0nKSA/IHZhbHVlIDogdmFsdWUgKyAiPSI7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNvb2tpZVN0cmluZ0NGKEFkb3B0Q0YsIGNvb2tpZVN0cmluZy5jcmVhdGVDRlN0cmlu
ZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGID0gY29va2ll
U3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
aGVhZGVyRmllbGRzQ0YoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsCiAgICAgICAgIChjb25zdCB2b2lkKiopJnNfc2V0Q29va2llS2V5Q0YsIChjb25zdCB2
b2lkKiopJmNvb2tpZVN0cmluZ0NGLCAxLAogICAgICAgICAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDNmOTAxYTU0
MWRlMDBlZWJlYzI0MzIyZDA0Mzk2ZWU0YTIyMDVmYjYuLmM2Yjc4Y2Y2MWM3ZjM3MzA3NGIzNjgy
OTUwNjE0OWQzNTE1Zjc4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRE5TQ0ZOZXQuY3BwCkBAIC05MCw4ICs5MCw3IEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0bmFtZUNG
KEFkb3B0Q0YsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkhv
c3RSZWY+IGhvc3QoQWRvcHRDRiwgQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWVDRi5n
ZXQoKSkpOworICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QoQWRvcHRDRiwgQ0ZIb3N0Q3Jl
YXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgIGlm
ICghaG9zdCkgewogICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yQ0YuY3BwCmluZGV4IDZmZGY1YWRiOTljZDgzZTY3Y2NiMmZiMGYwNDc0ZjA3YmE4
MzVjNWQuLmU0NzIxMzhlMWE5ZGRmM2I5ZjE4MjNhZmUzZTQwZWU1MzZmOWYyZWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JD
Ri5jcHAKQEAgLTE0NywxMyArMTQ3LDExIEBAIENGRXJyb3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZF
cnJvcigpIGNvbnN0CiAgICAgaWYgKCFtX3BsYXRmb3JtRXJyb3IpIHsKICAgICAgICAgUmV0YWlu
UHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvKEFkb3B0Q0YsIENGRGljdGlvbmFy
eUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NG
VHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgICAgIGlmICghbV9sb2NhbGl6
ZWREZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbG9jYWxpemVkRGVzY3JpcHRpb25TdHJpbmcoQWRvcHRDRiwgbV9sb2NhbGl6ZWREZXNj
cmlwdGlvbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5LCBsb2Nh
bGl6ZWREZXNjcmlwdGlvblN0cmluZy5nZXQoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFt
X2xvY2FsaXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5
LCBtX2xvY2FsaXplZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAg
ICAgIGlmICghbV9mYWlsaW5nVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5nKEFkb3B0Q0YsIG1fZmFpbGluZ1VSTC5jcmVh
dGVDRlN0cmluZygpKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmFpbGlu
Z1VSTFN0cmluZyA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxTdHJpbmdLZXks
IGZhaWxpbmdVUkxTdHJpbmcuZ2V0KCkpOwogICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVm
PiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIGZhaWxpbmdVUkxTdHJpbmcu
Z2V0KCksIDApKTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdl
dCgpLCBmYWlsaW5nVVJMS2V5LCB1cmwuZ2V0KCkpOwpAQCAtMTY0LDggKzE2Miw3IEBAIENGRXJy
b3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgICAgICAgICB3a1NldFNT
TFBlZXJDZXJ0aWZpY2F0ZURhdGEodXNlckluZm8uZ2V0KCksIG1fY2VydGlmaWNhdGUuZ2V0KCkp
OwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRvbWFp
blN0cmluZyhBZG9wdENGLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgbV9w
bGF0Zm9ybUVycm9yLmFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBkb21haW5TdHJpbmcuZ2V0KCks
IG1fZXJyb3JDb2RlLCB1c2VySW5mby5nZXQoKSkpOworICAgICAgICBtX3BsYXRmb3JtRXJyb3Ig
PSBhZG9wdENGKENGRXJyb3JDcmVhdGUoMCwgbV9kb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1f
cGxhdGZvcm1FcnJvci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDAxZThiOGFlNWMw
ZDFjNmE2YThmMDMzMDg1ZTkwZjAxMGJjMWY3YzYuLjgwNzBjMjU4MmI3Y2FhMGRlNmZlMzVmMzA3
NDNmNzhiMjBiNzdhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBA
IHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4gPiYgY2xpZW50Q2Vy
dHMoKQogCiBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSkKIHsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5n
ID0gZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZT
dHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgCiAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKHJl
c3BvbnNlLCBkZWZhdWx0TUlNRVR5cGVTdHJpbmcpOwogfQpAQCAtMTYxLDggKzE2MSw4IEBAIHN0
YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBj
b25uLCBDRlVSTFJlcXVlc3RSZWYKICAgICBpZiAoY2ZSZWRpcmVjdFJlc3BvbnNlKSB7CiAgICAg
ICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJl
c3BvbnNlKGNmUmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIGlmIChodHRwTWVzc2FnZSAmJiBD
RkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKSA9PSAzMDcpIHsK
LSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBNZXRob2QoQWRvcHRD
RiwgaGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0
Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCkpOworICAgICAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZCA9IGhhbmRsZS0+bGFzdEhUVFBNZXRob2QoKS5j
cmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdN
ZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVl
c3QpKTsKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9ucyhsYXN0SFRU
UE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dl
dExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZl
KSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBt
dXRhYmxlUmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBj
ZlJlcXVlc3QpKTsKICNpZiBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCkBAIC0xNzUsOSArMTc1
LDggQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0
aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgICAgICAgICAgICAgICAgICBXZWJDb3Jl
OjpzZXRIVFRQQm9keShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgYm9keSk7CiAKICAgICAgICAgICAg
ICAgICBTdHJpbmcgb3JpZ2luYWxDb250ZW50VHlwZSA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCku
aHR0cENvbnRlbnRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBvcmlnaW5hbENvbnRlbnRUeXBlQ0YoQWRvcHRDRiwgb3JpZ2luYWxDb250ZW50VHlwZS5jcmVh
dGVDRlN0cmluZygpKTsKICAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFsQ29udGVudFR5cGUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVy
RmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIpLCBv
cmlnaW5hbENvbnRlbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBDRlVSTFJl
cXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgQ0ZTVFIo
IkNvbnRlbnQtVHlwZSIpLCBvcmlnaW5hbENvbnRlbnRUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogCiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0LmdldCgpOwog
ICAgICAgICAgICAgfQpAQCAtNjA3LDEwICs2MDYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFs
bAogI2VuZGlmCiAKICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlz
TnVsbCgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXNlcihBZG9wdENGLCBk
LT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcGFzcyhBZG9wdENGLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwoQWRvcHRDRiwKLSAgICAgICAg
ICAgIENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1c2VyLmdldCgp
LCBwYXNzLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7CisgICAg
ICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKENG
VVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtD
RlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAgCiAgICAgICAgIEtVUkwg
dXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRw
U3RhdHVzQ29kZSgpID09IDQwMSkKQEAgLTEwMDUsNyArMTAwMSw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckRlZmF1bHRCYXNlKCkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklk
ZW50aWZpZXJCYXNlKCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIo
QWRvcHRDRiwgU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5n
KCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJh
c2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBwcml2YXRl
U3RvcmFnZVNlc3Npb24oKSA9IGNyZWF0ZVByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKGNm
SWRlbnRpZmllci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4IDhjZmY4N2Nh
MGQ1OGVhMmU1MjNmMzczMGQ2YjRhNzczMGIwNmJlNGIuLjAzNTQ5N2IzNjJmY2ZlNGQzYjYwMGM3
YWJmMTExMDEwYjNlM2FiMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC0xMTksMTMgKzEx
OSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRIZWFkZXJGaWVsZHMoQ0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZiByZXF1ZXN0LCBjb25zdCBIVFRQSGVhCiAgICAgfQogCiAgICAgSFRUUEhlYWRlck1h
cDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVxdWVzdEhlYWRlcnMuZW5kKCk7Ci0gICAgZm9yIChI
VFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFkZXJzLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBDRlN0cmluZ1JlZiBrZXkgPSBpdC0+a2V5LmNy
ZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIENGU3RyaW5nUmVmIHZhbHVlID0gaXQtPnZhbHVlLmNy
ZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZh
bHVlKHJlcXVlc3QsIGtleSwgdmFsdWUpOwotICAgICAgICBDRlJlbGVhc2Uoa2V5KTsKLSAgICAg
ICAgQ0ZSZWxlYXNlKHZhbHVlKTsKLSAgICB9CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
KyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdCwgaXQt
PmtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBpdC0+dmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVz
dCgpCkBAIC0xNDYsOCArMTQxLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KCkKICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhh
bmRsZTo6Y3VycmVudFN0b3JhZ2VTZXNzaW9uKCksIGNmUmVxdWVzdCk7CiAjZW5kaWYKIAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVxdWVzdE1ldGhvZChBZG9wdENGLCBodHRwTWV0aG9k
KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRo
b2QoY2ZSZXF1ZXN0LCByZXF1ZXN0TWV0aG9kLmdldCgpKTsKKyAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKIAogICAgIGlmIChodHRwUGlwZWxpbmluZ0VuYWJsZWQoKSkKICAgICAgICAgd2tT
ZXRIVFRQUGlwZWxpbmluZ1ByaW9yaXR5KGNmUmVxdWVzdCwgdG9IVFRQUGlwZWxpbmluZ1ByaW9y
aXR5KG1fcHJpb3JpdHkpKTsKQEAgLTE2NCw3ICsxNTgsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQg
PSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUo
KTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGVuY29kaW5nRmFsbGJhY2tzKEFk
b3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZhbGxiYWNr
Q291bnQsIDApKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGZhbGxiYWNrQ291bnQ7
ICsraSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZShBZG9w
dENGLCBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ld
LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29k
aW5nTmFtZSA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJy
YXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGlu
ZyA9IENGU3RyaW5nQ29udmVydElBTkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1l
LmdldCgpKTsKICAgICAgICAgaWYgKGVuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxp
ZElkKQogICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGVuY29kaW5nRmFsbGJhY2tzLmdl
dCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihlbmNvZGluZykpOwpAQCAtMjEzLDcg
KzIwNyw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgp
CiAgICAgICAgIFZlY3Rvcjxjb25zdCB2b2lkKiwgMTI4PiB2YWx1ZXMoaGVhZGVyQ291bnQpOwog
ICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGhlYWRlcnMsIGtleXMuZGF0YSgp
LCB2YWx1ZXMuZGF0YSgpKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWFkZXJDb3Vu
dDsgKytpKQotICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldCgoQ0ZTdHJpbmdSZWYp
a2V5c1tpXSwgKENGU3RyaW5nUmVmKXZhbHVlc1tpXSk7CisgICAgICAgICAgICBtX2h0dHBIZWFk
ZXJGaWVsZHMuc2V0KFN0cmluZygoQ0ZTdHJpbmdSZWYpa2V5c1tpXSksIFN0cmluZygoQ0ZTdHJp
bmdSZWYpdmFsdWVzW2ldKSk7CiAgICAgICAgIENGUmVsZWFzZShoZWFkZXJzKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXNwb25zZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXNwb25zZUNGTmV0LmNwcAppbmRleCBhNDViZWVkYzQzMzAwNzcyYjM5Y2FlZTJiMzk0
NmNhYzNkZjBiZjMxLi45NTUwODM2M2FhZTQyNWVjODg0YTQ4NDdhNTE1OTgzN2QwOGQzOTdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVz
cG9uc2VDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCkBAIC01MSw5ICs1MSw3IEBAIENGVVJMUmVzcG9uc2VS
ZWYgUmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxSZXNwb25zZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7CiAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
dXJsKEFkb3B0Q0YsIG1fdXJsLmNyZWF0ZUNGVVJMKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG1pbWVUeXBlKEFkb3B0Q0YsIG1fbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGV4dEVuY29kaW5nTmFtZShBZG9wdENG
LCBtX3RleHRFbmNvZGluZ05hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIG1fY2ZSZXNw
b25zZS5hZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtaW1lVHlwZS5n
ZXQoKSwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgsIHRleHRFbmNvZGluZ05hbWUuZ2V0KCksIGtD
RlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKKyAgICAgICAgbV9jZlJlc3BvbnNlLmFkb3B0Q0Yo
Q0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwuZ2V0KCksIG1fbWltZVR5cGUuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgbV9leHBlY3RlZENvbnRlbnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CiAgICAg
fQogCiAgICAgcmV0dXJuIG1fY2ZSZXNwb25zZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5l
dC5jcHAKaW5kZXggZDg2Yzc2YmM2ZjQ1YzE4MTY0OGUwYTc3NmNkMzliYWU4OTA4NDBkNi4uNGE3
Y2Q5MDJhZTlmMDI4N2Q4OThkOTJiZDk4NWRkNzY2ZDQyYTE3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVDRk5ldC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6
Y3JlYXRlU3RyZWFtcygpCiAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUgPT0gVW5rbm93bikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0KEFkb3B0Q0Ys
IG1fdXJsLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGhvc3QgPSBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIENyZWF0
aW5nIHN0cmVhbXMgdG8gZmluYWwgZGVzdGluYXRpb24sIG5vdCB0byBwcm94eS4KICAgICBDRlJl
YWRTdHJlYW1SZWYgcmVhZFN0cmVhbSA9IDA7CkBAIC0zNTksMTIgKzM1OSwxMCBAQCB2b2lkIFNv
Y2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1lc3NhZ2VSZWYg
cHJveHlSZXNwb25zZSkKICAgICBTdHJpbmcgcGFzc3dvcmQ7CiAgICAgaWYgKCFtX3NlbnRTdG9y
ZWRDcmVkZW50aWFscyAmJiBnZXRTdG9yZWRDT05ORUNUUHJveHlDcmVkZW50aWFscyhwcm90ZWN0
aW9uU3BhY2UsIGxvZ2luLCBwYXNzd29yZCkpIHsKICAgICAgICAgLy8gVHJ5IHRvIGFwcGx5IHN0
b3JlZCBjcmVkZW50aWFscywgaWYgd2UgaGF2ZW4ndCB0cmllZCB0aG9zZSBhbHJlYWR5LgotICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvZ2luQ0YoQWRvcHRDRiwgbG9naW4uY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFzc3dvcmRDRihB
ZG9wdENGLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgLy8gQ3JlYXRpbmcg
YSB0ZW1wb3JhcnkgcmVxdWVzdCB0byBtYWtlIENGTmV0d29yayBhcHBseSBjcmVkZW50aWFscyB0
byBpdC4gVW5mb3J0dW5hdGVseSwgdGhpcyBjYW5ub3Qgd29yayB3aXRoIE5UTE0gYXV0aGVudGlj
YXRpb24uCisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSByZXF1ZXN0IHRvIG1ha2UgQ0ZO
ZXR3b3JrIGFwcGx5IGNyZWRlbnRpYWxzIHRvIGl0LiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGNhbm5v
dCB3b3JrIHdpdGggTlRMTSBhdXRoZW50aWNhdGlvbi4KICAgICAgICAgUmV0YWluUHRyPENGSFRU
UE1lc3NhZ2VSZWY+IGR1bW15UmVxdWVzdChBZG9wdENGLCBDRkhUVFBNZXNzYWdlQ3JlYXRlUmVx
dWVzdCgwLCBDRlNUUigiR0VUIiksIG1faHR0cHNVUkwuZ2V0KCksIGtDRkhUVFBWZXJzaW9uMV8x
KSk7CiAKLSAgICAgICAgQm9vbGVhbiBhcHBsaWVkQ3JlZGVudGlhbHMgPSBDRkhUVFBNZXNzYWdl
QXBwbHlDcmVkZW50aWFscyhkdW1teVJlcXVlc3QuZ2V0KCksIGF1dGhlbnRpY2F0aW9uLmdldCgp
LCBsb2dpbkNGLmdldCgpLCBwYXNzd29yZENGLmdldCgpLCAwKTsKKyAgICAgICAgQm9vbGVhbiBh
cHBsaWVkQ3JlZGVudGlhbHMgPSBDRkhUVFBNZXNzYWdlQXBwbHlDcmVkZW50aWFscyhkdW1teVJl
cXVlc3QuZ2V0KCksIGF1dGhlbnRpY2F0aW9uLmdldCgpLCBsb2dpbi5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChhcHBsaWVkQ3JlZGVudGlhbHMsIGFwcGxpZWRDcmVkZW50aWFscyk7CiAKICAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcm94eUF1dGhvcml6YXRpb25TdHJpbmcoQWRv
cHRDRiwgQ0ZIVFRQTWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZhbHVlKGR1bW15UmVxdWVzdC5nZXQo
KSwgQ0ZTVFIoIlByb3h5LUF1dGhvcml6YXRpb24iKSkpOwpAQCAtMzg5LDcgKzM4Nyw3IEBAIHZv
aWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGVudGlhbHMoQ0ZIVFRQTWVzc2Fn
ZVJlZiBwcm94eVJlc3BvbnNlKQogQ0ZTdHJpbmdSZWYgU29ja2V0U3RyZWFtSGFuZGxlOjpjb3B5
Q0ZTdHJlYW1EZXNjcmlwdGlvbih2b2lkKiBpbmZvKQogewogICAgIFNvY2tldFN0cmVhbUhhbmRs
ZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxlKj4oaW5mbyk7Ci0gICAg
cmV0dXJuIFN0cmluZygiV2ViS2l0IHNvY2tldCBzdHJlYW0sICIgKyBoYW5kbGUtPm1fdXJsLnN0
cmluZygpKS5jcmVhdGVDRlN0cmluZygpOworICAgIHJldHVybiBTdHJpbmcoIldlYktpdCBzb2Nr
ZXQgc3RyZWFtLCAiICsgaGFuZGxlLT5tX3VybC5zdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5s
ZWFrUmVmKCk7CiB9CiAKIHN0cnVjdCBNYWluVGhyZWFkRXZlbnRDYWxsYmFja0luZm8gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1
ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VS
ZXF1ZXN0TWFjLm1tCmluZGV4IDkzMjE2Y2I1NWU4NTc3MzEzNmYzZThjM2EwN2NlNmZiNTU2ZTA2
ZDIuLmU2OTM0ODQ4MWFiMGEwMjEzNzk0ZGEyNGVmYmNjNGY1NmRjMDA4ZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVl
c3RNYWMubW0KQEAgLTE2Myw5ICsxNjMsOSBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRh
dGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgICAgICBOU011dGFibGVBcnJheSAqZW5jb2RpbmdGYWxs
YmFja3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgICAgICB1bnNpZ25lZCBjb3VudCA9
IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGNvdW50OyArK2kpIHsKLSAgICAg
ICAgICAgIENGU3RyaW5nUmVmIGVuY29kaW5nTmFtZSA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENGU3RyaW5nQ29udmVydEVuY29kaW5nVG9O
U1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElBTkFDaGFyU2V0TmFtZVRvRW5jb2Rpbmco
ZW5jb2RpbmdOYW1lKSk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UoZW5jb2RpbmdOYW1lKTsKKyAg
ICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZW5jb2RpbmdOYW1lID0gbV9yZXNwb25z
ZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmlu
ZygpOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuc0VuY29kaW5nID0gQ0ZTdHJpbmdDb252
ZXJ0RW5jb2RpbmdUb05TU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXRO
YW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUuZ2V0KCkpKTsKKwogICAgICAgICAgICAgaWYgKG5z
RW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpCiAgICAgICAgICAgICAgICAg
W2VuY29kaW5nRmFsbGJhY2tzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVk
TG9uZzpuc0VuY29kaW5nXV07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQppbmRleCA2YWE3
NmY2ZGQ3ODRkYTA5ZDdiZmY3ZTFlNjg1NWU3NWNhZGFlOTljLi5mOTcxMGIyZGQyNTE4NDYyMDE1
MTMyNDJmNDBmM2E0MTI2NGYyMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBAIC00NzgsNyArNDc4
LDcgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZS
ZXNwb25zZSkKICAgICB9CiAgICAgCiAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgc3RhdGlj
IENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IFdlYkNvcmU6OmRlZmF1bHRNSU1F
VHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZh
dWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0
cmluZygpLmxlYWtSZWYoKTsKICAgICAgICAgcmVzdWx0ID0gZGVmYXVsdE1JTUVUeXBlU3RyaW5n
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9I
eXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVu
YXRpb25DRi5jcHAKaW5kZXggNGUzZmNlZDQ0NDY0OWE5YzVjZWYzNjRlYzA2MmZlOGRiMTg4NGYw
OS4uMGY2NjhkMTBmOGU0MTdmNTZlYTkzYTA4NTgxMjRjZGYyYmE0MTdiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCkBAIC00Niw4
ICs0Niw3IEBAIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNo
ZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0CiB0ZW1wbGF0ZTw+CiBSZXRhaW5QdHI8
Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxl
UmVmPiA+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZUlkZW50
aWZpZXIpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkxvY2FsZUlkZW50aWZpZXIo
QWRvcHRDRiwgbG9jYWxlSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZShBZG9wdENGLCBDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBjZkxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZM
b2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgbG9jYWxlSWRlbnRpZmllci5pbXBsKCktPmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsK
IAogICAgIHJldHVybiBDRlN0cmluZ0lzSHlwaGVuYXRpb25BdmFpbGFibGVGb3JMb2NhbGUobG9j
YWxlLmdldCgpKSA/IGxvY2FsZSA6IDA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvY2YvU3RyaW5nQ0YuY3BwCmluZGV4IGQ3Y2RhNzk2Mjk4NjI1NzNhMzVjNmE5MjY4NTc1MjMw
NWFiNmMyN2UuLjI2OTdlNzZmMGJmNTkyM2IxNTJmZWRkNzEwMzdlOTcxMTQ5MjZkNDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwCkBAIC0yMyw4ICsy
Myw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBVU0UoQ0YpCi0K
ICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTUxLDcgKzUxLDcgQEAgU3Ry
aW5nOjpTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogICAgIH0KIH0KIAotQ0ZTdHJpbmdSZWYgU3Ry
aW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmlu
Zzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9pbXBsKQogICAgICAgICBy
ZXR1cm4gQ0ZTVFIoIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9T
dHJpbmdJbXBsQ0YuY3BwCmluZGV4IDdhMmQ4MmU0MDJkMjRiMzdiYmMwNzFmNDdmOThlMGE4NjUx
ODQ5MjEuLjFkYTU2MWI2MDYyYmNhYjQ5ZTA5YmZlNzk3ODJiMjczZjBkYTA5NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgog
CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTMyLDcgKzEzMyw3IEBAIG5hbWVzcGFjZSBTdHJpbmdX
cmFwcGVyQ0ZBbGxvY2F0b3IgewogCiB9CiAKLUNGU3RyaW5nUmVmIFN0cmluZ0ltcGw6OmNyZWF0
ZUNGU3RyaW5nKCkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZT
dHJpbmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlzTWFpblRocmVhZCgpKSB7CiAgICAg
ICAgIGlmIChpczhCaXQoKSkKQEAgLTE1Myw3ICsxNTQsNyBAQCBDRlN0cmluZ1JlZiBTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZygpCiAgICAgLy8gQ29yZUZvdW5kYXRpb24gbWlnaHQgbm90IGhh
dmUgdG8gYWxsb2NhdGUgYW55dGhpbmcsIHdlIGNsZWFyIGN1cnJlbnRTdHJpbmcgaW4gY2FzZSB3
ZSBkaWQgbm90IGV4ZWN1dGUgYWxsb2NhdGUoKS4KICAgICBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0
b3I6OmN1cnJlbnRTdHJpbmcgPSAwOwogCi0gICAgcmV0dXJuIHN0cmluZzsKKyAgICByZXR1cm4g
YWRvcHRDRihzdHJpbmcpOwogfQogCiAvLyBPbiBTdHJpbmdJbXBsIGNyZWF0aW9uIHdlIGNvdWxk
IGNoZWNrIGlmIHRoZSBhbGxvY2F0b3IgaXMgdGhlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1t
CmluZGV4IDZmNWU5NTNiYTE5MjVlNTQ1YmJiNWFjNTNlMjE0NzZiYjhmMDNhNTcuLjJmMDg4YTdl
YjM2M2M1YWNkMDE0MmYzODcwOTViOTYyYzE4MTZhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQpAQCAtMjIsMTIgKzIyLDEzIEBA
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiAjaW5jbHVkZSAiRm91bmRhdGlv
bkV4dHJhcy5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKIFN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICooKQogewotICAgIHJldHVybiBIYXJk
QXV0b3JlbGVhc2UoY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFz
ZShjcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCmluZGV4IDMxMjQxMmZhYWI4
YWMyMzYyODY1MDNkYWNhNWE5MjhiZWJkNDM5NjYuLmE3MDQ3NDk1MjBmZGQzMmQ0ZTFlMDBmY2Zj
MGRlYWYzODdjYmE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1RleHRDb2RlY01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvVGV4dENvZGVjTWFjLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIENTdHJpbmcgVGV4dENvZGVj
TWFjOjplbmNvZGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgsIFVuZW5j
b2RhYmxlCiAgICAgLy8gRW5jb2Rpbmcgd2lsbCBjaGFuZ2UgdGhlIHllbiBzaWduIGJhY2sgaW50
byBhIGJhY2tzbGFzaC4KICAgICBTdHJpbmcgY29weShjaGFyYWN0ZXJzLCBsZW5ndGgpOwogICAg
IGNvcHkucmVwbGFjZSgnXFwnLCBtX2JhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2wpOwotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZzKEFkb3B0Q0YsIGNvcHkuY3JlYXRlQ0ZTdHJpbmcoKSk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMgPSBjb3B5LmNyZWF0ZUNGU3RyaW5nKCk7
CiAKICAgICBDRkluZGV4IHN0YXJ0UG9zID0gMDsKICAgICBDRkluZGV4IGNoYXJhY3RlcnNMZWZ0
ID0gQ0ZTdHJpbmdHZXRMZW5ndGgoY2ZzLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXggYTVjYTliNzQ0NjkyZjI4
N2YyM2YzNDgxNTBiMDhmNjVlMWZmOTVmZS4uZTIyYjdhNTlmZjdiMzQ3MGFjNWFmMTdjMzdjM2Uz
MWJlYjk4ZDI2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJj
aFBvcHVwTWVudVdpbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBTZWFyY2hQb3B1cE1lbnVX
aW46OmVuYWJsZWQoKQogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXko
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktp
dC5zZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVm
PihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuIGtleS5jcmVhdGVD
RlN0cmluZygpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNlL1dlYktpdC9jZi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKaW5kZXggODM3NDdmMjIzNTU2
YTZhYzJhYTE2ODlkZmRmYWMxZjFlZjE3YzQ3Ny4uYTVlMzg3OTY2ZWViOTg2ZWNkMmI5ZmQ1OTUz
ZDgzYWI0OWM2ZTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jZi9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTYzLDE1ICs2MywxNCBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluc3BlY3RvclN0YXJ0
c0F0dGFjaGVkU2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCI7CiAKLXN0YXRpYyBp
bmxpbmUgQ0ZTdHJpbmdSZWYgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBr
ZXkpCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlS2V5Rm9yUHJl
ZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBrZXlDRlN0cmluZyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJu
IENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdlYiBJbnNwZWN0
b3IgU2V0dGluZyAtICVAIiksIGtleUNGU3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIgSW5zcGVj
dG9yIFNldHRpbmcgLSAlQCIpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogfQogCiBz
dGF0aWMgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogc2V0
dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0
Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSkpOworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gcHJlZmVyZW5jZXNLZXkgPSBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpOwogICAg
IFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUoQWRvcHRDRiwgQ0ZQcmVmZXJlbmNl
c0NvcHlBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50
QXBwbGljYXRpb24pKTsKIAogICAgIGlmICghdmFsdWUpCkBAIC04OCwxMSArODcsMTAgQEAgc3Rh
dGljIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHNldHRp
bmcpCiAKIHN0YXRpYyB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
U3RyaW5nJiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gb2Jq
ZWN0VG9TdG9yZTsKLSAgICBvYmplY3RUb1N0b3JlLmFkb3B0Q0Yoc2V0dGluZy5jcmVhdGVDRlN0
cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IG9iamVjdFRvU3RvcmUg
PSBzZXR0aW5nLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgQVNTRVJUKG9iamVjdFRvU3RvcmUpOwog
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBjcmVh
dGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBy
ZWZlcmVuY2VzS2V5ID0gY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KTsKICAgICBDRlByZWZl
cmVuY2VzU2V0QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIG9iamVjdFRvU3RvcmUuZ2V0
KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0KaW5kZXggNGEzNWI2YTJkOGEzMmM1ZGQ4MzQ5NzJj
ZDJmZGYyYWRjMzkxZTYxYS4uZjYzYmIyMzMxMDgwY2UwOWU2ODgwYjgzYjFhOThjMTZkY2I3YTli
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCkBAIC0zMCw4ICsz
MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIE1vZHVsZTo6bG9hZCgpCiB7Ci0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIG1fcGF0aC5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQ
YXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVVUkwpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
bWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggZGU3ZDU4MzFmNjA4YzM4MzBlM2M5YmUxNGIz
OTQ2NWViMmM3MWMzYi4uNjcxZjIwZDZkY2FiZTFmYzFiYTM5NTU3ZDVlNjI4ZWU3ZWQ3ZWQyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vz
c01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9j
ZXNzTWFjLm1tCkBAIC0yNzksOCArMjc5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRi
b3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KICAg
ICBpZiAoc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlBsdWdpblBhdGggPSBhZG9wdENG
KHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBw
bHVnaW5VUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGNmUGx1
Z2luUGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKDAsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQ
YXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFwbHVnaW5VUkwpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMjkyLDggKzI5MSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0
IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgU3RyaW5nJiBzYW5kYm94UHJvCiAgICAgaWYgKCFi
dW5kbGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNmU2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoID0gYWRvcHRDRihzYW5kYm94UHJv
ZmlsZURpcmVjdG9yeVBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJM
UmVmPiBzYW5kYm94UHJvZmlsZURpcmVjdG9yeSA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmls
ZVN5c3RlbVBhdGgoMCwgY2ZTYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguZ2V0KCksIGtDRlVS
TFBPU0lYUGF0aFN0eWxlLCBUUlVFKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBzYW5kYm94
UHJvZmlsZURpcmVjdG9yeSA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgo
MCwgc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtD
RlVSTFBPU0lYUGF0aFN0eWxlLCBUUlVFKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHNhbmRib3hGaWxlTmFtZSA9IENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigi
JUAuc2IiKSwgYnVuZGxlSWRlbnRpZmllcik7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBzYW5k
Ym94VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aFJlbGF0aXZlVG9C
YXNlKDAsIHNhbmRib3hGaWxlTmFtZS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNF
LCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFj
Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBl
UGx1Z2luTW9kdWxlTWFjLm1tCmluZGV4IDgxYjM4ZTBlYzhmZTNjNDE4ODk3OWVlZmQwNjIyN2Iz
NzBmZDRhM2UuLjk1ZDNlZjc2N2JkMmMxY2I3OGFiMTY0YmI2MzU2M2IzYzdlZDkwOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2Fw
ZVBsdWdpbk1vZHVsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KQEAgLTM1Miw4ICszNTIsNyBA
QCBzdGF0aWMgYm9vbCBnZXRQbHVnaW5JbmZvRnJvbUNhcmJvblJlc291cmNlcyhDRkJ1bmRsZVJl
ZiBidW5kbGUsIFBsdWdpbk1vZHVsZUluZgogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpn
ZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYg
cGx1Z2luKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlUGF0aChBZG9wdENG
LCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
YnVuZGxlVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGJ1bmRsZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxz
ZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0YsIENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAg
CiAgICAgLy8gVHJ5IHRvIGluaXRpYWxpemUgdGhlIGJ1bmRsZS4KICAgICBSZXRhaW5QdHI8Q0ZC
dW5kbGVSZWY+IGJ1bmRsZShBZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKQEAgLTM5NSw4ICszOTQsNyBAQCBib29sIE5ldHNjYXBl
UGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1
Z2luTW9kdWxlSQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5NSU1F
VHlwZXNQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZV
UkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0
aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlh
bGl6ZSB0aGUgYnVuZGxlLgogICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0
Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJk
TGlzdENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExp
c3RDRi5jcHAKaW5kZXggY2RmZjM0NDY5YTIzOTNkMzVhZGJhYmM0Y2IwYTM4YmEwZjU2MjMyNC4u
N2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1NGM1OGFiM2E0OGEyYjRiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCkBAIC05
NCw5ICs5NCw5IEBAIENGRGljdGlvbmFyeVJlZiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNG
RGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
cmwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT51cmwoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZShBZG9wdENGLCBtX2VudHJpZXNbaV0tPnRp
dGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
b3JpZ2luYWxVUkwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybCA9IG1fZW50cmll
c1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB0aXRsZSA9IG1fZW50cmllc1tpXS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsVVJMID0gbV9lbnRyaWVzW2ldLT5v
cmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
dXNlcyB0aGUgQ29yZUlQQyBkYXRhIGVuY29kaW5nIGZvcm1hdCwgd2hpY2ggbWVhbnMgdGhhdCB3
aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIENvcmVJUEMgZW5jb2Rpbmcgd2UgbmVlZCB0byBidW1wIHRo
ZSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNpb24KICAgICAgICAgLy8gY29uc3RhbnQgaW4g
V2ViUGFnZVByb3h5Q0YuY3BwLiBUaGUgQ29yZUlQQyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBi
ZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxk
IGJlIHdyaXR0ZW4gdG8gZGlzay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9jZi9XZWJQYWdlUHJveHlDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2Vi
UGFnZVByb3h5Q0YuY3BwCmluZGV4IDc5ZGQ4Y2VkMDJkN2NlMGQ0ZjNjMjQwNDgxOGI4MDFiZTQw
ZjFmN2EuLmZhYzAyYzFiNDY5MGYxMjM2ZTlhYTc4ZGFjYTQ5MmIxYzQyNjNhMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBQYXNzUmVmUHRyPFdlYkRhdGE+IFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0
YShXZWJQYWdlUHJveHlTZXNzaW9uU3RhdGVGaWx0ZQogICAgICAgICBpZiAocHJvdmlzaW9uYWxV
UkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgcHJvdmlzaW9uYWxVUkwgPSBtX21haW5GcmFtZS0+
cHJvdmlzaW9uYWxVUkwoKTsKICAgICAgICAgaWYgKCFwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIHByb3Zpc2lvbmFsVVJMU3RyaW5nLmFkb3B0Q0YocHJvdmlzaW9uYWxV
UkwuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgICAgICBwcm92aXNpb25hbFVSTFN0cmluZyA9
IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBrZXlzW251bVZh
bHVlc10gPSBQcm92aXNpb25hbFVSTEtleSgpOwogICAgICAgICAgICAgdmFsdWVzW251bVZhbHVl
c10gPSBwcm92aXNpb25hbFVSTFN0cmluZy5nZXQoKTsKICAgICAgICAgICAgICsrbnVtVmFsdWVz
OwpAQCAtMTc5LDggKzE3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZURhdGEoV2ViRGF0YSogd2ViRGF0YSkKIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFN0cmluZyBrZXkg
PSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0
YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAg
cmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykK
QEAgLTE5MiwxMCArMTkxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hl
cyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogCiAgICAgaWYgKHNp
emVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0Yo
Q0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgp
LCBpdGVtLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwg
c2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQ
cmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQo
KSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJj
ZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggNjgxMGYwYWJkYjlkYmViYTk5ZmEzZTFlOWIwZjA2Y2U0
NWFlMDQ5NC4uMzk1NjQ5YzUwYmY0ZDZkZjA0YmM3NTQwYjU0YmFmNTlkYjJjMzY4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNl
Q2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNl
Q2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgdm9p
ZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Y2xlYXJDYWNoZUZvck9yaWdpbihTZWN1cml0eU9y
aWdpbkRhdGEgb3JpZ2luRGF0YSwKICNpZiBVU0UoQ0ZVUkxDQUNIRSkKICAgICBpZiAocmVzb3Vy
Y2VDYWNoZXNUb0NsZWFyICE9IEluTWVtb3J5UmVzb3VyY2VDYWNoZXNPbmx5KSB7IAogICAgICAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGhvc3RBcnJheShBZG9wdENGLCBDRkFycmF5
Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdChBZG9wdENGLCBvcmlnaW4tPmhvc3QoKS5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwg
aG9zdC5nZXQoKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCks
IG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgIGNsZWFy
Q0ZVUkxDYWNoZUZvckhvc3ROYW1lcyhob3N0QXJyYXkuZ2V0KCkpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170779</attachid>
            <date>2012-10-25 18:29:59 -0700</date>
            <delta_ts>2012-10-25 20:39:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121025182832.patch</filename>
            <type>text/plain</type>
            <size>65767</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDNmMGI4Njg5ZjdhOTdiYjdlNWRmYTM3
ZWM2MzI0MGNmMGU5MjBmYzAuLmRmZmQwODE4ZDI3NWVkYzdhNmViZDAxNTk0ODI2ODBkZGZiNTY4
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgIChBdG9taWNTdHJpbmcpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKFdURik6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuaDoKKyAgICAgICAgKFN0cmluZyk6CisKIDIwMTItMDktMjcgIFl1cnkgU2VtaWto
YXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJv
dmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uIGZvciBMaXN0SGFzaFNldApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IGFjM2FmNmI3OWY2ZjgzZjhlZmE1NjMwMTgzMDAzODFiZjg3NjFlMGMuLjkwMzQ2ZDdkMWJjODZh
NTk5NTNhNTYwMGI1NDY3ZWU5ZGQzY2JkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAor
MjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxl
cnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29i
amNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tP
YmplY3QpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0
UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChX
ZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdl
VGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdl
U291cmNlQ0dNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZvckltYWdlU291cmNl
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJj
ZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxl
cjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9t
SFRNTENsaXBib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21Db2NvYVR5
cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAgICAgICAq
IHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6
OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NG
LmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICog
cGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5n
SW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcg
Kik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZW5jb2RlKToKKwogMjAxMi0xMC0yNSAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBpbnNwZWN0b3IgdGVzdHMgZmFpbGluZyBhZnRlciByMTMyNDU0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCmluZGV4
IDU4NjNlOTJmNGZmYmVlNDBmMjRlZWY5NTJiM2EwNzUwN2Q0MmVjYzUuLjZlMGFlZDVmZmE1NmU3
MWYyYjA1NjI5M2ZmY2ZjMGVlMDU5YTVmMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2Yv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBj
YWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChjcmVhdGVLZXlGb3JQcmVm
ZXJlbmNlcyk6CisgICAgICAgIChwb3B1bGF0ZVNldHRpbmcpOgorICAgICAgICAoc3RvcmVTZXR0
aW5nKToKKwogMjAxMi0wOS0wNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFBhcnQgMiBvZiByZW1vdmluZyBQbGF0Zm9ybVN0cmluZy5oLCByZW1vdmUgUGxhdGZvcm1T
dHJpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IDY0ZTNiZDZkNTAwZDk0ZTdhZDYyN2MxNTRjMTU3MWMxNWE3
NGVhZGMuLmY1MGYwMjQzMzk3ZjhhMjgxY2I4ZDA0YTAwNjIwMzM3YzE0ZTg5ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsNSArMSwzMCBAQAogMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJl
dHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAg
ICAgICAqIFBsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok1vZHVs
ZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOgorICAgICAgICAqIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8pOgorICAgICAg
ICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTUlNRVR5cGVzUHJl
ZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlQ0ZEaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlD
Ri5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YSk6
CisgICAgICAgIChXZWJLaXQ6OmF1dG9zYXZlS2V5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUmVzb3Vy
Y2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2luKToKKworMjAxMi0xMC0y
NSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIEFzc2Vy
dGlvbiBmYWlsdXJlIHRyeWluZyB0byBkaXNwYXRjaCBub3RpZmljYXRpb24gbWVzc2FnZXMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDM4NwogICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTI1NzMxOTU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aAppbmRleCA2YWM2MGU2YWQ1NzI0MzM5NzhmNWZiNGI0ODgwYTlmYjQwMTA1YzY2Li43ZGEwZGQ0
ZjNhMDE3MTliNDZjZWE5YjE4OGRiZGZhNWU2OTNjY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmgKQEAgLTEzNywxMCArMTM3LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQg
cmVtb3ZlKFN0cmluZ0ltcGwqKTsKICAgICAKLSNpZiBVU0UoQ0YpCi0gICAgQXRvbWljU3RyaW5n
KENGU3RyaW5nUmVmIHMpIDogIG1fc3RyaW5nKGFkZChTdHJpbmcocykuaW1wbCgpKSkgeyB9Ci0g
ICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5j
cmVhdGVDRlN0cmluZygpOyB9Ci0jZW5kaWYgICAgCiAjaWZkZWYgX19PQkpDX18KICAgICBBdG9t
aWNTdHJpbmcoTlNTdHJpbmcqIHMpIDogbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7
IH0KICAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAwMDY3YmViZWVkOTBmZjc0MzczMmNkYWFmNTYw
YWFmNTkyMDk4NGVjLi42NzY3NzkwNmRiMDI1MDNlMjE3OTQxNzQzOTYyNDExZmIyMzI2NTU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNjcsNiArNjcsNyBAQCBzdHJ1Y3QgQ2hhckJ1
ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3I7CiBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwog
c3RydWN0IFN1YnN0cmluZ1RyYW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9y
OwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKIAogZW51bSBUZXh0Q2FzZVNl
bnNpdGl2aXR5IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUgfTsKIApA
QCAtNzEzLDcgKzcxNCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgV1RG
OjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ry
b25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFVTRShDRikKLSAgICBDRlN0cmluZ1JlZiBj
cmVhdGVDRlN0cmluZygpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJp
bmcoKTsKICNlbmRpZgogI2lmZGVmIF9fT0JKQ19fCiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA1MGMwNDhkNjNmM2RjZjFjNTM4NjU1NjZlNDcy
NGYxYTgyNDhmZTA3Li5kNjdhZDMyOTkyYzI0MGYxZTU1MmY2ZWMzZWZjMDgwMDhiM2JhODM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8b2Jq
Yy9vYmpjLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9f
Q0ZTdHJpbmcgKiBDRlN0cmluZ1JlZjsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQpCiBRVF9C
RUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFTdHJpbmc7CkBAIC0zODYsNyArMzgyLDcgQEAgcHVibGlj
OgogCiAjaWYgVVNFKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7Ci0gICAgQ0ZTdHJpbmdS
ZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNy
ZWF0ZUNGU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMmNmMGRiNTYxOGUzODIw
Y2RmNDQ2NDU1ODM0MWY2OTRmNTNkMWZhMy4uYmUyNGZkYjNmZGIxMzdjODBiNmYwYTRmYjg4NzQx
YWIzNDFhNGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19y
dW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5t
bQpAQCAtMjQ4LDggKzI0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBPYmpjQ2xh
c3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0
Q2xhc3MoKSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChhZG9w
dFB0cihuZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5k
ZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKSk7CiAgICAgICAgIGNv
bnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAqPihleGVjLT5jYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgbmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lLmdl
dCgpKTsKKyAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVu
dGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5z
dGFuY2UtPmludm9rZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwogICAg
IH0KICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
aW5kZXggOTdmZTk1YjNhNDRkNDE4NWUyMTI2ZjZiYjZlZGJlY2Y0MzlmZWVlZS4uNzVkZjk5YWYz
NmJiNjAwMjY3YjlhNzJkNWM5MTU4OTBjNGRjNWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05MTYsOCArOTE2LDcgQEAgc3RhdGljIEtVUkwgY3JlYXRl
RmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHBhdGgpCiAg
ICAgLy8gYXBwIGNhY2hlIG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29k
ZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0Yp
ICYmIFBMQVRGT1JNKFdJTikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGF0aChBZG9w
dENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZV
UkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQYXRoLmdldCgp
LCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gY2ZVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOwog
ICAgIEtVUkwgdXJsKGNmVVJMLmdldCgpKTsKICNlbHNlCiAgICAgS1VSTCB1cmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3Bw
CmluZGV4IDM1NzZkNjRkZmM0ODJhNDFkNTRlMTNlZmQxOTc4MTYyYjc4MDdhN2YuLmQ3N2Y4NzRi
MDlkYzIwMDliYmVkMDM1MjQxODM1YmZlODZmODhlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MSw4ICs5
MSw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0
ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBjZkRh
dGEuZ2V0KCkpOwogICAgIAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwoQWRvcHRDRiwgcmVzb3VyY2UtPnVybCgpLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmIChjZlVSTCkKKyAgICBpZiAoUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVD
RlN0cmluZygpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0
KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVVSTEtleSwgY2ZVUkwuZ2V0KCkpOwogICAgIGVs
c2UgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTlVMTCByZXNv
dXJjZSBVUkwgaXMgaW52YWxpZCAtIHJldHVybmluZyBudWxsIHByb3BlcnR5IGxpc3QiKTsKQEAg
LTEwMSwyMyArMTAwLDE3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFy
Y2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAKICAgICAvLyBGcmFt
ZU5hbWUgc2hvdWxkIGJlIGxlZnQgb3V0IGlmIGVtcHR5IGZvciBzdWJyZXNvdXJjZXMsIGJ1dCBh
bHdheXMgaW5jbHVkZWQgZm9yIG1haW4gcmVzb3VyY2VzCiAgICAgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUocmVzb3VyY2UtPmZyYW1lTmFtZSgpKTsKLSAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5
KCkgfHwgaXNNYWluUmVzb3VyY2UpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZkZyYW1lTmFtZShBZG9wdENGLCBmcmFtZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2
ZVJlc291cmNlRnJhbWVOYW1lS2V5LCBjZkZyYW1lTmFtZS5nZXQoKSk7Ci0gICAgfQorICAgIGlm
ICghZnJhbWVOYW1lLmlzRW1wdHkoKSB8fCBpc01haW5SZXNvdXJjZSkKKyAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3Vy
Y2VGcmFtZU5hbWVLZXksIGZyYW1lTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAK
ICAgICAvLyBTZXQgTUlNRVR5cGUsIFRleHRFbmNvZGluZ05hbWUsIGFuZCBSZXNvdXJjZVJlc3Bv
bnNlIG9ubHkgaWYgdGhleSBhY3R1YWxseSBleGlzdAogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUocmVzb3VyY2UtPm1pbWVUeXBlKCkpOwotICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZNSU1FVHlwZShBZG9wdENGLCBtaW1l
VHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJv
cGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtleSwgY2ZN
SU1FVHlwZS5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFy
Y2hpdmVSZXNvdXJjZU1JTUVUeXBlS2V5LCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKICAgICAKICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyhyZXNvdXJjZS0+dGV4dEVu
Y29kaW5nKCkpOwotICAgIGlmICghdGV4dEVuY29kaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVGV4dEVuY29kaW5nKEFkb3B0Q0YsIHRleHRFbmNvZGlu
Zy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5
LCBjZlRleHRFbmNvZGluZy5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghdGV4dEVuY29kaW5nLmlz
RW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgp
LCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5LCB0ZXh0RW5jb2Rp
bmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSBy
ZXNvdXJjZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJl
c291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3Bw
CmluZGV4IGFiZjFiY2E1ZTg1NDEwYmE4N2Q1Y2FiODI1MDBkOTY5ZjEwOTI2YTcuLjY5MDg0M2Ix
Mzc3ODM0ODI4MGVjN2VhNWI0MzczODhlOWRkYzY0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC01NCwxMyArNTQsMTIgQEAgc3RhdGljIFN0
cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogI2lmIFVTRShD
RikKICAgICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1h
dCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb3JtYXRDRlN0cmluZyhBZG9wdENGLCBm
b3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdmb3JtYXQtbm9ubGl0ZXJhbCIKICNlbmRpZgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
cmVzdWx0KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cygwLCAw
LCBmb3JtYXRDRlN0cmluZy5nZXQoKSwgYXJndW1lbnRzKSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3Vt
ZW50cygwLCAwLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXJndW1lbnRzKSk7CiAj
aWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYK
QEAgLTI2MCw3ICsyNTksNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0
aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiAgICAgcmV0dXJuIFdFQl9VSV9T
VFJJTkcoIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIsICJMb29rIFVwIGluIERpY3Rpb25hcnkgY29u
dGV4dCBtZW51IGl0ZW0iKTsKICNlbHNlCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc2VsZWN0ZWRDRlN0cmluZyhBZG9wdENGLCB0cnVuY2F0ZWRTdHJpbmdGb3JMb29r
dXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBzZWxlY3RlZENGU3RyaW5nID0gdHJ1bmNhdGVkU3RyaW5nRm9yTG9v
a3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgcmV0dXJu
IGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnCVA4oCdIiwg
Ikxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVk
Q0ZTdHJpbmcuZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBV
cCDigJw8c2VsZWN0aW9uPuKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2Vs
ZWN0ZWQgd29yZCIpLnJlcGxhY2UoIjxzZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9v
a3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpKTsKQEAgLTczOCw4ICs3MzcsNyBAQCBTdHJpbmcg
a2V5Z2VuTWVudUl0ZW0yMDQ4KCkKIAogU3RyaW5nIGtleWdlbktleWNoYWluSXRlbU5hbWUoY29u
c3QgU3RyaW5nJiBob3N0KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdENGU3Ry
aW5nKEFkb3B0Q0YsIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtleWNo
YWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdENGU3RyaW5nLmdldCgp
KTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBm
cm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRh
ZyIpLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiAjZW5kaWYKQEAgLTc2Miw4
ICs3NjAsNyBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBJbnRTaXplJiBzaXplKQogewogI2lmIFVTRShDRikKICNpZiAhUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBmaWxl
bmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2Fs
ZShBZG9wdENGLCBDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgIFJldGFpblB0cjxDRkxvY2Fs
ZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOwogICAgIFJldGFp
blB0cjxDRk51bWJlckZvcm1hdHRlclJlZj4gZm9ybWF0dGVyKEFkb3B0Q0YsIENGTnVtYmVyRm9y
bWF0dGVyQ3JlYXRlKDAsIGxvY2FsZS5nZXQoKSwga0NGTnVtYmVyRm9ybWF0dGVyRGVjaW1hbFN0
eWxlKSk7CiAKICAgICBpbnQgd2lkdGhJbnQgPSBzaXplLndpZHRoKCk7CkBAIC03NzQsNyArNzcx
LDcgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGhlaWdodChBZG9wdENGLCBD
Rk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaGVpZ2h0SW50KSk7CiAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBoZWlnaHRTdHJpbmcoQWRvcHRDRiwgQ0ZOdW1iZXJGb3JtYXR0
ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1hdHRlci5nZXQoKSwgaGVpZ2h0LmdldCgp
KSk7CiAKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVA
ICVAw5clQCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVz
ZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmluZy5nZXQo
KSwgd2lkdGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndp
bmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5
bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3Ry
aW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJp
bmcoKSk7CiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIl
QCAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1
c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0
KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAppbmRleCAxYjhkMDA2ZjI1
MTlhYThhOGYzYThjNDUwZWZkMjczNDE4YWY0Mjg0Li43MzBlZGMxNWZlOTFiYzkyNzcwODVjY2My
ODg3YjA3OTA2NzgwYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKQEAgLTQ2LDggKzQ2LDcgQEAgc3RhdGljIGJvb2wg
bWFpbkJ1bmRsZUlzRXF1YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcp
CiAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBhcmUoQWRvcHRD
RiwgYnVuZGxlSWRlbnRpZmllclN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4g
Q0ZTdHJpbmdDb21wYXJlKGJ1bmRsZUlkZW50aWZpZXIsIGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBh
cmUuZ2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOworICAgIHJldHVybiBDRlN0cmluZ0Nv
bXBhcmUoYnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmllclN0cmluZy5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDhlZjUwZWViMGNi
MDg0ZDFiOWIyM2I4N2MzYmZhODk4MzkyYjhhMmQuLmMxODcwNjYzMzU2NTA1NTc5YWZkN2I2MWFj
MTczOTA0MDY0NGY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0Zp
bGVTeXN0ZW1DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3Rl
bUNGLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENTdHJpbmcg
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nKEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmco
KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZT
dHJpbmcoKTsKIAogICAgIGlmICghY2ZTdHJpbmcpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7
CkBAIC02Myw4ICs2Myw3IEBAIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0
cmluZyYgcGF0aCkKICNlbHNlCiAgICAgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7
CiAjZW5kaWYKLSAgICByZXR1cm4gUmV0YWluUHRyPENGVVJMUmVmPihBZG9wdENGLCBDRlVSTENy
ZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
KEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCksIHBhdGhTdHlsZSwgRkFMU0Up
KTsKKyAgICByZXR1cm4gUmV0YWluUHRyPENGVVJMUmVmPihBZG9wdENGLCBDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhdGhTdHls
ZSwgRkFMU0UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25X
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FBbmltYXRpb25XaW4uY3BwCmluZGV4IDk3ZmIwYjYwOTQ2OGY0ZWQzNWIxZTE5MzhkOThiYmQ4
OTQyMjI1ODYuLjg1NmE0ZmNhZGVkMmYwYjYyNjBmNWU5MmJlMTE0NWRjMTJhNWM4NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
QW5pbWF0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE1MSw4ICsxNTEsNyBAQCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUgdHlwZSwg
Y29uc3QgU3RyaW5nJiBrZXlQYQogICAgIGVsc2UKICAgICAgICAgbV9hbmltYXRpb24uYWRvcHRD
RihDQUNGQW5pbWF0aW9uQ3JlYXRlKGtDQUNGS2V5ZnJhbWVBbmltYXRpb24pKTsKICAgICAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwga2V5UGF0aC5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBDQUNGQW5pbWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQoKSwgcy5n
ZXQoKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRpb24uZ2V0KCksIGtl
eVBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFBsYXRmb3JtQ0FBbmltYXRpb246
OlBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCA3MDE2OGIyMTA0ZGIzNjlkYTA3NTdhMTE0NDYy
MjExMWJjMzA2MWYwLi5kZDYxNjMzN2U5MzY2ZWI3OWM5NmM2NzJiNzM5M2I2OTI0MzZmYzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMTc2LDEwICsxNzYsOCBAQCB2b2lkIFBs
YXRmb3JtQ0FMYXllcjo6YW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUp
CiBzdGF0aWMgdm9pZCByZXN1Ym1pdEFsbEFuaW1hdGlvbnMoUGxhdGZvcm1DQUxheWVyKiBsYXll
cikKIHsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyLT5hbmltYXRpb25zKCkuZW5kKCk7Ci0gICAgZm9y
IChIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGl0LT5rZXkuY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihsYXllci0+cGxh
dGZvcm1MYXllcigpLCBzLmdldCgpLCBpdC0+dmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpOwot
ICAgIH0KKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKKyAgICAgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKGxheWVyLT5wbGF0
Zm9ybUxheWVyKCksIGl0LT5rZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgaXQtPnZhbHVlLT5w
bGF0Zm9ybUFuaW1hdGlvbigpKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmVuc3VyZUFu
aW1hdGlvbnNTdWJtaXR0ZWQoKQpAQCAtMjk3LDggKzI5NSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxh
eWVyOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmlt
YXRpb24qCiAgICAgLy8gQWRkIGl0IHRvIHRoZSBhbmltYXRpb24gbGlzdAogICAgIG1fYW5pbWF0
aW9ucy5hZGQoa2V5LCBhbmltYXRpb24pOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBz
KEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJBZGRBbmltYXRp
b24obV9sYXllci5nZXQoKSwgcy5nZXQoKSwgYW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigp
KTsKKyAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obV9sYXllci5nZXQoKSwga2V5LmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGFuaW1hdGlvbi0+cGxhdGZvcm1BbmltYXRpb24oKSk7CiAgICAgc2V0
TmVlZHNDb21taXQoKTsKIAogICAgIC8vIFRlbGwgdGhlIGhvc3QgYWJvdXQgaXQgc28gd2UgY2Fu
IGZpcmUgdGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVudApAQCAtMzEyLDggKzMwOSw3IEBAIHZvaWQg
UGxhdGZvcm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkp
CiAgICAgLy8gUmVtb3ZlIGl0IGZyb20gdGhlIGFuaW1hdGlvbiBsaXN0CiAgICAgbV9hbmltYXRp
b25zLnJlbW92ZShrZXkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0Ys
IGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJSZW1vdmVBbmltYXRpb24obV9s
YXllci5nZXQoKSwgcy5nZXQoKSk7CisgICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9uKG1fbGF5
ZXIuZ2V0KCksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIC8vIFdlIGRvbid0
ICJyZW1vdmUiIGEgbGF5ZXIgZnJvbSBBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHdoZW4gaXQg
bG9zZXMgYW4gYW5pbWF0aW9uLgogICAgIC8vIFRoZXJlIG1heSBiZSBvdGhlciBhY3RpdmUgYW5p
bWF0aW9ucyBvbiB0aGUgbGF5ZXIgYW5kIGlmIGFuIGFuaW1hdGlvbgpAQCAtNTg2LDggKzU4Miw3
IEBAIFN0cmluZyBQbGF0Zm9ybUNBTGF5ZXI6Om5hbWUoKSBjb25zdAogCiB2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6c2V0TmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcyhBZG9wdENGLCB2YWx1ZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNG
TGF5ZXJTZXROYW1lKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZMYXllclNldE5h
bWUobV9sYXllci5nZXQoKSwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgc2V0
TmVlZHNDb21taXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5h
bC5jcHAKaW5kZXggYzQzMGNmMjg0NjE0NjY0N2JmNjFmYzdhNzE2MjlmNTJmMDIxZmE2YS4uMTUy
NzViM2FlNWZlNWMxYzZhNGY4Zjg0ZmQ2NjkwZDIxZmNmNThkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVy
bmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBQbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6dXBkYXRlVGlsZXMoKQogCiAjaWZuZGVmIE5ERUJVRwog
ICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSAiVGlsZSAoIiArIFN0cmluZzo6bnVtYmVyKGkpICsg
IiwiICsgU3RyaW5nOjpudW1iZXIoaikgKyAiKSI7Ci0gICAgICAgICAgICBDQUNGTGF5ZXJTZXRO
YW1lKHRpbGUsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgbmFtZS5jcmVhdGVDRlN0
cmluZygpKS5nZXQoKSk7CisgICAgICAgICAgICBDQUNGTGF5ZXJTZXROYW1lKHRpbGUsIG5hbWUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAKaW5kZXggMjFlOWRiNGMyOGQ5YTI1NTEzNTIwYWNlNzA4NDAzYWM1ZTc3YWI5My4uZGQzNzgx
NTk3Zjg1ZWI2MTBkY2M0NzFlYzgzMTUzZTBhYmQyY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTM3Nyw4
ICszNzcsNyBAQCBzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVmIGpwZWdVVEkoKQogc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWlt
ZVR5cGVDRlN0cmluZyhBZG9wdENGLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBy
ZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJy
ZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlQ0ZTdHJpbmcu
Z2V0KCksIDApKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVu
dGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDApKTsKICNlbHNlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSXQg
aXMgdW5jbGVhciBpZiBDRlNUUiBpcyB0aHJlYWRzYWZlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQppbmRleCBi
ZDUwYTMxNzVmM2I0MjVhODgyNmNkMmE1NmE2MmUyMTkzNjk2MzM3Li45NTNiY2I5ZDI4YWQwZWI3
NWFiMzg4MTNjMzQzOTQ1NWYxMjYyYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KQEAgLTMzLDE2ICszMywx
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNl
VHlwZShjb25zdCBTdHJpbmcmIHV0aSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0
aXJlZihBZG9wdENGLCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBtaW1lKEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRp
cmVmLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgcmV0dXJuIG1pbWUuZ2V0KCk7
CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpLmdldCgpOwogfQog
CiBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmlu
ZyYgdXRpKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdHlwZShBZG9wdENGLCB1dGku
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24o
QWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh0eXBlLmdldCgpLCBrVVRU
YWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbi5nZXQoKTsK
KyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSkuZ2V0
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRy
b2xsZXJDb3JlVGV4dC5tbQppbmRleCA0Y2I4NzZjMzY1ZWM5ZGQ3MTYwYTFkMmZkZTA5ZTdmMzJm
MDBiYWM5Li41N2Y3MGZmZjI4ZTc0ZjZmZTE1Nzc4NzM1Y2IwMzIwNDdhYTMxNjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0yODIsNyArMjgyLDcgQEAg
dm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFy
YWN0ZXJzKGNvbnN0IFVDaGFyKiBjcCwKICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29tcGxl
eFRleHRSdW5zLmFwcGVuZChDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKG1fZm9udC5wcmltYXJ5Rm9u
dCgpLCBjcCwgc3RyaW5nTG9jYXRpb24gKyBydW5SYW5nZS5sb2NhdGlvbiwgcnVuUmFuZ2UubGVu
Z3RoLCBtX3J1bi5sdHIoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcnVuRm9udERhdGEgPSBm
b250Q2FjaGUoKS0+Z2V0Q2FjaGVkRm9udERhdGEobV9mb250LmZvbnREZXNjcmlwdGlvbigpLCBm
b250TmFtZS5nZXQoKSwgZmFsc2UsIEZvbnRDYWNoZTo6RG9Ob3RSZXRhaW4pLmdldCgpOworICAg
ICAgICAgICAgICAgICAgICBydW5Gb250RGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250
RGF0YShtX2ZvbnQuZm9udERlc2NyaXB0aW9uKCksIFN0cmluZyhmb250TmFtZS5nZXQoKSksIGZh
bHNlLCBGb250Q2FjaGU6OkRvTm90UmV0YWluKS5nZXQoKTsKICNpZiAhUExBVEZPUk0oV1gpCiAg
ICAgICAgICAgICAgICAgICAgIC8vIENvcmUgVGV4dCBtYXkgaGF2ZSB1c2VkIGEgZm9udCB0aGF0
IGlzIG5vdCBrbm93biB0byBOU0ZvbnRNYW5hZ2VyLiBJbiB0aGF0IGNhc2UsIGZhbGwgYmFjayBv
bgogICAgICAgICAgICAgICAgICAgICAvLyB1c2luZyB0aGUgZm9udCBhcyByZXR1cm5lZCwgZXZl
biB0aG91Z2ggaXQgbWF5IG5vdCBoYXZlIHRoZSBiZXN0IE5TRm9udFJlbmRlcmluZ01vZGUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBiZDg4MDIw
NDQxYjBlOWFlMDBiYWRhZjM2YjJmNGY1YTZhNmJlYWU3Li5mZDRhYjk5YjE3NDc1ZDQxNGIyMWFh
M2VjZDU3ZTYxODBhMjhmY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlw
Ym9hcmRNYWMubW0KQEAgLTk5LDExICs5OSwxMCBAQCBzdGF0aWMgU3RyaW5nIGNvY29hVHlwZUZy
b21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKICAgICAvLyBUcnkgVVRJ
IG5vdwogICAgIFN0cmluZyBtaW1lVHlwZSA9IHFUeXBlOwotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXRpVHlwZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9y
VGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCksIE5VTEwp
KTsKLSAgICBpZiAodXRpVHlwZSkgewotICAgICAgICBDRlN0cmluZ1JlZiBwYlR5cGUgPSBVVFR5
cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQ
Ym9hcmRUeXBlKTsKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlID0gYWRv
cHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlN
RVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwpKSkgeworICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZl
cnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkp
OwogICAgICAgICBpZiAocGJUeXBlKQotICAgICAgICAgICAgcmV0dXJuIHBiVHlwZTsKKyAgICAg
ICAgICAgIHJldHVybiBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gTm8gbWFwcGluZywg
anVzdCBwYXNzIHRoZSB3aG9sZSBzdHJpbmcgdGhvdWdoCkBAIC0xMTIsMTEgKzExMSw4IEBAIHN0
YXRpYyBTdHJpbmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKIAogc3RhdGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlQ0YgPSBhZG9wdENGKHR5
cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBl
KEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NOU1Bib2FyZFR5cGUsIHR5cGVDRi5nZXQoKSwgMCkpOwotICAgIGlmICh1dGlUeXBlKSB7Ci0g
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgVVRUeXBlQ29w
eVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBl
KSk7Ci0gICAgICAgIGlmIChtaW1lVHlwZSkKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB1dGlUeXBlID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFn
KGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAp
KSkgeworICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0
Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdD
bGFzc01JTUVUeXBlKSkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKG1pbWVUeXBlLmdldCgp
KTsKICAgICB9CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcAppbmRleCAwYTFhNGQ4Yzc1MTRkYTkx
MzczOWJlNWUzNDQ2ZDQ5N2Q5NWE0NzhiLi5lNThkOWE5NDk5NjkyN2I5YmI1YjliMzQ2MTQ5Nzhm
NWFiZjRmM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5
R2VuZXJhdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5
R2VuZXJhdG9yTWFjLmNwcApAQCAtNjAsMTEgKzYwLDcgQEAgU3RyaW5nIHNpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYg
Y2gKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2hhbGxlbmdlU3RyaW5nQ0YoQWRvcHRDRiwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5RGVzY3JpcHRpb24o
QWRvcHRDRiwga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCB3a1NpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmdDRi5n
ZXQoKSwga2V5RGVzY3JpcHRpb24uZ2V0KCkpKTsKLQotICAgIHJldHVybiByZXN1bHQuZ2V0KCk7
CisgICAgcmV0dXJuIGFkb3B0Q0Yod2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmco
a2V5U2l6ZSwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtleWdlbktl
eWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpLmdldCgp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0F1dGhlbnRpY2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmNwcAppbmRleCA4N2EzZmFiOGE3NDM3YWUxMGFmNDM5YTRlNGUw
MmNkMmUxYTMwZGViLi43YjFkNGZhNDc4N2YxZDFlMGQ5ZTNhNGRlODFmM2ViNTQ2ZDBjZWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0
aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAKQEAgLTExOSwxMyArMTE5LDcgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNy
ZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4g
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlV2l0aElkZW50aXR5QW5kQ2VydGlmaWNhdGVBcnJheShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBjb3JlQ3JlZGVudGlhbC5pZGVudGl0eSgpLCBjb3JlQ3JlZGVudGlh
bC5jZXJ0aWZpY2F0ZXMoKSwgcGVyc2lzdGVuY2UpOwogI2VuZGlmCiAKLSAgICBDRlN0cmluZ1Jl
ZiB1c2VyID0gY29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZT
dHJpbmdSZWYgcGFzc3dvcmQgPSBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3Ry
aW5nKCk7Ci0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIHJlc3VsdCA9IENGVVJMQ3JlZGVudGlhbENy
ZWF0ZSgwLCB1c2VyLCBwYXNzd29yZCwgMCwgcGVyc2lzdGVuY2UpOwotICAgIENGUmVsZWFzZSh1
c2VyKTsKLSAgICBDRlJlbGVhc2UocGFzc3dvcmQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKIH0KIAogQ0ZVUkxQcm90ZWN0aW9uU3Bh
Y2VSZWYgY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCkBAIC0xOTIs
MTMgKzE4Niw3IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3Rl
Y3Rpb25TcGFjZSYgY29yZVNwYWNlKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiAKLSAgICBDRlN0cmluZ1JlZiBob3N0ID0gY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0
cmluZygpOwotICAgIENGU3RyaW5nUmVmIHJlYWxtID0gY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRl
Q0ZTdHJpbmcoKTsKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiByZXN1bHQgPSBDRlVSTFBy
b3RlY3Rpb25TcGFjZUNyZWF0ZSgwLCBob3N0LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBl
LCByZWFsbSwgc2NoZW1lKTsKLSAgICBDRlJlbGVhc2UoaG9zdCk7Ci0gICAgQ0ZSZWxlYXNlKHJl
YWxtKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTFByb3RlY3Rp
b25TcGFjZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGNvcmVTcGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIHNjaGVtZSk7CiB9CiAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRl
bnRpYWxSZWYgY2ZDcmVkZW50aWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1ZDZkNzM5MjZjNDRlZTQ4ODAx
ODJmZmZlODk4MWFjZjM4YTc2YjBhLi41MDE3OTcxZGUxNGE0NTRhODRmOWEzODhiYjQ3ZjY0ODQ4
OTFkYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nv
b2tpZUphckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgc2V0Q29va2llcyhE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
ICAgICAvLyBjb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRvZXNuJ3QgcGFyc2UgY29v
a2llcyB3aXRob3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gdmFsdWUuY29u
dGFpbnMoJz0nKSA/IHZhbHVlIDogdmFsdWUgKyAiPSI7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNvb2tpZVN0cmluZ0NGKEFkb3B0Q0YsIGNvb2tpZVN0cmluZy5jcmVhdGVDRlN0cmlu
ZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGID0gY29va2ll
U3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
aGVhZGVyRmllbGRzQ0YoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsCiAgICAgICAgIChjb25zdCB2b2lkKiopJnNfc2V0Q29va2llS2V5Q0YsIChjb25zdCB2
b2lkKiopJmNvb2tpZVN0cmluZ0NGLCAxLAogICAgICAgICAma0NGVHlwZURpY3Rpb25hcnlLZXlD
YWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDNmOTAxYTU0
MWRlMDBlZWJlYzI0MzIyZDA0Mzk2ZWU0YTIyMDVmYjYuLmNlMTQ1MTkwOWFlZDdlMmI0ZGVmOWNl
MGQ5YmI0MjkzNDE4ZGFjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvRE5TQ0ZOZXQuY3BwCkBAIC05MCwxMiArOTAsMTIgQEAgdm9pZCBETlNSZXNvbHZlUXVl
dWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RuYW1l
Q0YoQWRvcHRDRiwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENG
SG9zdFJlZj4gaG9zdChBZG9wdENGLCBDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZUNG
LmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0
Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAg
IGlmICghaG9zdCkgewogICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKwogICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwg
MCwgMCwgMCwgMCB9OwogICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7
IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgogICAg
IEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxi
YWNrLCAmY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggNmZkZjVhZGI5OWNkODNlNjdjY2IyZmIw
ZjA0NzRmMDdiYTgzNWM1ZC4uZTQ3MjEzOGUxYTlkZGYzYjlmMTgyM2FmZTNlNDBlZTUzNmY5ZjJl
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VFcnJvckNGLmNwcApAQCAtMTQ3LDEzICsxNDcsMTEgQEAgQ0ZFcnJvclJlZiBSZXNvdXJj
ZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICBpZiAoIW1fcGxhdGZvcm1FcnJvcikgewogICAg
ICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwg
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICAgICAgaWYg
KCFtX2xvY2FsaXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZyhBZG9wdENGLCBtX2xv
Y2FsaXplZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRp
b25LZXksIGxvY2FsaXplZERlc2NyaXB0aW9uU3RyaW5nLmdldCgpKTsKLSAgICAgICAgfQorICAg
ICAgICBpZiAoIW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVz
Y3JpcHRpb25LZXksIG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiAKICAgICAgICAgaWYgKCFtX2ZhaWxpbmdVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcoQWRvcHRDRiwgbV9mYWls
aW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBmYWlsaW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAg
ICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VS
TFN0cmluZ0tleSwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgZmFpbGlu
Z1VSTFN0cmluZy5nZXQoKSwgMCkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
dXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxLZXksIHVybC5nZXQoKSk7CkBAIC0xNjQsOCArMTYy
LDcgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICAgICAg
ICAgIHdrU2V0U1NMUGVlckNlcnRpZmljYXRlRGF0YSh1c2VySW5mby5nZXQoKSwgbV9jZXJ0aWZp
Y2F0ZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZG9tYWluU3RyaW5nKEFkb3B0Q0YsIG1fZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgICAgICBtX3BsYXRmb3JtRXJyb3IuYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIGRvbWFpblN0
cmluZy5nZXQoKSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CisgICAgICAgIG1fcGxh
dGZvcm1FcnJvciA9IGFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBtX2RvbWFpbi5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gbV9wbGF0Zm9ybUVycm9yLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXgg
MDFlOGI4YWU1YzBkMWM2YTZhOGYwMzMwODVlOTBmMDEwYmMxZjdjNi4uODA3MGMyNTgyYjdjYWEw
ZGU2ZmUzNWYzMDc0M2Y3OGIyMGI3N2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0xMzEs
NyArMTMxLDcgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiA+
JiBjbGllbnRDZXJ0cygpCiAKIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJl
c3BvbnNlUmVmIHJlc3BvbnNlKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlN
RVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUo
KS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAKICAgICBDRlVSTFJlc3BvbnNlU2V0
TUlNRVR5cGUocmVzcG9uc2UsIGRlZmF1bHRNSU1FVHlwZVN0cmluZyk7CiB9CkBAIC0xNjEsOCAr
MTYxLDggQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25u
ZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgIGlmIChjZlJlZGlyZWN0UmVzcG9u
c2UpIHsKICAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9u
c2VHZXRIVFRQUmVzcG9uc2UoY2ZSZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgaWYgKGh0dHBN
ZXNzYWdlICYmIENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2Up
ID09IDMwNykgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1l
dGhvZChBZG9wdENGLCBoYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZChBZG9wdENGLCBD
RlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7CisgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gaGFuZGxlLT5sYXN0SFRU
UE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG5ld01ldGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0
aG9kKGNmUmVxdWVzdCkpOwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRp
b25zKGxhc3RIVFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAs
IENGU3RyaW5nR2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNl
SW5zZW5zaXRpdmUpKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJl
cXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFi
bGVDb3B5KDAsIGNmUmVxdWVzdCkpOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKQEAg
LTE3NSw5ICsxNzUsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChD
RlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgICAgICAgICAgICAg
ICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5KTsKIAog
ICAgICAgICAgICAgICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gaGFuZGxlLT5maXJz
dFJlcXVlc3QoKS5odHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsQ29udGVudFR5cGVDRihBZG9wdENGLCBvcmlnaW5hbENvbnRl
bnRUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGlmICghb3JpZ2luYWxD
b250ZW50VHlwZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNl
dEhUVFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNUUigiQ29udGVu
dC1UeXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0Lmdl
dCgpLCBDRlNUUigiQ29udGVudC1UeXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVl
c3QuZ2V0KCk7CiAgICAgICAgICAgICB9CkBAIC02MDcsMTAgKzYwNiw3IEBAIHZvaWQgUmVzb3Vy
Y2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsCiAjZW5kaWYKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFk
LT5tX3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1c2Vy
KEFkb3B0Q0YsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBwYXNzKEFkb3B0Q0YsIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbChBZG9wdENG
LAotICAgICAgICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHVzZXIuZ2V0KCksIHBhc3MuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5v
bmUpKTsKKyAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9
IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1f
dXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogICAgICAgICAKICAg
ICAgICAgS1VSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNw
b25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtMTAwNSw3ICsxMDAxLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb25JZGVudGlmaWVyRGVmYXVsdEJhc2UoKSA6IHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNm
SWRlbnRpZmllcihBZG9wdENGLCBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3Jl
YXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIg
PSBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKIAog
ICAgIHByaXZhdGVTdG9yYWdlU2Vzc2lvbigpID0gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5k
ZXggOGNmZjg3Y2EwZDU4ZWEyZTUyM2YzNzMwZDZiNGE3NzMwYjA2YmU0Yi4uMDM1NDk3YjM2MmZj
ZmU0ZDNiNjAwYzdhYmYxMTEwMTBiM2UzYWIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAg
LTExOSwxMyArMTE5LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEhlYWRlckZpZWxkcyhDRk11
dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWEKICAgICB9CiAKICAgICBI
VFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXF1ZXN0SGVhZGVycy5lbmQoKTsK
LSAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVxdWVzdEhlYWRl
cnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIGtleSA9
IGl0LT5rZXkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWUgPSBp
dC0+dmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhl
YWRlckZpZWxkVmFsdWUocmVxdWVzdCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIENGUmVsZWFzZShr
ZXkpOwotICAgICAgICBDRlJlbGVhc2UodmFsdWUpOwotICAgIH0KKyAgICBmb3IgKEhUVFBIZWFk
ZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVxdWVzdEhlYWRlcnMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShy
ZXF1ZXN0LCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGl0LT52YWx1ZS5jcmVhdGVD
RlN0cmluZygpLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KCkKQEAgLTE0Niw4ICsxNDEsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIHdrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9u
KFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RvcmFnZVNlc3Npb24oKSwgY2ZSZXF1ZXN0KTsKICNl
bmRpZgogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXF1ZXN0TWV0aG9kKEFkb3B0Q0Ys
IGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlVSTFJlcXVlc3RTZXRIVFRQ
UmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIHJlcXVlc3RNZXRob2QuZ2V0KCkpOworICAgIENGVVJM
UmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhvZCgpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5nRW5hYmxlZCgpKQog
ICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoY2ZSZXF1ZXN0LCB0b0hUVFBQaXBl
bGluaW5nUHJpb3JpdHkobV9wcmlvcml0eSkpOwpAQCAtMTY0LDcgKzE1OCw3IEBAIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgdW5zaWduZWQgZmFs
bGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkuc2l6ZSgpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gZW5jb2RpbmdG
YWxsYmFja3MoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgZmFsbGJhY2tDb3VudCwgMCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gZmFs
bGJhY2tDb3VudDsgKytpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZW5jb2Rp
bmdOYW1lKEFkb3B0Q0YsIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZW5jb2RpbmdOYW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICBDRlN0cmluZ0VuY29k
aW5nIGVuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGluZyhl
bmNvZGluZ05hbWUuZ2V0KCkpOwogICAgICAgICBpZiAoZW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5j
b2RpbmdJbnZhbGlkSWQpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoZW5jb2RpbmdG
YWxsYmFja3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGVuY29kaW5nKSk7
CkBAIC0yMTMsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVzb3Vy
Y2VSZXF1ZXN0KCkKICAgICAgICAgVmVjdG9yPGNvbnN0IHZvaWQqLCAxMjg+IHZhbHVlcyhoZWFk
ZXJDb3VudCk7CiAgICAgICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVycywg
a2V5cy5kYXRhKCksIHZhbHVlcy5kYXRhKCkpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGhlYWRlckNvdW50OyArK2kpCi0gICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KChD
RlN0cmluZ1JlZilrZXlzW2ldLCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKKyAgICAgICAgICAg
IG1faHR0cEhlYWRlckZpZWxkcy5zZXQoU3RyaW5nKChDRlN0cmluZ1JlZilrZXlzW2ldKSwgU3Ry
aW5nKChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pKTsKICAgICAgICAgQ0ZSZWxlYXNlKGhlYWRlcnMp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCmluZGV4IGE0NWJlZWRjNDMzMDA3NzJi
MzljYWVlMmIzOTQ2Y2FjM2RmMGJmMzEuLjk1NTA4MzYzYWFlNDI1ZWM4ODRhNDg0N2E1MTU5ODM3
ZDA4ZDM5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKQEAgLTUxLDkgKzUxLDcgQEAgQ0ZV
UkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKICAgICAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgbV91cmwuY3JlYXRlQ0ZVUkwoKSk7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgbV9taW1lVHlwZS5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0ZXh0RW5jb2RpbmdO
YW1lKEFkb3B0Q0YsIG1fdGV4dEVuY29kaW5nTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAg
ICAgbV9jZlJlc3BvbnNlLmFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwuZ2V0KCks
IG1pbWVUeXBlLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgdGV4dEVuY29kaW5nTmFt
ZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOworICAgICAgICBtX2NmUmVzcG9u
c2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwgbV9taW1lVHlwZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgbV90ZXh0RW5j
b2RpbmdOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93
ZWQpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVD
Rk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUNGTmV0LmNwcAppbmRleCBkODZjNzZiYzZmNDVjMTgxNjQ4ZTBhNzc2Y2QzOWJhZTg5
MDg0MGQ2Li40YTdjZDkwMmFlOWYwMjg3ZDg5OGQ5MmJkOTg1ZGQ3NjZkNDJhMTcxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRs
ZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUNGTmV0LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKCkKICAgICBpZiAobV9jb25uZWN0aW9uVHlwZSA9PSBV
bmtub3duKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhv
c3QoQWRvcHRDRiwgbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gaG9zdCA9IG1fdXJsLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpOwogCiAg
ICAgLy8gQ3JlYXRpbmcgc3RyZWFtcyB0byBmaW5hbCBkZXN0aW5hdGlvbiwgbm90IHRvIHByb3h5
LgogICAgIENGUmVhZFN0cmVhbVJlZiByZWFkU3RyZWFtID0gMDsKQEAgLTM1OSwxMiArMzU5LDEw
IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGVudGlhbHMoQ0ZIVFRQ
TWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogICAgIFN0cmluZyBwYXNzd29yZDsKICAgICBpZiAo
IW1fc2VudFN0b3JlZENyZWRlbnRpYWxzICYmIGdldFN0b3JlZENPTk5FQ1RQcm94eUNyZWRlbnRp
YWxzKHByb3RlY3Rpb25TcGFjZSwgbG9naW4sIHBhc3N3b3JkKSkgewogICAgICAgICAvLyBUcnkg
dG8gYXBwbHkgc3RvcmVkIGNyZWRlbnRpYWxzLCBpZiB3ZSBoYXZlbid0IHRyaWVkIHRob3NlIGFs
cmVhZHkuCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9naW5DRihBZG9wdENGLCBs
b2dpbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBw
YXNzd29yZENGKEFkb3B0Q0YsIHBhc3N3b3JkLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAv
LyBDcmVhdGluZyBhIHRlbXBvcmFyeSByZXF1ZXN0IHRvIG1ha2UgQ0ZOZXR3b3JrIGFwcGx5IGNy
ZWRlbnRpYWxzIHRvIGl0LiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGNhbm5vdCB3b3JrIHdpdGggTlRM
TSBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IHJlcXVlc3Qg
dG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkgY3JlZGVudGlhbHMgdG8gaXQuIFVuZm9ydHVuYXRlbHks
IHRoaXMgY2Fubm90IHdvcmsgd2l0aCBOVExNIGF1dGhlbnRpY2F0aW9uLgogICAgICAgICBSZXRh
aW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gZHVtbXlSZXF1ZXN0KEFkb3B0Q0YsIENGSFRUUE1lc3Nh
Z2VDcmVhdGVSZXF1ZXN0KDAsIENGU1RSKCJHRVQiKSwgbV9odHRwc1VSTC5nZXQoKSwga0NGSFRU
UFZlcnNpb24xXzEpKTsKIAotICAgICAgICBCb29sZWFuIGFwcGxpZWRDcmVkZW50aWFscyA9IENG
SFRUUE1lc3NhZ2VBcHBseUNyZWRlbnRpYWxzKGR1bW15UmVxdWVzdC5nZXQoKSwgYXV0aGVudGlj
YXRpb24uZ2V0KCksIGxvZ2luQ0YuZ2V0KCksIHBhc3N3b3JkQ0YuZ2V0KCksIDApOworICAgICAg
ICBCb29sZWFuIGFwcGxpZWRDcmVkZW50aWFscyA9IENGSFRUUE1lc3NhZ2VBcHBseUNyZWRlbnRp
YWxzKGR1bW15UmVxdWVzdC5nZXQoKSwgYXV0aGVudGljYXRpb24uZ2V0KCksIGxvZ2luLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIHBhc3N3b3JkLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApOwog
ICAgICAgICBBU1NFUlRfVU5VU0VEKGFwcGxpZWRDcmVkZW50aWFscywgYXBwbGllZENyZWRlbnRp
YWxzKTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByb3h5QXV0aG9yaXphdGlv
blN0cmluZyhBZG9wdENGLCBDRkhUVFBNZXNzYWdlQ29weUhlYWRlckZpZWxkVmFsdWUoZHVtbXlS
ZXF1ZXN0LmdldCgpLCBDRlNUUigiUHJveHktQXV0aG9yaXphdGlvbiIpKSk7CkBAIC0zODksNyAr
Mzg3LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhD
RkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiBDRlN0cmluZ1JlZiBTb2NrZXRTdHJlYW1I
YW5kbGU6OmNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqIGluZm8pCiB7CiAgICAgU29ja2V0
U3RyZWFtSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUqPihp
bmZvKTsKLSAgICByZXR1cm4gU3RyaW5nKCJXZWJLaXQgc29ja2V0IHN0cmVhbSwgIiArIGhhbmRs
ZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygi
V2ViS2l0IHNvY2tldCBzdHJlYW0sICIgKyBoYW5kbGUtPm1fdXJsLnN0cmluZygpKS5jcmVhdGVD
RlN0cmluZygpLmxlYWtSZWYoKTsKIH0KIAogc3RydWN0IE1haW5UaHJlYWRFdmVudENhbGxiYWNr
SW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZVJlcXVlc3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KaW5kZXggOTMyMTZjYjU1ZTg1NzczMTM2ZjNlOGMzYTA3
Y2U2ZmI1NTZlMDZkMi4uZTY5MzQ4NDgxYWIwYTAyMTM3OTRkYTI0ZWZiY2M0ZjU2ZGMwMDhmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VS
ZXF1ZXN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbQpAQCAtMTYzLDkgKzE2Myw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgICAgIE5TTXV0YWJsZUFycmF5ICpl
bmNvZGluZ0ZhbGxiYWNrcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgICAgIHVuc2ln
bmVkIGNvdW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheS5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gY291bnQ7ICsr
aSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZW5jb2RpbmdOYW1lID0gbV9yZXNwb25zZUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygp
OwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuc0VuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0
RW5jb2RpbmdUb05TU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXROYW1l
VG9FbmNvZGluZyhlbmNvZGluZ05hbWUpKTsKLSAgICAgICAgICAgIENGUmVsZWFzZShlbmNvZGlu
Z05hbWUpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBlbmNvZGluZ05hbWUg
PSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNy
ZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5zRW5jb2RpbmcgPSBD
RlN0cmluZ0NvbnZlcnRFbmNvZGluZ1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0NvbnZlcnRJ
QU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZS5nZXQoKSkpOworCiAgICAgICAg
ICAgICBpZiAobnNFbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKICAgICAg
ICAgICAgICAgICBbZW5jb2RpbmdGYWxsYmFja3MgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJX
aXRoVW5zaWduZWRMb25nOm5zRW5jb2RpbmddXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
CmluZGV4IDZhYTc2ZjZkZDc4NGRhMDlkN2JmZjdlMWU2ODU1ZTc1Y2FkYWU5OWMuLmY5NzEwYjJk
ZDI1MTg0NjIwMTUxMzI0MmY0MGYzYTQxMjY0ZjIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KQEAg
LTQ3OCw3ICs0NzgsNyBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNw
b25zZVJlZiBjZlJlc3BvbnNlKQogICAgIH0KICAgICAKICAgICBpZiAoIXJlc3VsdCkgewotICAg
ICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29yZTo6
ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgc3RhdGljIENGU3Ry
aW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSgp
LmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgICAgICByZXN1bHQgPSBkZWZhdWx0TUlN
RVR5cGVTdHJpbmc7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAppbmRleCA0ZTNmY2VkNDQ0NjQ5YTljNWNlZjM2NGVjMDYy
ZmU4ZGIxODg0ZjA5Li4wZjY2OGQxMGY4ZTQxN2Y1NmVhOTNhMDg1ODEyNGNkZjJiYTQxN2JmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5j
cHAKQEAgLTQ2LDggKzQ2LDcgQEAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9taWNTdHJpbmdL
ZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4gPjo6Y3JlYXQKIHRlbXBsYXRlPD4K
IFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5Q
dHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYg
bG9jYWxlSWRlbnRpZmllcikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmTG9jYWxl
SWRlbnRpZmllcihBZG9wdENGLCBsb2NhbGVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNmTG9jYWxlSWRlbnRpZmllci5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBsb2NhbGVJZGVudGlmaWVyLmltcGwoKS0+Y3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZv
ckxvY2FsZShsb2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKaW5kZXggZDdjZGE3OTYyOTg2MjU3M2EzNWM2
YTkyNjg1NzUyMzA1YWI2YzI3ZS4uMjY5N2U3NmYwYmY1OTIzYjE1MmZlZGQ3MTAzN2U5NzExNDky
NmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAK
QEAgLTIzLDggKzIzLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lm
IFVTRShDRikKLQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Cisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNTEsNyAr
NTEsNyBAQCBTdHJpbmc6OlN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiAgICAgfQogfQogCi1DRlN0
cmluZ1JlZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKK1JldGFpblB0cjxDRlN0cmlu
Z1JlZj4gU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ltcGwp
CiAgICAgICAgIHJldHVybiBDRlNUUigiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggN2EyZDgyZTQwMmQyNGIzN2JiYzA3MWY0
N2Y5OGUwYTg2NTE4NDkyMS4uMWRhNTYxYjYwNjJiY2FiNDllMDliZmU3OTc4MmIyNzNmMGRhMDk0
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBs
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENG
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3Vu
ZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhy
ZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMzIsNyArMTMzLDcgQEAgbmFtZXNw
YWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAKIH0KIAotQ0ZTdHJpbmdSZWYgU3RyaW5n
SW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBTdHJpbmdJbXBs
OjpjcmVhdGVDRlN0cmluZygpCiB7CiAgICAgaWYgKCFtX2xlbmd0aCB8fCAhaXNNYWluVGhyZWFk
KCkpIHsKICAgICAgICAgaWYgKGlzOEJpdCgpKQpAQCAtMTUzLDcgKzE1NCw3IEBAIENGU3RyaW5n
UmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKICAgICAvLyBDb3JlRm91bmRhdGlvbiBt
aWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIgY3VycmVudFN0cmlu
ZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAgIFN0cmluZ1dyYXBw
ZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IDA7CiAKLSAgICByZXR1cm4gc3RyaW5nOwor
ICAgIHJldHVybiBhZG9wdENGKHN0cmluZyk7CiB9CiAKIC8vIE9uIFN0cmluZ0ltcGwgY3JlYXRp
b24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0aGUgU3RyaW5nV3JhcHBlckNG
QWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
U3RyaW5nSW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmlu
Z0ltcGxNYWMubW0KaW5kZXggNmY1ZTk1M2JhMTkyNWU1NDViYmI1YWM1M2UyMTQ3NmJiOGYwM2E1
Ny4uMmYwODhhN2ViMzYzYzVhY2QwMTQyZjM4NzA5NWI5NjJjMTgxNmE2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCkBAIC0yMiwx
MiArMjIsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKICNpbmNsdWRl
ICJGb3VuZGF0aW9uRXh0cmFzLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1l
c3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKigpCiB7Ci0gICAg
cmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpKTsKKyAgICByZXR1cm4gSGFy
ZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKaW5kZXgg
MzEyNDEyZmFhYjhhYzIzNjI4NjUwM2RhY2E1YTkyOGJlYmQ0Mzk2Ni4uYTcwNDc0OTUyMGZkZDMy
ZDRlMWUwMGZjZmMwZGVhZjM4N2NiYTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgQ1N0cmlu
ZyBUZXh0Q29kZWNNYWM6OmVuY29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxl
bmd0aCwgVW5lbmNvZGFibGUKICAgICAvLyBFbmNvZGluZyB3aWxsIGNoYW5nZSB0aGUgeWVuIHNp
Z24gYmFjayBpbnRvIGEgYmFja3NsYXNoLgogICAgIFN0cmluZyBjb3B5KGNoYXJhY3RlcnMsIGxl
bmd0aCk7CiAgICAgY29weS5yZXBsYWNlKCdcXCcsIG1fYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJv
bCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMoQWRvcHRDRiwgY29weS5jcmVhdGVD
RlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmcyA9IGNvcHkuY3JlYXRl
Q0ZTdHJpbmcoKTsKIAogICAgIENGSW5kZXggc3RhcnRQb3MgPSAwOwogICAgIENGSW5kZXggY2hh
cmFjdGVyc0xlZnQgPSBDRlN0cmluZ0dldExlbmd0aChjZnMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAppbmRleCBhNWNh
OWI3NDQ2OTJmMjg3ZjIzZjM0ODE1MGIwOGY2NWUxZmY5NWZlLi5lMjJiN2E1OWZmN2IzNDcwYWM1
YWYxN2MzN2MzZTMxYmViOThkMjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtNTIsNyArNTIsNyBAQCBib29sIFNlYXJj
aFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgpCiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBh
dXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgU3RyaW5nIGtleSA9ICJjb20u
YXBwbGUuV2ViS2l0LnNlYXJjaEZpZWxkOiIgKyBuYW1lOwotICAgIHJldHVybiBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICByZXR1cm4g
a2V5LmNyZWF0ZUNGU3RyaW5nKCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCA4
Mzc0N2YyMjM1NTZhNmFjMmFhMTY4OWRmZGZhYzFmMWVmMTdjNDc3Li4zMzdkYWNhYjJmNzEyYzk4
NmYwZjU3MjI5NmE3ODA1NjJjMzE0YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNjMsMTUgKzYz
LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgY2hhciogaW5z
cGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIjsK
IAotc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25z
dCBTdHJpbmcmIGtleSkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVh
dGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGtleUNGU3RyaW5nKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQg
V2ViIEluc3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5Q0ZTdHJpbmcuZ2V0KCkpOworICAgIHJl
dHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0
IFdlYiBJbnNwZWN0b3IgU2V0dGluZyAtICVAIiksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwg
U3RyaW5nKiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5j
ZXNLZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVuY2Vz
KGtleSk7CiAgICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZShBZG9wdENGLCBD
RlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBrQ0ZQcmVmZXJl
bmNlc0N1cnJlbnRBcHBsaWNhdGlvbikpOwogCiAgICAgaWYgKCF2YWx1ZSkKQEAgLTg4LDEyICs4
Nyw3IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3Ry
aW5nKiBzZXR0aW5nKQogCiBzdGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxp
c3RSZWY+IG9iamVjdFRvU3RvcmU7Ci0gICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKHNldHRpbmcu
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQVNTRVJUKG9iamVjdFRvU3RvcmUpOwotCi0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBjcmVhdGVLZXlGb3JQ
cmVmZXJlbmNlcyhrZXkpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUocHJlZmVyZW5j
ZXNLZXkuZ2V0KCksIG9iamVjdFRvU3RvcmUuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFw
cGxpY2F0aW9uKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRlS2V5Rm9yUHJl
ZmVyZW5jZXMoa2V5KS5nZXQoKSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQ
cmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0KaW5kZXggNGEzNWI2YTJkOGEzMmM1ZGQ4
MzQ5NzJjZDJmZGYyYWRjMzkxZTYxYS4uMzY4NzUzMTUxNzIxOGRhMjllOWNkZGRhNDIzMmEzYjEy
ODI1MzMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCkBAIC0z
MCwxMiArMzAsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkK
IHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgbV9wYXRo
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFk
b3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGJ1bmRsZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVVUkwp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVu
ZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVS
TC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihD
RkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAg
ICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZTdk
NTgzMWY2MDhjMzgzMGUzYzliZTE0YjM5NDY1ZWIyYzcxYzNiLi42NzFmMjBkNmRjYWJlMWZjMWJh
Mzk1NTdkNWU2MjhlZTdlZDdlZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTI3OSw4ICsyNzksNyBAQCBzdGF0
aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0
IFN0cmluZyYgc2FuZGJveFBybwogICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGgu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmUGx1Z2luUGF0aCA9IGFkb3B0Q0YocGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgY2ZQbHVnaW5QYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdp
blVSTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTIsOCArMjkxLDcgQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcm
IHNhbmRib3hQcm8KICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTYW5kYm94UHJvZmlsZURpcmVjdG9yeVBh
dGggPSBhZG9wdENGKHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlNhbmRib3hQcm9maWxlRGly
ZWN0b3J5UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKIAogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZTdHJpbmdDcmVhdGVX
aXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlmaWVyKTsKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZp
bGVTeXN0ZW1QYXRoUmVsYXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1lLmdldCgpLCBrQ0ZV
UkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5LmdldCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggODFiMzhlMGVj
OGZlM2M0MTg4OTc5ZWVmZDA2MjI3YjM3MGZkNGEzZS4uM2RjMzc3YzQ0NTBkODhmZTI1ZjcwMmIw
ZmE1NDNhMzhlMjhmNmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1h
Yy5tbQpAQCAtMzUyLDExICszNTIsMTAgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21D
YXJib25SZXNvdXJjZXMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmYKIAogYm9v
bCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgpLCBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1
bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJ
WFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlhbGl6ZSB0aGUg
YnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVu
ZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMzk1LDExICszOTQsOSBAQCBib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
UGx1Z2luTW9kdWxlSQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5N
SU1FVHlwZXNQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwg
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxl
UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRy
PENGVVJMUmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCi0gICAgLy8gVHJ5IHRvIGlu
aXRpYWxpemUgdGhlIGJ1bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShB
ZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5k
bGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYg
KCFidW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggY2RmZjM0NDY5
YTIzOTNkMzVhZGJhYmM0Y2IwYTM4YmEwZjU2MjMyNC4uN2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1
NGM1OGFiM2E0OGEyYjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Nm
L1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Y2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCkBAIC05NCw5ICs5NCw5IEBAIENGRGljdGlvbmFy
eVJlZiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9u
KFdlYlBhZ2VQcm94CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwoQWRvcHRDRiwgbV9lbnRyaWVzW2ld
LT51cmwoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB0aXRsZShBZG9wdENGLCBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxVUkwoQWRvcHRDRiwgbV9l
bnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHVybCA9IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZSA9IG1fZW50cmllc1tp
XS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG9yaWdpbmFsVVJMID0gbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3Ry
aW5nKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgQ29yZUlQQyBkYXRhIGVu
Y29kaW5nIGZvcm1hdCwgd2hpY2ggbWVhbnMgdGhhdCB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIENv
cmVJUEMgZW5jb2Rpbmcgd2UgbmVlZCB0byBidW1wIHRoZSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0
YVZlcnNpb24KICAgICAgICAgLy8gY29uc3RhbnQgaW4gV2ViUGFnZVByb3h5Q0YuY3BwLiBUaGUg
Q29yZUlQQyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRh
aWwsIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gZGlzay4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCmluZGV4IDc5
ZGQ4Y2VkMDJkN2NlMGQ0ZjNjMjQwNDgxOGI4MDFiZTQwZjFmN2EuLmZhYzAyYzFiNDY5MGYxMjM2
ZTlhYTc4ZGFjYTQ5MmIxYzQyNjNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYlBhZ2VQcm94eUNGLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYXNzUmVmUHRyPFdlYkRh
dGE+IFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YShXZWJQYWdlUHJveHlTZXNzaW9uU3Rh
dGVGaWx0ZQogICAgICAgICBpZiAocHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcHJvdmlzaW9uYWxVUkwgPSBtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKICAgICAg
ICAgaWYgKCFwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHByb3Zpc2lv
bmFsVVJMU3RyaW5nLmFkb3B0Q0YocHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBwcm92aXNpb25hbFVSTFN0cmluZyA9IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNG
U3RyaW5nKCk7CiAgICAgICAgICAgICBrZXlzW251bVZhbHVlc10gPSBQcm92aXNpb25hbFVSTEtl
eSgpOwogICAgICAgICAgICAgdmFsdWVzW251bVZhbHVlc10gPSBwcm92aXNpb25hbFVSTFN0cmlu
Zy5nZXQoKTsKICAgICAgICAgICAgICsrbnVtVmFsdWVzOwpAQCAtMTc5LDggKzE3OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSogd2Vi
RGF0YSkKIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3Qg
U3RyaW5nJiBuYW1lKQogewotICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFy
Y2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9w
dENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxl
LldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKQEAgLTE5MiwxMCArMTkxLDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JgogCiAgICAgaWYgKHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMu
c2l6ZSgpKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwg
c2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBp
dGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAg
ICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAgICAg
fQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1
dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50
QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNv
dXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXgg
NjgxMGYwYWJkYjlkYmViYTk5ZmEzZTFlOWIwZjA2Y2U0NWFlMDQ5NC4uMzk1NjQ5YzUwYmY0ZDZk
ZjA0YmM3NTQwYjU0YmFmNTlkYjJjMzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXIuY3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdl
cjo6Y2xlYXJDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwKICNp
ZiBVU0UoQ0ZVUkxDQUNIRSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9IEluTWVt
b3J5UmVzb3VyY2VDYWNoZXNPbmx5KSB7IAogICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJy
YXlSZWY+IGhvc3RBcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9z
dChBZG9wdENGLCBvcmlnaW4tPmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwgaG9zdC5nZXQoKSk7CisgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCksIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgIGNsZWFyQ0ZVUkxDYWNoZUZvckhvc3ROYW1lcyho
b3N0QXJyYXkuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBkMDIwOTA3YmNjZjJhMzc2MTA0N2MyNjUxNjZmNzgzYjAzMjU2
NGYzLi40MzY3MTFiNTMzZDljMWFmYmM0NzU5YzY1ZDgwZjY3OGIyYWI0YjQ0IDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAg
ICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxs
ZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW06CisgICAgICAg
IChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6cGxhdGZvcm1EaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKToKKwogMjAxMi0xMC0yNSAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBbUXRdIEFkanVzdCBsaWJyYXJ5IG5hbWUgaW4gd2Via2l0ZGlycy5wbSBh
ZnRlciByMTMxMzAwLgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCmluZGV4IDQ2
YzI3M2YxZjhjYTQwYWVlMjdjOTQ3NmM4MWZlNzM5NGMzM2JiMjQuLmIwY2I0ZTAzMWNiNzQ0NjI4
YzBiYzM0ZDU3ZDE3NmI2ODdhZjEzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VN
YWMubW0KQEAgLTg1LDggKzg1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3Jt
RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmUKICAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkNS
QVNISU5HIFRFU1Q6ICIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZXN0UGF0aCk7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwgYnVpbGRlci50b1N0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBXS1NldENyYXNoUmVwb3J0QXBwbGlj
YXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGNmU3RyaW5nLmdldCgpKTsKKyAgICAgICAgV0tTZXRD
cmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbihidWlsZGVyLnRvU3RyaW5n
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170798</attachid>
            <date>2012-10-25 20:39:27 -0700</date>
            <delta_ts>2012-10-25 21:03:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121025203800.patch</filename>
            <type>text/plain</type>
            <size>67291</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZlNDUwMTdhZDE5NzQ4OGE4ZjEwNWVi
OWU5ODFhZTllZWRjNjM0MTUuLjEyZDY0MGRkMmY1NDVjYTMyNjUyMWEzYjA0ZmUwM2ZlYWFlY2Q2
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDEyLTEwLTI1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIxMzE4MzYpOiBmYWlsdXJlcyBpbiBsaXN0IHN0eWxlcyB0
ZXN0cyBvbiBFRkwsIEdUSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQyMDdiMTIzYzA2YTc2OGQxMTM1ZWMwZjJm
N2E0NDQwZTY5NTY1MDAuLjhiYzE3NTdmZjEwNmM3NTBhMDVlMmFjMzA0MzIyY2NmYTg0ZDFlMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2MyBAQAogMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcg
c2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmlu
Zy4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0
TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xv
b2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1O
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluQnVu
ZGxlSXNFcXVhbFRvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhdGhBc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpw
cmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dXRpVHlwZUZyb21Db2NvYVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1S
ZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpj
cmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRk
Q09OTkVDVENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1J
TUVUeXBlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
OjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBs
Q0YuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6
U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKik6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6
ZW5jb2RlKToKKworMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCiAgICAgICAgIEZpeCBidWlsZC4KIAogICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggNTg2M2U5MmY0ZmZiZWU0MGYyNGVlZjk1MmIz
YTA3NTA3ZDQyZWNjNS4uNmUwYWVkNWZmYTU2ZTcxZjJiMDU2MjkzZmZjZmMwZWUwNTlhNWYxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJp
bmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0
cmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cDoKKyAgICAgICAgKGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKToKKyAgICAgICAgKHBvcHVsYXRl
U2V0dGluZyk6CisgICAgICAgIChzdG9yZVNldHRpbmcpOgorCiAyMDEyLTA5LTA1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFydCAyIG9mIHJlbW92aW5nIFBsYXRm
b3JtU3RyaW5nLmgsIHJlbW92ZSBQbGF0Zm9ybVN0cmluZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmVjMDZh
ODc5M2MyZjY5NDZkYzRhOGJkMjk0MTdiN2U2OGEyYTNiZS4uNmU1NDc4ZTU2OWY3MmJmMzRmNGVi
NTQwOWNlNzk5YTk0Mjc0NTM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEw
LTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3Ry
aW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0MTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBT
dHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICogUGxhdGZvcm0vbWFjL01vZHVsZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6TW9kdWxlOjpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFs
aXplU2FuZGJveCk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNj
YXBlUGx1Z2luTW9kdWxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9k
dWxlOjpjcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJlbmNlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0OjpjcmVhdGVDRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXNzaW9uU3RhdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6YXV0b3NhdmVL
ZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXI6OmNsZWFy
Q2FjaGVGb3JPcmlnaW4pOgorCiAyMDEyLTEwLTI1ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBVc2UgcGVyIGRlc3RpbmF0aW9uIElEIG1lc3Nh
Z2UgcmVjZWl2ZXJzIGZvciBEb3dubG9hZFByb3h5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmgKaW5kZXggNmFjNjBlNmFkNTcyNDMzOTc4ZjVmYjRiNDg4MGE5ZmI0MDEwNWM2Ni4uN2RhMGRk
NGYzYTAxNzE5YjQ2Y2VhOWIxODhkYmRmYTVlNjkzY2NkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oCkBAIC0xMzcsMTAgKzEzNyw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lk
IHJlbW92ZShTdHJpbmdJbXBsKik7CiAgICAgCi0jaWYgVVNFKENGKQotICAgIEF0b21pY1N0cmlu
ZyhDRlN0cmluZ1JlZiBzKSA6ICBtX3N0cmluZyhhZGQoU3RyaW5nKHMpLmltcGwoKSkpIHsgfQot
ICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
Y3JlYXRlQ0ZTdHJpbmcoKTsgfQotI2VuZGlmICAgIAogI2lmZGVmIF9fT0JKQ19fCiAgICAgQXRv
bWljU3RyaW5nKE5TU3RyaW5nKiBzKSA6IG1fc3RyaW5nKGFkZChTdHJpbmcocykuaW1wbCgpKSkg
eyB9CiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggMDA2N2JlYmVlZDkwZmY3NDM3MzJjZGFhZjU2
MGFhZjU5MjA5ODRlYy4uNjc2Nzc5MDZkYjAyNTAzZTIxNzk0MTc0Mzk2MjQxMWZiMjMyNjU1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTY3LDYgKzY3LDcgQEAgc3RydWN0IENoYXJC
dWZmZXJGcm9tTGl0ZXJhbERhdGFUcmFuc2xhdG9yOwogY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsK
IHN0cnVjdCBTdWJzdHJpbmdUcmFuc2xhdG9yOwogc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRv
cjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBSZXRhaW5QdHI7CiAKIGVudW0gVGV4dENhc2VT
ZW5zaXRpdml0eSB7IFRleHRDYXNlU2Vuc2l0aXZlLCBUZXh0Q2FzZUluc2Vuc2l0aXZlIH07CiAK
QEAgLTcxMyw3ICs3MTQsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFdU
Rjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7CiAKICNpZiBVU0UoQ0YpCi0gICAgQ0ZTdHJpbmdSZWYg
Y3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3Ry
aW5nKCk7CiAjZW5kaWYKICNpZmRlZiBfX09CSkNfXwogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNTBjMDQ4ZDYzZjNkY2YxYzUzODY1NTY2ZTQ3
MjRmMWE4MjQ4ZmUwNy4uZDY3YWQzMjk5MmMyNDBmMWU1NTJmNmVjM2VmYzA4MDA4YjNiYTgzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgPG9i
amMvb2JqYy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0NGU3RyaW5nICogQ0ZTdHJpbmdSZWY7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFFUKQogUVRf
QkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRU3RyaW5nOwpAQCAtMzg2LDcgKzM4Miw3IEBAIHB1Ymxp
YzoKIAogI2lmIFVTRShDRikKICAgICBTdHJpbmcoQ0ZTdHJpbmdSZWYpOwotICAgIENGU3RyaW5n
UmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29uc3Q7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
cmVhdGVDRlN0cmluZygpIGNvbnN0OwogI2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IDJjZjBkYjU2MThlMzgy
MGNkZjQ0NjQ1NTgzNDFmNjk0ZjUzZDFmYTMuLmJlMjRmZGIzZmRiMTM3YzgwYjZmMGE0ZmI4ODc0
MWFiMzQxYTRkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KQEAgLTI0OCw4ICsyNDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgT2JqY0Ns
YXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdl
dENsYXNzKCkpOwogICAgICAgICBPd25QdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QoYWRv
cHRQdHIobmV3IE9iamNNZXRob2Qob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVu
ZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSkpOwogICAgICAgICBj
b25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKLSAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBuYW1lKEFkb3B0Q0YsIG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZS5n
ZXQoKSk7CisgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRl
bnRpZmllci5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0lu
c3RhbmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKICAg
ICB9CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDk3ZmU5NWIzYTQ0ZDQxODVlMjEyNmY2YmI2ZWRiZWNmNDM5ZmVlZWUuLjc1ZGY5OWFm
MzZiYjYwMDI2N2I5YTcyZDVjOTE1ODkwYzRkYzVjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtOTE2LDggKzkxNiw3IEBAIHN0YXRpYyBLVVJMIGNyZWF0
ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIC8vIGFwcCBjYWNoZSBtZWRpYSBmaWxlcyBhcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBlbmNv
ZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLgogCiAjaWYgVVNFKENG
KSAmJiBQTEFURk9STShXSU4pCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlBhdGgoQWRv
cHRDRiwgcGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNm
VVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGNmUGF0aC5nZXQo
KSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IGNmVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsK
ICAgICBLVVJMIHVybChjZlVSTC5nZXQoKSk7CiAjZWxzZQogICAgIEtVUkwgdXJsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAppbmRleCAzNTc2ZDY0ZGZjNDgyYTQxZDU0ZTEzZWZkMTk3ODE2MmI3ODA3YTdmLi5kNzdmODc0
YjA5ZGMyMDA5YmJlZDAzNTI0MTgzNWJmZTg2Zjg4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTEsOCAr
OTEsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgY2ZE
YXRhLmdldCgpKTsKICAgICAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVVJMKEFkb3B0Q0YsIHJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBpZiAoY2ZVUkwpCisgICAgaWYgKFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKSkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VVUkxLZXksIGNmVVJMLmdldCgpKTsKICAgICBl
bHNlIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5VTEwgcmVz
b3VyY2UgVVJMIGlzIGludmFsaWQgLSByZXR1cm5pbmcgbnVsbCBwcm9wZXJ0eSBsaXN0Iik7CkBA
IC0xMDEsMjMgKzEwMCwxNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogCiAgICAgLy8gRnJh
bWVOYW1lIHNob3VsZCBiZSBsZWZ0IG91dCBpZiBlbXB0eSBmb3Igc3VicmVzb3VyY2VzLCBidXQg
YWx3YXlzIGluY2x1ZGVkIGZvciBtYWluIHJlc291cmNlcwogICAgIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lKHJlc291cmNlLT5mcmFtZU5hbWUoKSk7Ci0gICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0
eSgpIHx8IGlzTWFpblJlc291cmNlKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2ZGcmFtZU5hbWUoQWRvcHRDRiwgZnJhbWVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZUZyYW1lTmFtZUtleSwgY2ZGcmFtZU5hbWUuZ2V0KCkpOwotICAgIH0KKyAgICBp
ZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkgfHwgaXNNYWluUmVzb3VyY2UpCisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlRnJhbWVOYW1lS2V5LCBmcmFtZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAg
CiAgICAgLy8gU2V0IE1JTUVUeXBlLCBUZXh0RW5jb2RpbmdOYW1lLCBhbmQgUmVzb3VyY2VSZXNw
b25zZSBvbmx5IGlmIHRoZXkgYWN0dWFsbHkgZXhpc3QKICAgICBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKHJlc291cmNlLT5taW1lVHlwZSgpKTsKLSAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkg
ewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmTUlNRVR5cGUoQWRvcHRDRiwgbWlt
ZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHBy
b3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXksIGNm
TUlNRVR5cGUuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtleSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcocmVzb3VyY2UtPnRleHRF
bmNvZGluZygpKTsKLSAgICBpZiAoIXRleHRFbmNvZGluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlRleHRFbmNvZGluZyhBZG9wdENGLCB0ZXh0RW5jb2Rp
bmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtl
eSwgY2ZUZXh0RW5jb2RpbmcuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAoIXRleHRFbmNvZGluZy5p
c0VtcHR5KCkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQo
KSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleSwgdGV4dEVuY29k
aW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUg
cmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5S
ZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cAppbmRleCBhYmYxYmNhNWU4NTQxMGJhODdkNWNhYjgyNTAwZDk2OWYxMDkyNmE3Li42OTA4NDNi
MTM3NzgzNDgyODBlYzdlYTViNDM3Mzg4ZTlkZGM2NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtNTQsMTMgKzU0LDEyIEBAIHN0YXRpYyBT
dHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikKICNpZiBVU0Uo
Q0YpCiAgICAgdmFfbGlzdCBhcmd1bWVudHM7CiAgICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3Jt
YXQpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZm9ybWF0Q0ZTdHJpbmcoQWRvcHRDRiwg
Zm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkpOwogCiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZm9ybWF0LW5vbmxpdGVyYWwiCiAjZW5kaWYKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHJlc3VsdChBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwg
MCwgZm9ybWF0Q0ZTdHJpbmcuZ2V0KCksIGFyZ3VtZW50cykpOworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1
bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwog
I2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlm
CkBAIC0yNjAsNyArMjU5LDcgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJMb29rIFVwIGluIERpY3Rpb25hcnkiLCAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNv
bnRleHQgbWVudSBpdGVtIik7CiAjZWxzZQogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJpbmcoQWRvcHRDRiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9v
a3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gc2VsZWN0ZWRDRlN0cmluZyA9IHRydW5jYXRlZFN0cmluZ0Zvckxv
b2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpOwogICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiTG9vayBVcCDigJwlQOKAnSIs
ICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3Rl
ZENGU3RyaW5nLmdldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkxvb2sg
VXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNl
bGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIsIHRydW5jYXRlZFN0cmluZ0Zvckxv
b2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKSk7CkBAIC03MzgsOCArNzM3LDcgQEAgU3RyaW5n
IGtleWdlbk1lbnVJdGVtMjA0OCgpCiAKIFN0cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNv
bnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRlN0
cmluZyhBZG9wdENGLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXlj
aGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3RDRlN0cmluZy5nZXQo
KSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkg
ZnJvbSAlQCIsICJOYW1lIG9mIGtleWNoYWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0
YWciKSwgaG9zdC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogI2VuZGlmCkBAIC03NjIs
OCArNzYwLDcgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICNpZiBVU0UoQ0YpCiAjaWYgIVBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmls
ZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2Nh
bGUoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZMb2Nh
bGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKICAgICBSZXRh
aW5QdHI8Q0ZOdW1iZXJGb3JtYXR0ZXJSZWY+IGZvcm1hdHRlcihBZG9wdENGLCBDRk51bWJlckZv
cm1hdHRlckNyZWF0ZSgwLCBsb2NhbGUuZ2V0KCksIGtDRk51bWJlckZvcm1hdHRlckRlY2ltYWxT
dHlsZSkpOwogCiAgICAgaW50IHdpZHRoSW50ID0gc2l6ZS53aWR0aCgpOwpAQCAtNzc0LDcgKzc3
MSw3IEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBoZWlnaHQoQWRvcHRDRiwg
Q0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodEludCkpOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gaGVpZ2h0U3RyaW5nKEFkb3B0Q0YsIENGTnVtYmVyRm9ybWF0
dGVyQ3JlYXRlU3RyaW5nV2l0aE51bWJlcigwLCBmb3JtYXR0ZXIuZ2V0KCksIGhlaWdodC5nZXQo
KSkpOwogCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIl
QCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1
c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0
KCksIHdpZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3
aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBz
eW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0
cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKICNlbHNlCiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBmaWxlbmFtZUNGU3RyaW5nKEFkb3B0Q0YsIGZpbGVuYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpOwogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygi
JUAgJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAo
dXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5nLmdl
dCgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKaW5kZXggMWI4ZDAwNmYy
NTE5YWE4YThmM2E4YzQ1MGVmZDI3MzQxOGFmNDI4NC4uNzMwZWRjMTVmZTkxYmM5Mjc3MDg1Y2Nj
Mjg4N2IwNzkwNjc4MGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCkBAIC00Niw4ICs0Niw3IEBAIHN0YXRpYyBib29s
IG1haW5CdW5kbGVJc0VxdWFsVG8oY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5n
KQogICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVJZGVudGlmaWVyVG9Db21wYXJlKEFkb3B0
Q0YsIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJu
IENGU3RyaW5nQ29tcGFyZShidW5kbGVJZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyVG9Db21w
YXJlLmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsKKyAgICByZXR1cm4gQ0ZTdHJpbmdD
b21wYXJlKGJ1bmRsZUlkZW50aWZpZXIsIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG87CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShidW5kbGVJZGVudGlmaWVyU3RyaW5nKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAppbmRleCA4ZWY1MGVlYjBj
YjA4NGQxYjliMjNiODdjM2JmYTg5ODM5MmI4YTJkLi5jMTg3MDY2MzM1NjUwNTU3OWFmZDdiNjFh
YzE3MzkwNDA2NDRmNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9G
aWxlU3lzdGVtQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0
ZW1DRi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU3RyaW5n
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyhBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5n
KCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNG
U3RyaW5nKCk7CiAKICAgICBpZiAoIWNmU3RyaW5nKQogICAgICAgICByZXR1cm4gQ1N0cmluZygp
OwpAQCAtNjMsOCArNjMsNyBAQCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBT
dHJpbmcmIHBhdGgpCiAjZWxzZQogICAgIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxl
OwogI2VuZGlmCi0gICAgcmV0dXJuIFJldGFpblB0cjxDRlVSTFJlZj4oQWRvcHRDRiwgQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PihBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNF
KSk7CisgICAgcmV0dXJuIFJldGFpblB0cjxDRlVSTFJlZj4oQWRvcHRDRiwgQ0ZVUkxDcmVhdGVX
aXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXRoU3R5
bGUsIEZBTFNFKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9u
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCA5N2ZiMGI2MDk0NjhmNGVkMzViMWUxOTM4ZDk4YmJk
ODk0MjIyNTg2Li44NTZhNGZjYWRlZDJmMGI2MjYwZjVlOTJiZTExNDVkYzEyYTVjODQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUFuaW1hdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCkBAIC0xNTEsOCArMTUxLDcgQEAgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihBbmltYXRpb25UeXBlIHR5cGUs
IGNvbnN0IFN0cmluZyYga2V5UGEKICAgICBlbHNlCiAgICAgICAgIG1fYW5pbWF0aW9uLmFkb3B0
Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FDRktleWZyYW1lQW5pbWF0aW9uKSk7CiAgICAgCi0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGtleVBhdGguY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRpb24uZ2V0KCksIHMu
Z2V0KCkpOworICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgpLCBr
ZXlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggNzAxNjhiMjEwNGRiMzY5ZGEwNzU3YTExNDQ2
MjIxMTFiYzMwNjFmMC4uZGQ2MTYzMzdlOTM2NmViNzljOTZjNjcyYjczOTNiNjkyNDM2ZmM2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTE3NiwxMCArMTc2LDggQEAgdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1l
KQogc3RhdGljIHZvaWQgcmVzdWJtaXRBbGxBbmltYXRpb25zKFBsYXRmb3JtQ0FMYXllciogbGF5
ZXIpCiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllci0+YW5pbWF0aW9ucygpLmVuZCgpOwotICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRpb25zKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBpdC0+a2V5LmNy
ZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSwgcy5nZXQoKSwgaXQtPnZhbHVlLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsK
LSAgICB9CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihsYXllci0+cGxh
dGZvcm1MYXllcigpLCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGl0LT52YWx1ZS0+
cGxhdGZvcm1BbmltYXRpb24oKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjplbnN1cmVB
bmltYXRpb25zU3VibWl0dGVkKCkKQEAgLTI5Nyw4ICsyOTUsNyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5p
bWF0aW9uKgogICAgIC8vIEFkZCBpdCB0byB0aGUgYW5pbWF0aW9uIGxpc3QKICAgICBtX2FuaW1h
dGlvbnMuYWRkKGtleSwgYW5pbWF0aW9uKTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
cyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxheWVyQWRkQW5pbWF0
aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCksIGFuaW1hdGlvbi0+cGxhdGZvcm1BbmltYXRpb24o
KSk7CisgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIGtleS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9uKCkpOwogICAgIHNl
dE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBUZWxsIHRoZSBob3N0IGFib3V0IGl0IHNvIHdlIGNh
biBmaXJlIHRoZSBzdGFydCBhbmltYXRpb24gZXZlbnQKQEAgLTMxMiw4ICszMDksNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5
KQogICAgIC8vIFJlbW92ZSBpdCBmcm9tIHRoZSBhbmltYXRpb24gbGlzdAogICAgIG1fYW5pbWF0
aW9ucy5yZW1vdmUoa2V5KTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENG
LCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9uKG1f
bGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZMYXllclJlbW92ZUFuaW1hdGlvbihtX2xh
eWVyLmdldCgpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICAvLyBXZSBkb24n
dCAicmVtb3ZlIiBhIGxheWVyIGZyb20gQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB3aGVuIGl0
IGxvc2VzIGFuIGFuaW1hdGlvbi4KICAgICAvLyBUaGVyZSBtYXkgYmUgb3RoZXIgYWN0aXZlIGFu
aW1hdGlvbnMgb24gdGhlIGxheWVyIGFuZCBpZiBhbiBhbmltYXRpb24KQEAgLTU4Niw4ICs1ODIs
NyBAQCBTdHJpbmcgUGxhdGZvcm1DQUxheWVyOjpuYW1lKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OnNldE5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FD
RkxheWVyU2V0TmFtZShtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBDQUNGTGF5ZXJTZXRO
YW1lKG1fbGF5ZXIuZ2V0KCksIHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIHNl
dE5lZWRzQ29tbWl0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwuY3BwCmluZGV4IGM0MzBjZjI4NDYxNDY2NDdiZjYxZmM3YTcxNjI5ZjUyZjAyMWZhNmEuLjE1
Mjc1YjNhZTVmZTVjMWM2YTRmOGY4NGZkNjY5MGQyMWZjZjU4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzKCkKIAogI2lmbmRlZiBOREVCVUcK
ICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gIlRpbGUgKCIgKyBTdHJpbmc6Om51bWJlcihpKSAr
ICIsIiArIFN0cmluZzo6bnVtYmVyKGopICsgIikiOwotICAgICAgICAgICAgQ0FDRkxheWVyU2V0
TmFtZSh0aWxlLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIG5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKSkuZ2V0KCkpOworICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmFtZSh0aWxlLCBuYW1l
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCmluZGV4IDIxZTlkYjRjMjhkOWEyNTUxMzUyMGFjZTcwODQwM2FjNWU3N2FiOTMuLmRkMzc4
MTU5N2Y4NWViNjEwZGNjNDcxZWM4MzE1M2UwYWJkMmNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zNzcs
OCArMzc3LDcgQEAgc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKIHN0YXRpYyBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1p
bWVUeXBlQ0ZTdHJpbmcoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAg
cmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVy
cmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZUNGU3RyaW5n
LmdldCgpLCAwKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRl
bnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAwKSk7CiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0
IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KaW5kZXgg
YmQ1MGEzMTc1ZjNiNDI1YTg4MjZjZDJhNTZhNjJlMjE5MzY5NjMzNy4uOTUzYmNiOWQyOGFkMGVi
NzVhYjM4ODEzYzM0Mzk0NTVmMTI2MmM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBAIC0zMywxNiArMzMs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgTUlNRVR5cGVGb3JJbWFnZVNvdXJj
ZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
dGlyZWYoQWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gbWltZShBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0
aXJlZi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwotICAgIHJldHVybiBtaW1lLmdldCgp
OworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKS5nZXQoKTsKIH0K
IAogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJp
bmcmIHV0aSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGUoQWRvcHRDRiwgdXRp
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZXh0ZW5zaW9u
KEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModHlwZS5nZXQoKSwga1VU
VGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOwotICAgIHJldHVybiBleHRlbnNpb24uZ2V0KCk7
CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpLmdl
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQubW0KaW5kZXggNGNiODc2YzM2NWVjOWRkNzE2MGExZDJmZGUwOWU3ZjMy
ZjAwYmFjOS4uNTdmNzBmZmYyOGU3NGY2ZmUxNTc3ODczNWNiMDMyMDQ3YWEzMTYyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckNvcmVUZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQpAQCAtMjgyLDcgKzI4Miw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hh
cmFjdGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbXBs
ZXhUZXh0UnVucy5hcHBlbmQoQ29tcGxleFRleHRSdW46OmNyZWF0ZShtX2ZvbnQucHJpbWFyeUZv
bnQoKSwgY3AsIHN0cmluZ0xvY2F0aW9uICsgcnVuUmFuZ2UubG9jYXRpb24sIHJ1blJhbmdlLmxl
bmd0aCwgbV9ydW4ubHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJ1bkZvbnREYXRhID0g
Zm9udENhY2hlKCktPmdldENhY2hlZEZvbnREYXRhKG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwg
Zm9udE5hbWUuZ2V0KCksIGZhbHNlLCBGb250Q2FjaGU6OkRvTm90UmV0YWluKS5nZXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgcnVuRm9udERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0Q2FjaGVkRm9u
dERhdGEobV9mb250LmZvbnREZXNjcmlwdGlvbigpLCBTdHJpbmcoZm9udE5hbWUuZ2V0KCkpLCBm
YWxzZSwgRm9udENhY2hlOjpEb05vdFJldGFpbikuZ2V0KCk7CiAjaWYgIVBMQVRGT1JNKFdYKQog
ICAgICAgICAgICAgICAgICAgICAvLyBDb3JlIFRleHQgbWF5IGhhdmUgdXNlZCBhIGZvbnQgdGhh
dCBpcyBub3Qga25vd24gdG8gTlNGb250TWFuYWdlci4gSW4gdGhhdCBjYXNlLCBmYWxsIGJhY2sg
b24KICAgICAgICAgICAgICAgICAgICAgLy8gdXNpbmcgdGhlIGZvbnQgYXMgcmV0dXJuZWQsIGV2
ZW4gdGhvdWdoIGl0IG1heSBub3QgaGF2ZSB0aGUgYmVzdCBOU0ZvbnRSZW5kZXJpbmdNb2RlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KaW5kZXggYmQ4ODAy
MDQ0MWIwZTlhZTAwYmFkYWYzNmIyZjRmNWE2YTZiZWFlNy4uZmQ0YWI5OWIxNzQ3NWQ0MTRiMjFh
YTNlY2Q1N2U2MTgwYTI4ZmNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0NsaXBib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xp
cGJvYXJkTWFjLm1tCkBAIC05OSwxMSArOTksMTAgQEAgc3RhdGljIFN0cmluZyBjb2NvYVR5cGVG
cm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiAgICAgLy8gVHJ5IFVU
SSBub3cKICAgICBTdHJpbmcgbWltZVR5cGUgPSBxVHlwZTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aVR5cGUoQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLCBOVUxM
KSk7Ci0gICAgaWYgKHV0aVR5cGUpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgcGJUeXBlID0gVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05T
UGJvYXJkVHlwZSk7CisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlwZSA9IGFk
b3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01J
TUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBOVUxMKSkpIHsKKyAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVm
ZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUp
KTsKICAgICAgICAgaWYgKHBiVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBwYlR5cGU7CisgICAg
ICAgICAgICByZXR1cm4gcGJUeXBlLmdldCgpOwogICAgIH0KIAogICAgIC8vIE5vIG1hcHBpbmcs
IGp1c3QgcGFzcyB0aGUgd2hvbGUgc3RyaW5nIHRob3VnaApAQCAtMTEyLDExICsxMTEsOCBAQCBz
dGF0aWMgU3RyaW5nIGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCiAKIHN0YXRpYyBTdHJpbmcgdXRpVHlwZUZyb21Db2NvYVR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdHlwZUNGID0gYWRvcHRDRih0
eXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlw
ZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0Ns
YXNzTlNQYm9hcmRUeXBlLCB0eXBlQ0YuZ2V0KCksIDApKTsKLSAgICBpZiAodXRpVHlwZSkgewot
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlKEFkb3B0Q0YsIFVUVHlwZUNv
cHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlw
ZSkpOwotICAgICAgICBpZiAobWltZVR5cGUpCisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdXRpVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRh
ZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSwgdHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAw
KSkpIHsKKyAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZG9w
dENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFn
Q2xhc3NNSU1FVHlwZSkpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhtaW1lVHlwZS5nZXQo
KSk7CiAgICAgfQogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKaW5kZXggMGExYTRkOGM3NTE0ZGE5
MTM3MzliZTVlMzQ0NmQ0OTdkOTVhNDc4Yi4uZTU4ZDlhOTQ5OTY5MjdiOWJiNWI5YjM0NjE0OTc4
ZjVhYmY0ZjNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtl
eUdlbmVyYXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtl
eUdlbmVyYXRvck1hYy5jcHAKQEAgLTYwLDExICs2MCw3IEBAIFN0cmluZyBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcm
IGNoCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNoYWxsZW5nZVN0cmluZ0NGKEFkb3B0Q0YsIGNoYWxsZW5nZVN0cmluZy5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleURlc2NyaXB0aW9u
KEFkb3B0Q0YsIGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwgd2tTaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlU3RyaW5nQ0Yu
Z2V0KCksIGtleURlc2NyaXB0aW9uLmdldCgpKSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LmdldCgp
OworICAgIHJldHVybiBhZG9wdENGKHdrU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KGtleVNpemUsIGNoYWxsZW5nZVN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrZXlnZW5L
ZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKS5nZXQo
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQXV0aGVudGljYXRpb25DRi5jcHAKaW5kZXggODdhM2ZhYjhhNzQzN2FlMTBhZjQzOWE0ZTRl
MDJjZDJlMWEzMGRlYi4uN2IxZDRmYTQ3ODdmMWQxZTBkOWUzYTRkZTgxZjNlYjU0NmQwY2VlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwCkBAIC0xMTksMTMgKzExOSw3IEBAIENGVVJMQ3JlZGVudGlhbFJlZiBj
cmVhdGVDRihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKICAgICAgICAgcmV0dXJu
IENGVVJMQ3JlZGVudGlhbENyZWF0ZVdpdGhJZGVudGl0eUFuZENlcnRpZmljYXRlQXJyYXkoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgY29yZUNyZWRlbnRpYWwuaWRlbnRpdHkoKSwgY29yZUNyZWRlbnRp
YWwuY2VydGlmaWNhdGVzKCksIHBlcnNpc3RlbmNlKTsKICNlbmRpZgogCi0gICAgQ0ZTdHJpbmdS
ZWYgdXNlciA9IGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0cmluZygpOwotICAgIENG
U3RyaW5nUmVmIHBhc3N3b3JkID0gY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVDRlN0
cmluZygpOwotICAgIENGVVJMQ3JlZGVudGlhbFJlZiByZXN1bHQgPSBDRlVSTENyZWRlbnRpYWxD
cmVhdGUoMCwgdXNlciwgcGFzc3dvcmQsIDAsIHBlcnNpc3RlbmNlKTsKLSAgICBDRlJlbGVhc2Uo
dXNlcik7Ci0gICAgQ0ZSZWxlYXNlKHBhc3N3b3JkKTsKLQotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2VyKCku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5jZSk7CiB9CiAKIENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQpAQCAtMTky
LDEzICsxODYsNyBAQCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogCi0gICAgQ0ZTdHJpbmdSZWYgaG9zdCA9IGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRlQ0ZT
dHJpbmcoKTsKLSAgICBDRlN0cmluZ1JlZiByZWFsbSA9IGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0
ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcmVzdWx0ID0gQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VDcmVhdGUoMCwgaG9zdCwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVyVHlw
ZSwgcmVhbG0sIHNjaGVtZSk7Ci0gICAgQ0ZSZWxlYXNlKGhvc3QpOwotICAgIENGUmVsZWFzZShy
ZWFsbSk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VDcmVhdGUoMCwgY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCBjb3JlU3BhY2UucmVhbG0oKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBzY2hlbWUpOwogfQogCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVk
ZW50aWFsUmVmIGNmQ3JlZGVudGlhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKaW5kZXggNWQ2ZDczOTI2YzQ0ZWU0ODgw
MTgyZmZmZTg5ODFhY2YzOGE3NmIwYS4uNTAxNzk3MWRlMTRhNDU0YTg0ZjlhMzg4YmI0N2Y2NDg0
ODkxZGE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIHNldENvb2tpZXMo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiAgICAgLy8gY29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkcyBkb2Vzbid0IHBhcnNlIGNv
b2tpZXMgd2l0aG91dCBhIHZhbHVlCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZyA9IHZhbHVlLmNv
bnRhaW5zKCc9JykgPyB2YWx1ZSA6IHZhbHVlICsgIj0iOwogCi0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjb29raWVTdHJpbmdDRihBZG9wdENGLCBjb29raWVTdHJpbmcuY3JlYXRlQ0ZTdHJp
bmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb29raWVTdHJpbmdDRiA9IGNvb2tp
ZVN0cmluZy5jcmVhdGVDRlN0cmluZygpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IGhlYWRlckZpZWxkc0NGKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LAogICAgICAgICAoY29uc3Qgdm9pZCoqKSZzX3NldENvb2tpZUtleUNGLCAoY29uc3Qg
dm9pZCoqKSZjb29raWVTdHJpbmdDRiwgMSwKICAgICAgICAgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAppbmRleCAzZjkwMWE1
NDFkZTAwZWViZWMyNDMyMmQwNDM5NmVlNGEyMjA1ZmI2Li5jZTE0NTE5MDlhZWQ3ZTJiNGRlZjlj
ZTBkOWJiNDI5MzQxOGRhY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAtOTAsMTIgKzkwLDEyIEBAIHZvaWQgRE5TUmVzb2x2ZVF1
ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0bmFt
ZUNGKEFkb3B0Q0YsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxD
Rkhvc3RSZWY+IGhvc3QoQWRvcHRDRiwgQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWVD
Ri5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9z
dENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAg
ICBpZiAoIWhvc3QpIHsKICAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisKICAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAs
IDAsIDAsIDAsIDAgfTsKICAgICBDRkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigp
OyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KICAg
ICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxs
YmFjaywgJmNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDZmZGY1YWRiOTljZDgzZTY3Y2NiMmZi
MGYwNDc0ZjA3YmE4MzVjNWQuLmU0NzIxMzhlMWE5ZGRmM2I5ZjE4MjNhZmUzZTQwZWU1MzZmOWYy
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKQEAgLTE0NywxMyArMTQ3LDExIEBAIENGRXJyb3JSZWYgUmVzb3Vy
Y2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgaWYgKCFtX3BsYXRmb3JtRXJyb3IpIHsKICAg
ICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvKEFkb3B0Q0Ys
IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgICAgIGlm
ICghbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbG9jYWxpemVkRGVzY3JpcHRpb25TdHJpbmcoQWRvcHRDRiwgbV9s
b2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0
aW9uS2V5LCBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZy5nZXQoKSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKCFtX2xvY2FsaXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERl
c2NyaXB0aW9uS2V5LCBtX2xvY2FsaXplZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogCiAgICAgICAgIGlmICghbV9mYWlsaW5nVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5nKEFkb3B0Q0YsIG1fZmFp
bGluZ1VSTC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZmFpbGluZ1VSTFN0cmluZyA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmluZygpOwog
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdV
UkxTdHJpbmdLZXksIGZhaWxpbmdVUkxTdHJpbmcuZ2V0KCkpOwogICAgICAgICAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIGZhaWxp
bmdVUkxTdHJpbmcuZ2V0KCksIDApKTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJMS2V5LCB1cmwuZ2V0KCkpOwpAQCAtMTY0LDggKzE2
Miw3IEBAIENGRXJyb3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgICAg
ICAgICB3a1NldFNTTFBlZXJDZXJ0aWZpY2F0ZURhdGEodXNlckluZm8uZ2V0KCksIG1fY2VydGlm
aWNhdGUuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGRvbWFpblN0cmluZyhBZG9wdENGLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICAgICAgbV9wbGF0Zm9ybUVycm9yLmFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBkb21haW5T
dHJpbmcuZ2V0KCksIG1fZXJyb3JDb2RlLCB1c2VySW5mby5nZXQoKSkpOworICAgICAgICBtX3Bs
YXRmb3JtRXJyb3IgPSBhZG9wdENGKENGRXJyb3JDcmVhdGUoMCwgbV9kb21haW4uY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1FcnJvci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4
IDAxZThiOGFlNWMwZDFjNmE2YThmMDMzMDg1ZTkwZjAxMGJjMWY3YzYuLjgwNzBjMjU4MmI3Y2Fh
MGRlNmZlMzVmMzA3NDNmNzhiMjBiNzdhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4g
PiYgY2xpZW50Q2VydHMoKQogCiBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TUlNRVR5cGUoQ0ZVUkxS
ZXNwb25zZVJlZiByZXNwb25zZSkKIHsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1J
TUVUeXBlU3RyaW5nID0gZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBz
dGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gZGVmYXVsdE1JTUVUeXBl
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgCiAgICAgQ0ZVUkxSZXNwb25zZVNl
dE1JTUVUeXBlKHJlc3BvbnNlLCBkZWZhdWx0TUlNRVR5cGVTdHJpbmcpOwogfQpAQCAtMTYxLDgg
KzE2MSw4IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29u
bmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYKICAgICBpZiAoY2ZSZWRpcmVjdFJlc3Bv
bnNlKSB7CiAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2UgPSBDRlVSTFJlc3Bv
bnNlR2V0SFRUUFJlc3BvbnNlKGNmUmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIGlmIChodHRw
TWVzc2FnZSAmJiBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdl
KSA9PSAzMDcpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBN
ZXRob2QoQWRvcHRDRiwgaGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkp
OwotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2QoQWRvcHRDRiwg
Q0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCkpOworICAgICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZCA9IGhhbmRsZS0+bGFzdEhU
VFBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1l
dGhvZChjZlJlcXVlc3QpKTsKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0
aW9ucyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgw
LCBDRlN0cmluZ0dldExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2Fz
ZUluc2Vuc2l0aXZlKSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRh
YmxlQ29weSgwLCBjZlJlcXVlc3QpKTsKICNpZiBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCkBA
IC0xNzUsOSArMTc1LDggQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3Qo
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgICAgICAgICAgICAg
ICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgYm9keSk7CiAK
ICAgICAgICAgICAgICAgICBTdHJpbmcgb3JpZ2luYWxDb250ZW50VHlwZSA9IGhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCkuaHR0cENvbnRlbnRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBvcmlnaW5hbENvbnRlbnRUeXBlQ0YoQWRvcHRDRiwgb3JpZ2luYWxDb250
ZW50VHlwZS5jcmVhdGVDRlN0cmluZygpKTsKICAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFs
Q29udGVudFR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRl
bnQtVHlwZSIpLCBvcmlnaW5hbENvbnRlbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5n
ZXQoKSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIpLCBvcmlnaW5hbENvbnRlbnRUeXBlLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1
ZXN0LmdldCgpOwogICAgICAgICAgICAgfQpAQCAtNjA3LDEwICs2MDYsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbAogI2VuZGlmCiAKICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAh
ZC0+bV9wYXNzLmlzTnVsbCgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXNl
cihBZG9wdENGLCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcGFzcyhBZG9wdENGLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwoQWRvcHRD
RiwKLSAgICAgICAgICAgIENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCB1c2VyLmdldCgpLCBwYXNzLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VO
b25lKSk7CisgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwg
PSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5t
X3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAgCiAg
ICAgICAgIEtVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVz
cG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKQEAgLTEwMDUsNyArMTAwMSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGVk
KQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckRlZmF1bHRCYXNlKCkgOiBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZklkZW50aWZpZXIoQWRvcHRDRiwgU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVy
ID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
ICAgICBwcml2YXRlU3RvcmFnZVNlc3Npb24oKSA9IGNyZWF0ZVByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmlu
ZGV4IDhjZmY4N2NhMGQ1OGVhMmU1MjNmMzczMGQ2YjRhNzczMGIwNmJlNGIuLjIzM2M5NTM4MmRj
M2IwZmU2ZjkyNjEzZGUxMzk0MTlkZjg5MmEyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBA
IC0xMTksMTMgKzExOSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRIZWFkZXJGaWVsZHMoQ0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBjb25zdCBIVFRQSGVhCiAgICAgfQogCiAgICAg
SFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVxdWVzdEhlYWRlcnMuZW5kKCk7
Ci0gICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFk
ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBDRlN0cmluZ1JlZiBrZXkg
PSBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIENGU3RyaW5nUmVmIHZhbHVlID0g
aXQtPnZhbHVlLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBI
ZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QsIGtleSwgdmFsdWUpOwotICAgICAgICBDRlJlbGVhc2Uo
a2V5KTsKLSAgICAgICAgQ0ZSZWxlYXNlKHZhbHVlKTsKLSAgICB9CisgICAgZm9yIChIVFRQSGVh
ZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFkZXJzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUo
cmVxdWVzdCwgaXQtPmtleS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBpdC0+dmFs
dWUuLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQpAQCAtMTQ2LDggKzE0MSw3IEBAIHZv
aWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgd2tTZXRS
ZXF1ZXN0U3RvcmFnZVNlc3Npb24oUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRTdG9yYWdlU2Vzc2lv
bigpLCBjZlJlcXVlc3QpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJl
cXVlc3RNZXRob2QoQWRvcHRDRiwgaHR0cE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAg
IENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgcmVxdWVzdE1ldGhv
ZC5nZXQoKSk7CisgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0
LCBodHRwTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICBpZiAoaHR0cFBp
cGVsaW5pbmdFbmFibGVkKCkpCiAgICAgICAgIHdrU2V0SFRUUFBpcGVsaW5pbmdQcmlvcml0eShj
ZlJlcXVlc3QsIHRvSFRUUFBpcGVsaW5pbmdQcmlvcml0eShtX3ByaW9yaXR5KSk7CkBAIC0xNjQs
NyArMTU4LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0
KCkKICAgICB1bnNpZ25lZCBmYWxsYmFja0NvdW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CiAgICAgUmV0YWluUHRyPENGTXV0YWJs
ZUFycmF5UmVmPiBlbmNvZGluZ0ZhbGxiYWNrcyhBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJs
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0NvdW50LCAwKSk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSAhPSBmYWxsYmFja0NvdW50OyArK2kpIHsKLSAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBlbmNvZGluZ05hbWUoQWRvcHRDRiwgbV9yZXNwb25zZUNvbnRlbnREaXNw
b3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVu
dERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7CiAg
ICAgICAgIENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRJQU5BQ2hh
clNldE5hbWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZS5nZXQoKSk7CiAgICAgICAgIGlmIChlbmNv
ZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKICAgICAgICAgICAgIENGQXJyYXlB
cHBlbmRWYWx1ZShlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB2b2lkKj4oZW5jb2RpbmcpKTsKQEAgLTIxMyw3ICsyMDcsNyBAQCB2b2lkIFJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9p
ZCosIDEyOD4gdmFsdWVzKGhlYWRlckNvdW50KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5
c0FuZFZhbHVlcyhoZWFkZXJzLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKLSAgICAgICAgICAgIG1faHR0
cEhlYWRlckZpZWxkcy5zZXQoKENGU3RyaW5nUmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1
ZXNbaV0pOworICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChTdHJpbmcoKENGU3Ry
aW5nUmVmKWtleXNbaV0pLCBTdHJpbmcoKENGU3RyaW5nUmVmKXZhbHVlc1tpXSkpOwogICAgICAg
ICBDRlJlbGVhc2UoaGVhZGVycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKaW5k
ZXggYTQ1YmVlZGM0MzMwMDc3MmIzOWNhZWUyYjM5NDZjYWMzZGYwYmYzMS4uMzgyMTZkNGQyMGJm
OTgxMTNmM2FlZDIzNmNhNTE2ZmVkYzA0OTA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcApA
QCAtNTEsOSArNTEsNyBAQCBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJM
UmVzcG9uc2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkg
ewogICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBtX3VybC5jcmVhdGVD
RlVSTCgpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENG
LCBtX21pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHRleHRFbmNvZGluZ05hbWUoQWRvcHRDRiwgbV90ZXh0RW5jb2RpbmdOYW1lLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgICAgICBtX2NmUmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNl
Q3JlYXRlKDAsIHVybC5nZXQoKSwgbWltZVR5cGUuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVu
Z3RoLCB0ZXh0RW5jb2RpbmdOYW1lLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7
CisgICAgICAgIG1fY2ZSZXNwb25zZS5hZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJs
LmdldCgpLCBtX21pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250
ZW50TGVuZ3RoLCBtX3RleHRFbmNvZGluZ05hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NG
VVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOwogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9u
c2UuZ2V0KCk7CkBAIC0xMDUsNyArMTAzLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0
Zm9ybUxhenlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpCiAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bUNvbW1vbkhlYWRlckZpZWxkczsgaSsrKSB7CiAgICAgICAgICAgICAgICAg
Q0ZTdHJpbmdSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZh
bHVlSWZQcmVzZW50KGhlYWRlcnMuZ2V0KCksIGNvbW1vbkhlYWRlckZpZWxkc1tpXSwgKGNvbnN0
IHZvaWQgKiopJnZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRz
LnNldChjb21tb25IZWFkZXJGaWVsZHNbaV0sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9odHRwSGVhZGVyRmllbGRzLnNldChTdHJpbmcoY29tbW9uSGVhZGVyRmllbGRzW2ldKSwgU3Ry
aW5nKHZhbHVlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
bV9odHRwU3RhdHVzQ29kZSA9IDA7CkBAIC0xMjMsNyArMTIxLDcgQEAgdm9pZCBSZXNvdXJjZVJl
c3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpCiAgICAgICAgICAg
ICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEyOD4gdmFsdWVzKGhlYWRlckNvdW50KTsKICAgICAgICAg
ICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVycy5nZXQoKSwga2V5cy5kYXRh
KCksIHZhbHVlcy5kYXRhKCkpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWFk
ZXJDb3VudDsgKytpKQotICAgICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoKENG
U3RyaW5nUmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pOworICAgICAgICAgICAg
ICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoU3RyaW5nKChDRlN0cmluZ1JlZilrZXlzW2ldKSwg
U3RyaW5nKChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pKTsKICAgICAgICAgfQogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKaW5kZXggZDg2Yzc2YmM2ZjQ1YzE4MTY0OGUwYTc3
NmNkMzliYWU4OTA4NDBkNi4uNGE3Y2Q5MDJhZTlmMDI4N2Q4OThkOTJiZDk4NWRkNzY2ZDQyYTE3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcygpCiAgICAgaWYgKG1fY29ubmVjdGlv
blR5cGUgPT0gVW5rbm93bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBob3N0KEFkb3B0Q0YsIG1fdXJsLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3QgPSBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKIAogICAgIC8vIENyZWF0aW5nIHN0cmVhbXMgdG8gZmluYWwgZGVzdGluYXRpb24sIG5v
dCB0byBwcm94eS4KICAgICBDRlJlYWRTdHJlYW1SZWYgcmVhZFN0cmVhbSA9IDA7CkBAIC0zNTks
MTIgKzM1OSwxMCBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRp
YWxzKENGSFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKICAgICBTdHJpbmcgcGFzc3dvcmQ7
CiAgICAgaWYgKCFtX3NlbnRTdG9yZWRDcmVkZW50aWFscyAmJiBnZXRTdG9yZWRDT05ORUNUUHJv
eHlDcmVkZW50aWFscyhwcm90ZWN0aW9uU3BhY2UsIGxvZ2luLCBwYXNzd29yZCkpIHsKICAgICAg
ICAgLy8gVHJ5IHRvIGFwcGx5IHN0b3JlZCBjcmVkZW50aWFscywgaWYgd2UgaGF2ZW4ndCB0cmll
ZCB0aG9zZSBhbHJlYWR5LgotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvZ2luQ0Yo
QWRvcHRDRiwgbG9naW4uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gcGFzc3dvcmRDRihBZG9wdENGLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICAgICAgLy8gQ3JlYXRpbmcgYSB0ZW1wb3JhcnkgcmVxdWVzdCB0byBtYWtlIENGTmV0d29y
ayBhcHBseSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5hdGVseSwgdGhpcyBjYW5ub3Qgd29y
ayB3aXRoIE5UTE0gYXV0aGVudGljYXRpb24uCisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFy
eSByZXF1ZXN0IHRvIG1ha2UgQ0ZOZXR3b3JrIGFwcGx5IGNyZWRlbnRpYWxzIHRvIGl0LiBVbmZv
cnR1bmF0ZWx5LCB0aGlzIGNhbm5vdCB3b3JrIHdpdGggTlRMTSBhdXRoZW50aWNhdGlvbi4KICAg
ICAgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IGR1bW15UmVxdWVzdChBZG9wdENGLCBD
RkhUVFBNZXNzYWdlQ3JlYXRlUmVxdWVzdCgwLCBDRlNUUigiR0VUIiksIG1faHR0cHNVUkwuZ2V0
KCksIGtDRkhUVFBWZXJzaW9uMV8xKSk7CiAKLSAgICAgICAgQm9vbGVhbiBhcHBsaWVkQ3JlZGVu
dGlhbHMgPSBDRkhUVFBNZXNzYWdlQXBwbHlDcmVkZW50aWFscyhkdW1teVJlcXVlc3QuZ2V0KCks
IGF1dGhlbnRpY2F0aW9uLmdldCgpLCBsb2dpbkNGLmdldCgpLCBwYXNzd29yZENGLmdldCgpLCAw
KTsKKyAgICAgICAgQm9vbGVhbiBhcHBsaWVkQ3JlZGVudGlhbHMgPSBDRkhUVFBNZXNzYWdlQXBw
bHlDcmVkZW50aWFscyhkdW1teVJlcXVlc3QuZ2V0KCksIGF1dGhlbnRpY2F0aW9uLmdldCgpLCBs
b2dpbi5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCAwKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhcHBsaWVkQ3JlZGVudGlhbHMsIGFwcGxp
ZWRDcmVkZW50aWFscyk7CiAKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcm94eUF1
dGhvcml6YXRpb25TdHJpbmcoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZh
bHVlKGR1bW15UmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIlByb3h5LUF1dGhvcml6YXRpb24iKSkpOwpA
QCAtMzg5LDcgKzM4Nyw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3Jl
ZGVudGlhbHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogQ0ZTdHJpbmdSZWYgU29j
a2V0U3RyZWFtSGFuZGxlOjpjb3B5Q0ZTdHJlYW1EZXNjcmlwdGlvbih2b2lkKiBpbmZvKQogewog
ICAgIFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFt
SGFuZGxlKj4oaW5mbyk7Ci0gICAgcmV0dXJuIFN0cmluZygiV2ViS2l0IHNvY2tldCBzdHJlYW0s
ICIgKyBoYW5kbGUtPm1fdXJsLnN0cmluZygpKS5jcmVhdGVDRlN0cmluZygpOworICAgIHJldHVy
biBTdHJpbmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxlLT5tX3VybC5zdHJpbmco
KSkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiB9CiAKIHN0cnVjdCBNYWluVGhyZWFkRXZl
bnRDYWxsYmFja0luZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4IDkzMjE2Y2I1NWU4NTc3MzEz
NmYzZThjM2EwN2NlNmZiNTU2ZTA2ZDIuLmU2OTM0ODQ4MWFiMGEwMjEzNzk0ZGEyNGVmYmNjNGY1
NmRjMDA4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVxdWVzdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KQEAgLTE2Myw5ICsxNjMsOSBAQCB2b2lkIFJl
c291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgICAgICBOU011dGFi
bGVBcnJheSAqZW5jb2RpbmdGYWxsYmFja3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAg
ICAgICB1bnNpZ25lZCBjb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9
IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIENGU3RyaW5nUmVmIGVuY29kaW5nTmFtZSA9IG1f
cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRl
Q0ZTdHJpbmcoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENGU3Ry
aW5nQ29udmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElBTkFD
aGFyU2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lKSk7Ci0gICAgICAgICAgICBDRlJlbGVh
c2UoZW5jb2RpbmdOYW1lKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZW5j
b2RpbmdOYW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tB
cnJheVtpXS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuc0Vu
Y29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb05TU3RyaW5nRW5jb2RpbmcoQ0ZTdHJp
bmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUuZ2V0KCkpKTsK
KwogICAgICAgICAgICAgaWYgKG5zRW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlk
SWQpCiAgICAgICAgICAgICAgICAgW2VuY29kaW5nRmFsbGJhY2tzIGFkZE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZzpuc0VuY29kaW5nXV07CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNw
b25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxS
ZXNwb25zZS5tbQppbmRleCA2YWE3NmY2ZGQ3ODRkYTA5ZDdiZmY3ZTFlNjg1NWU3NWNhZGFlOTlj
Li5mOTcxMGIyZGQyNTE4NDYyMDE1MTMyNDJmNDBmM2E0MTI2NGYyMmUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKICAgICB9CiAgICAgCiAgICAgaWYgKCFyZXN1
bHQpIHsKLSAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9
IFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpkZWZhdWx0
TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAgICAgcmVzdWx0ID0g
ZGVmYXVsdE1JTUVUeXBlU3RyaW5nOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKaW5kZXggNGUzZmNlZDQ0NDY0OWE5YzVj
ZWYzNjRlYzA2MmZlOGRiMTg4NGYwOS4uMGY2NjhkMTBmOGU0MTdmNTZlYTkzYTA4NTgxMjRjZGYy
YmE0MTdiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBo
ZW5hdGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhl
bmF0aW9uQ0YuY3BwCkBAIC00Niw4ICs0Niw3IEBAIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRv
bWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0CiB0
ZW1wbGF0ZTw+CiBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJVQ2Fj
aGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9t
aWNTdHJpbmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjZkxvY2FsZUlkZW50aWZpZXIoQWRvcHRDRiwgbG9jYWxlSWRlbnRpZmllci5jcmVhdGVDRlN0
cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZShBZG9wdENGLCBDRkxv
Y2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZkxvY2FsZUlkZW50aWZpZXIuZ2V0KCkp
KTsKKyAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxlSWRlbnRpZmllci5pbXBsKCktPmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKIAogICAgIHJldHVybiBDRlN0cmluZ0lzSHlwaGVuYXRpb25B
dmFpbGFibGVGb3JMb2NhbGUobG9jYWxlLmdldCgpKSA/IGxvY2FsZSA6IDA7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwCmluZGV4IGQ3Y2RhNzk2Mjk4
NjI1NzNhMzVjNmE5MjY4NTc1MjMwNWFiNmMyN2UuLjI2OTdlNzZmMGJmNTkyM2IxNTJmZWRkNzEw
MzdlOTcxMTQ5MjZkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y2YvU3RyaW5nQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3Ry
aW5nQ0YuY3BwCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKICNpZiBVU0UoQ0YpCi0KICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
QEAgLTUxLDcgKzUxLDcgQEAgU3RyaW5nOjpTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogICAgIH0K
IH0KIAotQ0ZTdHJpbmdSZWYgU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CitSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAogewogICAgIGlm
ICghbV9pbXBsKQogICAgICAgICByZXR1cm4gQ0ZTVFIoIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IDdhMmQ4MmU0MDJkMjRi
MzdiYmMwNzFmNDdmOThlMGE4NjUxODQ5MjEuLjFkYTU2MWI2MDYyYmNhYjQ5ZTA5YmZlNzk3ODJi
MjczZjBkYTA5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2Yv
U3RyaW5nSW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0ltcGxDRi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlv
bi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTMyLDcgKzEzMyw3
IEBAIG5hbWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgewogCiB9CiAKLUNGU3RyaW5n
UmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4g
U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlz
TWFpblRocmVhZCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKQEAgLTE1Myw3ICsxNTQsNyBA
QCBDRlN0cmluZ1JlZiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiAgICAgLy8gQ29yZUZv
dW5kYXRpb24gbWlnaHQgbm90IGhhdmUgdG8gYWxsb2NhdGUgYW55dGhpbmcsIHdlIGNsZWFyIGN1
cnJlbnRTdHJpbmcgaW4gY2FzZSB3ZSBkaWQgbm90IGV4ZWN1dGUgYWxsb2NhdGUoKS4KICAgICBT
dHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSAwOwogCi0gICAgcmV0dXJu
IHN0cmluZzsKKyAgICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOwogfQogCiAvLyBPbiBTdHJpbmdJ
bXBsIGNyZWF0aW9uIHdlIGNvdWxkIGNoZWNrIGlmIHRoZSBhbGxvY2F0b3IgaXMgdGhlIFN0cmlu
Z1dyYXBwZXJDRkFsbG9jYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9TdHJpbmdJbXBsTWFjLm1tCmluZGV4IDZmNWU5NTNiYTE5MjVlNTQ1YmJiNWFjNTNlMjE0
NzZiYjhmMDNhNTcuLjJmMDg4YTdlYjM2M2M1YWNkMDE0MmYzODcwOTViOTYyYzE4MTZhNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5t
bQpAQCAtMjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgog
CiAjaW5jbHVkZSAiRm91bmRhdGlvbkV4dHJhcy5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIFN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICoo
KQogewotICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2UoY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAg
cmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2Rl
Y01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMu
Y3BwCmluZGV4IDMxMjQxMmZhYWI4YWMyMzYyODY1MDNkYWNhNWE5MjhiZWJkNDM5NjYuLmE3MDQ3
NDk1MjBmZGQzMmQ0ZTFlMDBmY2ZjMGRlYWYzODdjYmE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcApAQCAtMjg0LDcgKzI4NCw3
IEBAIENTdHJpbmcgVGV4dENvZGVjTWFjOjplbmNvZGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlCiAgICAgLy8gRW5jb2Rpbmcgd2lsbCBjaGFuZ2Ug
dGhlIHllbiBzaWduIGJhY2sgaW50byBhIGJhY2tzbGFzaC4KICAgICBTdHJpbmcgY29weShjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogICAgIGNvcHkucmVwbGFjZSgnXFwnLCBtX2JhY2tzbGFzaEFzQ3Vy
cmVuY3lTeW1ib2wpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZzKEFkb3B0Q0YsIGNv
cHkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMgPSBj
b3B5LmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBDRkluZGV4IHN0YXJ0UG9zID0gMDsKICAgICBD
RkluZGV4IGNoYXJhY3RlcnNMZWZ0ID0gQ0ZTdHJpbmdHZXRMZW5ndGgoY2ZzLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAK
aW5kZXggYTVjYTliNzQ0NjkyZjI4N2YyM2YzNDgxNTBiMDhmNjVlMWZmOTVmZS4uYmZjMDg3YmU5
ZjE5MmNiZTE0M2Q3YTZkMTk2NDI0YTNkZTI1ODg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAg
Ym9vbCBTZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQogc3RhdGljIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFN0cmluZyBr
ZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4g
UmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Cisg
ICAgcmV0dXJuIGtleS5jcmVhdGVDRlN0cmluZygpOwogfQogI2VuZGlmCiAKQEAgLTY3LDEwICs2
Nyw4IEBAIHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgc2l6ZV90IHNpemUgPSBzZWFyY2hJ
dGVtcy5zaXplKCk7CiAgICAgaWYgKHNpemUpIHsKICAgICAgICAgaXRlbXMuYWRvcHRDRihDRkFy
cmF5Q3JlYXRlTXV0YWJsZSgwLCBzaXplLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGl0ZW0oQWRvcHRDRiwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIGl0
ZW0uZ2V0KCkpOwotICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQorICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFy
Y2hJdGVtc1tpXS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9CiAKICAgICBDRlByZWZl
cmVuY2VzU2V0QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBr
Q0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDgz
NzQ3ZjIyMzU1NmE2YWMyYWExNjg5ZGZkZmFjMWYxZWYxN2M0NzcuLjMzN2RhY2FiMmY3MTJjOTg2
ZjBmNTcyMjk2YTc4MDU2MmMzMTRiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC02MywxNSArNjMs
MTQgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbnNw
ZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwog
Ci1zdGF0aWMgaW5saW5lIENGU3RyaW5nUmVmIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGNvbnN0
IFN0cmluZyYga2V5KQorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0
ZUtleUZvclByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4ga2V5Q0ZTdHJpbmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgIHJldHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBX
ZWIgSW5zcGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXlDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0
dXJuIGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQg
V2ViIEluc3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
KTsKIH0KIAogc3RhdGljIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBT
dHJpbmcqIHNldHRpbmcpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNl
c0tleShBZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5ID0gY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMo
a2V5KTsKICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHZhbHVlKEFkb3B0Q0YsIENG
UHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIGtDRlByZWZlcmVu
Y2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7CiAKICAgICBpZiAoIXZhbHVlKQpAQCAtODgsMTIgKzg3
LDcgQEAgc3RhdGljIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJp
bmcqIHNldHRpbmcpCiAKIHN0YXRpYyB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtl
eSwgY29uc3QgU3RyaW5nJiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlz
dFJlZj4gb2JqZWN0VG9TdG9yZTsKLSAgICBvYmplY3RUb1N0b3JlLmFkb3B0Q0Yoc2V0dGluZy5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICBBU1NFUlQob2JqZWN0VG9TdG9yZSk7Ci0KLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclBy
ZWZlcmVuY2VzKGtleSkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShwcmVmZXJlbmNl
c0tleS5nZXQoKSwgb2JqZWN0VG9TdG9yZS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBw
bGljYXRpb24pOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShjcmVhdGVLZXlGb3JQcmVm
ZXJlbmNlcyhrZXkpLmdldCgpLCBzZXR0aW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlBy
ZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIAogYm9vbCBXZWJJbnNwZWN0b3JDbGll
bnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQppbmRleCA0YTM1YjZhMmQ4YTMyYzVkZDgz
NDk3MmNkMmZkZjJhZGMzOTFlNjFhLi4zNjg3NTMxNTE3MjE4ZGEyOWU5Y2RkZGE0MjMyYTNiMTI4
MjUzMzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0KQEAgLTMw
LDEyICszMCwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9vbCBNb2R1bGU6OmxvYWQoKQog
ewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlUGF0aChBZG9wdENGLCBtX3BhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRv
cHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
YnVuZGxlUGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKSk7CisgICAgUmV0
YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVT
eXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UpKTsKICAgICBpZiAoIWJ1bmRsZVVSTCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5k
bGUoQWRvcHRDRiwgQ0ZCdW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJM
LmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUgPSBhZG9wdENGKENG
QnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOwogICAg
IGlmICghYnVuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IGRlN2Q1
ODMxZjYwOGMzODMwZTNjOWJlMTRiMzk0NjVlYjJjNzFjM2IuLjY3MWYyMGQ2ZGNhYmUxZmMxYmEz
OTU1N2Q1ZTYyOGVlN2VkN2VkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMjc5LDggKzI3OSw3IEBAIHN0YXRp
YyB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3Qg
U3RyaW5nJiBzYW5kYm94UHJvCiAgICAgaWYgKHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2ZQbHVnaW5QYXRoID0gYWRvcHRDRihwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhG
aWxlU3lzdGVtUGF0aCgwLCBjZlBsdWdpblBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxl
LCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIGlmICghcGx1Z2lu
VVJMKQogICAgICAgICByZXR1cm47CiAKQEAgLTI5Miw4ICsyOTEsNyBAQCBzdGF0aWMgdm9pZCBp
bml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmluZyYg
c2FuZGJveFBybwogICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0
aCA9IGFkb3B0Q0Yoc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkp
OwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gc2FuZGJveFByb2ZpbGVEaXJlY3RvcnkgPSBhZG9w
dENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGNmU2FuZGJveFByb2ZpbGVEaXJl
Y3RvcnlQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgVFJVRSkpOworICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gc2FuZGJveFByb2ZpbGVEaXJlY3RvcnkgPSBhZG9wdENGKENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgVFJVRSkpOwogCiAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBzYW5kYm94RmlsZU5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdp
dGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIiVALnNiIiksIGJ1bmRsZUlkZW50aWZpZXIpOwogICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gc2FuZGJveFVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmls
ZVN5c3RlbVBhdGhSZWxhdGl2ZVRvQmFzZSgwLCBzYW5kYm94RmlsZU5hbWUuZ2V0KCksIGtDRlVS
TFBPU0lYUGF0aFN0eWxlLCBGQUxTRSwgc2FuZGJveFByb2ZpbGVEaXJlY3RvcnkuZ2V0KCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9O
ZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQppbmRleCA4MWIzOGUwZWM4
ZmUzYzQxODg5NzllZWZkMDYyMjdiMzcwZmQ0YTNlLi4zZGMzNzdjNDQ1MGQ4OGZlMjVmNzAyYjBm
YTU0M2EzOGUyOGY2YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFj
Lm1tCkBAIC0zNTIsMTEgKzM1MiwxMCBAQCBzdGF0aWMgYm9vbCBnZXRQbHVnaW5JbmZvRnJvbUNh
cmJvblJlc291cmNlcyhDRkJ1bmRsZVJlZiBidW5kbGUsIFBsdWdpbk1vZHVsZUluZgogCiBib29s
IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gYnVuZGxlUGF0aChBZG9wdENGLCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0
aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVBhdGguZ2V0KCksIGtD
RlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVu
ZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lY
UGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIAogICAgIC8vIFRyeSB0byBpbml0aWFsaXplIHRoZSBi
dW5kbGUuCi0gICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUoQWRvcHRDRiwgQ0ZCdW5k
bGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CisgICAgUmV0
YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUgPSBhZG9wdENGKENGQnVuZGxlQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOwogICAgIGlmICghYnVuZGxlKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0zOTUsMTEgKzM5NCw5IEBAIGJvb2wgTmV0c2Nh
cGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQ
bHVnaW5Nb2R1bGVJCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1J
TUVUeXBlc1ByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQ
YXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBh
dGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKLSAgICAvLyBUcnkgdG8gaW5p
dGlhbGl6ZSB0aGUgYnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFk
b3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRs
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAo
IWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAppbmRleCBjZGZmMzQ0Njlh
MjM5M2QzNWFkYmFiYzRjYjBhMzhiYTBmNTYyMzI0Li43YzFmMjQwZWNjNDhiOGI0YzE5MTNlMDU0
YzU4YWIzYTQ4YTJiNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Yv
V2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
Zi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKQEAgLTk0LDkgKzk0LDkgQEAgQ0ZEaWN0aW9uYXJ5
UmVmIFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24o
V2ViUGFnZVByb3gKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybChBZG9wdENGLCBtX2VudHJpZXNbaV0t
PnVybCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHRpdGxlKEFkb3B0Q0YsIG1fZW50cmllc1tpXS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBvcmlnaW5hbFVSTChBZG9wdENGLCBtX2Vu
dHJpZXNbaV0tPm9yaWdpbmFsVVJMKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXJsID0gbV9lbnRyaWVzW2ldLT51cmwoKS5jcmVhdGVDRlN0cmlu
ZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlID0gbV9lbnRyaWVzW2ld
LT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gb3JpZ2luYWxVUkwgPSBtX2VudHJpZXNbaV0tPm9yaWdpbmFsVVJMKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyB1c2VzIHRoZSBDb3JlSVBDIGRhdGEgZW5j
b2RpbmcgZm9ybWF0LCB3aGljaCBtZWFucyB0aGF0IHdoZW5ldmVyIHdlIGNoYW5nZSB0aGUgQ29y
ZUlQQyBlbmNvZGluZyB3ZSBuZWVkIHRvIGJ1bXAgdGhlIEN1cnJlbnRTZXNzaW9uU3RhdGVEYXRh
VmVyc2lvbgogICAgICAgICAvLyBjb25zdGFudCBpbiBXZWJQYWdlUHJveHlDRi5jcHAuIFRoZSBD
b3JlSVBDIGRhdGEgZm9ybWF0IGlzIG1lYW50IHRvIGJlIGFuIGltcGxlbWVudGF0aW9uIGRldGFp
bCwgYW5kIG5vdCBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgd3JpdHRlbiB0byBkaXNrLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKaW5kZXggNzlk
ZDhjZWQwMmQ3Y2UwZDRmM2MyNDA0ODE4YjgwMWJlNDBmMWY3YS4uZmFjMDJjMWI0NjkwZjEyMzZl
OWFhNzhkYWNhNDkyYjFjNDI2M2ExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Y2YvV2ViUGFnZVByb3h5Q0YuY3BwCkBAIC02NSw3ICs2NSw3IEBAIFBhc3NSZWZQdHI8V2ViRGF0
YT4gV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGVEYXRhKFdlYlBhZ2VQcm94eVNlc3Npb25TdGF0
ZUZpbHRlCiAgICAgICAgIGlmIChwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBwcm92aXNpb25hbFVSTCA9IG1fbWFpbkZyYW1lLT5wcm92aXNpb25hbFVSTCgpOwogICAgICAg
ICBpZiAoIXByb3Zpc2lvbmFsVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcHJvdmlzaW9u
YWxVUkxTdHJpbmcuYWRvcHRDRihwcm92aXNpb25hbFVSTC5jcmVhdGVDRlN0cmluZygpKTsKKyAg
ICAgICAgICAgIHByb3Zpc2lvbmFsVVJMU3RyaW5nID0gcHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZT
dHJpbmcoKTsKICAgICAgICAgICAgIGtleXNbbnVtVmFsdWVzXSA9IFByb3Zpc2lvbmFsVVJMS2V5
KCk7CiAgICAgICAgICAgICB2YWx1ZXNbbnVtVmFsdWVzXSA9IHByb3Zpc2lvbmFsVVJMU3RyaW5n
LmdldCgpOwogICAgICAgICAgICAgKytudW1WYWx1ZXM7CkBAIC0xNzksOCArMTc5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YShXZWJEYXRhKiB3ZWJE
YXRhKQogCiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBT
dHJpbmcmIG5hbWUpCiB7Ci0gICAgU3RyaW5nIGtleSA9ICJjb20uYXBwbGUuV2ViS2l0LnNlYXJj
aEZpZWxkOiIgKyBuYW1lOwotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0
Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICByZXR1cm4gU3RyaW5nKCJjb20uYXBwbGUu
V2ViS2l0LnNlYXJjaEZpZWxkOiIgKyBuYW1lKS5jcmVhdGVDRlN0cmluZygpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQpAQCAtMTkyLDEwICsxOTEsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgVmVjdG9yPFN0cmluZz4mCiAKICAgICBpZiAoc2l6ZV90IHNpemUgPSBzZWFyY2hJdGVtcy5z
aXplKCkpIHsKICAgICAgICAgaXRlbXMuYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBz
aXplLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGl0
ZW0oQWRvcHRDRiwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAg
ICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIGl0ZW0uZ2V0KCkpOwotICAgICAgICB9
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKICAgICB9CiAKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoYXV0
b3NhdmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRB
cHBsaWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291
cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA2
ODEwZjBhYmRiOWRiZWJhOTlmYTNlMWU5YjBmMDZjZTQ1YWUwNDk0Li4zOTU2NDljNTBiZjRkNmRm
MDRiYzc1NDBiNTRiYWY1OWRiMmMzNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFu
YWdlci5jcHAKQEAgLTExOCw4ICsxMTgsNyBAQCB2b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
OjpjbGVhckNhY2hlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5EYXRhLAogI2lm
IFVTRShDRlVSTENBQ0hFKQogICAgIGlmIChyZXNvdXJjZUNhY2hlc1RvQ2xlYXIgIT0gSW5NZW1v
cnlSZXNvdXJjZUNhY2hlc09ubHkpIHsgCiAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJh
eVJlZj4gaG9zdEFycmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0
KEFkb3B0Q0YsIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkFy
cmF5QXBwZW5kVmFsdWUoaG9zdEFycmF5LmdldCgpLCBob3N0LmdldCgpKTsKKyAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwgb3JpZ2luLT5ob3N0KCkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAKICAgICAgICAgY2xlYXJDRlVSTENhY2hlRm9ySG9zdE5hbWVzKGhv
c3RBcnJheS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDA2NzEzODBkODc3YWQ2NTUzNjY3OWQwMzUwOTJkZjlhNDhiNWY1
ZDEuLmIzMzc4ZmM2NWQxNzEwNjAwY2RiYWViYjA2NWVlM2UwN2IwZjg2ZTEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxl
cnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbToKKyAgICAgICAg
KFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUpOgorCiAyMDEyLTEwLTI1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90
QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyNTE0Lgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5q
ZWN0ZWRCdW5kbGVQYWdlTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCmluZGV4IDQ2YzI3M2YxZjhjYTQwYWVl
MjdjOTQ3NmM4MWZlNzM5NGMzM2JiMjQuLmIwY2I0ZTAzMWNiNzQ0NjI4YzBiYzM0ZDU3ZDE3NmI2
ODdhZjEzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0KQEAgLTg1LDgg
Kzg1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmUKICAgICAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkNSQVNISU5HIFRFU1Q6ICIp
OwogICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZXN0UGF0aCk7Ci0gICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwgYnVpbGRlci50b1N0cmluZygpLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgICAgICBXS1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0lu
Zm9ybWF0aW9uKGNmU3RyaW5nLmdldCgpKTsKKyAgICAgICAgV0tTZXRDcmFzaFJlcG9ydEFwcGxp
Y2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbihidWlsZGVyLnRvU3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170802</attachid>
            <date>2012-10-25 21:03:21 -0700</date>
            <delta_ts>2012-10-26 22:37:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121025210154.patch</filename>
            <type>text/plain</type>
            <size>67290</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDZlNDUwMTdhZDE5NzQ4OGE4ZjEwNWVi
OWU5ODFhZTllZWRjNjM0MTUuLjEyZDY0MGRkMmY1NDVjYTMyNjUyMWEzYjA0ZmUwM2ZlYWFlY2Q2
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDEyLTEwLTI1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgog
CiAgICAgICAgIFJFR1JFU1NJT04gKHIxMzE4MzYpOiBmYWlsdXJlcyBpbiBsaXN0IHN0eWxlcyB0
ZXN0cyBvbiBFRkwsIEdUSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQyMDdiMTIzYzA2YTc2OGQxMTM1ZWMwZjJm
N2E0NDQwZTY5NTY1MDAuLjhiYzE3NTdmZjEwNmM3NTBhMDVlMmFjMzA0MzIyY2NmYTg0ZDFlMmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2MyBAQAogMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29u
ICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcg
c2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmlu
Zy4KKworICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAqIGxvYWRlci9h
cmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0
TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xv
b2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1O
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluQnVu
ZGxlSXNFcXVhbFRvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OnBhdGhBc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VC
dWZmZXJDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpw
cmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06Cisg
ICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6dXRpVHlwZUZyb21Db2NvYVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0RO
U0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1S
ZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93
c2luZ0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpj
cmVhdGVTdHJlYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRk
Q09OTkVDVENyZWRlbnRpYWxzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1J
TUVUeXBlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjo6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5n
OjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBs
Q0YuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6
U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKik6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6
ZW5jb2RlKToKKworMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgorCiAgICAgICAgIEZpeCBidWlsZC4KIAogICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFu
ZGxlck1hYy5tbToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggNTg2M2U5MmY0ZmZiZWU0MGYyNGVlZjk1MmIz
YTA3NTA3ZDQyZWNjNS4uNmUwYWVkNWZmYTU2ZTcxZjJiMDU2MjkzZmZjZmMwZWUwNTlhNWYxMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJp
bmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0
cmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cDoKKyAgICAgICAgKGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKToKKyAgICAgICAgKHBvcHVsYXRl
U2V0dGluZyk6CisgICAgICAgIChzdG9yZVNldHRpbmcpOgorCiAyMDEyLTA5LTA1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFydCAyIG9mIHJlbW92aW5nIFBsYXRm
b3JtU3RyaW5nLmgsIHJlbW92ZSBQbGF0Zm9ybVN0cmluZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmVjMDZh
ODc5M2MyZjY5NDZkYzRhOGJkMjk0MTdiN2U2OGEyYTNiZS4uNmU1NDc4ZTU2OWY3MmJmMzRmNGVi
NTQwOWNlNzk5YTk0Mjc0NTM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEw
LTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3Ry
aW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0MTkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBT
dHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICogUGxhdGZvcm0vbWFjL01vZHVsZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6TW9kdWxlOjpsb2FkKToKKyAgICAgICAgKiBQbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0Ojppbml0aWFs
aXplU2FuZGJveCk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNj
YXBlUGx1Z2luTW9kdWxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9k
dWxlOjpjcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJlbmNlcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0OjpjcmVhdGVDRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzZXNzaW9uU3RhdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6YXV0b3NhdmVL
ZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXI6OmNsZWFy
Q2FjaGVGb3JPcmlnaW4pOgorCiAyMDEyLTEwLTI1ICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXSBVc2UgcGVyIGRlc3RpbmF0aW9uIElEIG1lc3Nh
Z2UgcmVjZWl2ZXJzIGZvciBEb3dubG9hZFByb3h5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9BdG9taWNTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmgKaW5kZXggNmFjNjBlNmFkNTcyNDMzOTc4ZjVmYjRiNDg4MGE5ZmI0MDEwNWM2Ni4uN2RhMGRk
NGYzYTAxNzE5YjQ2Y2VhOWIxODhkYmRmYTVlNjkzY2NkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oCkBAIC0xMzcsMTAgKzEzNyw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lk
IHJlbW92ZShTdHJpbmdJbXBsKik7CiAgICAgCi0jaWYgVVNFKENGKQotICAgIEF0b21pY1N0cmlu
ZyhDRlN0cmluZ1JlZiBzKSA6ICBtX3N0cmluZyhhZGQoU3RyaW5nKHMpLmltcGwoKSkpIHsgfQot
ICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmcu
Y3JlYXRlQ0ZTdHJpbmcoKTsgfQotI2VuZGlmICAgIAogI2lmZGVmIF9fT0JKQ19fCiAgICAgQXRv
bWljU3RyaW5nKE5TU3RyaW5nKiBzKSA6IG1fc3RyaW5nKGFkZChTdHJpbmcocykuaW1wbCgpKSkg
eyB9CiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5kZXggMDA2N2JlYmVlZDkwZmY3NDM3MzJjZGFhZjU2
MGFhZjU5MjA5ODRlYy4uNjc2Nzc5MDZkYjAyNTAzZTIxNzk0MTc0Mzk2MjQxMWZiMjMyNjU1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTY3LDYgKzY3LDcgQEAgc3RydWN0IENoYXJC
dWZmZXJGcm9tTGl0ZXJhbERhdGFUcmFuc2xhdG9yOwogY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsK
IHN0cnVjdCBTdWJzdHJpbmdUcmFuc2xhdG9yOwogc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRv
cjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBSZXRhaW5QdHI7CiAKIGVudW0gVGV4dENhc2VT
ZW5zaXRpdml0eSB7IFRleHRDYXNlU2Vuc2l0aXZlLCBUZXh0Q2FzZUluc2Vuc2l0aXZlIH07CiAK
QEAgLTcxMyw3ICs3MTQsNyBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFdU
Rjo6VW5pY29kZTo6RGlyZWN0aW9uIGRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0
cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7CiAKICNpZiBVU0UoQ0YpCi0gICAgQ0ZTdHJpbmdSZWYg
Y3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3Ry
aW5nKCk7CiAjZW5kaWYKICNpZmRlZiBfX09CSkNfXwogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXggNTBjMDQ4ZDYzZjNkY2YxYzUzODY1NTY2ZTQ3
MjRmMWE4MjQ4ZmUwNy4uZDY3YWQzMjk5MmMyNDBmMWU1NTJmNmVjM2VmYzA4MDA4YjNiYTgzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgPG9i
amMvb2JqYy5oPgogI2VuZGlmCiAKLSNpZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0NGU3RyaW5nICogQ0ZTdHJpbmdSZWY7Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFFUKQogUVRf
QkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRU3RyaW5nOwpAQCAtMzg2LDcgKzM4Miw3IEBAIHB1Ymxp
YzoKIAogI2lmIFVTRShDRikKICAgICBTdHJpbmcoQ0ZTdHJpbmdSZWYpOwotICAgIENGU3RyaW5n
UmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29uc3Q7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
cmVhdGVDRlN0cmluZygpIGNvbnN0OwogI2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCmluZGV4IDJjZjBkYjU2MThlMzgy
MGNkZjQ0NjQ1NTgzNDFmNjk0ZjUzZDFmYTMuLmJlMjRmZGIzZmRiMTM3YzgwYjZmMGE0ZmI4ODc0
MWFiMzQxYTRkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUu
bW0KQEAgLTI0OCw4ICsyNDgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgT2JqY0Ns
YXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdl
dENsYXNzKCkpOwogICAgICAgICBPd25QdHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QoYWRv
cHRQdHIobmV3IE9iamNNZXRob2Qob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVu
ZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSkpOwogICAgICAgICBj
b25zdCBTdHJpbmcmIG5hbWVJZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkpLT5wcm9wZXJ0eU5hbWUoKTsKLSAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBuYW1lKEFkb3B0Q0YsIG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZS5n
ZXQoKSk7CisgICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRl
bnRpZmllci5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0lu
c3RhbmNlLT5pbnZva2VPYmpjTWV0aG9kKGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKICAg
ICB9CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDk3ZmU5NWIzYTQ0ZDQxODVlMjEyNmY2YmI2ZWRiZWNmNDM5ZmVlZWUuLjc1ZGY5OWFm
MzZiYjYwMDI2N2I5YTcyZDVjOTE1ODkwYzRkYzVjZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtOTE2LDggKzkxNiw3IEBAIHN0YXRpYyBLVVJMIGNyZWF0
ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRoKQog
ICAgIC8vIGFwcCBjYWNoZSBtZWRpYSBmaWxlcyBhcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBlbmNv
ZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLgogCiAjaWYgVVNFKENG
KSAmJiBQTEFURk9STShXSU4pCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlBhdGgoQWRv
cHRDRiwgcGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNm
VVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGNmUGF0aC5nZXQo
KSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IGNmVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsK
ICAgICBLVVJMIHVybChjZlVSTC5nZXQoKSk7CiAjZWxzZQogICAgIEtVUkwgdXJsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNw
cAppbmRleCAzNTc2ZDY0ZGZjNDgyYTQxZDU0ZTEzZWZkMTk3ODE2MmI3ODA3YTdmLi5kNzdmODc0
YjA5ZGMyMDA5YmJlZDAzNTI0MTgzNWJmZTg2Zjg4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTEsOCAr
OTEsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVh
dGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgY2ZE
YXRhLmdldCgpKTsKICAgICAKICAgICAvLyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVVJMKEFkb3B0Q0YsIHJlc291cmNlLT51cmwoKS5z
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBpZiAoY2ZVUkwpCisgICAgaWYgKFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwgPSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKSkKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VVUkxLZXksIGNmVVJMLmdldCgpKTsKICAgICBl
bHNlIHsKICAgICAgICAgTE9HKEFyY2hpdmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5VTEwgcmVz
b3VyY2UgVVJMIGlzIGludmFsaWQgLSByZXR1cm5pbmcgbnVsbCBwcm9wZXJ0eSBsaXN0Iik7CkBA
IC0xMDEsMjMgKzEwMCwxNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJB
cmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRhdGlvbihBcgogCiAgICAgLy8gRnJh
bWVOYW1lIHNob3VsZCBiZSBsZWZ0IG91dCBpZiBlbXB0eSBmb3Igc3VicmVzb3VyY2VzLCBidXQg
YWx3YXlzIGluY2x1ZGVkIGZvciBtYWluIHJlc291cmNlcwogICAgIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lKHJlc291cmNlLT5mcmFtZU5hbWUoKSk7Ci0gICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0
eSgpIHx8IGlzTWFpblJlc291cmNlKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2ZGcmFtZU5hbWUoQWRvcHRDRiwgZnJhbWVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZUZyYW1lTmFtZUtleSwgY2ZGcmFtZU5hbWUuZ2V0KCkpOwotICAgIH0KKyAgICBp
ZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkgfHwgaXNNYWluUmVzb3VyY2UpCisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlRnJhbWVOYW1lS2V5LCBmcmFtZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAg
CiAgICAgLy8gU2V0IE1JTUVUeXBlLCBUZXh0RW5jb2RpbmdOYW1lLCBhbmQgUmVzb3VyY2VSZXNw
b25zZSBvbmx5IGlmIHRoZXkgYWN0dWFsbHkgZXhpc3QKICAgICBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKHJlc291cmNlLT5taW1lVHlwZSgpKTsKLSAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkg
ewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmTUlNRVR5cGUoQWRvcHRDRiwgbWlt
ZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHBy
b3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXksIGNm
TUlNRVR5cGUuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKKyAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtleSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmcocmVzb3VyY2UtPnRleHRF
bmNvZGluZygpKTsKLSAgICBpZiAoIXRleHRFbmNvZGluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlRleHRFbmNvZGluZyhBZG9wdENGLCB0ZXh0RW5jb2Rp
bmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtl
eSwgY2ZUZXh0RW5jb2RpbmcuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAoIXRleHRFbmNvZGluZy5p
c0VtcHR5KCkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQo
KSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleSwgdGV4dEVuY29k
aW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUg
cmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRoZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5S
ZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNw
cAppbmRleCBhYmYxYmNhNWU4NTQxMGJhODdkNWNhYjgyNTAwZDk2OWYxMDkyNmE3Li42OTA4NDNi
MTM3NzgzNDgyODBlYzdlYTViNDM3Mzg4ZTlkZGM2NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcApAQCAtNTQsMTMgKzU0LDEyIEBAIHN0YXRpYyBT
dHJpbmcgZm9ybWF0TG9jYWxpemVkU3RyaW5nKFN0cmluZyBmb3JtYXQsIC4uLikKICNpZiBVU0Uo
Q0YpCiAgICAgdmFfbGlzdCBhcmd1bWVudHM7CiAgICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3Jt
YXQpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZm9ybWF0Q0ZTdHJpbmcoQWRvcHRDRiwg
Zm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkpOwogCiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQg
Ii1XZm9ybWF0LW5vbmxpdGVyYWwiCiAjZW5kaWYKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHJlc3VsdChBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwg
MCwgZm9ybWF0Q0ZTdHJpbmcuZ2V0KCksIGFyZ3VtZW50cykpOworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gcmVzdWx0ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1
bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwog
I2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlm
CkBAIC0yNjAsNyArMjU5LDcgQEAgU3RyaW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGlj
dGlvbmFyeShjb25zdCBTdHJpbmcmIHNlbGVjdGVkU3RyaW5nKQogICAgIHJldHVybiBXRUJfVUlf
U1RSSU5HKCJMb29rIFVwIGluIERpY3Rpb25hcnkiLCAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNv
bnRleHQgbWVudSBpdGVtIik7CiAjZWxzZQogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJpbmcoQWRvcHRDRiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9v
a3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gc2VsZWN0ZWRDRlN0cmluZyA9IHRydW5jYXRlZFN0cmluZ0Zvckxv
b2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpOwogICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiTG9vayBVcCDigJwlQOKAnSIs
ICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3Rl
ZENGU3RyaW5nLmdldCgpKTsKICNlbHNlCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkxvb2sg
VXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNl
bGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8c2VsZWN0aW9uPiIsIHRydW5jYXRlZFN0cmluZ0Zvckxv
b2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKSk7CkBAIC03MzgsOCArNzM3LDcgQEAgU3RyaW5n
IGtleWdlbk1lbnVJdGVtMjA0OCgpCiAKIFN0cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNv
bnN0IFN0cmluZyYgaG9zdCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRlN0
cmluZyhBZG9wdENGLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJldHVybiBmb3JtYXRM
b2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXlj
aGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3RDRlN0cmluZy5nZXQo
KSk7CisgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkg
ZnJvbSAlQCIsICJOYW1lIG9mIGtleWNoYWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0
YWciKSwgaG9zdC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogI2VuZGlmCkBAIC03NjIs
OCArNzYwLDcgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKIHsKICNpZiBVU0UoQ0YpCiAjaWYgIVBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oSU9TKSB8fCBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmls
ZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2Nh
bGUoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZMb2Nh
bGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKICAgICBSZXRh
aW5QdHI8Q0ZOdW1iZXJGb3JtYXR0ZXJSZWY+IGZvcm1hdHRlcihBZG9wdENGLCBDRk51bWJlckZv
cm1hdHRlckNyZWF0ZSgwLCBsb2NhbGUuZ2V0KCksIGtDRk51bWJlckZvcm1hdHRlckRlY2ltYWxT
dHlsZSkpOwogCiAgICAgaW50IHdpZHRoSW50ID0gc2l6ZS53aWR0aCgpOwpAQCAtNzc0LDcgKzc3
MSw3IEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBoZWlnaHQoQWRvcHRDRiwg
Q0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhlaWdodEludCkpOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gaGVpZ2h0U3RyaW5nKEFkb3B0Q0YsIENGTnVtYmVyRm9ybWF0
dGVyQ3JlYXRlU3RyaW5nV2l0aE51bWJlcigwLCBmb3JtYXR0ZXIuZ2V0KCksIGhlaWdodC5nZXQo
KSkpOwogCi0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIl
QCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1
c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0
KCksIHdpZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3
aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBz
eW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0
cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKICNlbHNlCiAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBmaWxlbmFtZUNGU3RyaW5nKEFkb3B0Q0YsIGZpbGVuYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpOwogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygi
JUAgJWTDlyVkIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAo
dXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5nLmdl
dCgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKaW5kZXggMWI4ZDAwNmYy
NTE5YWE4YThmM2E4YzQ1MGVmZDI3MzQxOGFmNDI4NC4uNzMwZWRjMTVmZTkxYmM5Mjc3MDg1Y2Nj
Mjg4N2IwNzkwNjc4MGJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVu
dGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCkBAIC00Niw4ICs0Niw3IEBAIHN0YXRpYyBib29s
IG1haW5CdW5kbGVJc0VxdWFsVG8oY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5n
KQogICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVJZGVudGlmaWVyVG9Db21wYXJlKEFkb3B0
Q0YsIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJu
IENGU3RyaW5nQ29tcGFyZShidW5kbGVJZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyVG9Db21w
YXJlLmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsKKyAgICByZXR1cm4gQ0ZTdHJpbmdD
b21wYXJlKGJ1bmRsZUlkZW50aWZpZXIsIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG87CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShidW5kbGVJZGVudGlmaWVyU3RyaW5nKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAppbmRleCA4ZWY1MGVlYjBj
YjA4NGQxYjliMjNiODdjM2JmYTg5ODM5MmI4YTJkLi5jMTg3MDY2MzM1NjUwNTU3OWFmZDdiNjFh
YzE3MzkwNDA2NDRmNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9G
aWxlU3lzdGVtQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0
ZW1DRi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU3RyaW5n
IGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyhBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5n
KCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNG
U3RyaW5nKCk7CiAKICAgICBpZiAoIWNmU3RyaW5nKQogICAgICAgICByZXR1cm4gQ1N0cmluZygp
OwpAQCAtNjMsOCArNjMsNyBAQCBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBT
dHJpbmcmIHBhdGgpCiAjZWxzZQogICAgIHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxl
OwogI2VuZGlmCi0gICAgcmV0dXJuIFJldGFpblB0cjxDRlVSTFJlZj4oQWRvcHRDRiwgQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PihBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNF
KSk7CisgICAgcmV0dXJuIFJldGFpblB0cjxDRlVSTFJlZj4oQWRvcHRDRiwgQ0ZVUkxDcmVhdGVX
aXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXRoU3R5
bGUsIEZBTFNFKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9u
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCA5N2ZiMGI2MDk0NjhmNGVkMzViMWUxOTM4ZDk4YmJk
ODk0MjIyNTg2Li44NTZhNGZjYWRlZDJmMGI2MjYwZjVlOTJiZTExNDVkYzEyYTVjODQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUFuaW1hdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCkBAIC0xNTEsOCArMTUxLDcgQEAgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihBbmltYXRpb25UeXBlIHR5cGUs
IGNvbnN0IFN0cmluZyYga2V5UGEKICAgICBlbHNlCiAgICAgICAgIG1fYW5pbWF0aW9uLmFkb3B0
Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FDRktleWZyYW1lQW5pbWF0aW9uKSk7CiAgICAgCi0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGtleVBhdGguY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRpb24uZ2V0KCksIHMu
Z2V0KCkpOworICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgpLCBr
ZXlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFuaW1hdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2lu
L1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggNzAxNjhiMjEwNGRiMzY5ZGEwNzU3YTExNDQ2
MjIxMTFiYzMwNjFmMC4uZGQ2MTYzMzdlOTM2NmViNzljOTZjNjcyYjczOTNiNjkyNDM2ZmM2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTE3NiwxMCArMTc2LDggQEAgdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1l
KQogc3RhdGljIHZvaWQgcmVzdWJtaXRBbGxBbmltYXRpb25zKFBsYXRmb3JtQ0FMYXllciogbGF5
ZXIpCiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllci0+YW5pbWF0aW9ucygpLmVuZCgpOwotICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRpb25zKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBpdC0+a2V5LmNy
ZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKSwgcy5nZXQoKSwgaXQtPnZhbHVlLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsK
LSAgICB9CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihsYXllci0+cGxh
dGZvcm1MYXllcigpLCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGl0LT52YWx1ZS0+
cGxhdGZvcm1BbmltYXRpb24oKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjplbnN1cmVB
bmltYXRpb25zU3VibWl0dGVkKCkKQEAgLTI5Nyw4ICsyOTUsNyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllcjo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5p
bWF0aW9uKgogICAgIC8vIEFkZCBpdCB0byB0aGUgYW5pbWF0aW9uIGxpc3QKICAgICBtX2FuaW1h
dGlvbnMuYWRkKGtleSwgYW5pbWF0aW9uKTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
cyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxheWVyQWRkQW5pbWF0
aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCksIGFuaW1hdGlvbi0+cGxhdGZvcm1BbmltYXRpb24o
KSk7CisgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIGtleS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9uKCkpOwogICAgIHNl
dE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBUZWxsIHRoZSBob3N0IGFib3V0IGl0IHNvIHdlIGNh
biBmaXJlIHRoZSBzdGFydCBhbmltYXRpb24gZXZlbnQKQEAgLTMxMiw4ICszMDksNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5
KQogICAgIC8vIFJlbW92ZSBpdCBmcm9tIHRoZSBhbmltYXRpb24gbGlzdAogICAgIG1fYW5pbWF0
aW9ucy5yZW1vdmUoa2V5KTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENG
LCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9uKG1f
bGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZMYXllclJlbW92ZUFuaW1hdGlvbihtX2xh
eWVyLmdldCgpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICAvLyBXZSBkb24n
dCAicmVtb3ZlIiBhIGxheWVyIGZyb20gQWJzdHJhY3RDQUNGTGF5ZXJUcmVlSG9zdCB3aGVuIGl0
IGxvc2VzIGFuIGFuaW1hdGlvbi4KICAgICAvLyBUaGVyZSBtYXkgYmUgb3RoZXIgYWN0aXZlIGFu
aW1hdGlvbnMgb24gdGhlIGxheWVyIGFuZCBpZiBhbiBhbmltYXRpb24KQEAgLTU4Niw4ICs1ODIs
NyBAQCBTdHJpbmcgUGxhdGZvcm1DQUxheWVyOjpuYW1lKCkgY29uc3QKIAogdm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OnNldE5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FD
RkxheWVyU2V0TmFtZShtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBDQUNGTGF5ZXJTZXRO
YW1lKG1fbGF5ZXIuZ2V0KCksIHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIHNl
dE5lZWRzQ29tbWl0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwuY3BwCmluZGV4IGM0MzBjZjI4NDYxNDY2NDdiZjYxZmM3YTcxNjI5ZjUyZjAyMWZhNmEuLjE1
Mjc1YjNhZTVmZTVjMWM2YTRmOGY4NGZkNjY5MGQyMWZjZjU4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRl
cm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAtNDU5LDcgKzQ1OSw3IEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzKCkKIAogI2lmbmRlZiBOREVCVUcK
ICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gIlRpbGUgKCIgKyBTdHJpbmc6Om51bWJlcihpKSAr
ICIsIiArIFN0cmluZzo6bnVtYmVyKGopICsgIikiOwotICAgICAgICAgICAgQ0FDRkxheWVyU2V0
TmFtZSh0aWxlLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIG5hbWUuY3JlYXRlQ0ZT
dHJpbmcoKSkuZ2V0KCkpOworICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmFtZSh0aWxlLCBuYW1l
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCmluZGV4IDIxZTlkYjRjMjhkOWEyNTUxMzUyMGFjZTcwODQwM2FjNWU3N2FiOTMuLmRkMzc4
MTU5N2Y4NWViNjEwZGNjNDcxZWM4MzE1M2UwYWJkMmNlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwCkBAIC0zNzcs
OCArMzc3LDcgQEAgc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJKCkKIHN0YXRpYyBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1p
bWVUeXBlQ0ZTdHJpbmcoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAg
cmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVy
cmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZUNGU3RyaW5n
LmdldCgpLCAwKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRl
bnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAwKSk7CiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7IC8vIEl0
IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KaW5kZXgg
YmQ1MGEzMTc1ZjNiNDI1YTg4MjZjZDJhNTZhNjJlMjE5MzY5NjMzNy4uOTUzYmNiOWQyOGFkMGVi
NzVhYjM4ODEzYzM0Mzk0NTVmMTI2MmM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBAIC0zMywxNiArMzMs
MTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgTUlNRVR5cGVGb3JJbWFnZVNvdXJj
ZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
dGlyZWYoQWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gbWltZShBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0
aXJlZi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwotICAgIHJldHVybiBtaW1lLmdldCgp
OworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKS5nZXQoKTsKIH0K
IAogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZShjb25zdCBTdHJp
bmcmIHV0aSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGUoQWRvcHRDRiwgdXRp
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZXh0ZW5zaW9u
KEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModHlwZS5nZXQoKSwga1VU
VGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOwotICAgIHJldHVybiBleHRlbnNpb24uZ2V0KCk7
CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpLmdl
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250
cm9sbGVyQ29yZVRleHQubW0KaW5kZXggNGNiODc2YzM2NWVjOWRkNzE2MGExZDJmZGUwOWU3ZjMy
ZjAwYmFjOS4uNTdmNzBmZmYyOGU3NGY2ZmUxNTc3ODczNWNiMDMyMDQ3YWEzMTYyOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29u
dHJvbGxlckNvcmVUZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbQpAQCAtMjgyLDcgKzI4Miw3IEBA
IHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb2xsZWN0Q29tcGxleFRleHRSdW5zRm9yQ2hh
cmFjdGVycyhjb25zdCBVQ2hhciogY3AsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbXBs
ZXhUZXh0UnVucy5hcHBlbmQoQ29tcGxleFRleHRSdW46OmNyZWF0ZShtX2ZvbnQucHJpbWFyeUZv
bnQoKSwgY3AsIHN0cmluZ0xvY2F0aW9uICsgcnVuUmFuZ2UubG9jYXRpb24sIHJ1blJhbmdlLmxl
bmd0aCwgbV9ydW4ubHRyKCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJ1bkZvbnREYXRhID0g
Zm9udENhY2hlKCktPmdldENhY2hlZEZvbnREYXRhKG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwg
Zm9udE5hbWUuZ2V0KCksIGZhbHNlLCBGb250Q2FjaGU6OkRvTm90UmV0YWluKS5nZXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgcnVuRm9udERhdGEgPSBmb250Q2FjaGUoKS0+Z2V0Q2FjaGVkRm9u
dERhdGEobV9mb250LmZvbnREZXNjcmlwdGlvbigpLCBTdHJpbmcoZm9udE5hbWUuZ2V0KCkpLCBm
YWxzZSwgRm9udENhY2hlOjpEb05vdFJldGFpbikuZ2V0KCk7CiAjaWYgIVBMQVRGT1JNKFdYKQog
ICAgICAgICAgICAgICAgICAgICAvLyBDb3JlIFRleHQgbWF5IGhhdmUgdXNlZCBhIGZvbnQgdGhh
dCBpcyBub3Qga25vd24gdG8gTlNGb250TWFuYWdlci4gSW4gdGhhdCBjYXNlLCBmYWxsIGJhY2sg
b24KICAgICAgICAgICAgICAgICAgICAgLy8gdXNpbmcgdGhlIGZvbnQgYXMgcmV0dXJuZWQsIGV2
ZW4gdGhvdWdoIGl0IG1heSBub3QgaGF2ZSB0aGUgYmVzdCBOU0ZvbnRSZW5kZXJpbmdNb2RlLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KaW5kZXggYmQ4ODAy
MDQ0MWIwZTlhZTAwYmFkYWYzNmIyZjRmNWE2YTZiZWFlNy4uZmQ0YWI5OWIxNzQ3NWQ0MTRiMjFh
YTNlY2Q1N2U2MTgwYTI4ZmNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL0NsaXBib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xp
cGJvYXJkTWFjLm1tCkBAIC05OSwxMSArOTksMTAgQEAgc3RhdGljIFN0cmluZyBjb2NvYVR5cGVG
cm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiAgICAgLy8gVHJ5IFVU
SSBub3cKICAgICBTdHJpbmcgbWltZVR5cGUgPSBxVHlwZTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aVR5cGUoQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLCBOVUxM
KSk7Ci0gICAgaWYgKHV0aVR5cGUpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgcGJUeXBlID0gVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05T
UGJvYXJkVHlwZSk7CisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlwZSA9IGFk
b3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01J
TUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBOVUxMKSkpIHsKKyAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVm
ZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUp
KTsKICAgICAgICAgaWYgKHBiVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBwYlR5cGU7CisgICAg
ICAgICAgICByZXR1cm4gcGJUeXBlLmdldCgpOwogICAgIH0KIAogICAgIC8vIE5vIG1hcHBpbmcs
IGp1c3QgcGFzcyB0aGUgd2hvbGUgc3RyaW5nIHRob3VnaApAQCAtMTEyLDExICsxMTEsOCBAQCBz
dGF0aWMgU3RyaW5nIGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCiAKIHN0YXRpYyBTdHJpbmcgdXRpVHlwZUZyb21Db2NvYVR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdHlwZUNGID0gYWRvcHRDRih0
eXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlw
ZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0Ns
YXNzTlNQYm9hcmRUeXBlLCB0eXBlQ0YuZ2V0KCksIDApKTsKLSAgICBpZiAodXRpVHlwZSkgewot
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlKEFkb3B0Q0YsIFVUVHlwZUNv
cHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlw
ZSkpOwotICAgICAgICBpZiAobWltZVR5cGUpCisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdXRpVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRh
ZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSwgdHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAw
KSkpIHsKKyAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZG9w
dENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFn
Q2xhc3NNSU1FVHlwZSkpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhtaW1lVHlwZS5nZXQo
KSk7CiAgICAgfQogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKaW5kZXggMGExYTRkOGM3NTE0ZGE5
MTM3MzliZTVlMzQ0NmQ0OTdkOTVhNDc4Yi4uZTU4ZDlhOTQ5OTY5MjdiOWJiNWI5YjM0NjE0OTc4
ZjVhYmY0ZjNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtl
eUdlbmVyYXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtl
eUdlbmVyYXRvck1hYy5jcHAKQEAgLTYwLDExICs2MCw3IEBAIFN0cmluZyBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcm
IGNoCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNoYWxsZW5nZVN0cmluZ0NGKEFkb3B0Q0YsIGNoYWxsZW5nZVN0cmluZy5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleURlc2NyaXB0aW9u
KEFkb3B0Q0YsIGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwgd2tTaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlU3RyaW5nQ0Yu
Z2V0KCksIGtleURlc2NyaXB0aW9uLmdldCgpKSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LmdldCgp
OworICAgIHJldHVybiBhZG9wdENGKHdrU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
KGtleVNpemUsIGNoYWxsZW5nZVN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrZXlnZW5L
ZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKS5nZXQo
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9BdXRoZW50aWNhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQXV0aGVudGljYXRpb25DRi5jcHAKaW5kZXggODdhM2ZhYjhhNzQzN2FlMTBhZjQzOWE0ZTRl
MDJjZDJlMWEzMGRlYi4uN2IxZDRmYTQ3ODdmMWQxZTBkOWUzYTRkZTgxZjNlYjU0NmQwY2VlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNh
dGlvbkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwCkBAIC0xMTksMTMgKzExOSw3IEBAIENGVVJMQ3JlZGVudGlhbFJlZiBj
cmVhdGVDRihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKICAgICAgICAgcmV0dXJu
IENGVVJMQ3JlZGVudGlhbENyZWF0ZVdpdGhJZGVudGl0eUFuZENlcnRpZmljYXRlQXJyYXkoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgY29yZUNyZWRlbnRpYWwuaWRlbnRpdHkoKSwgY29yZUNyZWRlbnRp
YWwuY2VydGlmaWNhdGVzKCksIHBlcnNpc3RlbmNlKTsKICNlbmRpZgogCi0gICAgQ0ZTdHJpbmdS
ZWYgdXNlciA9IGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0cmluZygpOwotICAgIENG
U3RyaW5nUmVmIHBhc3N3b3JkID0gY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVDRlN0
cmluZygpOwotICAgIENGVVJMQ3JlZGVudGlhbFJlZiByZXN1bHQgPSBDRlVSTENyZWRlbnRpYWxD
cmVhdGUoMCwgdXNlciwgcGFzc3dvcmQsIDAsIHBlcnNpc3RlbmNlKTsKLSAgICBDRlJlbGVhc2Uo
dXNlcik7Ci0gICAgQ0ZSZWxlYXNlKHBhc3N3b3JkKTsKLQotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2VyKCku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5jZSk7CiB9CiAKIENGVVJMUHJvdGVjdGlvblNw
YWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQpAQCAtMTky
LDEzICsxODYsNyBAQCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90
ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogCi0gICAgQ0ZTdHJpbmdSZWYgaG9zdCA9IGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRlQ0ZT
dHJpbmcoKTsKLSAgICBDRlN0cmluZ1JlZiByZWFsbSA9IGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0
ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcmVzdWx0ID0gQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VDcmVhdGUoMCwgaG9zdCwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVyVHlw
ZSwgcmVhbG0sIHNjaGVtZSk7Ci0gICAgQ0ZSZWxlYXNlKGhvc3QpOwotICAgIENGUmVsZWFzZShy
ZWFsbSk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VDcmVhdGUoMCwgY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCBjb3JlU3BhY2UucmVhbG0oKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBzY2hlbWUpOwogfQogCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVk
ZW50aWFsUmVmIGNmQ3JlZGVudGlhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKaW5kZXggNWQ2ZDczOTI2YzQ0ZWU0ODgw
MTgyZmZmZTg5ODFhY2YzOGE3NmIwYS4uNTAxNzk3MWRlMTRhNDU0YTg0ZjlhMzg4YmI0N2Y2NDg0
ODkxZGE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVKYXJDRk5ldC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIHNldENvb2tpZXMo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiAgICAgLy8gY29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkcyBkb2Vzbid0IHBhcnNlIGNv
b2tpZXMgd2l0aG91dCBhIHZhbHVlCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZyA9IHZhbHVlLmNv
bnRhaW5zKCc9JykgPyB2YWx1ZSA6IHZhbHVlICsgIj0iOwogCi0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjb29raWVTdHJpbmdDRihBZG9wdENGLCBjb29raWVTdHJpbmcuY3JlYXRlQ0ZTdHJp
bmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb29raWVTdHJpbmdDRiA9IGNvb2tp
ZVN0cmluZy5jcmVhdGVDRlN0cmluZygpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IGhlYWRlckZpZWxkc0NGKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LAogICAgICAgICAoY29uc3Qgdm9pZCoqKSZzX3NldENvb2tpZUtleUNGLCAoY29uc3Qg
dm9pZCoqKSZjb29raWVTdHJpbmdDRiwgMSwKICAgICAgICAgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5
Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAppbmRleCAzZjkwMWE1
NDFkZTAwZWViZWMyNDMyMmQwNDM5NmVlNGEyMjA1ZmI2Li5jZTE0NTE5MDlhZWQ3ZTJiNGRlZjlj
ZTBkOWJiNDI5MzQxOGRhY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAtOTAsMTIgKzkwLDEyIEBAIHZvaWQgRE5TUmVzb2x2ZVF1
ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0bmFt
ZUNGKEFkb3B0Q0YsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxD
Rkhvc3RSZWY+IGhvc3QoQWRvcHRDRiwgQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWVD
Ri5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9z
dENyZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAg
ICBpZiAoIWhvc3QpIHsKICAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisKICAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAs
IDAsIDAsIDAsIDAgfTsKICAgICBDRkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigp
OyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KICAg
ICBCb29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxs
YmFjaywgJmNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDZmZGY1YWRiOTljZDgzZTY3Y2NiMmZi
MGYwNDc0ZjA3YmE4MzVjNWQuLmU0NzIxMzhlMWE5ZGRmM2I5ZjE4MjNhZmUzZTQwZWU1MzZmOWYy
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKQEAgLTE0NywxMyArMTQ3LDExIEBAIENGRXJyb3JSZWYgUmVzb3Vy
Y2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgaWYgKCFtX3BsYXRmb3JtRXJyb3IpIHsKICAg
ICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvKEFkb3B0Q0Ys
IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgICAgIGlm
ICghbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbG9jYWxpemVkRGVzY3JpcHRpb25TdHJpbmcoQWRvcHRDRiwgbV9s
b2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0
aW9uS2V5LCBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZy5nZXQoKSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKCFtX2xvY2FsaXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERl
c2NyaXB0aW9uS2V5LCBtX2xvY2FsaXplZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogCiAgICAgICAgIGlmICghbV9mYWlsaW5nVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5nKEFkb3B0Q0YsIG1fZmFp
bGluZ1VSTC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gZmFpbGluZ1VSTFN0cmluZyA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmluZygpOwog
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdV
UkxTdHJpbmdLZXksIGZhaWxpbmdVUkxTdHJpbmcuZ2V0KCkpOwogICAgICAgICAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIGZhaWxp
bmdVUkxTdHJpbmcuZ2V0KCksIDApKTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHVzZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJMS2V5LCB1cmwuZ2V0KCkpOwpAQCAtMTY0LDggKzE2
Miw3IEBAIENGRXJyb3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgICAg
ICAgICB3a1NldFNTTFBlZXJDZXJ0aWZpY2F0ZURhdGEodXNlckluZm8uZ2V0KCksIG1fY2VydGlm
aWNhdGUuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGRvbWFpblN0cmluZyhBZG9wdENGLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICAgICAgbV9wbGF0Zm9ybUVycm9yLmFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBkb21haW5T
dHJpbmcuZ2V0KCksIG1fZXJyb3JDb2RlLCB1c2VySW5mby5nZXQoKSkpOworICAgICAgICBtX3Bs
YXRmb3JtRXJyb3IgPSBhZG9wdENGKENGRXJyb3JDcmVhdGUoMCwgbV9kb21haW4uY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1FcnJvci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4
IDAxZThiOGFlNWMwZDFjNmE2YThmMDMzMDg1ZTkwZjAxMGJjMWY3YzYuLjgwNzBjMjU4MmI3Y2Fh
MGRlNmZlMzVmMzA3NDNmNzhiMjBiNzdhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMTMx
LDcgKzEzMSw3IEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4g
PiYgY2xpZW50Q2VydHMoKQogCiBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TUlNRVR5cGUoQ0ZVUkxS
ZXNwb25zZVJlZiByZXNwb25zZSkKIHsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1J
TUVUeXBlU3RyaW5nID0gZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBz
dGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gZGVmYXVsdE1JTUVUeXBl
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgCiAgICAgQ0ZVUkxSZXNwb25zZVNl
dE1JTUVUeXBlKHJlc3BvbnNlLCBkZWZhdWx0TUlNRVR5cGVTdHJpbmcpOwogfQpAQCAtMTYxLDgg
KzE2MSw4IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29u
bmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYKICAgICBpZiAoY2ZSZWRpcmVjdFJlc3Bv
bnNlKSB7CiAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2UgPSBDRlVSTFJlc3Bv
bnNlR2V0SFRUUFJlc3BvbnNlKGNmUmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIGlmIChodHRw
TWVzc2FnZSAmJiBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdl
KSA9PSAzMDcpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBN
ZXRob2QoQWRvcHRDRiwgaGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkp
OwotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2QoQWRvcHRDRiwg
Q0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCkpOworICAgICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZCA9IGhhbmRsZS0+bGFzdEhU
VFBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1l
dGhvZChjZlJlcXVlc3QpKTsKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0
aW9ucyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgw
LCBDRlN0cmluZ0dldExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2Fz
ZUluc2Vuc2l0aXZlKSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRh
YmxlQ29weSgwLCBjZlJlcXVlc3QpKTsKICNpZiBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCkBA
IC0xNzUsOSArMTc1LDggQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3Qo
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgICAgICAgICAgICAg
ICAgICBXZWJDb3JlOjpzZXRIVFRQQm9keShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgYm9keSk7CiAK
ICAgICAgICAgICAgICAgICBTdHJpbmcgb3JpZ2luYWxDb250ZW50VHlwZSA9IGhhbmRsZS0+Zmly
c3RSZXF1ZXN0KCkuaHR0cENvbnRlbnRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBvcmlnaW5hbENvbnRlbnRUeXBlQ0YoQWRvcHRDRiwgb3JpZ2luYWxDb250
ZW50VHlwZS5jcmVhdGVDRlN0cmluZygpKTsKICAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFs
Q29udGVudFR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RT
ZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRl
bnQtVHlwZSIpLCBvcmlnaW5hbENvbnRlbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5n
ZXQoKSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIpLCBvcmlnaW5hbENvbnRlbnRUeXBlLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1
ZXN0LmdldCgpOwogICAgICAgICAgICAgfQpAQCAtNjA3LDEwICs2MDYsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVu
dGljYXRpb25DaGFsbAogI2VuZGlmCiAKICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAh
ZC0+bV9wYXNzLmlzTnVsbCgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXNl
cihBZG9wdENGLCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcGFzcyhBZG9wdENGLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwoQWRvcHRD
RiwKLSAgICAgICAgICAgIENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCB1c2VyLmdldCgpLCBwYXNzLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VO
b25lKSk7CisgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwg
PSBhZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5t
X3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAgCiAg
ICAgICAgIEtVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVz
cG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKQEAgLTEwMDUsNyArMTAwMSw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGVk
KQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckRlZmF1bHRCYXNlKCkgOiBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZklkZW50aWZpZXIoQWRvcHRDRiwgU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVy
ID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CiAK
ICAgICBwcml2YXRlU3RvcmFnZVNlc3Npb24oKSA9IGNyZWF0ZVByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmlu
ZGV4IDhjZmY4N2NhMGQ1OGVhMmU1MjNmMzczMGQ2YjRhNzczMGIwNmJlNGIuLjM3ZjA5Mzk0N2Vj
Mjk4ZmQyYzk5ZDQ5M2ZmNTQ5MDQ3YWM1NmMzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBA
IC0xMTksMTMgKzExOSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRIZWFkZXJGaWVsZHMoQ0ZN
dXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBjb25zdCBIVFRQSGVhCiAgICAgfQogCiAgICAg
SFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcmVxdWVzdEhlYWRlcnMuZW5kKCk7
Ci0gICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFk
ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBDRlN0cmluZ1JlZiBrZXkg
PSBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIENGU3RyaW5nUmVmIHZhbHVlID0g
aXQtPnZhbHVlLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBI
ZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QsIGtleSwgdmFsdWUpOwotICAgICAgICBDRlJlbGVhc2Uo
a2V5KTsKLSAgICAgICAgQ0ZSZWxlYXNlKHZhbHVlKTsKLSAgICB9CisgICAgZm9yIChIVFRQSGVh
ZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFkZXJzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUo
cmVxdWVzdCwgaXQtPmtleS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBpdC0+dmFs
dWUuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VS
ZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCkBAIC0xNDYsOCArMTQxLDcgQEAgdm9p
ZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICB3a1NldFJl
cXVlc3RTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFN0b3JhZ2VTZXNzaW9u
KCksIGNmUmVxdWVzdCk7CiAjZW5kaWYKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVx
dWVzdE1ldGhvZChBZG9wdENGLCBodHRwTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAg
Q0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0LCByZXF1ZXN0TWV0aG9k
LmdldCgpKTsKKyAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3Qs
IGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIGlmIChodHRwUGlw
ZWxpbmluZ0VuYWJsZWQoKSkKICAgICAgICAgd2tTZXRIVFRQUGlwZWxpbmluZ1ByaW9yaXR5KGNm
UmVxdWVzdCwgdG9IVFRQUGlwZWxpbmluZ1ByaW9yaXR5KG1fcHJpb3JpdHkpKTsKQEAgLTE2NCw3
ICsxNTgsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3Qo
KQogICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0
aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
QXJyYXlSZWY+IGVuY29kaW5nRmFsbGJhY2tzKEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGZhbGxiYWNrQ291bnQsIDApKTsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpICE9IGZhbGxiYWNrQ291bnQ7ICsraSkgewotICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZShBZG9wdENGLCBtX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZSA9IG1fcmVzcG9uc2VDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKTsKICAg
ICAgICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IENGU3RyaW5nQ29udmVydElBTkFDaGFy
U2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKTsKICAgICAgICAgaWYgKGVuY29k
aW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQogICAgICAgICAgICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGVuY29kaW5nRmFsbGJhY2tzLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPihlbmNvZGluZykpOwpAQCAtMjEzLDcgKzIwNyw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1VwZGF0ZVJlc291cmNlUmVxdWVzdCgpCiAgICAgICAgIFZlY3Rvcjxjb25zdCB2b2lk
KiwgMTI4PiB2YWx1ZXMoaGVhZGVyQ291bnQpOwogICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlz
QW5kVmFsdWVzKGhlYWRlcnMsIGtleXMuZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBoZWFkZXJDb3VudDsgKytpKQotICAgICAgICAgICAgbV9odHRw
SGVhZGVyRmllbGRzLnNldCgoQ0ZTdHJpbmdSZWYpa2V5c1tpXSwgKENGU3RyaW5nUmVmKXZhbHVl
c1tpXSk7CisgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KFN0cmluZygoQ0ZTdHJp
bmdSZWYpa2V5c1tpXSksIFN0cmluZygoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKSk7CiAgICAgICAg
IENGUmVsZWFzZShoZWFkZXJzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAppbmRl
eCBhNDViZWVkYzQzMzAwNzcyYjM5Y2FlZTJiMzk0NmNhYzNkZjBiZjMxLi4zODIxNmQ0ZDIwYmY5
ODExM2YzYWVkMjM2Y2E1MTZmZWRjMDQ5MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCkBA
IC01MSw5ICs1MSw3IEBAIENGVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VSZXNwb25zZTo6Y2ZVUkxS
ZXNwb25zZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NmUmVzcG9uc2UgJiYgIW1faXNOdWxsKSB7
CiAgICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIG1fdXJsLmNyZWF0ZUNG
VVJMKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlKEFkb3B0Q0Ys
IG1fbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdGV4dEVuY29kaW5nTmFtZShBZG9wdENGLCBtX3RleHRFbmNvZGluZ05hbWUuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgICAgIG1fY2ZSZXNwb25zZS5hZG9wdENGKENGVVJMUmVzcG9uc2VD
cmVhdGUoMCwgdXJsLmdldCgpLCBtaW1lVHlwZS5nZXQoKSwgbV9leHBlY3RlZENvbnRlbnRMZW5n
dGgsIHRleHRFbmNvZGluZ05hbWUuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsK
KyAgICAgICAgbV9jZlJlc3BvbnNlLmFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwu
Z2V0KCksIG1fbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbV9leHBlY3RlZENvbnRl
bnRMZW5ndGgsIG1fdGV4dEVuY29kaW5nTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZV
UkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fY2ZSZXNwb25z
ZS5nZXQoKTsKQEAgLTEwNSw3ICsxMDMsNyBAQCB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtTGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkKICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtQ29tbW9uSGVhZGVyRmllbGRzOyBpKyspIHsKICAgICAgICAgICAgICAgICBD
RlN0cmluZ1JlZiB2YWx1ZTsKICAgICAgICAgICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWVJZlByZXNlbnQoaGVhZGVycy5nZXQoKSwgY29tbW9uSGVhZGVyRmllbGRzW2ldLCAoY29uc3Qg
dm9pZCAqKikmdmFsdWUpKQotICAgICAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMu
c2V0KGNvbW1vbkhlYWRlckZpZWxkc1tpXSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBt
X2h0dHBIZWFkZXJGaWVsZHMuc2V0KFN0cmluZyhjb21tb25IZWFkZXJGaWVsZHNbaV0pLCBTdHJp
bmcodmFsdWUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBt
X2h0dHBTdGF0dXNDb2RlID0gMDsKQEAgLTEyMyw3ICsxMjEsNyBAQCB2b2lkIFJlc291cmNlUmVz
cG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkKICAgICAgICAgICAg
IFZlY3Rvcjxjb25zdCB2b2lkKiwgMTI4PiB2YWx1ZXMoaGVhZGVyQ291bnQpOwogICAgICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyhoZWFkZXJzLmdldCgpLCBrZXlzLmRhdGEo
KSwgdmFsdWVzLmRhdGEoKSk7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlYWRl
ckNvdW50OyArK2kpCi0gICAgICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldCgoQ0ZT
dHJpbmdSZWYpa2V5c1tpXSwgKENGU3RyaW5nUmVmKXZhbHVlc1tpXSk7CisgICAgICAgICAgICAg
ICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChTdHJpbmcoKENGU3RyaW5nUmVmKWtleXNbaV0pLCBT
dHJpbmcoKENGU3RyaW5nUmVmKXZhbHVlc1tpXSkpOwogICAgICAgICB9CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJl
YW1IYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAppbmRleCBkODZjNzZiYzZmNDVjMTgxNjQ4ZTBhNzc2
Y2QzOWJhZTg5MDg0MGQ2Li40YTdjZDkwMmFlOWYwMjg3ZDg5OGQ5MmJkOTg1ZGQ3NjZkNDJhMTcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKCkKICAgICBpZiAobV9jb25uZWN0aW9u
VHlwZSA9PSBVbmtub3duKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGhvc3QoQWRvcHRDRiwgbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdCA9IG1fdXJsLmhvc3QoKS5jcmVhdGVDRlN0cmlu
ZygpOwogCiAgICAgLy8gQ3JlYXRpbmcgc3RyZWFtcyB0byBmaW5hbCBkZXN0aW5hdGlvbiwgbm90
IHRvIHByb3h5LgogICAgIENGUmVhZFN0cmVhbVJlZiByZWFkU3RyZWFtID0gMDsKQEAgLTM1OSwx
MiArMzU5LDEwIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGVudGlh
bHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogICAgIFN0cmluZyBwYXNzd29yZDsK
ICAgICBpZiAoIW1fc2VudFN0b3JlZENyZWRlbnRpYWxzICYmIGdldFN0b3JlZENPTk5FQ1RQcm94
eUNyZWRlbnRpYWxzKHByb3RlY3Rpb25TcGFjZSwgbG9naW4sIHBhc3N3b3JkKSkgewogICAgICAg
ICAvLyBUcnkgdG8gYXBwbHkgc3RvcmVkIGNyZWRlbnRpYWxzLCBpZiB3ZSBoYXZlbid0IHRyaWVk
IHRob3NlIGFscmVhZHkuCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9naW5DRihB
ZG9wdENGLCBsb2dpbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBwYXNzd29yZENGKEFkb3B0Q0YsIHBhc3N3b3JkLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgICAgICAvLyBDcmVhdGluZyBhIHRlbXBvcmFyeSByZXF1ZXN0IHRvIG1ha2UgQ0ZOZXR3b3Jr
IGFwcGx5IGNyZWRlbnRpYWxzIHRvIGl0LiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGNhbm5vdCB3b3Jr
IHdpdGggTlRMTSBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5
IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkgY3JlZGVudGlhbHMgdG8gaXQuIFVuZm9y
dHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0aCBOVExNIGF1dGhlbnRpY2F0aW9uLgogICAg
ICAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gZHVtbXlSZXF1ZXN0KEFkb3B0Q0YsIENG
SFRUUE1lc3NhZ2VDcmVhdGVSZXF1ZXN0KDAsIENGU1RSKCJHRVQiKSwgbV9odHRwc1VSTC5nZXQo
KSwga0NGSFRUUFZlcnNpb24xXzEpKTsKIAotICAgICAgICBCb29sZWFuIGFwcGxpZWRDcmVkZW50
aWFscyA9IENGSFRUUE1lc3NhZ2VBcHBseUNyZWRlbnRpYWxzKGR1bW15UmVxdWVzdC5nZXQoKSwg
YXV0aGVudGljYXRpb24uZ2V0KCksIGxvZ2luQ0YuZ2V0KCksIHBhc3N3b3JkQ0YuZ2V0KCksIDAp
OworICAgICAgICBCb29sZWFuIGFwcGxpZWRDcmVkZW50aWFscyA9IENGSFRUUE1lc3NhZ2VBcHBs
eUNyZWRlbnRpYWxzKGR1bW15UmVxdWVzdC5nZXQoKSwgYXV0aGVudGljYXRpb24uZ2V0KCksIGxv
Z2luLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhc3N3b3JkLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDApOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFwcGxpZWRDcmVkZW50aWFscywgYXBwbGll
ZENyZWRlbnRpYWxzKTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByb3h5QXV0
aG9yaXphdGlvblN0cmluZyhBZG9wdENGLCBDRkhUVFBNZXNzYWdlQ29weUhlYWRlckZpZWxkVmFs
dWUoZHVtbXlSZXF1ZXN0LmdldCgpLCBDRlNUUigiUHJveHktQXV0aG9yaXphdGlvbiIpKSk7CkBA
IC0zODksNyArMzg3LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVk
ZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiBDRlN0cmluZ1JlZiBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqIGluZm8pCiB7CiAg
ICAgU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1I
YW5kbGUqPihpbmZvKTsKLSAgICByZXR1cm4gU3RyaW5nKCJXZWJLaXQgc29ja2V0IHN0cmVhbSwg
IiArIGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgcmV0dXJu
IFN0cmluZygiV2ViS2l0IHNvY2tldCBzdHJlYW0sICIgKyBoYW5kbGUtPm1fdXJsLnN0cmluZygp
KS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKIH0KIAogc3RydWN0IE1haW5UaHJlYWRFdmVu
dENhbGxiYWNrSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KaW5kZXggOTMyMTZjYjU1ZTg1NzczMTM2
ZjNlOGMzYTA3Y2U2ZmI1NTZlMDZkMi4uZTY5MzQ4NDgxYWIwYTAyMTM3OTRkYTI0ZWZiY2M0ZjU2
ZGMwMDhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VSZXF1ZXN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpAQCAtMTYzLDkgKzE2Myw5IEBAIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgICAgIE5TTXV0YWJs
ZUFycmF5ICplbmNvZGluZ0ZhbGxiYWNrcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAg
ICAgIHVuc2lnbmVkIGNvdW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheS5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0g
Y291bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZW5jb2RpbmdOYW1lID0gbV9y
ZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVD
RlN0cmluZygpOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuc0VuY29kaW5nID0gQ0ZTdHJp
bmdDb252ZXJ0RW5jb2RpbmdUb05TU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdDb252ZXJ0SUFOQUNo
YXJTZXROYW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUpKTsKLSAgICAgICAgICAgIENGUmVsZWFz
ZShlbmNvZGluZ05hbWUpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBlbmNv
ZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5zRW5j
b2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRFbmNvZGluZ1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0cmlu
Z0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZS5nZXQoKSkpOwor
CiAgICAgICAgICAgICBpZiAobnNFbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJ
ZCkKICAgICAgICAgICAgICAgICBbZW5jb2RpbmdGYWxsYmFja3MgYWRkT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoVW5zaWduZWRMb25nOm5zRW5jb2RpbmddXTsKICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJl
c3BvbnNlLm1tCmluZGV4IDZhYTc2ZjZkZDc4NGRhMDlkN2JmZjdlMWU2ODU1ZTc1Y2FkYWU5OWMu
LmY5NzEwYjJkZDI1MTg0NjIwMTUxMzI0MmY0MGYzYTQxMjY0ZjIyZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9u
c2UubW0KQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3Nhcnko
Q0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogICAgIH0KICAgICAKICAgICBpZiAoIXJlc3Vs
dCkgewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0g
V2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgc3Rh
dGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IFdlYkNvcmU6OmRlZmF1bHRN
SU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgICAgICByZXN1bHQgPSBk
ZWZhdWx0TUlNRVR5cGVTdHJpbmc7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAppbmRleCA0ZTNmY2VkNDQ0NjQ5YTljNWNl
ZjM2NGVjMDYyZmU4ZGIxODg0ZjA5Li4wZjY2OGQxMGY4ZTQxN2Y1NmVhOTNhMDg1ODEyNGNkZjJi
YTQxN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhl
bmF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVu
YXRpb25DRi5jcHAKQEAgLTQ2LDggKzQ2LDcgQEAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9t
aWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4gPjo6Y3JlYXQKIHRl
bXBsYXRlPD4KIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNo
ZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21p
Y1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmTG9jYWxlSWRlbnRpZmllcihBZG9wdENGLCBsb2NhbGVJZGVudGlmaWVyLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlKEFkb3B0Q0YsIENGTG9j
YWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNmTG9jYWxlSWRlbnRpZmllci5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsb2NhbGVJZGVudGlmaWVyLmltcGwoKS0+Y3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2
YWlsYWJsZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKaW5kZXggZDdjZGE3OTYyOTg2
MjU3M2EzNWM2YTkyNjg1NzUyMzA1YWI2YzI3ZS4uMjY5N2U3NmYwYmY1OTIzYjE1MmZlZGQ3MTAz
N2U5NzExNDkyNmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9j
Zi9TdHJpbmdDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJp
bmdDRi5jcHAKQEAgLTIzLDggKzIzLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogI2lmIFVTRShDRikKLQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApA
QCAtNTEsNyArNTEsNyBAQCBTdHJpbmc6OlN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiAgICAgfQog
fQogCi1DRlN0cmluZ1JlZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKK1JldGFpblB0
cjxDRlN0cmluZ1JlZj4gU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2ltcGwpCiAgICAgICAgIHJldHVybiBDRlNUUigiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggN2EyZDgyZTQwMmQyNGIz
N2JiYzA3MWY0N2Y5OGUwYTg2NTE4NDkyMS4uMWRhNTYxYjYwNjJiY2FiNDllMDliZmU3OTc4MmIy
NzNmMGRhMDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9T
dHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3Ry
aW5nSW1wbENGLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMzIsNyArMTMzLDcg
QEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAKIH0KIAotQ0ZTdHJpbmdS
ZWYgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiB7CiAgICAgaWYgKCFtX2xlbmd0aCB8fCAhaXNN
YWluVGhyZWFkKCkpIHsKICAgICAgICAgaWYgKGlzOEJpdCgpKQpAQCAtMTUzLDcgKzE1NCw3IEBA
IENGU3RyaW5nUmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKICAgICAvLyBDb3JlRm91
bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIgY3Vy
cmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAgIFN0
cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IDA7CiAKLSAgICByZXR1cm4g
c3RyaW5nOworICAgIHJldHVybiBhZG9wdENGKHN0cmluZyk7CiB9CiAKIC8vIE9uIFN0cmluZ0lt
cGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0aGUgU3RyaW5n
V3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1N0cmluZ0ltcGxNYWMubW0KaW5kZXggNmY1ZTk1M2JhMTkyNWU1NDViYmI1YWM1M2UyMTQ3
NmJiOGYwM2E1Ny4uMmYwODhhN2ViMzYzYzVhY2QwMTQyZjM4NzA5NWI5NjJjMTgxNmE2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1t
CkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAK
ICNpbmNsdWRlICJGb3VuZGF0aW9uRXh0cmFzLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKigp
CiB7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpKTsKKyAgICBy
ZXR1cm4gSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVj
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5j
cHAKaW5kZXggMzEyNDEyZmFhYjhhYzIzNjI4NjUwM2RhY2E1YTkyOGJlYmQ0Mzk2Ni4uYTcwNDc0
OTUyMGZkZDMyZDRlMWUwMGZjZmMwZGVhZjM4N2NiYTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCkBAIC0yODQsNyArMjg0LDcg
QEAgQ1N0cmluZyBUZXh0Q29kZWNNYWM6OmVuY29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGUKICAgICAvLyBFbmNvZGluZyB3aWxsIGNoYW5nZSB0
aGUgeWVuIHNpZ24gYmFjayBpbnRvIGEgYmFja3NsYXNoLgogICAgIFN0cmluZyBjb3B5KGNoYXJh
Y3RlcnMsIGxlbmd0aCk7CiAgICAgY29weS5yZXBsYWNlKCdcXCcsIG1fYmFja3NsYXNoQXNDdXJy
ZW5jeVN5bWJvbCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMoQWRvcHRDRiwgY29w
eS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmcyA9IGNv
cHkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIENGSW5kZXggc3RhcnRQb3MgPSAwOwogICAgIENG
SW5kZXggY2hhcmFjdGVyc0xlZnQgPSBDRlN0cmluZ0dldExlbmd0aChjZnMuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApp
bmRleCBhNWNhOWI3NDQ2OTJmMjg3ZjIzZjM0ODE1MGIwOGY2NWUxZmY5NWZlLi5iZmMwODdiZTlm
MTkyY2JlMTQzZDdhNmQxOTY0MjRhM2RlMjU4ODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtNTIsNyArNTIsNyBAQCBi
b29sIFNlYXJjaFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgpCiBzdGF0aWMgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgU3RyaW5nIGtl
eSA9ICJjb20uYXBwbGUuV2ViS2l0LnNlYXJjaEZpZWxkOiIgKyBuYW1lOwotICAgIHJldHVybiBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKKyAg
ICByZXR1cm4ga2V5LmNyZWF0ZUNGU3RyaW5nKCk7CiB9CiAjZW5kaWYKIApAQCAtNjcsMTAgKzY3
LDggQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICBzaXplX3Qgc2l6ZSA9IHNlYXJjaEl0
ZW1zLnNpemUoKTsKICAgICBpZiAoc2l6ZSkgewogICAgICAgICBpdGVtcy5hZG9wdENGKENGQXJy
YXlDcmVhdGVNdXRhYmxlKDAsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gaXRlbShBZG9wdENGLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0
cmluZygpKTsKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgaXRl
bS5nZXQoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJj
aEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0KIAogICAgIENGUHJlZmVy
ZW5jZXNTZXRBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtD
RlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNlL1dl
YktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKaW5kZXggODM3
NDdmMjIzNTU2YTZhYzJhYTE2ODlkZmRmYWMxZjFlZjE3YzQ3Ny4uMzM3ZGFjYWIyZjcxMmM5ODZm
MGY1NzIyOTZhNzgwNTYyYzMxNGI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTYzLDE1ICs2Mywx
NCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCI7CiAK
LXN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoY29uc3Qg
U3RyaW5nJiBrZXkpCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRl
S2V5Rm9yUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBrZXlDRlN0cmluZyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdl
YiBJbnNwZWN0b3IgU2V0dGluZyAtICVAIiksIGtleUNGU3RyaW5nLmdldCgpKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBX
ZWIgSW5zcGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkp
OwogfQogCiBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0
cmluZyogc2V0dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2Vz
S2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSkpOworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkgPSBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhr
ZXkpOwogICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUoQWRvcHRDRiwgQ0ZQ
cmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5nZXQoKSwga0NGUHJlZmVyZW5j
ZXNDdXJyZW50QXBwbGljYXRpb24pKTsKIAogICAgIGlmICghdmFsdWUpCkBAIC04OCwxMiArODcs
NyBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmlu
Zyogc2V0dGluZykKIAogc3RhdGljIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCiB7Ci0gICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0
UmVmPiBvYmplY3RUb1N0b3JlOwotICAgIG9iamVjdFRvU3RvcmUuYWRvcHRDRihzZXR0aW5nLmNy
ZWF0ZUNGU3RyaW5nKCkpOwotICAgIEFTU0VSVChvYmplY3RUb1N0b3JlKTsKLQotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJl
ZmVyZW5jZXMoa2V5KSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKHByZWZlcmVuY2Vz
S2V5LmdldCgpLCBvYmplY3RUb1N0b3JlLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBs
aWNhdGlvbik7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGNyZWF0ZUtleUZvclByZWZl
cmVuY2VzKGtleSkuZ2V0KCksIHNldHRpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGUHJl
ZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwogfQogCiBib29sIFdlYkluc3BlY3RvckNsaWVu
dDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCmluZGV4IDRhMzViNmEyZDhhMzJjNWRkODM0
OTcyY2QyZmRmMmFkYzM5MWU2MWEuLjM2ODc1MzE1MTcyMThkYTI5ZTljZGRkYTQyMzJhM2IxMjgy
NTMzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQpAQCAtMzAs
MTIgKzMwLDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIE1vZHVsZTo6bG9hZCgpCiB7
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIG1fcGF0aC5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9w
dENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBi
dW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5
c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9wYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOwogICAgIGlmICghYnVuZGxlVVJMKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRs
ZShBZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwu
Z2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZC
dW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAg
aWYgKCFidW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggZGU3ZDU4
MzFmNjA4YzM4MzBlM2M5YmUxNGIzOTQ2NWViMmM3MWMzYi4uNjcxZjIwZDZkY2FiZTFmYzFiYTM5
NTU3ZDVlNjI4ZWU3ZWQ3ZWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0yNzksOCArMjc5LDcgQEAgc3RhdGlj
IHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBT
dHJpbmcmIHNhbmRib3hQcm8KICAgICBpZiAoc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZlBsdWdpblBhdGggPSBhZG9wdENGKHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAg
UmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZp
bGVTeXN0ZW1QYXRoKDAsIGNmUGx1Z2luUGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUs
IGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENG
VVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFwbHVnaW5V
UkwpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjkyLDggKzI5MSw3IEBAIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgU3RyaW5nJiBz
YW5kYm94UHJvCiAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRo
ID0gYWRvcHRDRihzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBzYW5kYm94UHJvZmlsZURpcmVjdG9yeSA9IGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZTYW5kYm94UHJvZmlsZURpcmVj
dG9yeVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBUUlVFKSk7CisgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBzYW5kYm94UHJvZmlsZURpcmVjdG9yeSA9IGFkb3B0Q0YoQ0ZVUkxDcmVh
dGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBUUlVFKSk7CiAKICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNhbmRib3hGaWxlTmFtZSA9IENGU3RyaW5nQ3JlYXRlV2l0
aEZvcm1hdCgwLCAwLCBDRlNUUigiJUAuc2IiKSwgYnVuZGxlSWRlbnRpZmllcik7CiAgICAgUmV0
YWluUHRyPENGVVJMUmVmPiBzYW5kYm94VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aFJlbGF0aXZlVG9CYXNlKDAsIHNhbmRib3hGaWxlTmFtZS5nZXQoKSwga0NGVVJM
UE9TSVhQYXRoU3R5bGUsIEZBTFNFLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeS5nZXQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05l
dHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCmluZGV4IDgxYjM4ZTBlYzhm
ZTNjNDE4ODk3OWVlZmQwNjIyN2IzNzBmZDRhM2UuLjNkYzM3N2M0NDUwZDg4ZmUyNWY3MDJiMGZh
NTQzYTM4ZTI4ZjZjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMu
bW0KQEAgLTM1MiwxMSArMzUyLDEwIEBAIHN0YXRpYyBib29sIGdldFBsdWdpbkluZm9Gcm9tQ2Fy
Ym9uUmVzb3VyY2VzKENGQnVuZGxlUmVmIGJ1bmRsZSwgUGx1Z2luTW9kdWxlSW5mCiAKIGJvb2wg
TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0aC5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5k
bGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQ
YXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRvIGluaXRpYWxpemUgdGhlIGJ1
bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShBZG9wdENGLCBDRkJ1bmRs
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYgKCFidW5kbGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTM5NSwxMSArMzk0LDkgQEAgYm9vbCBOZXRzY2Fw
ZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBs
dWdpbk1vZHVsZUkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2luTUlN
RVR5cGVzUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQogewotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlUGF0aChBZG9wdENGLCBwbHVnaW5QYXRoLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0YsIENG
VVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVBh
dGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIAotICAgIC8vIFRyeSB0byBpbml0
aWFsaXplIHRoZSBidW5kbGUuCi0gICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUoQWRv
cHRDRiwgQ0ZCdW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgp
KSk7CisgICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUgPSBhZG9wdENGKENGQnVuZGxl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOwogICAgIGlmICgh
YnVuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCmluZGV4IGNkZmYzNDQ2OWEy
MzkzZDM1YWRiYWJjNGNiMGEzOGJhMGY1NjIzMjQuLjdjMWYyNDBlY2M0OGI4YjRjMTkxM2UwNTRj
NThhYjNhNDhhMmI0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9X
ZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Nm
L1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcApAQCAtOTQsOSArOTQsOSBAQCBDRkRpY3Rpb25hcnlS
ZWYgV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVDRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbihX
ZWJQYWdlUHJveAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsKEFkb3B0Q0YsIG1fZW50cmllc1tpXS0+
dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dGl0bGUoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsVVJMKEFkb3B0Q0YsIG1fZW50
cmllc1tpXS0+b3JpZ2luYWxVUkwoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1cmwgPSBtX2VudHJpZXNbaV0tPnVybCgpLmNyZWF0ZUNGU3RyaW5n
KCk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGl0bGUgPSBtX2VudHJpZXNbaV0t
PnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBvcmlnaW5hbFVSTCA9IG1fZW50cmllc1tpXS0+b3JpZ2luYWxVUkwoKS5jcmVhdGVDRlN0cmlu
ZygpOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHVzZXMgdGhlIENvcmVJUEMgZGF0YSBlbmNv
ZGluZyBmb3JtYXQsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbmV2ZXIgd2UgY2hhbmdlIHRoZSBDb3Jl
SVBDIGVuY29kaW5nIHdlIG5lZWQgdG8gYnVtcCB0aGUgQ3VycmVudFNlc3Npb25TdGF0ZURhdGFW
ZXJzaW9uCiAgICAgICAgIC8vIGNvbnN0YW50IGluIFdlYlBhZ2VQcm94eUNGLmNwcC4gVGhlIENv
cmVJUEMgZGF0YSBmb3JtYXQgaXMgbWVhbnQgdG8gYmUgYW4gaW1wbGVtZW50YXRpb24gZGV0YWls
LCBhbmQgbm90IHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSB3cml0dGVuIHRvIGRpc2suCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAppbmRleCA3OWRk
OGNlZDAyZDdjZTBkNGYzYzI0MDQ4MThiODAxYmU0MGYxZjdhLi5mYWMwMmMxYjQ2OTBmMTIzNmU5
YWE3OGRhY2E0OTJiMWM0MjYzYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
Zi9XZWJQYWdlUHJveHlDRi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUGFzc1JlZlB0cjxXZWJEYXRh
PiBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZURhdGEoV2ViUGFnZVByb3h5U2Vzc2lvblN0YXRl
RmlsdGUKICAgICAgICAgaWYgKHByb3Zpc2lvbmFsVVJMLmlzRW1wdHkoKSkKICAgICAgICAgICAg
IHByb3Zpc2lvbmFsVVJMID0gbV9tYWluRnJhbWUtPnByb3Zpc2lvbmFsVVJMKCk7CiAgICAgICAg
IGlmICghcHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBwcm92aXNpb25h
bFVSTFN0cmluZy5hZG9wdENGKHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNGU3RyaW5nKCkpOworICAg
ICAgICAgICAgcHJvdmlzaW9uYWxVUkxTdHJpbmcgPSBwcm92aXNpb25hbFVSTC5jcmVhdGVDRlN0
cmluZygpOwogICAgICAgICAgICAga2V5c1tudW1WYWx1ZXNdID0gUHJvdmlzaW9uYWxVUkxLZXko
KTsKICAgICAgICAgICAgIHZhbHVlc1tudW1WYWx1ZXNdID0gcHJvdmlzaW9uYWxVUkxTdHJpbmcu
Z2V0KCk7CiAgICAgICAgICAgICArK251bVZhbHVlczsKQEAgLTE3OSw4ICsxNzksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhKFdlYkRhdGEqIHdlYkRh
dGEpCiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNvbnN0IFN0
cmluZyYgbmFtZSkKIHsKLSAgICBTdHJpbmcga2V5ID0gImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNo
RmllbGQ6IiArIG5hbWU7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRD
Riwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiBTdHJpbmcoImNvbS5hcHBsZS5X
ZWJLaXQuc2VhcmNoRmllbGQ6IiArIG5hbWUpLmNyZWF0ZUNGU3RyaW5nKCk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCkBAIC0xOTIsMTAgKzE5MSw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYKIAogICAgIGlmIChzaXplX3Qgc2l6ZSA9IHNlYXJjaEl0ZW1zLnNp
emUoKSkgewogICAgICAgICBpdGVtcy5hZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNp
emUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaXRl
bShBZG9wdENGLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgaXRlbS5nZXQoKSk7Ci0gICAgICAgIH0K
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBD
RkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogICAgIH0KIAogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShhdXRv
c2F2ZUtleShuYW1lKS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFw
cGxpY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3Vy
Y2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDY4
MTBmMGFiZGI5ZGJlYmE5OWZhM2UxZTliMGYwNmNlNDVhZTA0OTQuLjM5NTY0OWM1MGJmNGQ2ZGYw
NGJjNzU0MGI1NGJhZjU5ZGIyYzM2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcApAQCAtMTE4LDggKzExOCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXI6
OmNsZWFyQ2FjaGVGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbkRhdGEsCiAjaWYg
VVNFKENGVVJMQ0FDSEUpCiAgICAgaWYgKHJlc291cmNlQ2FjaGVzVG9DbGVhciAhPSBJbk1lbW9y
eVJlc291cmNlQ2FjaGVzT25seSkgeyAKICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5
UmVmPiBob3N0QXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3Qo
QWRvcHRDRiwgb3JpZ2luLT5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENGQXJy
YXlBcHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCksIGhvc3QuZ2V0KCkpOworICAgICAgICBDRkFy
cmF5QXBwZW5kVmFsdWUoaG9zdEFycmF5LmdldCgpLCBvcmlnaW4tPmhvc3QoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKIAogICAgICAgICBjbGVhckNGVVJMQ2FjaGVGb3JIb3N0TmFtZXMoaG9z
dEFycmF5LmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMDY3MTM4MGQ4NzdhZDY1NTM2Njc5ZDAzNTA5MmRmOWE0OGI1ZjVk
MS4uYjMzNzhmYzY1ZDE3MTA2MDBjZGJhZWJiMDY1ZWUzZTA3YjBmODZlMSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTEwLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEgUmV0YWluUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbGVy
cyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSk6CisKIDIwMTItMTAtMjUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMzI1MTQuCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0KaW5kZXggNDZjMjczZjFmOGNhNDBhZWUy
N2M5NDc2YzgxZmU3Mzk0YzMzYmIyNC4uYjBjYjRlMDMxY2I3NDQ2MjhjMGJjMzRkNTdkMTc2YjY4
N2FmMTM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbQpAQCAtODUsOCAr
ODUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6cGxhdGZvcm1EaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZQogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ1JBU0hJTkcgVEVTVDogIik7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3RQYXRoKTsKLSAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBjZlN0cmluZyhBZG9wdENGLCBidWlsZGVyLnRvU3RyaW5nKCkuY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgICAgIFdLU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5m
b3JtYXRpb24oY2ZTdHJpbmcuZ2V0KCkpOworICAgICAgICBXS1NldENyYXNoUmVwb3J0QXBwbGlj
YXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGJ1aWxkZXIudG9TdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171076</attachid>
            <date>2012-10-26 22:37:53 -0700</date>
            <delta_ts>2012-10-27 12:14:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121026223622.patch</filename>
            <type>text/plain</type>
            <size>67306</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU4YjQ5NjdiN2U2MmU2Yzk2MTViMGVm
MjhlYmNjY2Q1MmViMTgwNGMuLjJjYzM4YWQyMjM4YmZmM2RjMDM0MjkzYzQ3N2NmOWY1ZmQxNDZm
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDEyLTEwLTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyNjg5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY0YWVjNGU2ZWVmOGM0MjUwOTEyMmQ3ZGIwNjk0M2Q3YzYyMDkyMjguLmVmOWE5M2Mw
NjIzZTI4NGVmNDQ2MTE4MjczZTBlMjcyZjE4YjU2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
MSBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFs
bGJhY2tPYmplY3QpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlVGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0dNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFn
ZVNvdXJjZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5
cGVGcm9tSFRNTENsaXBib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21D
b2NvYVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjo6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0NGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjcmVhdGVDRlN0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMv
U3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNT
dHJpbmcgKik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZW5jb2RlKToKKwogMjAxMi0xMC0yNiAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgLmxvb3BTdGFydCBhbmQgLmxvb3BFbmQgYXR0cmlidXRlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nm
L0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJlY2M1
Li42ZTBhZWQ1ZmZhNTZlNzFmMmIwNTYyOTNmZmNmYzBlZTA1OWE1ZjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0
dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAo
Y3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToKKyAg
ICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcuaCwg
cmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxZjg5YmZiMTc0ZTlmMTkyYWRi
MTllZGIwYjZhOGIwNmE2YzcyMTA5Li42MzU2ZTRiYzg0MTYwMmRhNjMzNjAyZDM4ZTBiMWZjNjJl
OTVjOWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMTAtMjUgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNG
U3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRl
Q0ZTdHJpbmcuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpNb2R1bGU6OmxvYWQpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94KToK
KyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVn
aW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBs
dWdpbk1JTUVUeXBlc1ByZWZlcmVuY2VzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViQmFj
a0ZvcndhcmRMaXN0Q0YuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6
OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Y2YvV2ViUGFnZVByb3h5Q0YuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNl
c3Npb25TdGF0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjphdXRvc2F2ZUtleSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Y2xlYXJDYWNoZUZvck9yaWdp
bik6CisKIDIwMTItMTAtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIENyYXNoIGluIFdlYlByb2NlcyBhdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVs
ZXI6OmNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZCArIDc4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuaAppbmRleCA2YWM2MGU2YWQ1NzI0MzM5NzhmNWZiNGI0ODgwYTlmYjQwMTA1YzY2Li43
ZGEwZGQ0ZjNhMDE3MTliNDZjZWE5YjE4OGRiZGZhNWU2OTNjY2RmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmgKQEAgLTEzNywxMCArMTM3LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGlj
IHZvaWQgcmVtb3ZlKFN0cmluZ0ltcGwqKTsKICAgICAKLSNpZiBVU0UoQ0YpCi0gICAgQXRvbWlj
U3RyaW5nKENGU3RyaW5nUmVmIHMpIDogIG1fc3RyaW5nKGFkZChTdHJpbmcocykuaW1wbCgpKSkg
eyB9Ci0gICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZy5jcmVhdGVDRlN0cmluZygpOyB9Ci0jZW5kaWYgICAgCiAjaWZkZWYgX19PQkpDX18KICAg
ICBBdG9taWNTdHJpbmcoTlNTdHJpbmcqIHMpIDogbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBs
KCkpKSB7IH0KICAgICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBtX3N0cmlu
ZzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAwMDY3YmViZWVkOTBmZjc0MzczMmNk
YWFmNTYwYWFmNTkyMDk4NGVjLi42NzY3NzkwNmRiMDI1MDNlMjE3OTQxNzQzOTYyNDExZmIyMzI2
NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNjcsNiArNjcsNyBAQCBzdHJ1Y3Qg
Q2hhckJ1ZmZlckZyb21MaXRlcmFsRGF0YVRyYW5zbGF0b3I7CiBjbGFzcyBNZW1vcnlPYmplY3RJ
bmZvOwogc3RydWN0IFN1YnN0cmluZ1RyYW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFu
c2xhdG9yOwordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKIAogZW51bSBUZXh0
Q2FzZVNlbnNpdGl2aXR5IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUg
fTsKIApAQCAtNzEzLDcgKzcxNCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCog
aGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFVTRShDRikKLSAgICBDRlN0cmlu
Z1JlZiBjcmVhdGVDRlN0cmluZygpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRl
Q0ZTdHJpbmcoKTsKICNlbmRpZgogI2lmZGVmIF9fT0JKQ19fCiAgICAgb3BlcmF0b3IgTlNTdHJp
bmcqKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCA1MGMwNDhkNjNmM2RjZjFjNTM4NjU1
NjZlNDcyNGYxYTgyNDhmZTA3Li5kNjdhZDMyOTkyYzI0MGYxZTU1MmY2ZWMzZWZjMDgwMDhiM2Jh
ODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVk
ZSA8b2JqYy9vYmpjLmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLXR5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmluZ1JlZjsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQp
CiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFTdHJpbmc7CkBAIC0zODYsNyArMzgyLDcgQEAg
cHVibGljOgogCiAjaWYgVVNFKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7Ci0gICAgQ0ZT
dHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNyZWF0ZUNGU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMmNmMGRiNTYx
OGUzODIwY2RmNDQ2NDU1ODM0MWY2OTRmNTNkMWZhMy4uYmUyNGZkYjNmZGIxMzdjODBiNmYwYTRm
Yjg4NzQxYWIzNDFhNGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19ydW50aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5tbQpAQCAtMjQ4LDggKzI0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNhbGxPYmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBP
YmpjQ2xhc3MqIG9iamNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5j
ZS0+Z2V0Q2xhc3MoKSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhv
ZChhZG9wdFB0cihuZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52
b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKSk7CiAgICAg
ICAgIGNvbnN0IFN0cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJh
Y2tPYmplY3RJbXAqPihleGVjLT5jYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwotICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgbmFtZUlkZW50aWZpZXIuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShu
YW1lLmdldCgpKTsKKyAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5h
bWVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBv
YmpjSW5zdGFuY2UtPmludm9rZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkp
OwogICAgIH0KICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggOTdmZTk1YjNhNDRkNDE4NWUyMTI2ZjZiYjZlZGJlY2Y0MzlmZWVlZS4uNzVk
Zjk5YWYzNmJiNjAwMjY3YjlhNzJkNWM5MTU4OTBjNGRjNWNkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05MTYsOCArOTE2LDcgQEAgc3RhdGljIEtVUkwg
Y3JlYXRlRmlsZVVSTEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHBh
dGgpCiAgICAgLy8gYXBwIGNhY2hlIG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRo
IGVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBV
U0UoQ0YpICYmIFBMQVRGT1JNKFdJTikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGF0
aChBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gY2ZVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQYXRo
LmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gY2ZVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwg
cGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxz
ZSkpOwogICAgIEtVUkwgdXJsKGNmVVJMLmdldCgpKTsKICNlbHNlCiAgICAgS1VSTCB1cmw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNo
aXZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwCmluZGV4IDM1NzZkNjRkZmM0ODJhNDFkNTRlMTNlZmQxOTc4MTYyYjc4MDdhN2YuLmQ3
N2Y4NzRiMDlkYzIwMDliYmVkMDM1MjQxODM1YmZlODZmODhlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05
MSw4ICs5MSw3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5
LCBjZkRhdGEuZ2V0KCkpOwogICAgIAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVs
bAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwoQWRvcHRDRiwgcmVzb3VyY2UtPnVy
bCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmIChjZlVSTCkKKyAgICBpZiAo
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5j
cmVhdGVDRlN0cmluZygpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxp
c3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVVSTEtleSwgY2ZVUkwuZ2V0KCkpOwog
ICAgIGVsc2UgewogICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTlVM
TCByZXNvdXJjZSBVUkwgaXMgaW52YWxpZCAtIHJldHVybmluZyBudWxsIHByb3BlcnR5IGxpc3Qi
KTsKQEAgLTEwMSwyMyArMTAwLDE3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2Fj
eVdlYkFyY2hpdmU6OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAKICAgICAv
LyBGcmFtZU5hbWUgc2hvdWxkIGJlIGxlZnQgb3V0IGlmIGVtcHR5IGZvciBzdWJyZXNvdXJjZXMs
IGJ1dCBhbHdheXMgaW5jbHVkZWQgZm9yIG1haW4gcmVzb3VyY2VzCiAgICAgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUocmVzb3VyY2UtPmZyYW1lTmFtZSgpKTsKLSAgICBpZiAoIWZyYW1lTmFtZS5p
c0VtcHR5KCkgfHwgaXNNYWluUmVzb3VyY2UpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjZkZyYW1lTmFtZShBZG9wdENGLCBmcmFtZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2Vi
QXJjaGl2ZVJlc291cmNlRnJhbWVOYW1lS2V5LCBjZkZyYW1lTmFtZS5nZXQoKSk7Ci0gICAgfQor
ICAgIGlmICghZnJhbWVOYW1lLmlzRW1wdHkoKSB8fCBpc01haW5SZXNvdXJjZSkKKyAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZl
UmVzb3VyY2VGcmFtZU5hbWVLZXksIGZyYW1lTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsK
ICAgICAKICAgICAvLyBTZXQgTUlNRVR5cGUsIFRleHRFbmNvZGluZ05hbWUsIGFuZCBSZXNvdXJj
ZVJlc3BvbnNlIG9ubHkgaWYgdGhleSBhY3R1YWxseSBleGlzdAogICAgIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUocmVzb3VyY2UtPm1pbWVUeXBlKCkpOwotICAgIGlmICghbWltZVR5cGUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZNSU1FVHlwZShBZG9wdENG
LCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtl
eSwgY2ZNSU1FVHlwZS5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgp
KQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2Fj
eVdlYkFyY2hpdmVSZXNvdXJjZU1JTUVUeXBlS2V5LCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKICAgICAKICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyhyZXNvdXJjZS0+
dGV4dEVuY29kaW5nKCkpOwotICAgIGlmICghdGV4dEVuY29kaW5nLmlzRW1wdHkoKSkgewotICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVGV4dEVuY29kaW5nKEFkb3B0Q0YsIHRleHRF
bmNvZGluZy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdO
YW1lS2V5LCBjZlRleHRFbmNvZGluZy5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghdGV4dEVuY29k
aW5nLmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0
LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5LCB0ZXh0
RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICAvLyBEb24ndCBpbmNsdWRl
IHRoZSByZXNvdXJjZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlz
TWFpblJlc291cmNlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwCmluZGV4IGFiZjFiY2E1ZTg1NDEwYmE4N2Q1Y2FiODI1MDBkOTY5ZjEwOTI2YTcuLjY5
MDg0M2IxMzc3ODM0ODI4MGVjN2VhNWI0MzczODhlOWRkYzY0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC01NCwxMyArNTQsMTIgQEAgc3Rh
dGljIFN0cmluZyBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogI2lm
IFVTRShDRikKICAgICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMs
IGZvcm1hdCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb3JtYXRDRlN0cmluZyhBZG9w
dENGLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAKICNpZiBDT01QSUxFUihDTEFORykKICNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdmb3JtYXQtbm9ubGl0ZXJhbCIKICNlbmRpZgotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gcmVzdWx0KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50
cygwLCAwLCBmb3JtYXRDRlN0cmluZy5nZXQoKSwgYXJndW1lbnRzKSk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFu
ZEFyZ3VtZW50cygwLCAwLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXJndW1lbnRz
KSk7CiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAj
ZW5kaWYKQEAgLTI2MCw3ICsyNTksNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1Vw
SW5EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiAgICAgcmV0dXJuIFdF
Ql9VSV9TVFJJTkcoIkxvb2sgVXAgaW4gRGljdGlvbmFyeSIsICJMb29rIFVwIGluIERpY3Rpb25h
cnkgY29udGV4dCBtZW51IGl0ZW0iKTsKICNlbHNlCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gc2VsZWN0ZWRDRlN0cmluZyhBZG9wdENGLCB0cnVuY2F0ZWRTdHJpbmdG
b3JMb29rdXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBzZWxlY3RlZENGU3RyaW5nID0gdHJ1bmNhdGVkU3RyaW5n
Rm9yTG9va3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAg
cmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnCVA
4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNl
bGVjdGVkQ0ZTdHJpbmcuZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygi
TG9vayBVcCDigJw8c2VsZWN0aW9uPuKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdp
dGggc2VsZWN0ZWQgd29yZCIpLnJlcGxhY2UoIjxzZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5n
Rm9yTG9va3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJpbmcpKTsKQEAgLTczOCw4ICs3MzcsNyBAQCBT
dHJpbmcga2V5Z2VuTWVudUl0ZW0yMDQ4KCkKIAogU3RyaW5nIGtleWdlbktleWNoYWluSXRlbU5h
bWUoY29uc3QgU3RyaW5nJiBob3N0KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9z
dENGU3RyaW5nKEFkb3B0Q0YsIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9m
IGtleWNoYWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdENGU3RyaW5n
LmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkco
IktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZ
R0VOIHRhZyIpLCBob3N0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiAjZW5kaWYKQEAg
LTc2Miw4ICs3NjAsNyBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBJbnRTaXplJiBzaXplKQogewogI2lmIFVTRShDRikKICNpZiAhUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0g
MTA2MAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENG
LCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+
IGxvY2FsZShBZG9wdENGLCBDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgIFJldGFpblB0cjxD
RkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOwogICAg
IFJldGFpblB0cjxDRk51bWJlckZvcm1hdHRlclJlZj4gZm9ybWF0dGVyKEFkb3B0Q0YsIENGTnVt
YmVyRm9ybWF0dGVyQ3JlYXRlKDAsIGxvY2FsZS5nZXQoKSwga0NGTnVtYmVyRm9ybWF0dGVyRGVj
aW1hbFN0eWxlKSk7CiAKICAgICBpbnQgd2lkdGhJbnQgPSBzaXplLndpZHRoKCk7CkBAIC03NzQs
NyArNzcxLDcgQEAgU3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGhlaWdodChBZG9w
dENGLCBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaGVpZ2h0SW50KSk7CiAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBoZWlnaHRTdHJpbmcoQWRvcHRDRiwgQ0ZOdW1iZXJG
b3JtYXR0ZXJDcmVhdGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1hdHRlci5nZXQoKSwgaGVpZ2h0
LmdldCgpKSk7CiAKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJ
TkcoIiVAICVAw5clQCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1h
Z2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmlu
Zy5nZXQoKSwgd2lkdGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CisgICAgcmV0
dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxz
IiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0
aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdp
ZHRoU3RyaW5nLmdldCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2Vsc2UKICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRl
Q0ZTdHJpbmcoKSk7CiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RS
SU5HKCIlQCAlZMOXJWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGlt
YWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJp
bmcuZ2V0KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAppbmRleCAxYjhk
MDA2ZjI1MTlhYThhOGYzYThjNDUwZWZkMjczNDE4YWY0Mjg0Li43MzBlZGMxNWZlOTFiYzkyNzcw
ODVjY2MyODg3YjA3OTA2NzgwYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKQEAgLTQ2LDggKzQ2LDcgQEAgc3RhdGlj
IGJvb2wgbWFpbkJ1bmRsZUlzRXF1YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJT
dHJpbmcpCiAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBhcmUo
QWRvcHRDRiwgYnVuZGxlSWRlbnRpZmllclN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBy
ZXR1cm4gQ0ZTdHJpbmdDb21wYXJlKGJ1bmRsZUlkZW50aWZpZXIsIGJ1bmRsZUlkZW50aWZpZXJU
b0NvbXBhcmUuZ2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOworICAgIHJldHVybiBDRlN0
cmluZ0NvbXBhcmUoYnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmllclN0cmluZy5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpOwogICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDhlZjUw
ZWViMGNiMDg0ZDFiOWIyM2I4N2MzYmZhODk4MzkyYjhhMmQuLmMxODcwNjYzMzU2NTA1NTc5YWZk
N2I2MWFjMTczOTA0MDY0NGY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NmL0ZpbGVTeXN0ZW1DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmls
ZVN5c3RlbUNGLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENT
dHJpbmcgZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nKEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZT
dHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKTsKIAogICAgIGlmICghY2ZTdHJpbmcpCiAgICAgICAgIHJldHVybiBDU3Ry
aW5nKCk7CkBAIC02Myw4ICs2Myw3IEBAIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNv
bnN0IFN0cmluZyYgcGF0aCkKICNlbHNlCiAgICAgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRo
U3R5bGU7CiAjZW5kaWYKLSAgICByZXR1cm4gUmV0YWluUHRyPENGVVJMUmVmPihBZG9wdENGLCBD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+KEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCksIHBhdGhTdHlsZSwg
RkFMU0UpKTsKKyAgICByZXR1cm4gUmV0YWluUHRyPENGVVJMUmVmPihBZG9wdENGLCBDRlVSTENy
ZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBh
dGhTdHlsZSwgRkFMU0UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmlt
YXRpb25XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCmluZGV4IDk3ZmIwYjYwOTQ2OGY0ZWQzNWIxZTE5Mzhk
OThiYmQ4OTQyMjI1ODYuLjg1NmE0ZmNhZGVkMmYwYjYyNjBmNWU5MmJlMTE0NWRjMTJhNWM4NDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE1MSw4ICsxNTEsNyBA
QCBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUg
dHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYQogICAgIGVsc2UKICAgICAgICAgbV9hbmltYXRpb24u
YWRvcHRDRihDQUNGQW5pbWF0aW9uQ3JlYXRlKGtDQUNGS2V5ZnJhbWVBbmltYXRpb24pKTsKICAg
ICAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwga2V5UGF0aC5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBDQUNGQW5pbWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQo
KSwgcy5nZXQoKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRpb24uZ2V0
KCksIGtleVBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFBsYXRmb3JtQ0FBbmlt
YXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcAppbmRleCA3MDE2OGIyMTA0ZGIzNjlkYTA3NTdh
MTE0NDYyMjExMWJjMzA2MWYwLi5kZDYxNjMzN2U5MzY2ZWI3OWM5NmM2NzJiNzM5M2I2OTI0MzZm
YzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMTc2LDEwICsxNzYsOCBAQCB2
b2lkIFBsYXRmb3JtQ0FMYXllcjo6YW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdp
blRpbWUpCiBzdGF0aWMgdm9pZCByZXN1Ym1pdEFsbEFuaW1hdGlvbnMoUGxhdGZvcm1DQUxheWVy
KiBsYXllcikKIHsKICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGxheWVyLT5hbmltYXRpb25zKCkuZW5kKCk7Ci0g
ICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGl0LT5r
ZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihsYXll
ci0+cGxhdGZvcm1MYXllcigpLCBzLmdldCgpLCBpdC0+dmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9u
KCkpOwotICAgIH0KKyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKGxheWVy
LT5wbGF0Zm9ybUxheWVyKCksIGl0LT5rZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgaXQtPnZh
bHVlLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmVu
c3VyZUFuaW1hdGlvbnNTdWJtaXR0ZWQoKQpAQCAtMjk3LDggKzI5NSw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3Jt
Q0FBbmltYXRpb24qCiAgICAgLy8gQWRkIGl0IHRvIHRoZSBhbmltYXRpb24gbGlzdAogICAgIG1f
YW5pbWF0aW9ucy5hZGQoa2V5LCBhbmltYXRpb24pOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBzKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJBZGRB
bmltYXRpb24obV9sYXllci5nZXQoKSwgcy5nZXQoKSwgYW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1h
dGlvbigpKTsKKyAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obV9sYXllci5nZXQoKSwga2V5LmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGFuaW1hdGlvbi0+cGxhdGZvcm1BbmltYXRpb24oKSk7CiAg
ICAgc2V0TmVlZHNDb21taXQoKTsKIAogICAgIC8vIFRlbGwgdGhlIGhvc3QgYWJvdXQgaXQgc28g
d2UgY2FuIGZpcmUgdGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVudApAQCAtMzEyLDggKzMwOSw3IEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXkpCiAgICAgLy8gUmVtb3ZlIGl0IGZyb20gdGhlIGFuaW1hdGlvbiBsaXN0CiAgICAgbV9h
bmltYXRpb25zLnJlbW92ZShrZXkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFk
b3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJSZW1vdmVBbmltYXRp
b24obV9sYXllci5nZXQoKSwgcy5nZXQoKSk7CisgICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9u
KG1fbGF5ZXIuZ2V0KCksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIC8vIFdl
IGRvbid0ICJyZW1vdmUiIGEgbGF5ZXIgZnJvbSBBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHdo
ZW4gaXQgbG9zZXMgYW4gYW5pbWF0aW9uLgogICAgIC8vIFRoZXJlIG1heSBiZSBvdGhlciBhY3Rp
dmUgYW5pbWF0aW9ucyBvbiB0aGUgbGF5ZXIgYW5kIGlmIGFuIGFuaW1hdGlvbgpAQCAtNTg2LDgg
KzU4Miw3IEBAIFN0cmluZyBQbGF0Zm9ybUNBTGF5ZXI6Om5hbWUoKSBjb25zdAogCiB2b2lkIFBs
YXRmb3JtQ0FMYXllcjo6c2V0TmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCB2YWx1ZS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBDQUNGTGF5ZXJTZXROYW1lKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZMYXll
clNldE5hbWUobV9sYXllci5nZXQoKSwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAg
ICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5J
bnRlcm5hbC5jcHAKaW5kZXggYzQzMGNmMjg0NjE0NjY0N2JmNjFmYzdhNzE2MjlmNTJmMDIxZmE2
YS4uMTUyNzViM2FlNWZlNWMxYzZhNGY4Zjg0ZmQ2NjkwZDIxZmNmNThkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bkludGVybmFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC00NTksNyArNDU5LDcgQEAgdm9p
ZCBQbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbDo6dXBkYXRlVGlsZXMoKQogCiAjaWZuZGVmIE5E
RUJVRwogICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSAiVGlsZSAoIiArIFN0cmluZzo6bnVtYmVy
KGkpICsgIiwiICsgU3RyaW5nOjpudW1iZXIoaikgKyAiKSI7Ci0gICAgICAgICAgICBDQUNGTGF5
ZXJTZXROYW1lKHRpbGUsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgbmFtZS5jcmVh
dGVDRlN0cmluZygpKS5nZXQoKSk7CisgICAgICAgICAgICBDQUNGTGF5ZXJTZXROYW1lKHRpbGUs
IG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVm
ZmVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAKaW5kZXggMjFlOWRiNGMyOGQ5YTI1NTEzNTIwYWNlNzA4NDAzYWM1ZTc3YWI5My4u
ZGQzNzgxNTk3Zjg1ZWI2MTBkY2M0NzFlYzgzMTUzZTBhYmQyY2ViMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAg
LTM3Nyw4ICszNzcsNyBAQCBzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVmIGpwZWdVVEkoKQogc3Rh
dGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gbWltZVR5cGVDRlN0cmluZyhBZG9wdENGLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBVVFR5cGVDcmVhdGVQ
cmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlQ0ZT
dHJpbmcuZ2V0KCksIDApKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJy
ZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIDApKTsKICNlbHNlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsg
Ly8gSXQgaXMgdW5jbGVhciBpZiBDRlNUUiBpcyB0aHJlYWRzYWZlLgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQpp
bmRleCBiZDUwYTMxNzVmM2I0MjVhODgyNmNkMmE1NmE2MmUyMTkzNjk2MzM3Li45NTNiY2I5ZDI4
YWQwZWI3NWFiMzg4MTNjMzQzOTQ1NWYxMjYyYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KQEAgLTMzLDE2
ICszMywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZShjb25zdCBTdHJpbmcmIHV0aSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHV0aXJlZihBZG9wdENGLCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBtaW1lKEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xh
c3ModXRpcmVmLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgcmV0dXJuIG1pbWUu
Z2V0KCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFz
cyh1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpLmdldCgp
OwogfQogCiBTdHJpbmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0
IFN0cmluZyYgdXRpKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdHlwZShBZG9wdENG
LCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRl
bnNpb24oQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh0eXBlLmdldCgp
LCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbi5n
ZXQoKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNz
KHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9u
KSkuZ2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3Jl
VGV4dC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbQppbmRleCA0Y2I4NzZjMzY1ZWM5ZGQ3MTYwYTFkMmZkZTA5
ZTdmMzJmMDBiYWM5Li41N2Y3MGZmZjI4ZTc0ZjZmZTE1Nzc4NzM1Y2IwMzIwNDdhYTMxNjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRl
eHRDb250cm9sbGVyQ29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0yODIsNyArMjgy
LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNG
b3JDaGFyYWN0ZXJzKGNvbnN0IFVDaGFyKiBjcCwKICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Y29tcGxleFRleHRSdW5zLmFwcGVuZChDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKG1fZm9udC5wcmlt
YXJ5Rm9udCgpLCBjcCwgc3RyaW5nTG9jYXRpb24gKyBydW5SYW5nZS5sb2NhdGlvbiwgcnVuUmFu
Z2UubGVuZ3RoLCBtX3J1bi5sdHIoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcnVuRm9udERh
dGEgPSBmb250Q2FjaGUoKS0+Z2V0Q2FjaGVkRm9udERhdGEobV9mb250LmZvbnREZXNjcmlwdGlv
bigpLCBmb250TmFtZS5nZXQoKSwgZmFsc2UsIEZvbnRDYWNoZTo6RG9Ob3RSZXRhaW4pLmdldCgp
OworICAgICAgICAgICAgICAgICAgICBydW5Gb250RGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNo
ZWRGb250RGF0YShtX2ZvbnQuZm9udERlc2NyaXB0aW9uKCksIFN0cmluZyhmb250TmFtZS5nZXQo
KSksIGZhbHNlLCBGb250Q2FjaGU6OkRvTm90UmV0YWluKS5nZXQoKTsKICNpZiAhUExBVEZPUk0o
V1gpCiAgICAgICAgICAgICAgICAgICAgIC8vIENvcmUgVGV4dCBtYXkgaGF2ZSB1c2VkIGEgZm9u
dCB0aGF0IGlzIG5vdCBrbm93biB0byBOU0ZvbnRNYW5hZ2VyLiBJbiB0aGF0IGNhc2UsIGZhbGwg
YmFjayBvbgogICAgICAgICAgICAgICAgICAgICAvLyB1c2luZyB0aGUgZm9udCBhcyByZXR1cm5l
ZCwgZXZlbiB0aG91Z2ggaXQgbWF5IG5vdCBoYXZlIHRoZSBiZXN0IE5TRm9udFJlbmRlcmluZ01v
ZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBi
ZDg4MDIwNDQxYjBlOWFlMDBiYWRhZjM2YjJmNGY1YTZhNmJlYWU3Li5mZDRhYjk5YjE3NDc1ZDQx
NGIyMWFhM2VjZDU3ZTYxODBhMjhmY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9DbGlwYm9hcmRNYWMubW0KQEAgLTk5LDExICs5OSwxMCBAQCBzdGF0aWMgU3RyaW5nIGNvY29h
VHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKICAgICAvLyBU
cnkgVVRJIG5vdwogICAgIFN0cmluZyBtaW1lVHlwZSA9IHFUeXBlOwotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdXRpVHlwZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlm
aWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCks
IE5VTEwpKTsKLSAgICBpZiAodXRpVHlwZSkgewotICAgICAgICBDRlN0cmluZ1JlZiBwYlR5cGUg
PSBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0Ns
YXNzTlNQYm9hcmRUeXBlKTsKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBl
ID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0Ns
YXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwpKSkgewor
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29w
eVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJk
VHlwZSkpOwogICAgICAgICBpZiAocGJUeXBlKQotICAgICAgICAgICAgcmV0dXJuIHBiVHlwZTsK
KyAgICAgICAgICAgIHJldHVybiBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gTm8gbWFw
cGluZywganVzdCBwYXNzIHRoZSB3aG9sZSBzdHJpbmcgdGhvdWdoCkBAIC0xMTIsMTEgKzExMSw4
IEBAIHN0YXRpYyBTdHJpbmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKIAogc3RhdGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlQ0YgPSBhZG9w
dENGKHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
dGlUeXBlKEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VU
VGFnQ2xhc3NOU1Bib2FyZFR5cGUsIHR5cGVDRi5nZXQoKSwgMCkpOwotICAgIGlmICh1dGlUeXBl
KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01J
TUVUeXBlKSk7Ci0gICAgICAgIGlmIChtaW1lVHlwZSkKKyAgICBpZiAoUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1dGlUeXBlID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVy
Rm9yVGFnKGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDApKSkgeworICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9
IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBr
VVRUYWdDbGFzc01JTUVUeXBlKSkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKG1pbWVUeXBl
LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcAppbmRleCAwYTFhNGQ4Yzc1
MTRkYTkxMzczOWJlNWUzNDQ2ZDQ5N2Q5NWE0NzhiLi5lNThkOWE5NDk5NjkyN2I5YmI1YjliMzQ2
MTQ5NzhmNWFiZjRmM2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U1NMS2V5R2VuZXJhdG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U1NMS2V5R2VuZXJhdG9yTWFjLmNwcApAQCAtNjAsMTEgKzYwLDcgQEAgU3RyaW5nIHNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0
cmluZyYgY2gKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gY2hhbGxlbmdlU3RyaW5nQ0YoQWRvcHRDRiwgY2hhbGxlbmdlU3RyaW5n
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5RGVzY3Jp
cHRpb24oQWRvcHRDRiwga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCB3
a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJp
bmdDRi5nZXQoKSwga2V5RGVzY3JpcHRpb24uZ2V0KCkpKTsKLQotICAgIHJldHVybiByZXN1bHQu
Z2V0KCk7CisgICAgcmV0dXJuIGFkb3B0Q0Yod2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtl
eWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkp
LmdldCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAppbmRleCA4N2EzZmFiOGE3NDM3YWUxMGFmNDM5
YTRlNGUwMmNkMmUxYTMwZGViLi43YjFkNGZhNDc4N2YxZDFlMGQ5ZTNhNGRlODFmM2ViNTQ2ZDBj
ZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHAKQEAgLTExOSwxMyArMTE5LDcgQEAgQ0ZVUkxDcmVkZW50aWFs
UmVmIGNyZWF0ZUNGKGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogICAgICAgICBy
ZXR1cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlV2l0aElkZW50aXR5QW5kQ2VydGlmaWNhdGVBcnJh
eShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb3JlQ3JlZGVudGlhbC5pZGVudGl0eSgpLCBjb3JlQ3Jl
ZGVudGlhbC5jZXJ0aWZpY2F0ZXMoKSwgcGVyc2lzdGVuY2UpOwogI2VuZGlmCiAKLSAgICBDRlN0
cmluZ1JlZiB1c2VyID0gY29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0g
ICAgQ0ZTdHJpbmdSZWYgcGFzc3dvcmQgPSBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0
ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIHJlc3VsdCA9IENGVVJMQ3JlZGVu
dGlhbENyZWF0ZSgwLCB1c2VyLCBwYXNzd29yZCwgMCwgcGVyc2lzdGVuY2UpOwotICAgIENGUmVs
ZWFzZSh1c2VyKTsKLSAgICBDRlJlbGVhc2UocGFzc3dvcmQpOwotCi0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVz
ZXIoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKIH0KIAogQ0ZVUkxQcm90ZWN0
aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCkBA
IC0xOTIsMTMgKzE4Niw3IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0
IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICB9CiAKLSAgICBDRlN0cmluZ1JlZiBob3N0ID0gY29yZVNwYWNlLmhvc3QoKS5jcmVh
dGVDRlN0cmluZygpOwotICAgIENGU3RyaW5nUmVmIHJlYWxtID0gY29yZVNwYWNlLnJlYWxtKCku
Y3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiByZXN1bHQgPSBD
RlVSTFByb3RlY3Rpb25TcGFjZUNyZWF0ZSgwLCBob3N0LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2
ZXJUeXBlLCByZWFsbSwgc2NoZW1lKTsKLSAgICBDRlJlbGVhc2UoaG9zdCk7Ci0gICAgQ0ZSZWxl
YXNlKHJlYWxtKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTFBy
b3RlY3Rpb25TcGFjZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGNvcmVTcGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHNjaGVtZSk7CiB9CiAKIENyZWRlbnRpYWwgY29yZShDRlVS
TENyZWRlbnRpYWxSZWYgY2ZDcmVkZW50aWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1ZDZkNzM5MjZjNDRl
ZTQ4ODAxODJmZmZlODk4MWFjZjM4YTc2YjBhLi41MDE3OTcxZGUxNGE0NTRhODRmOWEzODhiYjQ3
ZjY0ODQ4OTFkYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Nvb2tpZUphckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgc2V0Q29v
a2llcyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICAvLyBjb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRvZXNuJ3QgcGFy
c2UgY29va2llcyB3aXRob3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gdmFs
dWUuY29udGFpbnMoJz0nKSA/IHZhbHVlIDogdmFsdWUgKyAiPSI7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGKEFkb3B0Q0YsIGNvb2tpZVN0cmluZy5jcmVhdGVD
RlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGID0g
Y29va2llU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gaGVhZGVyRmllbGRzQ0YoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsCiAgICAgICAgIChjb25zdCB2b2lkKiopJnNfc2V0Q29va2llS2V5Q0YsIChj
b25zdCB2b2lkKiopJmNvb2tpZVN0cmluZ0NGLCAxLAogICAgICAgICAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDNm
OTAxYTU0MWRlMDBlZWJlYzI0MzIyZDA0Mzk2ZWU0YTIyMDVmYjYuLmNlMTQ1MTkwOWFlZDdlMmI0
ZGVmOWNlMGQ5YmI0MjkzNDE4ZGFjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCkBAIC05MCwxMiArOTAsMTIgQEAgdm9pZCBETlNSZXNv
bHZlUXVldWU6OnBsYXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhv
c3RuYW1lQ0YoQWRvcHRDRiwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWlu
UHRyPENGSG9zdFJlZj4gaG9zdChBZG9wdENGLCBDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0
bmFtZUNGLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0Yo
Q0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkp
OwogICAgIGlmICghaG9zdCkgewogICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9
IHsgMCwgMCwgMCwgMCwgMCB9OwogICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFr
UmVmKCk7IC8vIFRoZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygp
LgogICAgIEJvb2xlYW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVu
dENhbGxiYWNrLCAmY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMzU0ZmQyNzU4NjQyMDdiNzll
ZmMyMWFmN2QxOTlkYjBiMzAxMjBiNC4uNTg5NWVkOTkzNDY2NWVmNjMwYmUzNjUxNzE2MTUxNTJl
NDBmODNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTQ1LDEzICsxNDUsMTEgQEAgQ0ZFcnJvclJlZiBS
ZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICBpZiAoIW1fcGxhdGZvcm1FcnJvcikg
ewogICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8oQWRv
cHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlL
ZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICAg
ICAgaWYgKCFtX2xvY2FsaXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZyhBZG9wdENG
LCBtX2xvY2FsaXplZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVz
Y3JpcHRpb25LZXksIGxvY2FsaXplZERlc2NyaXB0aW9uU3RyaW5nLmdldCgpKTsKLSAgICAgICAg
fQorICAgICAgICBpZiAoIW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKQorICAgICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxp
emVkRGVzY3JpcHRpb25LZXksIG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAKICAgICAgICAgaWYgKCFtX2ZhaWxpbmdVUkwuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcoQWRvcHRDRiwg
bV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5n
KCk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFp
bGluZ1VSTFN0cmluZ0tleSwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwg
ZmFpbGluZ1VSTFN0cmluZy5nZXQoKSwgMCkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxLZXksIHVybC5nZXQoKSk7CkBAIC0xNjIs
OCArMTYwLDcgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAg
ICAgICAgICAgIHdrU2V0U1NMUGVlckNlcnRpZmljYXRlRGF0YSh1c2VySW5mby5nZXQoKSwgbV9j
ZXJ0aWZpY2F0ZS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gZG9tYWluU3RyaW5nKEFkb3B0Q0YsIG1fZG9tYWluLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgICAgICBtX3BsYXRmb3JtRXJyb3IuYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIGRv
bWFpblN0cmluZy5nZXQoKSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CisgICAgICAg
IG1fcGxhdGZvcm1FcnJvciA9IGFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBtX2RvbWFpbi5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKICAgICB9
CiAKICAgICByZXR1cm4gbV9wbGF0Zm9ybUVycm9yLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAK
aW5kZXggMDFlOGI4YWU1YzBkMWM2YTZhOGYwMzMwODVlOTBmMDEwYmMxZjdjNi4uODA3MGMyNTgy
YjdjYWEwZGU2ZmUzNWYzMDc0M2Y3OGIyMGI3N2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBA
IC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiA+JiBjbGllbnRDZXJ0cygpCiAKIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShD
RlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZh
dWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOwor
ICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlN
RVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAKICAgICBDRlVSTFJlc3Bv
bnNlU2V0TUlNRVR5cGUocmVzcG9uc2UsIGRlZmF1bHRNSU1FVHlwZVN0cmluZyk7CiB9CkBAIC0x
NjEsOCArMTYxLDggQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgIGlmIChjZlJlZGlyZWN0
UmVzcG9uc2UpIHsKICAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJM
UmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoY2ZSZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgaWYg
KGh0dHBNZXNzYWdlICYmIENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1l
c3NhZ2UpID09IDMwNykgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0
SFRUUE1ldGhvZChBZG9wdENGLCBoYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZChBZG9w
dENGLCBDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7CisgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gaGFuZGxlLT5s
YXN0SFRUUE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1
ZXN0TWV0aG9kKGNmUmVxdWVzdCkpOwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdp
dGhPcHRpb25zKGxhc3RIVFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VN
YWtlKDAsIENGU3RyaW5nR2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBh
cmVDYXNlSW5zZW5zaXRpdmUpKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJs
ZVVSTFJlcXVlc3RSZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0
ZU11dGFibGVDb3B5KDAsIGNmUmVxdWVzdCkpOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9O
UykKQEAgLTE3NSw5ICsxNzUsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVx
dWVzdChDRlVSTENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgICAgICAg
ICAgICAgICAgIFdlYkNvcmU6OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5
KTsKIAogICAgICAgICAgICAgICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gaGFuZGxl
LT5maXJzdFJlcXVlc3QoKS5odHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsQ29udGVudFR5cGVDRihBZG9wdENGLCBvcmlnaW5h
bENvbnRlbnRUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGlmICghb3Jp
Z2luYWxDb250ZW50VHlwZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIENGVVJMUmVx
dWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNUUigi
Q29udGVudC1UeXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1
ZXN0LmdldCgpLCBDRlNUUigiQ29udGVudC1UeXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gbXV0YWJs
ZVJlcXVlc3QuZ2V0KCk7CiAgICAgICAgICAgICB9CkBAIC02MDcsMTAgKzYwNiw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsCiAjZW5kaWYKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgp
ICYmICFkLT5tX3Bhc3MuaXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB1c2VyKEFkb3B0Q0YsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBwYXNzKEFkb3B0Q0YsIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbChB
ZG9wdENGLAotICAgICAgICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHVzZXIuZ2V0KCksIHBhc3MuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0
ZW5jZU5vbmUpKTsKKyAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVu
dGlhbCA9IGFkb3B0Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogICAgICAg
ICAKICAgICAgICAgS1VSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1
cmVSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtMTAwNSw3ICsxMDAxLDcg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVu
YWJsZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyRGVmYXVsdEJhc2UoKSA6IHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmSWRlbnRpZmllcihBZG9wdENGLCBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5n
IikuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50
aWZpZXIgPSBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmco
KTsKIAogICAgIHByaXZhdGVTdG9yYWdlU2Vzc2lvbigpID0gY3JlYXRlUHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5j
cHAKaW5kZXggOGNmZjg3Y2EwZDU4ZWEyZTUyM2YzNzMwZDZiNGE3NzMwYjA2YmU0Yi4uMGUzZGVj
ZTAxODI3ZWM1YWQxYjZiNTgxZTExNjI4MjliNDEzMGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5j
cHAKQEAgLTExOSwxMyArMTE5LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEhlYWRlckZpZWxk
cyhDRk11dGFibGVVUkxSZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWEKICAgICB9CiAK
ICAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXF1ZXN0SGVhZGVycy5l
bmQoKTsKLSAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVxdWVz
dEhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIENGU3RyaW5nUmVm
IGtleSA9IGl0LT5rZXkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgdmFs
dWUgPSBpdC0+dmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0
SFRUUEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIENGUmVs
ZWFzZShrZXkpOwotICAgICAgICBDRlJlbGVhc2UodmFsdWUpOwotICAgIH0KKyAgICBmb3IgKEhU
VFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVxdWVzdEhlYWRlcnMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQorICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRW
YWx1ZShyZXF1ZXN0LCBpdC0+a2V5LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGl0
LT52YWx1ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKQEAgLTE0Niw4ICsxNDEsNyBAQCB2b2lkIFJl
c291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIHdrU2V0UmVxdWVz
dFN0b3JhZ2VTZXNzaW9uKFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RvcmFnZVNlc3Npb24oKSwg
Y2ZSZXF1ZXN0KTsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXF1ZXN0
TWV0aG9kKEFkb3B0Q0YsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlVS
TFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIHJlcXVlc3RNZXRob2QuZ2V0
KCkpOworICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0
cE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGlu
aW5nRW5hYmxlZCgpKQogICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoY2ZSZXF1
ZXN0LCB0b0hUVFBQaXBlbGluaW5nUHJpb3JpdHkobV9wcmlvcml0eSkpOwpAQCAtMTY0LDcgKzE1
OCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAg
ICAgdW5zaWduZWQgZmFsbGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJh
eVJlZj4gZW5jb2RpbmdGYWxsYmFja3MoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgZmFsbGJhY2tDb3VudCwgMCkpOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgIT0gZmFsbGJhY2tDb3VudDsgKytpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gZW5jb2RpbmdOYW1lKEFkb3B0Q0YsIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gZW5jb2RpbmdOYW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNw
b3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpOwogICAgICAg
ICBDRlN0cmluZ0VuY29kaW5nIGVuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXRO
YW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUuZ2V0KCkpOwogICAgICAgICBpZiAoZW5jb2Rpbmcg
IT0ga0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5k
VmFsdWUoZW5jb2RpbmdGYWxsYmFja3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9p
ZCo+KGVuY29kaW5nKSk7CkBAIC0yMTMsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6
OmRvVXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCkKICAgICAgICAgVmVjdG9yPGNvbnN0IHZvaWQqLCAx
Mjg+IHZhbHVlcyhoZWFkZXJDb3VudCk7CiAgICAgICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRW
YWx1ZXMoaGVhZGVycywga2V5cy5kYXRhKCksIHZhbHVlcy5kYXRhKCkpOwogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGhlYWRlckNvdW50OyArK2kpCi0gICAgICAgICAgICBtX2h0dHBIZWFk
ZXJGaWVsZHMuc2V0KChDRlN0cmluZ1JlZilrZXlzW2ldLCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ld
KTsKKyAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoU3RyaW5nKChDRlN0cmluZ1Jl
ZilrZXlzW2ldKSwgU3RyaW5nKChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pKTsKICAgICAgICAgQ0ZS
ZWxlYXNlKGhlYWRlcnMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCmluZGV4IGE0
NWJlZWRjNDMzMDA3NzJiMzljYWVlMmIzOTQ2Y2FjM2RmMGJmMzEuLjM4MjE2ZDRkMjBiZjk4MTEz
ZjNhZWQyMzZjYTUxNmZlZGMwNDkwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKQEAgLTUx
LDkgKzUxLDcgQEAgQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3Bv
bnNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKICAg
ICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgbV91cmwuY3JlYXRlQ0ZVUkwo
KSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgbV9t
aW1lVHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB0ZXh0RW5jb2RpbmdOYW1lKEFkb3B0Q0YsIG1fdGV4dEVuY29kaW5nTmFtZS5jcmVhdGVDRlN0
cmluZygpKTsKLSAgICAgICAgbV9jZlJlc3BvbnNlLmFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0
ZSgwLCB1cmwuZ2V0KCksIG1pbWVUeXBlLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwg
dGV4dEVuY29kaW5nTmFtZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOworICAg
ICAgICBtX2NmUmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQo
KSwgbV9taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExl
bmd0aCwgbV90ZXh0RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTENh
Y2hlU3RvcmFnZUFsbG93ZWQpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdl
dCgpOwpAQCAtMTA1LDcgKzEwMyw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1M
YXp5SW5pdChJbml0TGV2ZWwgaW5pdExldmVsKQogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1Db21tb25IZWFkZXJGaWVsZHM7IGkrKykgewogICAgICAgICAgICAgICAgIENGU3Ry
aW5nUmVmIHZhbHVlOwogICAgICAgICAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZUlm
UHJlc2VudChoZWFkZXJzLmdldCgpLCBjb21tb25IZWFkZXJGaWVsZHNbaV0sIChjb25zdCB2b2lk
ICoqKSZ2YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQo
Y29tbW9uSGVhZGVyRmllbGRzW2ldLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1faHR0
cEhlYWRlckZpZWxkcy5zZXQoU3RyaW5nKGNvbW1vbkhlYWRlckZpZWxkc1tpXSksIFN0cmluZyh2
YWx1ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1faHR0
cFN0YXR1c0NvZGUgPSAwOwpAQCAtMTIzLDcgKzEyMSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25z
ZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwgaW5pdExldmVsKQogICAgICAgICAgICAgVmVj
dG9yPGNvbnN0IHZvaWQqLCAxMjg+IHZhbHVlcyhoZWFkZXJDb3VudCk7CiAgICAgICAgICAgICBD
RkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGhlYWRlcnMuZ2V0KCksIGtleXMuZGF0YSgpLCB2
YWx1ZXMuZGF0YSgpKTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVyQ291
bnQ7ICsraSkKLSAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KChDRlN0cmlu
Z1JlZilrZXlzW2ldLCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAgICBt
X2h0dHBIZWFkZXJGaWVsZHMuc2V0KFN0cmluZygoQ0ZTdHJpbmdSZWYpa2V5c1tpXSksIFN0cmlu
ZygoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhh
bmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGQ4NmM3NmJjNmY0NWMxODE2NDhlMGE3NzZjZDM5
YmFlODkwODQwZDYuLjRhN2NkOTAyYWU5ZjAyODdkODk4ZDkyYmQ5ODVkZDc2NmQ0MmExNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
U29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBTb2Nr
ZXRTdHJlYW1IYW5kbGU6OmNyZWF0ZVN0cmVhbXMoKQogICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBl
ID09IFVua25vd24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gaG9zdChBZG9wdENGLCBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBob3N0ID0gbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCk7
CiAKICAgICAvLyBDcmVhdGluZyBzdHJlYW1zIHRvIGZpbmFsIGRlc3RpbmF0aW9uLCBub3QgdG8g
cHJveHkuCiAgICAgQ0ZSZWFkU3RyZWFtUmVmIHJlYWRTdHJlYW0gPSAwOwpAQCAtMzU5LDEyICsz
NTksMTAgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhD
RkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiAgICAgU3RyaW5nIHBhc3N3b3JkOwogICAg
IGlmICghbV9zZW50U3RvcmVkQ3JlZGVudGlhbHMgJiYgZ2V0U3RvcmVkQ09OTkVDVFByb3h5Q3Jl
ZGVudGlhbHMocHJvdGVjdGlvblNwYWNlLCBsb2dpbiwgcGFzc3dvcmQpKSB7CiAgICAgICAgIC8v
IFRyeSB0byBhcHBseSBzdG9yZWQgY3JlZGVudGlhbHMsIGlmIHdlIGhhdmVuJ3QgdHJpZWQgdGhv
c2UgYWxyZWFkeS4KLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2dpbkNGKEFkb3B0
Q0YsIGxvZ2luLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHBhc3N3b3JkQ0YoQWRvcHRDRiwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAg
ICAgIC8vIENyZWF0aW5nIGEgdGVtcG9yYXJ5IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBw
bHkgY3JlZGVudGlhbHMgdG8gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0
aCBOVExNIGF1dGhlbnRpY2F0aW9uLgorICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgcmVx
dWVzdCB0byBtYWtlIENGTmV0d29yayBhcHBseSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5h
dGVseSwgdGhpcyBjYW5ub3Qgd29yayB3aXRoIE5UTE0gYXV0aGVudGljYXRpb24uCiAgICAgICAg
IFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiBkdW1teVJlcXVlc3QoQWRvcHRDRiwgQ0ZIVFRQ
TWVzc2FnZUNyZWF0ZVJlcXVlc3QoMCwgQ0ZTVFIoIkdFVCIpLCBtX2h0dHBzVVJMLmdldCgpLCBr
Q0ZIVFRQVmVyc2lvbjFfMSkpOwogCi0gICAgICAgIEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxz
ID0gQ0ZIVFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlhbHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRo
ZW50aWNhdGlvbi5nZXQoKSwgbG9naW5DRi5nZXQoKSwgcGFzc3dvcmRDRi5nZXQoKSwgMCk7Cisg
ICAgICAgIEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZIVFRQTWVzc2FnZUFwcGx5Q3Jl
ZGVudGlhbHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNhdGlvbi5nZXQoKSwgbG9naW4u
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
MCk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYXBwbGllZENyZWRlbnRpYWxzLCBhcHBsaWVkQ3Jl
ZGVudGlhbHMpOwogCiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJveHlBdXRob3Jp
emF0aW9uU3RyaW5nKEFkb3B0Q0YsIENGSFRUUE1lc3NhZ2VDb3B5SGVhZGVyRmllbGRWYWx1ZShk
dW1teVJlcXVlc3QuZ2V0KCksIENGU1RSKCJQcm94eS1BdXRob3JpemF0aW9uIikpKTsKQEAgLTM4
OSw3ICszODcsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRp
YWxzKENGSFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIENGU3RyaW5nUmVmIFNvY2tldFN0
cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24odm9pZCogaW5mbykKIHsKICAgICBT
b2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRs
ZSo+KGluZm8pOwotICAgIHJldHVybiBTdHJpbmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsg
aGFuZGxlLT5tX3VybC5zdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICByZXR1cm4gU3Ry
aW5nKCJXZWJLaXQgc29ja2V0IHN0cmVhbSwgIiArIGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNy
ZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogfQogCiBzdHJ1Y3QgTWFpblRocmVhZEV2ZW50Q2Fs
bGJhY2tJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQppbmRleCA5MzIxNmNiNTVlODU3NzMxMzZmM2U4
YzNhMDdjZTZmYjU1NmUwNmQyLi5lNjkzNDg0ODFhYjBhMDIxMzc5NGRhMjRlZmJjYzRmNTZkYzAw
OGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNv
dXJjZVJlcXVlc3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCkBAIC0xNjMsOSArMTYzLDkgQEAgdm9pZCBSZXNvdXJj
ZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgTlNNdXRhYmxlQXJy
YXkgKmVuY29kaW5nRmFsbGJhY2tzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICAgICAg
dW5zaWduZWQgY291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5LnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBjb3Vu
dDsgKytpKSB7Ci0gICAgICAgICAgICBDRlN0cmluZ1JlZiBlbmNvZGluZ05hbWUgPSBtX3Jlc3Bv
bnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3Ry
aW5nKCk7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5zRW5jb2RpbmcgPSBDRlN0cmluZ0Nv
bnZlcnRFbmNvZGluZ1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNl
dE5hbWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKGVu
Y29kaW5nTmFtZSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5n
TmFtZSA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlb
aV0uY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGlu
ZyA9IENGU3RyaW5nQ29udmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29u
dmVydElBTkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKSk7CisKICAg
ICAgICAgICAgIGlmIChuc0VuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQog
ICAgICAgICAgICAgICAgIFtlbmNvZGluZ0ZhbGxiYWNrcyBhZGRPYmplY3Q6W05TTnVtYmVyIG51
bWJlcldpdGhVbnNpZ25lZExvbmc6bnNFbmNvZGluZ11dOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9u
c2UubW0KaW5kZXggNmFhNzZmNmRkNzg0ZGEwOWQ3YmZmN2UxZTY4NTVlNzVjYWRhZTk5Yy4uZjk3
MTBiMmRkMjUxODQ2MjAxNTEzMjQyZjQwZjNhNDEyNjRmMjJlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bQpAQCAtNDc4LDcgKzQ3OCw3IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UpCiAgICAgfQogICAgIAogICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJD
b3JlOjpkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBzdGF0aWMg
Q0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVU
eXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgICAgIHJlc3VsdCA9IGRlZmF1
bHRNSU1FVHlwZVN0cmluZzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDRlM2ZjZWQ0NDQ2NDlhOWM1Y2VmMzY0
ZWMwNjJmZThkYjE4ODRmMDkuLjBmNjY4ZDEwZjhlNDE3ZjU2ZWE5M2EwODU4MTI0Y2RmMmJhNDE3
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRp
b25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlv
bkNGLmNwcApAQCAtNDYsOCArNDYsNyBAQCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0
cmluZ0tleWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdAogdGVtcGxh
dGU8PgogUmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJl
dGFpblB0cjxDRkxvY2FsZVJlZj4gPjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbGVJZGVudGlmaWVyKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZM
b2NhbGVJZGVudGlmaWVyKEFkb3B0Q0YsIGxvY2FsZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2NhbGVD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2ZMb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7Cisg
ICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGxvY2FsZUlkZW50aWZpZXIuaW1wbCgpLT5jcmVhdGVDRlN0
cmluZygpLmdldCgpKSk7CiAKICAgICByZXR1cm4gQ0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxh
YmxlRm9yTG9jYWxlKGxvY2FsZS5nZXQoKSkgPyBsb2NhbGUgOiAwOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcAppbmRleCBkN2NkYTc5NjI5ODYyNTcz
YTM1YzZhOTI2ODU3NTIzMDVhYjZjMjdlLi4yNjk3ZTc2ZjBiZjU5MjNiMTUyZmVkZDcxMDM3ZTk3
MTE0OTI2ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0NGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NG
LmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiAjaWYgVVNFKENGKQotCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24u
aD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC01
MSw3ICs1MSw3IEBAIFN0cmluZzo6U3RyaW5nKENGU3RyaW5nUmVmIHN0cikKICAgICB9CiB9CiAK
LUNGU3RyaW5nUmVmIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAorUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1f
aW1wbCkKICAgICAgICAgcmV0dXJuIENGU1RSKCIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcAppbmRleCA3YTJkODJlNDAyZDI0YjM3YmJj
MDcxZjQ3Zjk4ZTBhODY1MTg0OTIxLi4xZGE1NjFiNjA2MmJjYWI0OWUwOWJmZTc5NzgyYjI3M2Yw
ZGEwOTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmlu
Z0ltcGxDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJ
bXBsQ0YuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEzMiw3ICsxMzMsNyBAQCBu
YW1lc3BhY2UgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yIHsKIAogfQogCi1DRlN0cmluZ1JlZiBT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmlu
Z0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKIHsKICAgICBpZiAoIW1fbGVuZ3RoIHx8ICFpc01haW5U
aHJlYWQoKSkgewogICAgICAgICBpZiAoaXM4Qml0KCkpCkBAIC0xNTMsNyArMTU0LDcgQEAgQ0ZT
dHJpbmdSZWYgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogICAgIC8vIENvcmVGb3VuZGF0
aW9uIG1pZ2h0IG5vdCBoYXZlIHRvIGFsbG9jYXRlIGFueXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50
U3RyaW5nIGluIGNhc2Ugd2UgZGlkIG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCiAgICAgU3RyaW5n
V3JhcHBlckNGQWxsb2NhdG9yOjpjdXJyZW50U3RyaW5nID0gMDsKIAotICAgIHJldHVybiBzdHJp
bmc7CisgICAgcmV0dXJuIGFkb3B0Q0Yoc3RyaW5nKTsKIH0KIAogLy8gT24gU3RyaW5nSW1wbCBj
cmVhdGlvbiB3ZSBjb3VsZCBjaGVjayBpZiB0aGUgYWxsb2NhdG9yIGlzIHRoZSBTdHJpbmdXcmFw
cGVyQ0ZBbGxvY2F0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9TdHJpbmdJbXBsTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMv
U3RyaW5nSW1wbE1hYy5tbQppbmRleCA2ZjVlOTUzYmExOTI1ZTU0NWJiYjVhYzUzZTIxNDc2YmI4
ZjAzYTU3Li4yZjA4OGE3ZWIzNjNjNWFjZDAxNDJmMzg3MDk1Yjk2MmMxODE2YTYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KQEAg
LTIyLDEyICsyMiwxMyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2lu
Y2x1ZGUgIkZvdW5kYXRpb25FeHRyYXMuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewogCiBTdHJpbmdJbXBsOjpvcGVyYXRvciBOU1N0cmluZyAqKCkKIHsK
LSAgICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVy
biBIYXJkQXV0b3JlbGVhc2UoY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCkpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcApp
bmRleCAzMTI0MTJmYWFiOGFjMjM2Mjg2NTAzZGFjYTVhOTI4YmViZDQzOTY2Li5hNzA0NzQ5NTIw
ZmRkMzJkNGUxZTAwZmNmYzBkZWFmMzg3Y2JhOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBD
U3RyaW5nIFRleHRDb2RlY01hYzo6ZW5jb2RlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXpl
X3QgbGVuZ3RoLCBVbmVuY29kYWJsZQogICAgIC8vIEVuY29kaW5nIHdpbGwgY2hhbmdlIHRoZSB5
ZW4gc2lnbiBiYWNrIGludG8gYSBiYWNrc2xhc2guCiAgICAgU3RyaW5nIGNvcHkoY2hhcmFjdGVy
cywgbGVuZ3RoKTsKICAgICBjb3B5LnJlcGxhY2UoJ1xcJywgbV9iYWNrc2xhc2hBc0N1cnJlbmN5
U3ltYm9sKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmcyhBZG9wdENGLCBjb3B5LmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZzID0gY29weS5j
cmVhdGVDRlN0cmluZygpOwogCiAgICAgQ0ZJbmRleCBzdGFydFBvcyA9IDA7CiAgICAgQ0ZJbmRl
eCBjaGFyYWN0ZXJzTGVmdCA9IENGU3RyaW5nR2V0TGVuZ3RoKGNmcy5nZXQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmluZGV4
IGE1Y2E5Yjc0NDY5MmYyODdmMjNmMzQ4MTUwYjA4ZjY1ZTFmZjk1ZmUuLmJmYzA4N2JlOWYxOTJj
YmUxNDNkN2E2ZDE5NjQyNGEzZGUyNTg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC01Miw3ICs1Miw3IEBAIGJvb2wg
U2VhcmNoUG9wdXBNZW51V2luOjplbmFibGVkKCkKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGF1dG9zYXZlS2V5KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBTdHJpbmcga2V5ID0g
ImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiArIG5hbWU7Ci0gICAgcmV0dXJuIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJl
dHVybiBrZXkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KICNlbmRpZgogCkBAIC02NywxMCArNjcsOCBA
QCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMu
c2l6ZSgpOwogICAgIGlmIChzaXplKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdl
dCgpKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRl
bXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNl
c1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJl
ZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCA4Mzc0N2Yy
MjM1NTZhNmFjMmFhMTY4OWRmZGZhYzFmMWVmMTdjNDc3Li4zMzdkYWNhYjJmNzEyYzk4NmYwZjU3
MjI5NmE3ODA1NjJjMzE0YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNjMsMTUgKzYzLDE0IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9y
U3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIjsKIAotc3Rh
dGljIGlubGluZSBDRlN0cmluZ1JlZiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJp
bmcmIGtleSkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlG
b3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGtleUNGU3RyaW5nKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBy
ZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQgV2ViIElu
c3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5Q0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdlYiBJ
bnNwZWN0b3IgU2V0dGluZyAtICVAIiksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiB9
CiAKIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5n
KiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXko
QWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSk7
CiAgICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZShBZG9wdENGLCBDRlByZWZl
cmVuY2VzQ29weUFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1
cnJlbnRBcHBsaWNhdGlvbikpOwogCiAgICAgaWYgKCF2YWx1ZSkKQEAgLTg4LDEyICs4Nyw3IEBA
IHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBz
ZXR0aW5nKQogCiBzdGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNv
bnN0IFN0cmluZyYgc2V0dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+
IG9iamVjdFRvU3RvcmU7Ci0gICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKHNldHRpbmcuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgQVNTRVJUKG9iamVjdFRvU3RvcmUpOwotCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJl
bmNlcyhrZXkpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUocHJlZmVyZW5jZXNLZXku
Z2V0KCksIG9iamVjdFRvU3RvcmUuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0
aW9uKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRlS2V5Rm9yUHJlZmVyZW5j
ZXMoa2V5KS5nZXQoKSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJl
bmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50Ojpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0KaW5kZXggNGEzNWI2YTJkOGEzMmM1ZGQ4MzQ5NzJj
ZDJmZGYyYWRjMzkxZTYxYS4uMzY4NzUzMTUxNzIxOGRhMjllOWNkZGRhNDIzMmEzYjEyODI1MzMx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCkBAIC0zMCwxMiAr
MzAsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgbV9wYXRoLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0Ys
IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRs
ZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVVUkwpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFk
b3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRs
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAo
IWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZTdkNTgzMWY2
MDhjMzgzMGUzYzliZTE0YjM5NDY1ZWIyYzcxYzNiLi42NzFmMjBkNmRjYWJlMWZjMWJhMzk1NTdk
NWU2MjhlZTdlZDdlZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTI3OSw4ICsyNzksNyBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmlu
ZyYgc2FuZGJveFBybwogICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGx1
Z2luUGF0aCA9IGFkb3B0Q0YocGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5
c3RlbVBhdGgoMCwgY2ZQbHVnaW5QYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFs
c2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVSTCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTIsOCArMjkxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIHNhbmRi
b3hQcm8KICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGggPSBh
ZG9wdENGKHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlNhbmRib3hQcm9maWxlRGlyZWN0b3J5
UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aCgwLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKIAogICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9y
bWF0KDAsIDAsIENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlmaWVyKTsKICAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoUmVsYXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1lLmdldCgpLCBrQ0ZVUkxQT1NJ
WFBhdGhTdHlsZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5LmdldCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggODFiMzhlMGVjOGZlM2M0
MTg4OTc5ZWVmZDA2MjI3YjM3MGZkNGEzZS4uM2RjMzc3YzQ0NTBkODhmZTI1ZjcwMmIwZmE1NDNh
MzhlMjhmNmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQpA
QCAtMzUyLDExICszNTIsMTAgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21DYXJib25S
ZXNvdXJjZXMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmYKIAogYm9vbCBOZXRz
Y2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQ
T1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVS
TCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhT
dHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlhbGl6ZSB0aGUgYnVuZGxl
LgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIFJldGFpblB0
cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIApAQCAtMzk1LDExICszOTQsOSBAQCBib29sIE5ldHNjYXBlUGx1
Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2lu
TW9kdWxlSQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5NSU1FVHlw
ZXNQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0aC5n
ZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJM
UmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCi0gICAgLy8gVHJ5IHRvIGluaXRpYWxp
emUgdGhlIGJ1bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShBZG9wdENG
LCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYgKCFidW5k
bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggY2RmZjM0NDY5YTIzOTNk
MzVhZGJhYmM0Y2IwYTM4YmEwZjU2MjMyNC4uN2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1NGM1OGFi
M2E0OGEyYjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJh
Y2tGb3J3YXJkTGlzdENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2Vi
QmFja0ZvcndhcmRMaXN0Q0YuY3BwCkBAIC05NCw5ICs5NCw5IEBAIENGRGljdGlvbmFyeVJlZiBX
ZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBh
Z2VQcm94CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT51cmwo
KS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRs
ZShBZG9wdENGLCBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxVUkwoQWRvcHRDRiwgbV9lbnRyaWVz
W2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHVybCA9IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
KyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZSA9IG1fZW50cmllc1tpXS0+dGl0
bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9y
aWdpbmFsVVJMID0gbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCk7
CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgQ29yZUlQQyBkYXRhIGVuY29kaW5n
IGZvcm1hdCwgd2hpY2ggbWVhbnMgdGhhdCB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIENvcmVJUEMg
ZW5jb2Rpbmcgd2UgbmVlZCB0byBidW1wIHRoZSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNp
b24KICAgICAgICAgLy8gY29uc3RhbnQgaW4gV2ViUGFnZVByb3h5Q0YuY3BwLiBUaGUgQ29yZUlQ
QyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFu
ZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gZGlzay4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCmluZGV4IDc5ZGQ4Y2Vk
MDJkN2NlMGQ0ZjNjMjQwNDgxOGI4MDFiZTQwZjFmN2EuLmZhYzAyYzFiNDY5MGYxMjM2ZTlhYTc4
ZGFjYTQ5MmIxYzQyNjNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
Zi9XZWJQYWdlUHJveHlDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dl
YlBhZ2VQcm94eUNGLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYXNzUmVmUHRyPFdlYkRhdGE+IFdl
YlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YShXZWJQYWdlUHJveHlTZXNzaW9uU3RhdGVGaWx0
ZQogICAgICAgICBpZiAocHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgcHJv
dmlzaW9uYWxVUkwgPSBtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKICAgICAgICAgaWYg
KCFwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHByb3Zpc2lvbmFsVVJM
U3RyaW5nLmFkb3B0Q0YocHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAg
ICAgICBwcm92aXNpb25hbFVSTFN0cmluZyA9IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNGU3RyaW5n
KCk7CiAgICAgICAgICAgICBrZXlzW251bVZhbHVlc10gPSBQcm92aXNpb25hbFVSTEtleSgpOwog
ICAgICAgICAgICAgdmFsdWVzW251bVZhbHVlc10gPSBwcm92aXNpb25hbFVSTFN0cmluZy5nZXQo
KTsKICAgICAgICAgICAgICsrbnVtVmFsdWVzOwpAQCAtMTc5LDggKzE3OSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSogd2ViRGF0YSkK
IAogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5n
JiBuYW1lKQogewotICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVs
ZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBr
ZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktp
dC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKQEAgLTE5MiwxMCArMTkxLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JgogCiAgICAgaWYgKHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgp
KSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwg
JmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpdGVtKEFk
b3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAgICAgfQorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIENGQXJy
YXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZl
S2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGlj
YXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNh
Y2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggNjgxMGYw
YWJkYjlkYmViYTk5ZmEzZTFlOWIwZjA2Y2U0NWFlMDQ5NC4uMzk1NjQ5YzUwYmY0ZDZkZjA0YmM3
NTQwYjU0YmFmNTlkYjJjMzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIu
Y3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Y2xl
YXJDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwKICNpZiBVU0Uo
Q0ZVUkxDQUNIRSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9IEluTWVtb3J5UmVz
b3VyY2VDYWNoZXNPbmx5KSB7IAogICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+
IGhvc3RBcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFy
cmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdChBZG9w
dENGLCBvcmlnaW4tPmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwgaG9zdC5nZXQoKSk7CisgICAgICAgIENGQXJyYXlB
cHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCksIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogCiAgICAgICAgIGNsZWFyQ0ZVUkxDYWNoZUZvckhvc3ROYW1lcyhob3N0QXJy
YXkuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBmMjliMWE3ZjZkMjQzOWIwYzM0OGFhZDYyODVhMWI4OGU3ZDU0MGY5Li4x
ZWI3ZjFjZjI1MmNlNmVmMTU3ZTdkNmU4NWI3ZDM1MjEwYTY4ZmJlIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTIt
MTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBT
dHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9m
IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW06CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6cGxhdGZvcm1EaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKToKKwogMjAxMi0xMC0yNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIENyYXNoIHdoZW4gbWFraW5nIE5QUnVudGltZSBjYWxscyB3aXRoIGEgbnVs
bCBOUFAgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCmluZGV4IDQ2
YzI3M2YxZjhjYTQwYWVlMjdjOTQ3NmM4MWZlNzM5NGMzM2JiMjQuLmIwY2I0ZTAzMWNiNzQ0NjI4
YzBiYzM0ZDU3ZDE3NmI2ODdhZjEzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VN
YWMubW0KQEAgLTg1LDggKzg1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3Jt
RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmUKICAgICAgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkNS
QVNISU5HIFRFU1Q6ICIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZXN0UGF0aCk7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwgYnVpbGRlci50b1N0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBXS1NldENyYXNoUmVwb3J0QXBwbGlj
YXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGNmU3RyaW5nLmdldCgpKTsKKyAgICAgICAgV0tTZXRD
cmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbihidWlsZGVyLnRvU3RyaW5n
KCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171099</attachid>
            <date>2012-10-27 12:14:33 -0700</date>
            <delta_ts>2012-10-27 17:15:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121027121302.patch</filename>
            <type>text/plain</type>
            <size>78611</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU4YjQ5NjdiN2U2MmU2Yzk2MTViMGVm
MjhlYmNjY2Q1MmViMTgwNGMuLjJjYzM4YWQyMjM4YmZmM2RjMDM0MjkzYzQ3N2NmOWY1ZmQxNDZm
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDEyLTEwLTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyNjg5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY0YWVjNGU2ZWVmOGM0MjUwOTEyMmQ3ZGIwNjk0M2Q3YzYyMDkyMjguLmVmOWE5M2Mw
NjIzZTI4NGVmNDQ2MTE4MjczZTBlMjcyZjE4YjU2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
MSBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFs
bGJhY2tPYmplY3QpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlVGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0dNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFn
ZVNvdXJjZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5
cGVGcm9tSFRNTENsaXBib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21D
b2NvYVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjo6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0NGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjcmVhdGVDRlN0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMv
U3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNT
dHJpbmcgKik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZW5jb2RlKToKKwogMjAxMi0xMC0yNiAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgLmxvb3BTdGFydCBhbmQgLmxvb3BFbmQgYXR0cmlidXRlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nm
L0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJlY2M1
Li42ZTBhZWQ1ZmZhNTZlNzFmMmIwNTYyOTNmZmNmYzBlZTA1OWE1ZjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0
dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAo
Y3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToKKyAg
ICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcuaCwg
cmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxMWQ1MGIxNzdkYWY2
ZTIwZjdhYWFkYjEzYjEyNWVlNWNkOTUwMGUzLi5lOWI2ODMxNDFhYzVjYmM4NTU5YjZjNTZjMzgy
ZTdkODFiZjU0YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMTAt
MjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJp
bmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9mIFN0
cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFz
ZSk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojp2aXNp
dGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcpOgorICAgICAg
ICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChjcmVhdGVXZWJLaXRCdW5kbGUpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0
cmluZ0Zyb21CdW5kbGUpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAg
KFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAo
V2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxMi0xMC0yNCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RyYXRlZ3kgZm9y
IGxvYWRlciBjdXN0b21pemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFmODliZmIxNzRlOWYxOTJhZGIx
OWVkYjBiNmE4YjA2YTZjNzIxMDkuLjYzNTZlNGJjODQxNjAyZGE2MzM2MDJkMzhlMGIxZmM2MmU5
NWM5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZT
dHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVD
RlN0cmluZy4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vZHVsZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdp
bkluZm8pOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1
Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNr
Rm9yd2FyZExpc3RDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6
Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9j
Zi9XZWJQYWdlUHJveHlDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vz
c2lvblN0YXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OmF1dG9zYXZlS2V5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2lu
KToKKwogMjAxMi0xMC0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2ggaW4gV2ViUHJvY2VzIGF0IFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkICsgNzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0
cmluZy5oCmluZGV4IDZhYzYwZTZhZDU3MjQzMzk3OGY1ZmI0YjQ4ODBhOWZiNDAxMDVjNjYuLjdk
YTBkZDRmM2EwMTcxOWI0NmNlYTliMTg4ZGJkZmE1ZTY5M2NjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmcuaApAQCAtMTM3LDEwICsxMzcsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCByZW1vdmUoU3RyaW5nSW1wbCopOwogICAgIAotI2lmIFVTRShDRikKLSAgICBBdG9taWNT
dHJpbmcoQ0ZTdHJpbmdSZWYgcykgOiAgbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7
IH0KLSAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmNyZWF0ZUNGU3RyaW5nKCk7IH0KLSNlbmRpZiAgICAKICNpZmRlZiBfX09CSkNfXwogICAg
IEF0b21pY1N0cmluZyhOU1N0cmluZyogcykgOiBtX3N0cmluZyhhZGQoU3RyaW5nKHMpLmltcGwo
KSkpIHsgfQogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDAwNjdiZWJlZWQ5MGZmNzQzNzMyY2Rh
YWY1NjBhYWY1OTIwOTg0ZWMuLjY3Njc3OTA2ZGIwMjUwM2UyMTc5NDE3NDM5NjI0MTFmYjIzMjY1
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC02Nyw2ICs2Nyw3IEBAIHN0cnVjdCBD
aGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvcjsKIGNsYXNzIE1lbW9yeU9iamVjdElu
Zm87CiBzdHJ1Y3QgU3Vic3RyaW5nVHJhbnNsYXRvcjsKIHN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5z
bGF0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgUmV0YWluUHRyOwogCiBlbnVtIFRleHRD
YXNlU2Vuc2l0aXZpdHkgeyBUZXh0Q2FzZVNlbnNpdGl2ZSwgVGV4dENhc2VJbnNlbnNpdGl2ZSB9
OwogCkBAIC03MTMsNyArNzE0LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBo
YXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOwogCiAjaWYgVVNFKENGKQotICAgIENGU3RyaW5n
UmVmIGNyZWF0ZUNGU3RyaW5nKCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVD
RlN0cmluZygpOwogI2VuZGlmCiAjaWZkZWYgX19PQkpDX18KICAgICBvcGVyYXRvciBOU1N0cmlu
ZyooKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUwYzA0OGQ2M2YzZGNmMWM1Mzg2NTU2
NmU0NzI0ZjFhODI0OGZlMDcuLmQ2N2FkMzI5OTJjMjQwZjFlNTUyZjZlYzNlZmMwODAwOGIzYmE4
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNsdWRl
IDxvYmpjL29iamMuaD4KICNlbmRpZgogCi0jaWYgVVNFKENGKQotdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX19DRlN0cmluZyAqIENGU3RyaW5nUmVmOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkK
IFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVN0cmluZzsKQEAgLTM4Niw3ICszODIsNyBAQCBw
dWJsaWM6CiAKICNpZiBVU0UoQ0YpCiAgICAgU3RyaW5nKENGU3RyaW5nUmVmKTsKLSAgICBDRlN0
cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0OworICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCiAjaWZkZWYgX19PQkpDX18KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCAyY2YwZGI1NjE4
ZTM4MjBjZGY0NDY0NTU4MzQxZjY5NGY1M2QxZmEzLi5iZTI0ZmRiM2ZkYjEzN2M4MGI2ZjBhNGZi
ODg3NDFhYjM0MWE0ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCkBAIC0yNDgsOCArMjQ4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIE9i
amNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0NsYXNzKj4ob2JqY0luc3RhbmNl
LT5nZXRDbGFzcygpKTsKICAgICAgICAgT3duUHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9k
KGFkb3B0UHRyKG5ldyBPYmpjTWV0aG9kKG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZv
a2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpKTsKICAgICAg
ICAgY29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFj
a09iamVjdEltcCo+KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBuYW1lSWRlbnRpZmllci5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5h
bWUuZ2V0KCkpOworICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFt
ZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9i
amNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7
CiAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCA5N2ZlOTViM2E0NGQ0MTg1ZTIxMjZmNmJiNmVkYmVjZjQzOWZlZWVlLi43NWRm
OTlhZjM2YmI2MDAyNjdiOWE3MmQ1YzkxNTg5MGM0ZGM1Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTkxNiw4ICs5MTYsNyBAQCBzdGF0aWMgS1VSTCBj
cmVhdGVGaWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICAvLyBhcHAgY2FjaGUgbWVkaWEgZmlsZXMgYXJlIGFsd2F5cyBjcmVhdGVkIHdpdGgg
ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS4KIAogI2lmIFVT
RShDRikgJiYgUExBVEZPUk0oV0lOKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZQYXRo
KEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBjZlVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlBhdGgu
Z2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBjZlVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBw
YXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNl
KSk7CiAgICAgS1VSTCB1cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKICAgICBLVVJMIHVybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKaW5kZXggMzU3NmQ2NGRmYzQ4MmE0MWQ1NGUxM2VmZDE5NzgxNjJiNzgwN2E3Zi4uZDc3
Zjg3NGIwOWRjMjAwOWJiZWQwMzUyNDE4MzViZmU4NmY4OGUzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkx
LDggKzkxLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXks
IGNmRGF0YS5nZXQoKSk7CiAgICAgCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxs
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlVSTChBZG9wdENGLCByZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgaWYgKGNmVVJMKQorICAgIGlmIChS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmNy
ZWF0ZUNGU3RyaW5nKCkpCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlz
dC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVVJMS2V5LCBjZlVSTC5nZXQoKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOVUxM
IHJlc291cmNlIFVSTCBpcyBpbnZhbGlkIC0gcmV0dXJuaW5nIG51bGwgcHJvcGVydHkgbGlzdCIp
OwpAQCAtMTAxLDIzICsxMDAsMTcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKIAogICAgIC8v
IEZyYW1lTmFtZSBzaG91bGQgYmUgbGVmdCBvdXQgaWYgZW1wdHkgZm9yIHN1YnJlc291cmNlcywg
YnV0IGFsd2F5cyBpbmNsdWRlZCBmb3IgbWFpbiByZXNvdXJjZXMKICAgICBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZShyZXNvdXJjZS0+ZnJhbWVOYW1lKCkpOwotICAgIGlmICghZnJhbWVOYW1lLmlz
RW1wdHkoKSB8fCBpc01haW5SZXNvdXJjZSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmRnJhbWVOYW1lKEFkb3B0Q0YsIGZyYW1lTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VGcmFtZU5hbWVLZXksIGNmRnJhbWVOYW1lLmdldCgpKTsKLSAgICB9Cisg
ICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpIHx8IGlzTWFpblJlc291cmNlKQorICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZUZyYW1lTmFtZUtleSwgZnJhbWVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
ICAgIAogICAgIC8vIFNldCBNSU1FVHlwZSwgVGV4dEVuY29kaW5nTmFtZSwgYW5kIFJlc291cmNl
UmVzcG9uc2Ugb25seSBpZiB0aGV5IGFjdHVhbGx5IGV4aXN0CiAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZShyZXNvdXJjZS0+bWltZVR5cGUoKSk7Ci0gICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk1JTUVUeXBlKEFkb3B0Q0Ys
IG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZU1JTUVUeXBlS2V5
LCBjZk1JTUVUeXBlLmdldCgpKTsKLSAgICB9CisgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXksIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogICAgIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKHJlc291cmNlLT50
ZXh0RW5jb2RpbmcoKSk7Ci0gICAgaWYgKCF0ZXh0RW5jb2RpbmcuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZUZXh0RW5jb2RpbmcoQWRvcHRDRiwgdGV4dEVu
Y29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVRleHRFbmNvZGluZ05h
bWVLZXksIGNmVGV4dEVuY29kaW5nLmdldCgpKTsKLSAgICB9CisgICAgaWYgKCF0ZXh0RW5jb2Rp
bmcuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3Qu
Z2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXksIHRleHRF
bmNvZGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIC8vIERvbid0IGluY2x1ZGUg
dGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNN
YWluUmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKaW5kZXggYWJmMWJjYTVlODU0MTBiYTg3ZDVjYWI4MjUwMGQ5NjlmMTA5MjZhNy4uNjkw
ODQzYjEzNzc4MzQ4MjgwZWM3ZWE1YjQzNzM4OGU5ZGRjNjQxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTU0LDEzICs1NCwxMiBAQCBzdGF0
aWMgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCiAjaWYg
VVNFKENGKQogICAgIHZhX2xpc3QgYXJndW1lbnRzOwogICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywg
Zm9ybWF0KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvcm1hdENGU3RyaW5nKEFkb3B0
Q0YsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpKTsKIAogI2lmIENPTVBJTEVSKENMQU5HKQogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgogI2VuZGlmCi0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiByZXN1bHQoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRz
KDAsIDAsIGZvcm1hdENGU3RyaW5nLmdldCgpLCBhcmd1bWVudHMpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5k
QXJndW1lbnRzKDAsIDAsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcmd1bWVudHMp
KTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNl
bmRpZgpAQCAtMjYwLDcgKzI1OSw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJ
bkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKICAgICByZXR1cm4gV0VC
X1VJX1NUUklORygiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IiwgIkxvb2sgVXAgaW4gRGljdGlvbmFy
eSBjb250ZXh0IG1lbnUgaXRlbSIpOwogI2Vsc2UKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBzZWxlY3RlZENGU3RyaW5nKEFkb3B0Q0YsIHRydW5jYXRlZFN0cmluZ0Zv
ckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdG
b3JMb29rdXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJUDi
gJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2Vs
ZWN0ZWRDRlN0cmluZy5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJM
b29rIFVwIOKAnDxzZWxlY3Rpb24+4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0
aCBzZWxlY3RlZCB3b3JkIikucmVwbGFjZSgiPHNlbGVjdGlvbj4iLCB0cnVuY2F0ZWRTdHJpbmdG
b3JMb29rdXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykpOwpAQCAtNzM4LDggKzczNyw3IEBAIFN0
cmluZyBrZXlnZW5NZW51SXRlbTIwNDgoKQogCiBTdHJpbmcga2V5Z2VuS2V5Y2hhaW5JdGVtTmFt
ZShjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0
Q0ZTdHJpbmcoQWRvcHRDRiwgaG9zdC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yg
a2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0Q0ZTdHJpbmcu
Z2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygi
S2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlH
RU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNlbmRpZgpAQCAt
NzYyLDggKzc2MCw3IEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAjaWYgVVNFKENGKQogI2lmICFQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDYwCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNGU3RyaW5nKEFkb3B0Q0Ys
IGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4g
bG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CisgICAgUmV0YWluUHRyPENG
TG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CiAgICAg
UmV0YWluUHRyPENGTnVtYmVyRm9ybWF0dGVyUmVmPiBmb3JtYXR0ZXIoQWRvcHRDRiwgQ0ZOdW1i
ZXJGb3JtYXR0ZXJDcmVhdGUoMCwgbG9jYWxlLmdldCgpLCBrQ0ZOdW1iZXJGb3JtYXR0ZXJEZWNp
bWFsU3R5bGUpKTsKIAogICAgIGludCB3aWR0aEludCA9IHNpemUud2lkdGgoKTsKQEAgLTc3NCw3
ICs3NzEsNyBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBJbnRTaXplJiBzaXplKQogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gaGVpZ2h0KEFkb3B0
Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZoZWlnaHRJbnQpKTsKICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhlaWdodFN0cmluZyhBZG9wdENGLCBDRk51bWJlckZv
cm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhOdW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWlnaHQu
Z2V0KCkpKTsKIAotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklO
RygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFn
ZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5n
LmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAICVAw5clQCBwaXhlbHMi
LCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRp
b24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgd2lk
dGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CiAjZWxzZQogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBmaWxlbmFtZS5jcmVhdGVD
RlN0cmluZygpKTsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJ
TkcoIiVAICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1h
Z2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmlu
Zy5nZXQoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCmluZGV4IDFiOGQw
MDZmMjUxOWFhOGE4ZjNhOGM0NTBlZmQyNzM0MThhZjQyODQuLjczMGVkYzE1ZmU5MWJjOTI3NzA4
NWNjYzI4ODdiMDc5MDY3ODBiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcApAQCAtNDYsOCArNDYsNyBAQCBzdGF0aWMg
Ym9vbCBtYWluQnVuZGxlSXNFcXVhbFRvKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllclN0
cmluZykKICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlSWRlbnRpZmllclRvQ29tcGFyZShB
ZG9wdENGLCBidW5kbGVJZGVudGlmaWVyU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJl
dHVybiBDRlN0cmluZ0NvbXBhcmUoYnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmllclRv
Q29tcGFyZS5nZXQoKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG87CisgICAgcmV0dXJuIENGU3Ry
aW5nQ29tcGFyZShidW5kbGVJZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyU3RyaW5nLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oYnVuZGxlSWRlbnRpZmllclN0cmluZyk7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKaW5kZXggOGVmNTBl
ZWIwY2IwODRkMWI5YjIzYjg3YzNiZmE4OTgzOTJiOGEyZC4uYzE4NzA2NjMzNTY1MDU1NzlhZmQ3
YjYxYWMxNzM5MDQwNjQ0ZjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvRmlsZVN5c3RlbUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxl
U3lzdGVtQ0YuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1N0
cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0
cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVh
dGVDRlN0cmluZygpOwogCiAgICAgaWYgKCFjZlN0cmluZykKICAgICAgICAgcmV0dXJuIENTdHJp
bmcoKTsKQEAgLTYzLDggKzYzLDcgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29u
c3QgU3RyaW5nJiBwYXRoKQogI2Vsc2UKICAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhT
dHlsZTsKICNlbmRpZgotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0Q0YsIENG
VVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4oQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmluZygpKS5nZXQoKSwgcGF0aFN0eWxlLCBG
QUxTRSkpOworICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0Q0YsIENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0
aFN0eWxlLCBGQUxTRSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKaW5kZXggOTdmYjBiNjA5NDY4ZjRlZDM1YjFlMTkzOGQ5
OGJiZDg5NDIyMjU4Ni4uODU2YTRmY2FkZWQyZjBiNjI2MGY1ZTkyYmUxMTQ1ZGMxMmE1Yzg0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FBbmltYXRpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcApAQCAtMTUxLDggKzE1MSw3IEBA
IFBsYXRmb3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oQW5pbWF0aW9uVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhCiAgICAgZWxzZQogICAgICAgICBtX2FuaW1hdGlvbi5h
ZG9wdENGKENBQ0ZBbmltYXRpb25DcmVhdGUoa0NBQ0ZLZXlmcmFtZUFuaW1hdGlvbikpOwogICAg
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXlQYXRoLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgp
LCBzLmdldCgpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQo
KSwga2V5UGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1h
dGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDcwMTY4YjIxMDRkYjM2OWRhMDc1N2Ex
MTQ0NjIyMTExYmMzMDYxZjAuLmRkNjE2MzM3ZTkzNjZlYjc5Yzk2YzY3MmI3MzkzYjY5MjQzNmZj
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNzYsMTAgKzE3Niw4IEBAIHZv
aWQgUGxhdGZvcm1DQUxheWVyOjphbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2lu
VGltZSkKIHN0YXRpYyB2b2lkIHJlc3VibWl0QWxsQW5pbWF0aW9ucyhQbGF0Zm9ybUNBTGF5ZXIq
IGxheWVyKQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgaXQtPmtl
eS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKGxheWVy
LT5wbGF0Zm9ybUxheWVyKCksIHMuZ2V0KCksIGl0LT52YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24o
KSk7Ci0gICAgfQorICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5p
bWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRpb25zKCkuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSwgaXQtPmtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBpdC0+dmFs
dWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZW5z
dXJlQW5pbWF0aW9uc1N1Ym1pdHRlZCgpCkBAIC0yOTcsOCArMjk1LDcgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OmFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1D
QUFuaW1hdGlvbioKICAgICAvLyBBZGQgaXQgdG8gdGhlIGFuaW1hdGlvbiBsaXN0CiAgICAgbV9h
bmltYXRpb25zLmFkZChrZXksIGFuaW1hdGlvbik7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHMoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZMYXllckFkZEFu
aW1hdGlvbihtX2xheWVyLmdldCgpLCBzLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0
aW9uKCkpOworICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBrZXkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBpdCBzbyB3
ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CkBAIC0zMTIsOCArMzA5LDcgQEAg
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKICAgICAvLyBSZW1vdmUgaXQgZnJvbSB0aGUgYW5pbWF0aW9uIGxpc3QKICAgICBtX2Fu
aW1hdGlvbnMucmVtb3ZlKGtleSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRv
cHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZMYXllclJlbW92ZUFuaW1hdGlv
bihtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBDQUNGTGF5ZXJSZW1vdmVBbmltYXRpb24o
bV9sYXllci5nZXQoKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgLy8gV2Ug
ZG9uJ3QgInJlbW92ZSIgYSBsYXllciBmcm9tIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3Qgd2hl
biBpdCBsb3NlcyBhbiBhbmltYXRpb24uCiAgICAgLy8gVGhlcmUgbWF5IGJlIG90aGVyIGFjdGl2
ZSBhbmltYXRpb25zIG9uIHRoZSBsYXllciBhbmQgaWYgYW4gYW5pbWF0aW9uCkBAIC01ODYsOCAr
NTgyLDcgQEAgU3RyaW5nIFBsYXRmb3JtQ0FMYXllcjo6bmFtZSgpIGNvbnN0CiAKIHZvaWQgUGxh
dGZvcm1DQUxheWVyOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAg
IENBQ0ZMYXllclNldE5hbWUobV9sYXllci5nZXQoKSwgcy5nZXQoKSk7CisgICAgQ0FDRkxheWVy
U2V0TmFtZShtX2xheWVyLmdldCgpLCB2YWx1ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsLmNwcAppbmRleCBjNDMwY2YyODQ2MTQ2NjQ3YmY2MWZjN2E3MTYyOWY1MmYwMjFmYTZh
Li4xNTI3NWIzYWU1ZmU1YzFjNmE0ZjhmODRmZDY2OTBkMjFmY2Y1OGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp1cGRhdGVUaWxlcygpCiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9ICJUaWxlICgiICsgU3RyaW5nOjpudW1iZXIo
aSkgKyAiLCIgKyBTdHJpbmc6Om51bWJlcihqKSArICIpIjsKLSAgICAgICAgICAgIENBQ0ZMYXll
clNldE5hbWUodGlsZSwgUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBuYW1lLmNyZWF0
ZUNGU3RyaW5nKCkpLmdldCgpKTsKKyAgICAgICAgICAgIENBQ0ZMYXllclNldE5hbWUodGlsZSwg
bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAppbmRleCAyMWU5ZGI0YzI4ZDlhMjU1MTM1MjBhY2U3MDg0MDNhYzVlNzdhYjkzLi5k
ZDM3ODE1OTdmODVlYjYxMGRjYzQ3MWVjODMxNTNlMGFiZDJjZWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAt
Mzc3LDggKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYganBlZ1VUSSgpCiBzdGF0
aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBtaW1lVHlwZUNGU3RyaW5nKEFkb3B0Q0YsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVBy
ZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGVDRlN0
cmluZy5nZXQoKSwgMCkpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgMCkpOwogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAv
LyBJdCBpcyB1bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCmlu
ZGV4IGJkNTBhMzE3NWYzYjQyNWE4ODI2Y2QyYTU2YTYyZTIxOTM2OTYzMzcuLjk1M2JjYjlkMjhh
ZDBlYjc1YWIzODgxM2MzNDM5NDU1ZjEyNjJjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQpAQCAtMzMsMTYg
KzMzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VT
b3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdXRpcmVmKEFkb3B0Q0YsIHV0aS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG1pbWUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFz
cyh1dGlyZWYuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAgICByZXR1cm4gbWltZS5n
ZXQoKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNz
KHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSkuZ2V0KCk7
CiB9CiAKIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoY29uc3Qg
U3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlKEFkb3B0Q0Ys
IHV0aS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVu
c2lvbihBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHR5cGUuZ2V0KCks
IGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9uLmdl
dCgpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3Mo
dXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24p
KS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVU
ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0Lm1tCmluZGV4IDRjYjg3NmMzNjVlYzlkZDcxNjBhMWQyZmRlMDll
N2YzMmYwMGJhYzkuLjU3ZjcwZmZmMjhlNzRmNmZlMTU3Nzg3MzVjYjAzMjA0N2FhMzE2MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9j
b21wbGV4VGV4dFJ1bnMuYXBwZW5kKENvbXBsZXhUZXh0UnVuOjpjcmVhdGUobV9mb250LnByaW1h
cnlGb250KCksIGNwLCBzdHJpbmdMb2NhdGlvbiArIHJ1blJhbmdlLmxvY2F0aW9uLCBydW5SYW5n
ZS5sZW5ndGgsIG1fcnVuLmx0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBydW5Gb250RGF0
YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YShtX2ZvbnQuZm9udERlc2NyaXB0aW9u
KCksIGZvbnROYW1lLmdldCgpLCBmYWxzZSwgRm9udENhY2hlOjpEb05vdFJldGFpbikuZ2V0KCk7
CisgICAgICAgICAgICAgICAgICAgIHJ1bkZvbnREYXRhID0gZm9udENhY2hlKCktPmdldENhY2hl
ZEZvbnREYXRhKG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgU3RyaW5nKGZvbnROYW1lLmdldCgp
KSwgZmFsc2UsIEZvbnRDYWNoZTo6RG9Ob3RSZXRhaW4pLmdldCgpOwogI2lmICFQTEFURk9STShX
WCkKICAgICAgICAgICAgICAgICAgICAgLy8gQ29yZSBUZXh0IG1heSBoYXZlIHVzZWQgYSBmb250
IHRoYXQgaXMgbm90IGtub3duIHRvIE5TRm9udE1hbmFnZXIuIEluIHRoYXQgY2FzZSwgZmFsbCBi
YWNrIG9uCiAgICAgICAgICAgICAgICAgICAgIC8vIHVzaW5nIHRoZSBmb250IGFzIHJldHVybmVk
LCBldmVuIHRob3VnaCBpdCBtYXkgbm90IGhhdmUgdGhlIGJlc3QgTlNGb250UmVuZGVyaW5nTW9k
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IGJk
ODgwMjA0NDFiMGU5YWUwMGJhZGFmMzZiMmY0ZjVhNmE2YmVhZTcuLmZkNGFiOTliMTc0NzVkNDE0
YjIxYWEzZWNkNTdlNjE4MGEyOGZjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0NsaXBib2FyZE1hYy5tbQpAQCAtOTksMTEgKzk5LDEwIEBAIHN0YXRpYyBTdHJpbmcgY29jb2FU
eXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogICAgIC8vIFRy
eSBVVEkgbm93CiAgICAgU3RyaW5nIG1pbWVUeXBlID0gcVR5cGU7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZp
ZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSwg
TlVMTCkpOwotICAgIGlmICh1dGlUeXBlKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIHBiVHlwZSA9
IFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xh
c3NOU1Bib2FyZFR5cGUpOworICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aVR5cGUg
PSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgTlVMTCkpKSB7Cisg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGJUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRU
eXBlKSk7CiAgICAgICAgIGlmIChwYlR5cGUpCi0gICAgICAgICAgICByZXR1cm4gcGJUeXBlOwor
ICAgICAgICAgICAgcmV0dXJuIHBiVHlwZS5nZXQoKTsKICAgICB9CiAKICAgICAvLyBObyBtYXBw
aW5nLCBqdXN0IHBhc3MgdGhlIHdob2xlIHN0cmluZyB0aG91Z2gKQEAgLTExMiwxMSArMTExLDgg
QEAgc3RhdGljIFN0cmluZyBjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogCiBzdGF0aWMgU3RyaW5nIHV0aVR5cGVGcm9tQ29jb2FUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGVDRiA9IGFkb3B0
Q0YodHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0
aVR5cGUoQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc05TUGJvYXJkVHlwZSwgdHlwZUNGLmdldCgpLCAwKSk7Ci0gICAgaWYgKHV0aVR5cGUp
IHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBVVFR5
cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTUlN
RVR5cGUpKTsKLSAgICAgICAgaWYgKG1pbWVUeXBlKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aVR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJG
b3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUsIHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgMCkpKSB7CisgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0g
YWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtV
VFRhZ0NsYXNzTUlNRVR5cGUpKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcobWltZVR5cGUu
Z2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwCmluZGV4IDBhMWE0ZDhjNzUx
NGRhOTEzNzM5YmU1ZTM0NDZkNDk3ZDk1YTQ3OGIuLmU1OGQ5YTk0OTk2OTI3YjliYjViOWIzNDYx
NDk3OGY1YWJmNGYzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMuY3BwCkBAIC02MCwxMSArNjAsNyBAQCBTdHJpbmcgc2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3Ry
aW5nJiBjaAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjaGFsbGVuZ2VTdHJpbmdDRihBZG9wdENGLCBjaGFsbGVuZ2VTdHJpbmcu
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlEZXNjcmlw
dGlvbihBZG9wdENGLCBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0KEFkb3B0Q0YsIHdr
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemUsIGNoYWxsZW5nZVN0cmlu
Z0NGLmdldCgpLCBrZXlEZXNjcmlwdGlvbi5nZXQoKSkpOwotCi0gICAgcmV0dXJuIHJlc3VsdC5n
ZXQoKTsKKyAgICByZXR1cm4gYWRvcHRDRih3a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga2V5
Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSku
Z2V0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCmluZGV4IDg3YTNmYWI4YTc0MzdhZTEwYWY0Mzlh
NGU0ZTAyY2QyZTFhMzBkZWIuLjdiMWQ0ZmE0Nzg3ZjFkMWUwZDllM2E0ZGU4MWYzZWI1NDZkMGNl
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9B
dXRoZW50aWNhdGlvbkNGLmNwcApAQCAtMTE5LDEzICsxMTksNyBAQCBDRlVSTENyZWRlbnRpYWxS
ZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCiAgICAgICAgIHJl
dHVybiBDRlVSTENyZWRlbnRpYWxDcmVhdGVXaXRoSWRlbnRpdHlBbmRDZXJ0aWZpY2F0ZUFycmF5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvcmVDcmVkZW50aWFsLmlkZW50aXR5KCksIGNvcmVDcmVk
ZW50aWFsLmNlcnRpZmljYXRlcygpLCBwZXJzaXN0ZW5jZSk7CiAjZW5kaWYKIAotICAgIENGU3Ry
aW5nUmVmIHVzZXIgPSBjb3JlQ3JlZGVudGlhbC51c2VyKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAg
ICBDRlN0cmluZ1JlZiBwYXNzd29yZCA9IGNvcmVDcmVkZW50aWFsLnBhc3N3b3JkKCkuY3JlYXRl
Q0ZTdHJpbmcoKTsKLSAgICBDRlVSTENyZWRlbnRpYWxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVkZW50
aWFsQ3JlYXRlKDAsIHVzZXIsIHBhc3N3b3JkLCAwLCBwZXJzaXN0ZW5jZSk7Ci0gICAgQ0ZSZWxl
YXNlKHVzZXIpOwotICAgIENGUmVsZWFzZShwYXNzd29yZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxDcmVhdGUoMCwgY29yZUNyZWRlbnRpYWwudXNl
cigpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVDcmVkZW50aWFsLnBhc3N3b3JkKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwgcGVyc2lzdGVuY2UpOwogfQogCiBDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkKQEAg
LTE5MiwxMyArMTg2LDcgQEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIAotICAgIENGU3RyaW5nUmVmIGhvc3QgPSBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0
ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZTdHJpbmdSZWYgcmVhbG0gPSBjb3JlU3BhY2UucmVhbG0oKS5j
cmVhdGVDRlN0cmluZygpOwotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHJlc3VsdCA9IENG
VVJMUHJvdGVjdGlvblNwYWNlQ3JlYXRlKDAsIGhvc3QsIGNvcmVTcGFjZS5wb3J0KCksIHNlcnZl
clR5cGUsIHJlYWxtLCBzY2hlbWUpOwotICAgIENGUmVsZWFzZShob3N0KTsKLSAgICBDRlJlbGVh
c2UocmVhbG0pOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIENGVVJMUHJv
dGVjdGlvblNwYWNlQ3JlYXRlKDAsIGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVyVHlwZSwgY29yZVNwYWNlLnJlYWxtKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgc2NoZW1lKTsKIH0KIAogQ3JlZGVudGlhbCBjb3JlKENGVVJM
Q3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IDVkNmQ3MzkyNmM0NGVl
NDg4MDE4MmZmZmU4OTgxYWNmMzhhNzZiMGEuLjUwMTc5NzFkZTE0YTQ1NGE4NGY5YTM4OGJiNDdm
NjQ4NDg5MWRhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llSmFyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBzZXRDb29r
aWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgIC8vIGNvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMgZG9lc24ndCBwYXJz
ZSBjb29raWVzIHdpdGhvdXQgYSB2YWx1ZQogICAgIFN0cmluZyBjb29raWVTdHJpbmcgPSB2YWx1
ZS5jb250YWlucygnPScpID8gdmFsdWUgOiB2YWx1ZSArICI9IjsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gY29va2llU3RyaW5nQ0YoQWRvcHRDRiwgY29va2llU3RyaW5nLmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29va2llU3RyaW5nQ0YgPSBj
b29raWVTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBoZWFkZXJGaWVsZHNDRihBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwKICAgICAgICAgKGNvbnN0IHZvaWQqKikmc19zZXRDb29raWVLZXlDRiwgKGNv
bnN0IHZvaWQqKikmY29va2llU3RyaW5nQ0YsIDEsCiAgICAgICAgICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKaW5kZXggM2Y5
MDFhNTQxZGUwMGVlYmVjMjQzMjJkMDQzOTZlZTRhMjIwNWZiNi4uY2UxNDUxOTA5YWVkN2UyYjRk
ZWY5Y2UwZDliYjQyOTM0MThkYWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNDRk5ldC5jcHAKQEAgLTkwLDEyICs5MCwxMiBAQCB2b2lkIEROU1Jlc29s
dmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9z
dG5hbWVDRihBZG9wdENGLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZIb3N0UmVmPiBob3N0KEFkb3B0Q0YsIENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3Ru
YW1lQ0YuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihD
Rkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7
CiAgICAgaWYgKCFob3N0KSB7CiAgICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorCiAgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0g
eyAwLCAwLCAwLCAwLCAwIH07CiAgICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtS
ZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCku
CiAgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50
Q2FsbGJhY2ssICZjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCAzNTRmZDI3NTg2NDIwN2I3OWVm
YzIxYWY3ZDE5OWRiMGIzMDEyMGI0Li41ODk1ZWQ5OTM0NjY1ZWY2MzBiZTM2NTE3MTYxNTE1MmU0
MGY4M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xNDUsMTMgKzE0NSwxMSBAQCBDRkVycm9yUmVmIFJl
c291cmNlRXJyb3I6OmNmRXJyb3IoKSBjb25zdAogICAgIGlmICghbV9wbGF0Zm9ybUVycm9yKSB7
CiAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyhBZG9w
dENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgICAg
ICBpZiAoIW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvY2FsaXplZERlc2NyaXB0aW9uU3RyaW5nKEFkb3B0Q0Ys
IG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6ZWREZXNj
cmlwdGlvbktleSwgbG9jYWxpemVkRGVzY3JpcHRpb25TdHJpbmcuZ2V0KCkpOwotICAgICAgICB9
CisgICAgICAgIGlmICghbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6
ZWREZXNjcmlwdGlvbktleSwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKIAogICAgICAgICBpZiAoIW1fZmFpbGluZ1VSTC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmFpbGluZ1VSTFN0cmluZyhBZG9wdENGLCBt
X2ZhaWxpbmdVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcgPSBtX2ZhaWxpbmdVUkwuY3JlYXRlQ0ZTdHJpbmco
KTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWls
aW5nVVJMU3RyaW5nS2V5LCBmYWlsaW5nVVJMU3RyaW5nLmdldCgpKTsKICAgICAgICAgICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZygwLCBm
YWlsaW5nVVJMU3RyaW5nLmdldCgpLCAwKSk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTEtleSwgdXJsLmdldCgpKTsKQEAgLTE2Miw4
ICsxNjAsNyBAQCBDRkVycm9yUmVmIFJlc291cmNlRXJyb3I6OmNmRXJyb3IoKSBjb25zdAogICAg
ICAgICAgICAgd2tTZXRTU0xQZWVyQ2VydGlmaWNhdGVEYXRhKHVzZXJJbmZvLmdldCgpLCBtX2Nl
cnRpZmljYXRlLmdldCgpKTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBkb21haW5TdHJpbmcoQWRvcHRDRiwgbV9kb21haW4uY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgICAgIG1fcGxhdGZvcm1FcnJvci5hZG9wdENGKENGRXJyb3JDcmVhdGUoMCwgZG9t
YWluU3RyaW5nLmdldCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKKyAgICAgICAg
bV9wbGF0Zm9ybUVycm9yID0gYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIG1fZG9tYWluLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXJyb3JDb2RlLCB1c2VySW5mby5nZXQoKSkpOwogICAgIH0K
IAogICAgIHJldHVybiBtX3BsYXRmb3JtRXJyb3IuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApp
bmRleCAwMWU4YjhhZTVjMGQxYzZhNmE4ZjAzMzA4NWU5MGYwMTBiYzFmN2M2Li44MDcwYzI1ODJi
N2NhYTBkZTZmZTM1ZjMwNzQzZjc4YjIwYjc3YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAg
LTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFS
ZWY+ID4mIGNsaWVudENlcnRzKCkKIAogc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENG
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7Ci0gICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1
bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7Cisg
ICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1F
VHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgIAogICAgIENGVVJMUmVzcG9u
c2VTZXRNSU1FVHlwZShyZXNwb25zZSwgZGVmYXVsdE1JTUVUeXBlU3RyaW5nKTsKIH0KQEAgLTE2
MSw4ICsxNjEsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVS
TENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgaWYgKGNmUmVkaXJlY3RS
ZXNwb25zZSkgewogICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxS
ZXNwb25zZUdldEhUVFBSZXNwb25zZShjZlJlZGlyZWN0UmVzcG9uc2UpOwogICAgICAgICBpZiAo
aHR0cE1lc3NhZ2UgJiYgQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29kZShodHRwTWVz
c2FnZSkgPT0gMzA3KSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RI
VFRQTWV0aG9kKEFkb3B0Q0YsIGhhbmRsZS0+bGFzdEhUVFBNZXRob2QoKS5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmV3TWV0aG9kKEFkb3B0
Q0YsIENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QpKTsKKyAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBNZXRob2QgPSBoYW5kbGUtPmxh
c3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbmV3TWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVl
c3RNZXRob2QoY2ZSZXF1ZXN0KSk7CiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlV2l0
aE9wdGlvbnMobGFzdEhUVFBNZXRob2QuZ2V0KCksIG5ld01ldGhvZC5nZXQoKSwgQ0ZSYW5nZU1h
a2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgobGFzdEhUVFBNZXRob2QuZ2V0KCkpKSwga0NGQ29tcGFy
ZUNhc2VJbnNlbnNpdGl2ZSkpIHsKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
VVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRl
TXV0YWJsZUNvcHkoMCwgY2ZSZXF1ZXN0KSk7CiAjaWYgVVNFKENGVVJMU1RPUkFHRVNFU1NJT05T
KQpAQCAtMTc1LDkgKzE3NSw4IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1
ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYKICAgICAgICAgICAg
ICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkobXV0YWJsZVJlcXVlc3QuZ2V0KCksIGJvZHkp
OwogCiAgICAgICAgICAgICAgICAgU3RyaW5nIG9yaWdpbmFsQ29udGVudFR5cGUgPSBoYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLmh0dHBDb250ZW50VHlwZSgpOwotICAgICAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxDb250ZW50VHlwZUNGKEFkb3B0Q0YsIG9yaWdpbmFs
Q29udGVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFvcmln
aW5hbENvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVlc3QuZ2V0KCksIENGU1RSKCJD
b250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZUNGLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVl
c3QuZ2V0KCksIENGU1RSKCJDb250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBtdXRhYmxl
UmVxdWVzdC5nZXQoKTsKICAgICAgICAgICAgIH0KQEAgLTYwNywxMCArNjA2LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGwKICNlbmRpZgogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkg
JiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHVzZXIoQWRvcHRDRiwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHBhc3MoQWRvcHRDRiwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsKEFk
b3B0Q0YsCi0gICAgICAgICAgICBDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdXNlci5nZXQoKSwgcGFzcy5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50
aWFsID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7CiAgICAgICAg
IAogICAgICAgICBLVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVy
ZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCkBAIC0xMDA1LDcgKzEwMDEsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGJhc2UgPSBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkgPyBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJEZWZhdWx0QmFzZSgpIDogcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2ZJZGVudGlmaWVyKEFkb3B0Q0YsIFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3Npbmci
KS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRp
ZmllciA9IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygp
OwogCiAgICAgcHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKCkgPSBjcmVhdGVQcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAppbmRleCA4Y2ZmODdjYTBkNThlYTJlNTIzZjM3MzBkNmI0YTc3MzBiMDZiZTRiLi4wZTNkZWNl
MDE4MjdlYzVhZDFiNmI1ODFlMTE2MjgyOWI0MTMwYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cApAQCAtMTE5LDEzICsxMTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0SGVhZGVyRmllbGRz
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3QgSFRUUEhlYQogICAgIH0KIAog
ICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlcXVlc3RIZWFkZXJzLmVu
ZCgpOwotICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXF1ZXN0
SGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYg
a2V5ID0gaXQtPmtleS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBDRlN0cmluZ1JlZiB2YWx1
ZSA9IGl0LT52YWx1ZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LCBrZXksIHZhbHVlKTsKLSAgICAgICAgQ0ZSZWxl
YXNlKGtleSk7Ci0gICAgICAgIENGUmVsZWFzZSh2YWx1ZSk7Ci0gICAgfQorICAgIGZvciAoSFRU
UEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXF1ZXN0SGVhZGVycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZh
bHVlKHJlcXVlc3QsIGl0LT5rZXkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgaXQt
PnZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQpAQCAtMTQ2LDggKzE0MSw3IEBAIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgd2tTZXRSZXF1ZXN0
U3RvcmFnZVNlc3Npb24oUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRTdG9yYWdlU2Vzc2lvbigpLCBj
ZlJlcXVlc3QpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlcXVlc3RN
ZXRob2QoQWRvcHRDRiwgaHR0cE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGVVJM
UmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgcmVxdWVzdE1ldGhvZC5nZXQo
KSk7CisgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0LCBodHRw
TWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICBpZiAoaHR0cFBpcGVsaW5p
bmdFbmFibGVkKCkpCiAgICAgICAgIHdrU2V0SFRUUFBpcGVsaW5pbmdQcmlvcml0eShjZlJlcXVl
c3QsIHRvSFRUUFBpcGVsaW5pbmdQcmlvcml0eShtX3ByaW9yaXR5KSk7CkBAIC0xNjQsNyArMTU4
LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAg
ICB1bnNpZ25lZCBmYWxsYmFja0NvdW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVu
Y29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5
UmVmPiBlbmNvZGluZ0ZhbGxiYWNrcyhBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0NvdW50LCAwKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSAhPSBmYWxsYmFja0NvdW50OyArK2kpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBlbmNvZGluZ05hbWUoQWRvcHRDRiwgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAg
IENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5h
bWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZS5nZXQoKSk7CiAgICAgICAgIGlmIChlbmNvZGluZyAh
PSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oZW5jb2RpbmcpKTsKQEAgLTIxMyw3ICsyMDcsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEy
OD4gdmFsdWVzKGhlYWRlckNvdW50KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhoZWFkZXJzLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKLSAgICAgICAgICAgIG1faHR0cEhlYWRl
ckZpZWxkcy5zZXQoKENGU3RyaW5nUmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1ZXNbaV0p
OworICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChTdHJpbmcoKENGU3RyaW5nUmVm
KWtleXNbaV0pLCBTdHJpbmcoKENGU3RyaW5nUmVmKXZhbHVlc1tpXSkpOwogICAgICAgICBDRlJl
bGVhc2UoaGVhZGVycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKaW5kZXggYTQ1
YmVlZGM0MzMwMDc3MmIzOWNhZWUyYjM5NDZjYWMzZGYwYmYzMS4uMzgyMTZkNGQyMGJmOTgxMTNm
M2FlZDIzNmNhNTE2ZmVkYzA0OTA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcApAQCAtNTEs
OSArNTEsNyBAQCBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9u
c2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewogICAg
ICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBtX3VybC5jcmVhdGVDRlVSTCgp
KTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBtX21p
bWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHRleHRFbmNvZGluZ05hbWUoQWRvcHRDRiwgbV90ZXh0RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICBtX2NmUmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRl
KDAsIHVybC5nZXQoKSwgbWltZVR5cGUuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCB0
ZXh0RW5jb2RpbmdOYW1lLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CisgICAg
ICAgIG1fY2ZSZXNwb25zZS5hZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgp
LCBtX21pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVu
Z3RoLCBtX3RleHRFbmNvZGluZ05hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2Fj
aGVTdG9yYWdlQWxsb3dlZCkpOwogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0
KCk7CkBAIC0xMDUsNyArMTAzLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxh
enlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUNvbW1vbkhlYWRlckZpZWxkczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgQ0ZTdHJp
bmdSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQ
cmVzZW50KGhlYWRlcnMuZ2V0KCksIGNvbW1vbkhlYWRlckZpZWxkc1tpXSwgKGNvbnN0IHZvaWQg
KiopJnZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChj
b21tb25IZWFkZXJGaWVsZHNbaV0sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9odHRw
SGVhZGVyRmllbGRzLnNldChTdHJpbmcoY29tbW9uSGVhZGVyRmllbGRzW2ldKSwgU3RyaW5nKHZh
bHVlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9odHRw
U3RhdHVzQ29kZSA9IDA7CkBAIC0xMjMsNyArMTIxLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpCiAgICAgICAgICAgICBWZWN0
b3I8Y29uc3Qgdm9pZCosIDEyOD4gdmFsdWVzKGhlYWRlckNvdW50KTsKICAgICAgICAgICAgIENG
RGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVycy5nZXQoKSwga2V5cy5kYXRhKCksIHZh
bHVlcy5kYXRhKCkpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWFkZXJDb3Vu
dDsgKytpKQotICAgICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoKENGU3RyaW5n
UmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pOworICAgICAgICAgICAgICAgIG1f
aHR0cEhlYWRlckZpZWxkcy5zZXQoU3RyaW5nKChDRlN0cmluZ1JlZilrZXlzW2ldKSwgU3RyaW5n
KChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAKaW5kZXggZDg2Yzc2YmM2ZjQ1YzE4MTY0OGUwYTc3NmNkMzli
YWU4OTA4NDBkNi4uNGE3Y2Q5MDJhZTlmMDI4N2Q4OThkOTJiZDk4NWRkNzY2ZDQyYTE3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1I
YW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcygpCiAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUg
PT0gVW5rbm93bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBob3N0KEFkb3B0Q0YsIG1fdXJsLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3QgPSBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
IAogICAgIC8vIENyZWF0aW5nIHN0cmVhbXMgdG8gZmluYWwgZGVzdGluYXRpb24sIG5vdCB0byBw
cm94eS4KICAgICBDRlJlYWRTdHJlYW1SZWYgcmVhZFN0cmVhbSA9IDA7CkBAIC0zNTksMTIgKzM1
OSwxMCBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENG
SFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKICAgICBTdHJpbmcgcGFzc3dvcmQ7CiAgICAg
aWYgKCFtX3NlbnRTdG9yZWRDcmVkZW50aWFscyAmJiBnZXRTdG9yZWRDT05ORUNUUHJveHlDcmVk
ZW50aWFscyhwcm90ZWN0aW9uU3BhY2UsIGxvZ2luLCBwYXNzd29yZCkpIHsKICAgICAgICAgLy8g
VHJ5IHRvIGFwcGx5IHN0b3JlZCBjcmVkZW50aWFscywgaWYgd2UgaGF2ZW4ndCB0cmllZCB0aG9z
ZSBhbHJlYWR5LgotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvZ2luQ0YoQWRvcHRD
RiwgbG9naW4uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcGFzc3dvcmRDRihBZG9wdENGLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAg
ICAgLy8gQ3JlYXRpbmcgYSB0ZW1wb3JhcnkgcmVxdWVzdCB0byBtYWtlIENGTmV0d29yayBhcHBs
eSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5hdGVseSwgdGhpcyBjYW5ub3Qgd29yayB3aXRo
IE5UTE0gYXV0aGVudGljYXRpb24uCisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSByZXF1
ZXN0IHRvIG1ha2UgQ0ZOZXR3b3JrIGFwcGx5IGNyZWRlbnRpYWxzIHRvIGl0LiBVbmZvcnR1bmF0
ZWx5LCB0aGlzIGNhbm5vdCB3b3JrIHdpdGggTlRMTSBhdXRoZW50aWNhdGlvbi4KICAgICAgICAg
UmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IGR1bW15UmVxdWVzdChBZG9wdENGLCBDRkhUVFBN
ZXNzYWdlQ3JlYXRlUmVxdWVzdCgwLCBDRlNUUigiR0VUIiksIG1faHR0cHNVUkwuZ2V0KCksIGtD
RkhUVFBWZXJzaW9uMV8xKSk7CiAKLSAgICAgICAgQm9vbGVhbiBhcHBsaWVkQ3JlZGVudGlhbHMg
PSBDRkhUVFBNZXNzYWdlQXBwbHlDcmVkZW50aWFscyhkdW1teVJlcXVlc3QuZ2V0KCksIGF1dGhl
bnRpY2F0aW9uLmdldCgpLCBsb2dpbkNGLmdldCgpLCBwYXNzd29yZENGLmdldCgpLCAwKTsKKyAg
ICAgICAgQm9vbGVhbiBhcHBsaWVkQ3JlZGVudGlhbHMgPSBDRkhUVFBNZXNzYWdlQXBwbHlDcmVk
ZW50aWFscyhkdW1teVJlcXVlc3QuZ2V0KCksIGF1dGhlbnRpY2F0aW9uLmdldCgpLCBsb2dpbi5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAw
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhcHBsaWVkQ3JlZGVudGlhbHMsIGFwcGxpZWRDcmVk
ZW50aWFscyk7CiAKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcm94eUF1dGhvcml6
YXRpb25TdHJpbmcoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZhbHVlKGR1
bW15UmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIlByb3h5LUF1dGhvcml6YXRpb24iKSkpOwpAQCAtMzg5
LDcgKzM4Nyw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGVudGlh
bHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogQ0ZTdHJpbmdSZWYgU29ja2V0U3Ry
ZWFtSGFuZGxlOjpjb3B5Q0ZTdHJlYW1EZXNjcmlwdGlvbih2b2lkKiBpbmZvKQogewogICAgIFNv
Y2tldFN0cmVhbUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxl
Kj4oaW5mbyk7Ci0gICAgcmV0dXJuIFN0cmluZygiV2ViS2l0IHNvY2tldCBzdHJlYW0sICIgKyBo
YW5kbGUtPm1fdXJsLnN0cmluZygpKS5jcmVhdGVDRlN0cmluZygpOworICAgIHJldHVybiBTdHJp
bmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxlLT5tX3VybC5zdHJpbmcoKSkuY3Jl
YXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiB9CiAKIHN0cnVjdCBNYWluVGhyZWFkRXZlbnRDYWxs
YmFja0luZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4IDkzMjE2Y2I1NWU4NTc3MzEzNmYzZThj
M2EwN2NlNmZiNTU2ZTA2ZDIuLmU2OTM0ODQ4MWFiMGEwMjEzNzk0ZGEyNGVmYmNjNGY1NmRjMDA4
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KQEAgLTE2Myw5ICsxNjMsOSBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgICAgICBOU011dGFibGVBcnJh
eSAqZW5jb2RpbmdGYWxsYmFja3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgICAgICB1
bnNpZ25lZCBjb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGNvdW50
OyArK2kpIHsKLSAgICAgICAgICAgIENGU3RyaW5nUmVmIGVuY29kaW5nTmFtZSA9IG1fcmVzcG9u
c2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENGU3RyaW5nQ29u
dmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElBTkFDaGFyU2V0
TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lKSk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UoZW5j
b2RpbmdOYW1lKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZW5jb2RpbmdO
YW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtp
XS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuc0VuY29kaW5n
ID0gQ0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb05TU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdDb252
ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUuZ2V0KCkpKTsKKwogICAg
ICAgICAgICAgaWYgKG5zRW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpCiAg
ICAgICAgICAgICAgICAgW2VuY29kaW5nRmFsbGJhY2tzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVt
YmVyV2l0aFVuc2lnbmVkTG9uZzpuc0VuY29kaW5nXV07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbQppbmRleCA2YWE3NmY2ZGQ3ODRkYTA5ZDdiZmY3ZTFlNjg1NWU3NWNhZGFlOTljLi5mOTcx
MGIyZGQyNTE4NDYyMDE1MTMyNDJmNDBmM2E0MTI2NGYyMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
CkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKICAgICB9CiAgICAgCiAgICAgaWYgKCFyZXN1bHQpIHsK
LSAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IFdlYkNv
cmU6OmRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpkZWZhdWx0TUlNRVR5
cGUoKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAgICAgcmVzdWx0ID0gZGVmYXVs
dE1JTUVUeXBlU3RyaW5nOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKaW5kZXggNGUzZmNlZDQ0NDY0OWE5YzVjZWYzNjRl
YzA2MmZlOGRiMTg4NGYwOS4uMGY2NjhkMTBmOGU0MTdmNTZlYTkzYTA4NTgxMjRjZGYyYmE0MTdi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlv
bkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9u
Q0YuY3BwCkBAIC00Niw4ICs0Niw3IEBAIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3Ry
aW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0CiB0ZW1wbGF0
ZTw+CiBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0
YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkxv
Y2FsZUlkZW50aWZpZXIoQWRvcHRDRiwgbG9jYWxlSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZShBZG9wdENGLCBDRkxvY2FsZUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZkxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxlSWRlbnRpZmllci5pbXBsKCktPmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpKTsKIAogICAgIHJldHVybiBDRlN0cmluZ0lzSHlwaGVuYXRpb25BdmFpbGFi
bGVGb3JMb2NhbGUobG9jYWxlLmdldCgpKSA/IGxvY2FsZSA6IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwCmluZGV4IGQ3Y2RhNzk2Mjk4NjI1NzNh
MzVjNmE5MjY4NTc1MjMwNWFiNmMyN2UuLjI2OTdlNzZmMGJmNTkyM2IxNTJmZWRkNzEwMzdlOTcx
MTQ5MjZkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3Ry
aW5nQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0Yu
Y3BwCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQ0YpCi0KICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTUx
LDcgKzUxLDcgQEAgU3RyaW5nOjpTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogICAgIH0KIH0KIAot
Q0ZTdHJpbmdSZWYgU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CitSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9p
bXBsKQogICAgICAgICByZXR1cm4gQ0ZTVFIoIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IDdhMmQ4MmU0MDJkMjRiMzdiYmMw
NzFmNDdmOThlMGE4NjUxODQ5MjEuLjFkYTU2MWI2MDYyYmNhYjQ5ZTA5YmZlNzk3ODJiMjczZjBk
YTA5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5n
SW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0lt
cGxDRi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTMyLDcgKzEzMyw3IEBAIG5h
bWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgewogCiB9CiAKLUNGU3RyaW5nUmVmIFN0
cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5n
SW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlzTWFpblRo
cmVhZCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKQEAgLTE1Myw3ICsxNTQsNyBAQCBDRlN0
cmluZ1JlZiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiAgICAgLy8gQ29yZUZvdW5kYXRp
b24gbWlnaHQgbm90IGhhdmUgdG8gYWxsb2NhdGUgYW55dGhpbmcsIHdlIGNsZWFyIGN1cnJlbnRT
dHJpbmcgaW4gY2FzZSB3ZSBkaWQgbm90IGV4ZWN1dGUgYWxsb2NhdGUoKS4KICAgICBTdHJpbmdX
cmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSAwOwogCi0gICAgcmV0dXJuIHN0cmlu
ZzsKKyAgICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOwogfQogCiAvLyBPbiBTdHJpbmdJbXBsIGNy
ZWF0aW9uIHdlIGNvdWxkIGNoZWNrIGlmIHRoZSBhbGxvY2F0b3IgaXMgdGhlIFN0cmluZ1dyYXBw
ZXJDRkFsbG9jYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1N0cmluZ0ltcGxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9T
dHJpbmdJbXBsTWFjLm1tCmluZGV4IDZmNWU5NTNiYTE5MjVlNTQ1YmJiNWFjNTNlMjE0NzZiYjhm
MDNhNTcuLjJmMDg4YTdlYjM2M2M1YWNkMDE0MmYzODcwOTViOTYyYzE4MTZhNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQpAQCAt
MjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiAjaW5j
bHVkZSAiRm91bmRhdGlvbkV4dHJhcy5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKIFN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICooKQogewot
ICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2UoY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJu
IEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCmlu
ZGV4IDMxMjQxMmZhYWI4YWMyMzYyODY1MDNkYWNhNWE5MjhiZWJkNDM5NjYuLmE3MDQ3NDk1MjBm
ZGQzMmQ0ZTFlMDBmY2ZjMGRlYWYzODdjYmE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIENT
dHJpbmcgVGV4dENvZGVjTWFjOjplbmNvZGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgsIFVuZW5jb2RhYmxlCiAgICAgLy8gRW5jb2Rpbmcgd2lsbCBjaGFuZ2UgdGhlIHll
biBzaWduIGJhY2sgaW50byBhIGJhY2tzbGFzaC4KICAgICBTdHJpbmcgY29weShjaGFyYWN0ZXJz
LCBsZW5ndGgpOwogICAgIGNvcHkucmVwbGFjZSgnXFwnLCBtX2JhY2tzbGFzaEFzQ3VycmVuY3lT
eW1ib2wpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZzKEFkb3B0Q0YsIGNvcHkuY3Jl
YXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMgPSBjb3B5LmNy
ZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBDRkluZGV4IHN0YXJ0UG9zID0gMDsKICAgICBDRkluZGV4
IGNoYXJhY3RlcnNMZWZ0ID0gQ0ZTdHJpbmdHZXRMZW5ndGgoY2ZzLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXgg
YTVjYTliNzQ0NjkyZjI4N2YyM2YzNDgxNTBiMDhmNjVlMWZmOTVmZS4uYmZjMDg3YmU5ZjE5MmNi
ZTE0M2Q3YTZkMTk2NDI0YTNkZTI1ODg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBT
ZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFN0cmluZyBrZXkgPSAi
Y29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWlu
UHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0
dXJuIGtleS5jcmVhdGVDRlN0cmluZygpOwogfQogI2VuZGlmCiAKQEAgLTY3LDEwICs2Nyw4IEBA
IHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgc2l6ZV90IHNpemUgPSBzZWFyY2hJdGVtcy5z
aXplKCk7CiAgICAgaWYgKHNpemUpIHsKICAgICAgICAgaXRlbXMuYWRvcHRDRihDRkFycmF5Q3Jl
YXRlTXV0YWJsZSgwLCBzaXplLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGl0ZW0oQWRvcHRDRiwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIGl0ZW0uZ2V0
KCkpOwotICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVt
c1tpXS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9CiAKICAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDgzNzQ3ZjIy
MzU1NmE2YWMyYWExNjg5ZGZkZmFjMWYxZWYxN2M0NzcuLjMzN2RhY2FiMmY3MTJjOTg2ZjBmNTcy
Mjk2YTc4MDU2MmMzMTRiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC02MywxNSArNjMsMTQgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbnNwZWN0b3JT
dGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwogCi1zdGF0
aWMgaW5saW5lIENGU3RyaW5nUmVmIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYga2V5KQorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZv
clByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4ga2V5Q0ZTdHJpbmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJl
dHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIgSW5z
cGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXlDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQgV2ViIElu
c3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKIH0K
IAogc3RhdGljIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcq
IHNldHRpbmcpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShB
ZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5ID0gY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KTsK
ICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHZhbHVlKEFkb3B0Q0YsIENGUHJlZmVy
ZW5jZXNDb3B5QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3Vy
cmVudEFwcGxpY2F0aW9uKSk7CiAKICAgICBpZiAoIXZhbHVlKQpAQCAtODgsMTIgKzg3LDcgQEAg
c3RhdGljIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHNl
dHRpbmcpCiAKIHN0YXRpYyB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4g
b2JqZWN0VG9TdG9yZTsKLSAgICBvYmplY3RUb1N0b3JlLmFkb3B0Q0Yoc2V0dGluZy5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBBU1NFUlQob2JqZWN0VG9TdG9yZSk7Ci0KLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVu
Y2VzKGtleSkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5n
ZXQoKSwgb2JqZWN0VG9TdG9yZS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRp
b24pOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShjcmVhdGVLZXlGb3JQcmVmZXJlbmNl
cyhrZXkpLmdldCgpLCBzZXR0aW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlByZWZlcmVu
Y2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggMGU0YjEwNjU2OTgyNWRkNzRkNzRkYjI3NzZlY2M2ZDkyMWVhOGRhYS4uNWYyODM1
MDRjNWQ2NjgyMTg2NDg5MGNlNDQ1YzgyY2YwMGYxMjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtNzkyLDI0ICs3OTIsMjAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICAgICAgS1VS
TCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CiAg
ICAgICAgIGlmIChwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAg
ICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBD
T0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwot
ICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHIoQWRvcHRDRiwgcGx1Z2luUGFn
ZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHN0ci5nZXQoKSk7CisgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5QYWdlVVJMLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKCFwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdS
ZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7Ci0KLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBzdHIoQWRvcHRDRiwgcGx1Z2luVmlldy0+bWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgc3Ry
LmdldCgpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtl
eSwgcGx1Z2luVmlldy0+bWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9
CiAKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkpIHsKICAgICAgICAgU3RyaW5nIHBsdWdp
bk5hbWUgPSBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bmFtZSgpOwogICAgICAgICBpZiAoIXBsdWdp
bk5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBN
YXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVn
SW5OYW1lS2V5KTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0
Q0YsIHBsdWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBzdHIuZ2V0KCkpOworICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luTmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNmU2ODdmMTkzNGFmODA0YmRmOTQ5OWRlZmY2
MWU3N2Y1MzVjY2IyMC4uMTU4NzJlMzRmOWE1NDQ1MGFmM2I0NDlmODJjZGYwYjJhZmJlYjQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC00MDEsOCArNDAx
LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2Uo
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgw
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGF0YWJhc2VOYW1lS2V5
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYkRhdGFiYXNl
TmFtZUtleSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHIoQWRvcHRDRiwgZGF0YWJh
c2VOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJ
bmZvLmdldCgpLCBkYXRhYmFzZU5hbWVLZXksIHN0ci5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGRhdGFiYXNlTmFtZUtleSwgZGF0YWJhc2VOYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5
QmFnPiB1c2VySW5mb0JhZyA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5j
ZSgpOwogICAgIHVzZXJJbmZvQmFnLT5zZXREaWN0aW9uYXJ5KHVzZXJJbmZvLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggMWY3YTU3MmMzNDQ1ZDdjYmM1NzYzYWY5ZDkxYjll
ZGQ3ODk1MTA5Zi4uNDA4ZWE1Mzk1MDBiYjg0NThhODg3ZDZmYmNiY2Q3MGZiY2I3ZjY2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTY5Myw5ICs2OTMsNyBAQCBIUkVTVUxUIFdlYkhp
c3Rvcnk6OmFkZEl0ZW0oSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSwgYm9vbCBkaXNjYXJkRHVwbGlj
YXRlLCBib29sKgogCiB2b2lkIFdlYkhpc3Rvcnk6OnZpc2l0ZWRVUkwoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2Fz
RmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291bnQpCiB7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1cmxTdHJpbmcoQWRvcHRDRiwgdXJsLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkp
OwotCi0gICAgSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSA9IChJV2ViSGlzdG9yeUl0ZW0qKSBDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShtX2VudHJpZXNCeVVSTC5nZXQoKSwgdXJsU3RyaW5nLmdldCgpKTsK
KyAgICBJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5ID0gKElXZWJIaXN0b3J5SXRlbSopIENGRGljdGlv
bmFyeUdldFZhbHVlKG1fZW50cmllc0J5VVJMLmdldCgpLCB1cmwuc3RyaW5nKCkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAgICAgaWYgKGVudHJ5KSB7CiAgICAgICAgIENPTVB0cjxJV2ViSGlz
dG9yeUl0ZW1Qcml2YXRlPiBlbnRyeVByaXZhdGUoUXVlcnksIGVudHJ5KTsKICAgICAgICAgaWYg
KCFlbnRyeVByaXZhdGUpCkBAIC03ODYsMTEgKzc4NCwxMCBAQCBIUkVTVUxUIFdlYkhpc3Rvcnk6
OnJlbW92ZUl0ZW1Gb3JVUkxTdHJpbmcoQ0ZTdHJpbmdSZWYgdXJsU3RyaW5nKQogCiBDT01QdHI8
SVdlYkhpc3RvcnlJdGVtPiBXZWJIaXN0b3J5OjppdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKSBjb25zdAogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0ZT
dHJpbmcoQWRvcHRDRiwgdXJsU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghdXJs
Q0ZTdHJpbmcpCisgICAgaWYgKCF1cmxTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogICAgIENP
TVB0cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW07Ci0gICAgaWYgKEZBSUxFRChpdGVtRm9yVVJMU3Ry
aW5nKHVybENGU3RyaW5nLmdldCgpLCAmaXRlbSkpKQorICAgIGlmIChGQUlMRUQoaXRlbUZvclVS
TFN0cmluZyh1cmxTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgJml0ZW0pKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5
SXRlbS5jcHAKaW5kZXggYTI2NDMwODlkY2Q3OWQ4MjQyNTIwMTk2MjEzMjdmY2E5ZjgyZDk4Mi4u
OGJmZTliZDdjMDc3Y2NmYmU4YjA3YWI1OTFhYzM5NzA2NTI0MzIxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiog
ZGljdGlvCiAKICAgICBpZiAoIW1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmlzRW1wdHkoKSkg
ewogICAgICAgICBrZXlzW2tleUNvdW50XSA9IHVybEtleTsKLSAgICAgICAgdmFsdWVzW2tleUNv
dW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAg
ICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgfQogCiAgICAga2V5c1trZXlDb3VudF0gPSBs
YXN0VmlzaXRlZERhdGVLZXk7CkBAIC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqKiBk
aWN0aW8KIAogICAgIGlmICghbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAga2V5c1trZXlDb3VudF0gPSB0aXRsZUtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50
KytdID0gbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICB2
YWx1ZXNba2V5Q291bnQrK10gPSBtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5n
KCkubGVha1JlZigpOwogICAgIH0KIAogICAgIGtleXNba2V5Q291bnRdID0gdmlzaXRDb3VudEtl
eTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rv
cnlJdGVtOjpkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24odm9pZCoqIGRpY3RpbwogICAgICAgICBB
U1NFUlQoc2l6ZSk7CiAgICAgICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IG5ldyBDRlN0cmluZ1Jl
ZltzaXplXTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgICAgICBpdGVtc1tpXSA9IHJlZGlyZWN0VVJMcy0+YXQoaSkuY3JlYXRlQ0ZTdHJpbmcoKTsK
KyAgICAgICAgICAgIGl0ZW1zW2ldID0gcmVkaXJlY3RVUkxzLT5hdChpKS5jcmVhdGVDRlN0cmlu
ZygpLmxlYWtSZWYoKTsKICAgICAgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRl
KDAsIChjb25zdCB2b2lkKiopaXRlbXMsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgIENG
UmVsZWFzZShpdGVtc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3MuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViTG9jYWxpemFibGVTdHJp
bmdzLmNwcAppbmRleCBmZDYxYTAxZmJhZjBlY2E3MTQ0NjNiYjFkNTcwY2ZmYTQxYjc2NThkLi5k
ZmI3MTRiNDY1MDYxYWIyMDM1MmJhM2Q3NTc3NGZiZWZhZjI3ZDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKQEAgLTEzMiwxMiArMTMyLDEwIEBAIHN0
YXRpYyBDRkJ1bmRsZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIFN0cmluZyBidW5kbGVQYXRoU3RyaW5nKHBhdGhTdHIpOwotICAgIENGU3RyaW5nUmVm
IGJ1bmRsZVBhdGhDRlN0cmluZyA9IGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKTsK
LSAgICBpZiAoIWJ1bmRsZVBhdGhDRlN0cmluZykKKyAgICBpZiAoIWJ1bmRsZVBhdGhTdHJpbmcp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQ0ZVUkxSZWYgYnVuZGxlVVJMUmVmID0gQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgYnVuZGxlUGF0aENGU3RyaW5nLCBrQ0ZVUkxXaW5k
b3dzUGF0aFN0eWxlLCB0cnVlKTsKLSAgICBDRlJlbGVhc2UoYnVuZGxlUGF0aENGU3RyaW5nKTsK
KyAgICBDRlVSTFJlZiBidW5kbGVVUkxSZWYgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aCgwLCBidW5kbGVQYXRoU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRv
d3NQYXRoU3R5bGUsIHRydWUpOwogICAgIGlmICghYnVuZGxlVVJMUmVmKQogICAgICAgICByZXR1
cm4gMDsKIApAQCAtMTY4LDggKzE2Niw3IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxp
emVkU3RyaW5nRnJvbUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0CiAgICAg
aWYgKCFidW5kbGUpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4ga2V5U3RyaW5nKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBDRlN0cmluZ1JlZiByZXN1bHQgPSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZh
bHVlKGtleVN0cmluZy5nZXQoKSwgMCwgYnVuZGxlLCBub3RGb3VuZCwgMCk7CisgICAgQ0ZTdHJp
bmdSZWYgcmVzdWx0ID0gQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwgYnVuZGxlLCBub3RGb3VuZCwgMCk7CiAKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKHJlc3VsdCAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxv
Y2FsaXphYmxlIHN0cmluZyAlcyBpbiBidW5kbGUiLCBrZXkpOwogICAgIHJldHVybiByZXN1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggNTYzNGExNWIzZWQzZTAxYzI2
MDRhNWJlMjYwMTM3MTFmZGNjZGMzMy4uODk2N2IwYjMwYWU0ZDQyMzM1OGI5ZmNlNmY1ODMxOTFj
OTZjMGMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMTk2LDcgKzE5
Niw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKQog
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4
ZWRGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMTMiKSk7CiAKICAgICBTdHJpbmcgZGVm
YXVsdERlZmF1bHRFbmNvZGluZyhXRUJfVUlfU1RSSU5HKCJJU08tODg1OS0xIiwgIlRoZSBkZWZh
dWx0LCBkZWZhdWx0IGNoYXJhY3RlciBlbmNvZGluZyIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRW
YWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJl
bmNlS2V5KSwgZGVmYXVsdERlZmF1bHRFbmNvZGluZy5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGVmYXVsdFRleHRFbmNv
ZGluZ05hbWVQcmVmZXJlbmNlS2V5KSwgZGVmYXVsdERlZmF1bHRFbmNvZGluZy5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKIAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRVc2VyU3R5bGVTaGVldEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZh
bHNlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VXNl
clN0eWxlU2hlZXRMb2NhdGlvblByZWZlcmVuY2VLZXkpLCBDRlNUUigiIikpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAppbmRleCA2YjFiYWRlNGFhZjJlOTVhMjA0ZjkyYTI2ZDRhYjAyNDBhMjcyODM4Li4z
YTFiNzRlMjEzNTFmYWRhNmQ0MWFjZGY4OWYyNTRhODNhYWNiNjg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcApAQCAtNDcxLDcgKzQ3MSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJD
YWNoZU1vZGVsIGNhY2hlTW9kZWwpCiAgICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNmdXJs
Q2FjaGUoQWRvcHRDRiwgQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNmdXJsQ2FjaGVEaXJlY3RvcnkoQWRvcHRDRiwgd2tDb3B5Rm91
bmRhdGlvbkNhY2hlRGlyZWN0b3J5KDApKTsKICAgICBpZiAoIWNmdXJsQ2FjaGVEaXJlY3Rvcnkp
Ci0gICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkuYWRvcHRDRihXZWJDb3JlOjpsb2NhbFVzZXJT
cGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgY2Z1
cmxDYWNoZURpcmVjdG9yeSA9IFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNl
IDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlIAogICAgIC8v
IGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgpAQCAt
NDcxMiw4ICs0NzEyLDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5n
ZWQoSVdlYk5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgICAgICBpZiAoRkFJTEVEKGhy
KSkKICAgICAgICAgICAgIHJldHVybiBocjsKIAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHVybFN0cmluZyhBZG9wdENGLCB0b1N0cmluZyhzdHIpLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhT
dHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdXJsU3RyaW5nLmdldCgpLCAwKSk7CisgICAgICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCB0b1N0cmluZyhzdHIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IDApKTsKIAogICAgICAgICAvLyBDaGVjayBpZiB0aGUgcGFzc2VkIGluIHN0cmluZyBpcyBhIHBh
dGggYW5kIGNvbnZlcnQgaXQgdG8gYSBVUkwuCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEg
d29ya2Fyb3VuZCBmb3IgbmlnaHRseSBidWlsZHMgdW50aWwgd2UgY2FuIGdldCBTYWZhcmkgdG8g
cGFzcyAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCmluZGV4IDRhMzVi
NmEyZDhhMzJjNWRkODM0OTcyY2QyZmRmMmFkYzM5MWU2MWEuLjM2ODc1MzE1MTcyMThkYTI5ZTlj
ZGRkYTQyMzJhM2IxMjgyNTMzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L21hYy9Nb2R1bGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVs
ZU1hYy5tbQpAQCAtMzAsMTIgKzMwLDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIE1v
ZHVsZTo6bG9hZCgpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFk
b3B0Q0YsIG1fcGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFM
U0UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9wYXRoLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOwogICAgIGlm
ICghYnVuZGxlVVJMKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZC
dW5kbGVSZWY+IGJ1bmRsZShBZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRs
ZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJM
LmdldCgpKSk7CiAgICAgaWYgKCFidW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMu
bW0KaW5kZXggZGU3ZDU4MzFmNjA4YzM4MzBlM2M5YmUxNGIzOTQ2NWViMmM3MWMzYi4uNjcxZjIw
ZDZkY2FiZTFmYzFiYTM5NTU3ZDVlNjI4ZWU3ZWQ3ZWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0yNzksOCAr
Mjc5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KICAgICBpZiAoc2FuZGJveFByb2ZpbGVE
aXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjZlBsdWdpblBhdGggPSBhZG9wdENGKHBsdWdpblBhdGguY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENG
VVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGNmUGx1Z2luUGF0aC5nZXQoKSwga0NGVVJM
UE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5V
UkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBsdWdpblBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAg
ICAgaWYgKCFwbHVnaW5VUkwpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjkyLDggKzI5MSw3IEBA
IHN0YXRpYyB2b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
Y29uc3QgU3RyaW5nJiBzYW5kYm94UHJvCiAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU2FuZGJveFByb2Zp
bGVEaXJlY3RvcnlQYXRoID0gYWRvcHRDRihzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBzYW5kYm94UHJvZmlsZURp
cmVjdG9yeSA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZTYW5k
Ym94UHJvZmlsZURpcmVjdG9yeVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBUUlVF
KSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBzYW5kYm94UHJvZmlsZURpcmVjdG9yeSA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc2FuZGJveFByb2ZpbGVEaXJl
Y3RvcnlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBU
UlVFKSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNhbmRib3hGaWxlTmFtZSA9IENG
U3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJUAuc2IiKSwgYnVuZGxlSWRlbnRp
Zmllcik7CiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBzYW5kYm94VVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aFJlbGF0aXZlVG9CYXNlKDAsIHNhbmRib3hGaWxlTmFt
ZS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFLCBzYW5kYm94UHJvZmlsZURpcmVj
dG9yeS5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCmlu
ZGV4IDgxYjM4ZTBlYzhmZTNjNDE4ODk3OWVlZmQwNjIyN2IzNzBmZDRhM2UuLjNkYzM3N2M0NDUw
ZDg4ZmUyNWY3MDJiMGZhNTQzYTM4ZTI4ZjZjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGVNYWMubW0KQEAgLTM1MiwxMSArMzUyLDEwIEBAIHN0YXRpYyBib29sIGdldFBs
dWdpbkluZm9Gcm9tQ2FyYm9uUmVzb3VyY2VzKENGQnVuZGxlUmVmIGJ1bmRsZSwgUGx1Z2luTW9k
dWxlSW5mCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwg
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxl
UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRy
PENGVVJMUmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRvIGlu
aXRpYWxpemUgdGhlIGJ1bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShB
ZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5k
bGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYg
KCFidW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTM5NSwxMSArMzk0LDkg
QEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6
Y3JlYXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRo
KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlUGF0aChBZG9wdENGLCBwbHVn
aW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxl
VVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGJ1bmRsZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwor
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwbHVnaW5QYXRoLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIAotICAg
IC8vIFRyeSB0byBpbml0aWFsaXplIHRoZSBidW5kbGUuCi0gICAgUmV0YWluUHRyPENGQnVuZGxl
UmVmPiBidW5kbGUoQWRvcHRDRiwgQ0ZCdW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
YnVuZGxlVVJMLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUgPSBh
ZG9wdENGKENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQo
KSkpOwogICAgIGlmICghYnVuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCmlu
ZGV4IGNkZmYzNDQ2OWEyMzkzZDM1YWRiYWJjNGNiMGEzOGJhMGY1NjIzMjQuLjdjMWYyNDBlY2M0
OGI4YjRjMTkxM2UwNTRjNThhYjNhNDhhMmI0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcApAQCAtOTQsOSArOTQsOSBA
QCBDRkRpY3Rpb25hcnlSZWYgV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVDRkRpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbihXZWJQYWdlUHJveAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsKEFkb3B0Q0Ys
IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdGl0bGUoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT50aXRsZSgpLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsVVJM
KEFkb3B0Q0YsIG1fZW50cmllc1tpXS0+b3JpZ2luYWxVUkwoKS5jcmVhdGVDRlN0cmluZygpKTsK
KyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwgPSBtX2VudHJpZXNbaV0tPnVybCgp
LmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGl0bGUg
PSBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBvcmlnaW5hbFVSTCA9IG1fZW50cmllc1tpXS0+b3JpZ2luYWxVUkwo
KS5jcmVhdGVDRlN0cmluZygpOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHVzZXMgdGhlIENv
cmVJUEMgZGF0YSBlbmNvZGluZyBmb3JtYXQsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbmV2ZXIgd2Ug
Y2hhbmdlIHRoZSBDb3JlSVBDIGVuY29kaW5nIHdlIG5lZWQgdG8gYnVtcCB0aGUgQ3VycmVudFNl
c3Npb25TdGF0ZURhdGFWZXJzaW9uCiAgICAgICAgIC8vIGNvbnN0YW50IGluIFdlYlBhZ2VQcm94
eUNGLmNwcC4gVGhlIENvcmVJUEMgZGF0YSBmb3JtYXQgaXMgbWVhbnQgdG8gYmUgYW4gaW1wbGVt
ZW50YXRpb24gZGV0YWlsLCBhbmQgbm90IHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSB3cml0dGVu
IHRvIGRpc2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFn
ZVByb3h5Q0YuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNG
LmNwcAppbmRleCA3OWRkOGNlZDAyZDdjZTBkNGYzYzI0MDQ4MThiODAxYmU0MGYxZjdhLi5mYWMw
MmMxYjQ2OTBmMTIzNmU5YWE3OGRhY2E0OTJiMWM0MjYzYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUGFz
c1JlZlB0cjxXZWJEYXRhPiBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZURhdGEoV2ViUGFnZVBy
b3h5U2Vzc2lvblN0YXRlRmlsdGUKICAgICAgICAgaWYgKHByb3Zpc2lvbmFsVVJMLmlzRW1wdHko
KSkKICAgICAgICAgICAgIHByb3Zpc2lvbmFsVVJMID0gbV9tYWluRnJhbWUtPnByb3Zpc2lvbmFs
VVJMKCk7CiAgICAgICAgIGlmICghcHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBwcm92aXNpb25hbFVSTFN0cmluZy5hZG9wdENGKHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgICAgICAgICAgcHJvdmlzaW9uYWxVUkxTdHJpbmcgPSBwcm92aXNpb25h
bFVSTC5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICAgICAga2V5c1tudW1WYWx1ZXNdID0gUHJv
dmlzaW9uYWxVUkxLZXkoKTsKICAgICAgICAgICAgIHZhbHVlc1tudW1WYWx1ZXNdID0gcHJvdmlz
aW9uYWxVUkxTdHJpbmcuZ2V0KCk7CiAgICAgICAgICAgICArK251bVZhbHVlczsKQEAgLTE3OSw4
ICsxNzksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRh
KFdlYkRhdGEqIHdlYkRhdGEpCiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9z
YXZlS2V5KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBTdHJpbmcga2V5ID0gImNvbS5hcHBs
ZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiArIG5hbWU7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4oQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiBTdHJp
bmcoImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiArIG5hbWUpLmNyZWF0ZUNGU3RyaW5n
KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCkBAIC0xOTIsMTAg
KzE5MSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3Ry
aW5nJiBuYW1lLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYKIAogICAgIGlmIChzaXplX3Qgc2l6ZSA9
IHNlYXJjaEl0ZW1zLnNpemUoKSkgewogICAgICAgICBpdGVtcy5hZG9wdENGKENGQXJyYXlDcmVh
dGVNdXRhYmxlKDAsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gaXRlbShBZG9wdENGLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgaXRlbS5nZXQo
KSk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
CisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW1z
W2ldLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0KIAogICAgIENGUHJlZmVyZW5jZXNT
ZXRBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtDRlByZWZl
cmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFn
ZXIuY3BwCmluZGV4IDY4MTBmMGFiZGI5ZGJlYmE5OWZhM2UxZTliMGYwNmNlNDVhZTA0OTQuLjM5
NTY0OWM1MGJmNGQ2ZGYwNGJjNzU0MGI1NGJhZjU5ZGIyYzM2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJl
c291cmNlQ2FjaGVNYW5hZ2VyLmNwcApAQCAtMTE4LDggKzExOCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VDYWNoZU1hbmFnZXI6OmNsZWFyQ2FjaGVGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhIG9y
aWdpbkRhdGEsCiAjaWYgVVNFKENGVVJMQ0FDSEUpCiAgICAgaWYgKHJlc291cmNlQ2FjaGVzVG9D
bGVhciAhPSBJbk1lbW9yeVJlc291cmNlQ2FjaGVzT25seSkgeyAKICAgICAgICAgUmV0YWluUHRy
PENGTXV0YWJsZUFycmF5UmVmPiBob3N0QXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFi
bGUoMCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGhvc3QoQWRvcHRDRiwgb3JpZ2luLT5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCksIGhvc3QuZ2V0KCkp
OworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaG9zdEFycmF5LmdldCgpLCBvcmlnaW4tPmhv
c3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgICAgICBjbGVhckNGVVJMQ2FjaGVG
b3JIb3N0TmFtZXMoaG9zdEFycmF5LmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjI5YjFhN2Y2ZDI0MzliMGMzNDhhYWQ2
Mjg1YTFiODhlN2Q1NDBmOS4uMWViN2YxY2YyNTJjZTZlZjE1N2U3ZDZlODViN2QzNTIxMGE2OGZi
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTEwLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEg
UmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFj
Lm1tOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3JtRGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisKIDIwMTItMTAtMjYgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBDcmFzaCB3aGVuIG1ha2luZyBOUFJ1bnRp
bWUgY2FsbHMgd2l0aCBhIG51bGwgTlBQIHBvaW50ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxl
UGFnZU1hYy5tbQppbmRleCA0NmMyNzNmMWY4Y2E0MGFlZTI3Yzk0NzZjODFmZTczOTRjMzNiYjI0
Li5iMGNiNGUwMzFjYjc0NDYyOGMwYmMzNGQ1N2QxNzZiNjg3YWYxMzQ1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBh
Z2VNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
SW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCkBAIC04NSw4ICs4NSw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5k
bGVGcmFtZVJlCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICAgICAgYnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJDUkFTSElORyBURVNUOiAiKTsKICAgICAgICAgYnVpbGRlci5hcHBl
bmQodGVzdFBhdGgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nKEFk
b3B0Q0YsIGJ1aWxkZXIudG9TdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgV0tT
ZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbihjZlN0cmluZy5nZXQo
KSk7CisgICAgICAgIFdLU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRp
b24oYnVpbGRlci50b1N0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0KICNl
bmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171110</attachid>
            <date>2012-10-27 17:15:53 -0700</date>
            <delta_ts>2012-10-27 19:25:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121027171422.patch</filename>
            <type>text/plain</type>
            <size>80026</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU4YjQ5NjdiN2U2MmU2Yzk2MTViMGVm
MjhlYmNjY2Q1MmViMTgwNGMuLjJjYzM4YWQyMjM4YmZmM2RjMDM0MjkzYzQ3N2NmOWY1ZmQxNDZm
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDEyLTEwLTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyNjg5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY0YWVjNGU2ZWVmOGM0MjUwOTEyMmQ3ZGIwNjk0M2Q3YzYyMDkyMjguLmVmOWE5M2Mw
NjIzZTI4NGVmNDQ2MTE4MjczZTBlMjcyZjE4YjU2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
MSBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFs
bGJhY2tPYmplY3QpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlVGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0dNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFn
ZVNvdXJjZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5
cGVGcm9tSFRNTENsaXBib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21D
b2NvYVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjo6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0NGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjcmVhdGVDRlN0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMv
U3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNT
dHJpbmcgKik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZW5jb2RlKToKKwogMjAxMi0xMC0yNiAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgLmxvb3BTdGFydCBhbmQgLmxvb3BFbmQgYXR0cmlidXRlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nm
L0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJlY2M1
Li42ZTBhZWQ1ZmZhNTZlNzFmMmIwNTYyOTNmZmNmYzBlZTA1OWE1ZjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0
dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAo
Y3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToKKyAg
ICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcuaCwg
cmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxMWQ1MGIxNzdkYWY2
ZTIwZjdhYWFkYjEzYjEyNWVlNWNkOTUwMGUzLi5lOWI2ODMxNDFhYzVjYmM4NTU5YjZjNTZjMzgy
ZTdkODFiZjU0YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMTAt
MjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJp
bmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9mIFN0
cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFz
ZSk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojp2aXNp
dGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcpOgorICAgICAg
ICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChjcmVhdGVXZWJLaXRCdW5kbGUpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0
cmluZ0Zyb21CdW5kbGUpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAg
KFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAo
V2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxMi0xMC0yNCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RyYXRlZ3kgZm9y
IGxvYWRlciBjdXN0b21pemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFmODliZmIxNzRlOWYxOTJhZGIx
OWVkYjBiNmE4YjA2YTZjNzIxMDkuLjYzNTZlNGJjODQxNjAyZGE2MzM2MDJkMzhlMGIxZmM2MmU5
NWM5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZT
dHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVD
RlN0cmluZy4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vZHVsZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdp
bkluZm8pOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1
Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNr
Rm9yd2FyZExpc3RDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6
Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9j
Zi9XZWJQYWdlUHJveHlDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vz
c2lvblN0YXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OmF1dG9zYXZlS2V5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2lu
KToKKwogMjAxMi0xMC0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2ggaW4gV2ViUHJvY2VzIGF0IFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkICsgNzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0
cmluZy5oCmluZGV4IDZhYzYwZTZhZDU3MjQzMzk3OGY1ZmI0YjQ4ODBhOWZiNDAxMDVjNjYuLjdk
YTBkZDRmM2EwMTcxOWI0NmNlYTliMTg4ZGJkZmE1ZTY5M2NjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmcuaApAQCAtMTM3LDEwICsxMzcsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCByZW1vdmUoU3RyaW5nSW1wbCopOwogICAgIAotI2lmIFVTRShDRikKLSAgICBBdG9taWNT
dHJpbmcoQ0ZTdHJpbmdSZWYgcykgOiAgbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7
IH0KLSAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmNyZWF0ZUNGU3RyaW5nKCk7IH0KLSNlbmRpZiAgICAKICNpZmRlZiBfX09CSkNfXwogICAg
IEF0b21pY1N0cmluZyhOU1N0cmluZyogcykgOiBtX3N0cmluZyhhZGQoU3RyaW5nKHMpLmltcGwo
KSkpIHsgfQogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDAwNjdiZWJlZWQ5MGZmNzQzNzMyY2Rh
YWY1NjBhYWY1OTIwOTg0ZWMuLjY3Njc3OTA2ZGIwMjUwM2UyMTc5NDE3NDM5NjI0MTFmYjIzMjY1
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC02Nyw2ICs2Nyw3IEBAIHN0cnVjdCBD
aGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvcjsKIGNsYXNzIE1lbW9yeU9iamVjdElu
Zm87CiBzdHJ1Y3QgU3Vic3RyaW5nVHJhbnNsYXRvcjsKIHN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5z
bGF0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgUmV0YWluUHRyOwogCiBlbnVtIFRleHRD
YXNlU2Vuc2l0aXZpdHkgeyBUZXh0Q2FzZVNlbnNpdGl2ZSwgVGV4dENhc2VJbnNlbnNpdGl2ZSB9
OwogCkBAIC03MTMsNyArNzE0LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBo
YXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOwogCiAjaWYgVVNFKENGKQotICAgIENGU3RyaW5n
UmVmIGNyZWF0ZUNGU3RyaW5nKCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVD
RlN0cmluZygpOwogI2VuZGlmCiAjaWZkZWYgX19PQkpDX18KICAgICBvcGVyYXRvciBOU1N0cmlu
ZyooKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUwYzA0OGQ2M2YzZGNmMWM1Mzg2NTU2
NmU0NzI0ZjFhODI0OGZlMDcuLmQ2N2FkMzI5OTJjMjQwZjFlNTUyZjZlYzNlZmMwODAwOGIzYmE4
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNsdWRl
IDxvYmpjL29iamMuaD4KICNlbmRpZgogCi0jaWYgVVNFKENGKQotdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX19DRlN0cmluZyAqIENGU3RyaW5nUmVmOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkK
IFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVN0cmluZzsKQEAgLTM4Niw3ICszODIsNyBAQCBw
dWJsaWM6CiAKICNpZiBVU0UoQ0YpCiAgICAgU3RyaW5nKENGU3RyaW5nUmVmKTsKLSAgICBDRlN0
cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0OworICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCiAjaWZkZWYgX19PQkpDX18KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCAyY2YwZGI1NjE4
ZTM4MjBjZGY0NDY0NTU4MzQxZjY5NGY1M2QxZmEzLi5iZTI0ZmRiM2ZkYjEzN2M4MGI2ZjBhNGZi
ODg3NDFhYjM0MWE0ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCkBAIC0yNDgsOCArMjQ4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIE9i
amNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0NsYXNzKj4ob2JqY0luc3RhbmNl
LT5nZXRDbGFzcygpKTsKICAgICAgICAgT3duUHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9k
KGFkb3B0UHRyKG5ldyBPYmpjTWV0aG9kKG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZv
a2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpKTsKICAgICAg
ICAgY29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFj
a09iamVjdEltcCo+KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBuYW1lSWRlbnRpZmllci5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5h
bWUuZ2V0KCkpOworICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFt
ZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9i
amNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7
CiAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCA5N2ZlOTViM2E0NGQ0MTg1ZTIxMjZmNmJiNmVkYmVjZjQzOWZlZWVlLi43NWRm
OTlhZjM2YmI2MDAyNjdiOWE3MmQ1YzkxNTg5MGM0ZGM1Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTkxNiw4ICs5MTYsNyBAQCBzdGF0aWMgS1VSTCBj
cmVhdGVGaWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICAvLyBhcHAgY2FjaGUgbWVkaWEgZmlsZXMgYXJlIGFsd2F5cyBjcmVhdGVkIHdpdGgg
ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS4KIAogI2lmIFVT
RShDRikgJiYgUExBVEZPUk0oV0lOKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZQYXRo
KEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBjZlVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlBhdGgu
Z2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBjZlVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBw
YXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNl
KSk7CiAgICAgS1VSTCB1cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKICAgICBLVVJMIHVybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKaW5kZXggMzU3NmQ2NGRmYzQ4MmE0MWQ1NGUxM2VmZDE5NzgxNjJiNzgwN2E3Zi4uZDc3
Zjg3NGIwOWRjMjAwOWJiZWQwMzUyNDE4MzViZmU4NmY4OGUzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkx
LDggKzkxLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXks
IGNmRGF0YS5nZXQoKSk7CiAgICAgCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxs
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlVSTChBZG9wdENGLCByZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgaWYgKGNmVVJMKQorICAgIGlmIChS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmNy
ZWF0ZUNGU3RyaW5nKCkpCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlz
dC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVVJMS2V5LCBjZlVSTC5nZXQoKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOVUxM
IHJlc291cmNlIFVSTCBpcyBpbnZhbGlkIC0gcmV0dXJuaW5nIG51bGwgcHJvcGVydHkgbGlzdCIp
OwpAQCAtMTAxLDIzICsxMDAsMTcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKIAogICAgIC8v
IEZyYW1lTmFtZSBzaG91bGQgYmUgbGVmdCBvdXQgaWYgZW1wdHkgZm9yIHN1YnJlc291cmNlcywg
YnV0IGFsd2F5cyBpbmNsdWRlZCBmb3IgbWFpbiByZXNvdXJjZXMKICAgICBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZShyZXNvdXJjZS0+ZnJhbWVOYW1lKCkpOwotICAgIGlmICghZnJhbWVOYW1lLmlz
RW1wdHkoKSB8fCBpc01haW5SZXNvdXJjZSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmRnJhbWVOYW1lKEFkb3B0Q0YsIGZyYW1lTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VGcmFtZU5hbWVLZXksIGNmRnJhbWVOYW1lLmdldCgpKTsKLSAgICB9Cisg
ICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpIHx8IGlzTWFpblJlc291cmNlKQorICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZUZyYW1lTmFtZUtleSwgZnJhbWVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
ICAgIAogICAgIC8vIFNldCBNSU1FVHlwZSwgVGV4dEVuY29kaW5nTmFtZSwgYW5kIFJlc291cmNl
UmVzcG9uc2Ugb25seSBpZiB0aGV5IGFjdHVhbGx5IGV4aXN0CiAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZShyZXNvdXJjZS0+bWltZVR5cGUoKSk7Ci0gICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk1JTUVUeXBlKEFkb3B0Q0Ys
IG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZU1JTUVUeXBlS2V5
LCBjZk1JTUVUeXBlLmdldCgpKTsKLSAgICB9CisgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXksIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogICAgIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKHJlc291cmNlLT50
ZXh0RW5jb2RpbmcoKSk7Ci0gICAgaWYgKCF0ZXh0RW5jb2RpbmcuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZUZXh0RW5jb2RpbmcoQWRvcHRDRiwgdGV4dEVu
Y29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVRleHRFbmNvZGluZ05h
bWVLZXksIGNmVGV4dEVuY29kaW5nLmdldCgpKTsKLSAgICB9CisgICAgaWYgKCF0ZXh0RW5jb2Rp
bmcuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3Qu
Z2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXksIHRleHRF
bmNvZGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIC8vIERvbid0IGluY2x1ZGUg
dGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNN
YWluUmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKaW5kZXggYWJmMWJjYTVlODU0MTBiYTg3ZDVjYWI4MjUwMGQ5NjlmMTA5MjZhNy4uNjkw
ODQzYjEzNzc4MzQ4MjgwZWM3ZWE1YjQzNzM4OGU5ZGRjNjQxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTU0LDEzICs1NCwxMiBAQCBzdGF0
aWMgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCiAjaWYg
VVNFKENGKQogICAgIHZhX2xpc3QgYXJndW1lbnRzOwogICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywg
Zm9ybWF0KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvcm1hdENGU3RyaW5nKEFkb3B0
Q0YsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpKTsKIAogI2lmIENPTVBJTEVSKENMQU5HKQogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgogI2VuZGlmCi0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiByZXN1bHQoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRz
KDAsIDAsIGZvcm1hdENGU3RyaW5nLmdldCgpLCBhcmd1bWVudHMpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5k
QXJndW1lbnRzKDAsIDAsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcmd1bWVudHMp
KTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNl
bmRpZgpAQCAtMjYwLDcgKzI1OSw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJ
bkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKICAgICByZXR1cm4gV0VC
X1VJX1NUUklORygiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IiwgIkxvb2sgVXAgaW4gRGljdGlvbmFy
eSBjb250ZXh0IG1lbnUgaXRlbSIpOwogI2Vsc2UKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBzZWxlY3RlZENGU3RyaW5nKEFkb3B0Q0YsIHRydW5jYXRlZFN0cmluZ0Zv
ckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdG
b3JMb29rdXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJUDi
gJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2Vs
ZWN0ZWRDRlN0cmluZy5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJM
b29rIFVwIOKAnDxzZWxlY3Rpb24+4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0
aCBzZWxlY3RlZCB3b3JkIikucmVwbGFjZSgiPHNlbGVjdGlvbj4iLCB0cnVuY2F0ZWRTdHJpbmdG
b3JMb29rdXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykpOwpAQCAtNzM4LDggKzczNyw3IEBAIFN0
cmluZyBrZXlnZW5NZW51SXRlbTIwNDgoKQogCiBTdHJpbmcga2V5Z2VuS2V5Y2hhaW5JdGVtTmFt
ZShjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0
Q0ZTdHJpbmcoQWRvcHRDRiwgaG9zdC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yg
a2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0Q0ZTdHJpbmcu
Z2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygi
S2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlH
RU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNlbmRpZgpAQCAt
NzYyLDggKzc2MCw3IEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAjaWYgVVNFKENGKQogI2lmICFQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDYwCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNGU3RyaW5nKEFkb3B0Q0Ys
IGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4g
bG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CisgICAgUmV0YWluUHRyPENG
TG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CiAgICAg
UmV0YWluUHRyPENGTnVtYmVyRm9ybWF0dGVyUmVmPiBmb3JtYXR0ZXIoQWRvcHRDRiwgQ0ZOdW1i
ZXJGb3JtYXR0ZXJDcmVhdGUoMCwgbG9jYWxlLmdldCgpLCBrQ0ZOdW1iZXJGb3JtYXR0ZXJEZWNp
bWFsU3R5bGUpKTsKIAogICAgIGludCB3aWR0aEludCA9IHNpemUud2lkdGgoKTsKQEAgLTc3NCw3
ICs3NzEsNyBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBJbnRTaXplJiBzaXplKQogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gaGVpZ2h0KEFkb3B0
Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZoZWlnaHRJbnQpKTsKICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhlaWdodFN0cmluZyhBZG9wdENGLCBDRk51bWJlckZv
cm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhOdW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWlnaHQu
Z2V0KCkpKTsKIAotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklO
RygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFn
ZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5n
LmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAICVAw5clQCBwaXhlbHMi
LCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRp
b24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgd2lk
dGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CiAjZWxzZQogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBmaWxlbmFtZS5jcmVhdGVD
RlN0cmluZygpKTsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJ
TkcoIiVAICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1h
Z2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmlu
Zy5nZXQoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCmluZGV4IDFiOGQw
MDZmMjUxOWFhOGE4ZjNhOGM0NTBlZmQyNzM0MThhZjQyODQuLjczMGVkYzE1ZmU5MWJjOTI3NzA4
NWNjYzI4ODdiMDc5MDY3ODBiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcApAQCAtNDYsOCArNDYsNyBAQCBzdGF0aWMg
Ym9vbCBtYWluQnVuZGxlSXNFcXVhbFRvKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllclN0
cmluZykKICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlSWRlbnRpZmllclRvQ29tcGFyZShB
ZG9wdENGLCBidW5kbGVJZGVudGlmaWVyU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJl
dHVybiBDRlN0cmluZ0NvbXBhcmUoYnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmllclRv
Q29tcGFyZS5nZXQoKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG87CisgICAgcmV0dXJuIENGU3Ry
aW5nQ29tcGFyZShidW5kbGVJZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyU3RyaW5nLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oYnVuZGxlSWRlbnRpZmllclN0cmluZyk7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKaW5kZXggOGVmNTBl
ZWIwY2IwODRkMWI5YjIzYjg3YzNiZmE4OTgzOTJiOGEyZC4uYzE4NzA2NjMzNTY1MDU1NzlhZmQ3
YjYxYWMxNzM5MDQwNjQ0ZjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvRmlsZVN5c3RlbUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxl
U3lzdGVtQ0YuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1N0
cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0
cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVh
dGVDRlN0cmluZygpOwogCiAgICAgaWYgKCFjZlN0cmluZykKICAgICAgICAgcmV0dXJuIENTdHJp
bmcoKTsKQEAgLTYzLDggKzYzLDcgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29u
c3QgU3RyaW5nJiBwYXRoKQogI2Vsc2UKICAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhT
dHlsZTsKICNlbmRpZgotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0Q0YsIENG
VVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4oQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmluZygpKS5nZXQoKSwgcGF0aFN0eWxlLCBG
QUxTRSkpOworICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0Q0YsIENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0
aFN0eWxlLCBGQUxTRSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKaW5kZXggOTdmYjBiNjA5NDY4ZjRlZDM1YjFlMTkzOGQ5
OGJiZDg5NDIyMjU4Ni4uODU2YTRmY2FkZWQyZjBiNjI2MGY1ZTkyYmUxMTQ1ZGMxMmE1Yzg0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FBbmltYXRpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcApAQCAtMTUxLDggKzE1MSw3IEBA
IFBsYXRmb3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oQW5pbWF0aW9uVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhCiAgICAgZWxzZQogICAgICAgICBtX2FuaW1hdGlvbi5h
ZG9wdENGKENBQ0ZBbmltYXRpb25DcmVhdGUoa0NBQ0ZLZXlmcmFtZUFuaW1hdGlvbikpOwogICAg
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXlQYXRoLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgp
LCBzLmdldCgpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQo
KSwga2V5UGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1h
dGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDcwMTY4YjIxMDRkYjM2OWRhMDc1N2Ex
MTQ0NjIyMTExYmMzMDYxZjAuLmRkNjE2MzM3ZTkzNjZlYjc5Yzk2YzY3MmI3MzkzYjY5MjQzNmZj
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNzYsMTAgKzE3Niw4IEBAIHZv
aWQgUGxhdGZvcm1DQUxheWVyOjphbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2lu
VGltZSkKIHN0YXRpYyB2b2lkIHJlc3VibWl0QWxsQW5pbWF0aW9ucyhQbGF0Zm9ybUNBTGF5ZXIq
IGxheWVyKQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgaXQtPmtl
eS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKGxheWVy
LT5wbGF0Zm9ybUxheWVyKCksIHMuZ2V0KCksIGl0LT52YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24o
KSk7Ci0gICAgfQorICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5p
bWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRpb25zKCkuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSwgaXQtPmtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBpdC0+dmFs
dWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZW5z
dXJlQW5pbWF0aW9uc1N1Ym1pdHRlZCgpCkBAIC0yOTcsOCArMjk1LDcgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OmFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1D
QUFuaW1hdGlvbioKICAgICAvLyBBZGQgaXQgdG8gdGhlIGFuaW1hdGlvbiBsaXN0CiAgICAgbV9h
bmltYXRpb25zLmFkZChrZXksIGFuaW1hdGlvbik7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHMoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZMYXllckFkZEFu
aW1hdGlvbihtX2xheWVyLmdldCgpLCBzLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0
aW9uKCkpOworICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBrZXkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBpdCBzbyB3
ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CkBAIC0zMTIsOCArMzA5LDcgQEAg
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKICAgICAvLyBSZW1vdmUgaXQgZnJvbSB0aGUgYW5pbWF0aW9uIGxpc3QKICAgICBtX2Fu
aW1hdGlvbnMucmVtb3ZlKGtleSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRv
cHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZMYXllclJlbW92ZUFuaW1hdGlv
bihtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBDQUNGTGF5ZXJSZW1vdmVBbmltYXRpb24o
bV9sYXllci5nZXQoKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgLy8gV2Ug
ZG9uJ3QgInJlbW92ZSIgYSBsYXllciBmcm9tIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3Qgd2hl
biBpdCBsb3NlcyBhbiBhbmltYXRpb24uCiAgICAgLy8gVGhlcmUgbWF5IGJlIG90aGVyIGFjdGl2
ZSBhbmltYXRpb25zIG9uIHRoZSBsYXllciBhbmQgaWYgYW4gYW5pbWF0aW9uCkBAIC01ODYsOCAr
NTgyLDcgQEAgU3RyaW5nIFBsYXRmb3JtQ0FMYXllcjo6bmFtZSgpIGNvbnN0CiAKIHZvaWQgUGxh
dGZvcm1DQUxheWVyOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAg
IENBQ0ZMYXllclNldE5hbWUobV9sYXllci5nZXQoKSwgcy5nZXQoKSk7CisgICAgQ0FDRkxheWVy
U2V0TmFtZShtX2xheWVyLmdldCgpLCB2YWx1ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsLmNwcAppbmRleCBjNDMwY2YyODQ2MTQ2NjQ3YmY2MWZjN2E3MTYyOWY1MmYwMjFmYTZh
Li4xNTI3NWIzYWU1ZmU1YzFjNmE0ZjhmODRmZDY2OTBkMjFmY2Y1OGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp1cGRhdGVUaWxlcygpCiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9ICJUaWxlICgiICsgU3RyaW5nOjpudW1iZXIo
aSkgKyAiLCIgKyBTdHJpbmc6Om51bWJlcihqKSArICIpIjsKLSAgICAgICAgICAgIENBQ0ZMYXll
clNldE5hbWUodGlsZSwgUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBuYW1lLmNyZWF0
ZUNGU3RyaW5nKCkpLmdldCgpKTsKKyAgICAgICAgICAgIENBQ0ZMYXllclNldE5hbWUodGlsZSwg
bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAppbmRleCAyMWU5ZGI0YzI4ZDlhMjU1MTM1MjBhY2U3MDg0MDNhYzVlNzdhYjkzLi5k
ZDM3ODE1OTdmODVlYjYxMGRjYzQ3MWVjODMxNTNlMGFiZDJjZWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAt
Mzc3LDggKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYganBlZ1VUSSgpCiBzdGF0
aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBtaW1lVHlwZUNGU3RyaW5nKEFkb3B0Q0YsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVBy
ZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGVDRlN0
cmluZy5nZXQoKSwgMCkpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgMCkpOwogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAv
LyBJdCBpcyB1bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCmlu
ZGV4IGJkNTBhMzE3NWYzYjQyNWE4ODI2Y2QyYTU2YTYyZTIxOTM2OTYzMzcuLjk1M2JjYjlkMjhh
ZDBlYjc1YWIzODgxM2MzNDM5NDU1ZjEyNjJjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQpAQCAtMzMsMTYg
KzMzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VT
b3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdXRpcmVmKEFkb3B0Q0YsIHV0aS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG1pbWUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFz
cyh1dGlyZWYuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAgICByZXR1cm4gbWltZS5n
ZXQoKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNz
KHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSkuZ2V0KCk7
CiB9CiAKIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoY29uc3Qg
U3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlKEFkb3B0Q0Ys
IHV0aS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVu
c2lvbihBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHR5cGUuZ2V0KCks
IGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9uLmdl
dCgpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3Mo
dXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24p
KS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVU
ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0Lm1tCmluZGV4IDRjYjg3NmMzNjVlYzlkZDcxNjBhMWQyZmRlMDll
N2YzMmYwMGJhYzkuLjU3ZjcwZmZmMjhlNzRmNmZlMTU3Nzg3MzVjYjAzMjA0N2FhMzE2MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9j
b21wbGV4VGV4dFJ1bnMuYXBwZW5kKENvbXBsZXhUZXh0UnVuOjpjcmVhdGUobV9mb250LnByaW1h
cnlGb250KCksIGNwLCBzdHJpbmdMb2NhdGlvbiArIHJ1blJhbmdlLmxvY2F0aW9uLCBydW5SYW5n
ZS5sZW5ndGgsIG1fcnVuLmx0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBydW5Gb250RGF0
YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YShtX2ZvbnQuZm9udERlc2NyaXB0aW9u
KCksIGZvbnROYW1lLmdldCgpLCBmYWxzZSwgRm9udENhY2hlOjpEb05vdFJldGFpbikuZ2V0KCk7
CisgICAgICAgICAgICAgICAgICAgIHJ1bkZvbnREYXRhID0gZm9udENhY2hlKCktPmdldENhY2hl
ZEZvbnREYXRhKG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgU3RyaW5nKGZvbnROYW1lLmdldCgp
KSwgZmFsc2UsIEZvbnRDYWNoZTo6RG9Ob3RSZXRhaW4pLmdldCgpOwogI2lmICFQTEFURk9STShX
WCkKICAgICAgICAgICAgICAgICAgICAgLy8gQ29yZSBUZXh0IG1heSBoYXZlIHVzZWQgYSBmb250
IHRoYXQgaXMgbm90IGtub3duIHRvIE5TRm9udE1hbmFnZXIuIEluIHRoYXQgY2FzZSwgZmFsbCBi
YWNrIG9uCiAgICAgICAgICAgICAgICAgICAgIC8vIHVzaW5nIHRoZSBmb250IGFzIHJldHVybmVk
LCBldmVuIHRob3VnaCBpdCBtYXkgbm90IGhhdmUgdGhlIGJlc3QgTlNGb250UmVuZGVyaW5nTW9k
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IGJk
ODgwMjA0NDFiMGU5YWUwMGJhZGFmMzZiMmY0ZjVhNmE2YmVhZTcuLmZkNGFiOTliMTc0NzVkNDE0
YjIxYWEzZWNkNTdlNjE4MGEyOGZjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0NsaXBib2FyZE1hYy5tbQpAQCAtOTksMTEgKzk5LDEwIEBAIHN0YXRpYyBTdHJpbmcgY29jb2FU
eXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogICAgIC8vIFRy
eSBVVEkgbm93CiAgICAgU3RyaW5nIG1pbWVUeXBlID0gcVR5cGU7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZp
ZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSwg
TlVMTCkpOwotICAgIGlmICh1dGlUeXBlKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIHBiVHlwZSA9
IFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xh
c3NOU1Bib2FyZFR5cGUpOworICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aVR5cGUg
PSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgTlVMTCkpKSB7Cisg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGJUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRU
eXBlKSk7CiAgICAgICAgIGlmIChwYlR5cGUpCi0gICAgICAgICAgICByZXR1cm4gcGJUeXBlOwor
ICAgICAgICAgICAgcmV0dXJuIHBiVHlwZS5nZXQoKTsKICAgICB9CiAKICAgICAvLyBObyBtYXBw
aW5nLCBqdXN0IHBhc3MgdGhlIHdob2xlIHN0cmluZyB0aG91Z2gKQEAgLTExMiwxMSArMTExLDgg
QEAgc3RhdGljIFN0cmluZyBjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogCiBzdGF0aWMgU3RyaW5nIHV0aVR5cGVGcm9tQ29jb2FUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGVDRiA9IGFkb3B0
Q0YodHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0
aVR5cGUoQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc05TUGJvYXJkVHlwZSwgdHlwZUNGLmdldCgpLCAwKSk7Ci0gICAgaWYgKHV0aVR5cGUp
IHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBVVFR5
cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTUlN
RVR5cGUpKTsKLSAgICAgICAgaWYgKG1pbWVUeXBlKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aVR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJG
b3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUsIHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgMCkpKSB7CisgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0g
YWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtV
VFRhZ0NsYXNzTUlNRVR5cGUpKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcobWltZVR5cGUu
Z2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwCmluZGV4IDBhMWE0ZDhjNzUx
NGRhOTEzNzM5YmU1ZTM0NDZkNDk3ZDk1YTQ3OGIuLmU1OGQ5YTk0OTk2OTI3YjliYjViOWIzNDYx
NDk3OGY1YWJmNGYzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMuY3BwCkBAIC02MCwxMSArNjAsNyBAQCBTdHJpbmcgc2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3Ry
aW5nJiBjaAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjaGFsbGVuZ2VTdHJpbmdDRihBZG9wdENGLCBjaGFsbGVuZ2VTdHJpbmcu
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlEZXNjcmlw
dGlvbihBZG9wdENGLCBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0KEFkb3B0Q0YsIHdr
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemUsIGNoYWxsZW5nZVN0cmlu
Z0NGLmdldCgpLCBrZXlEZXNjcmlwdGlvbi5nZXQoKSkpOwotCi0gICAgcmV0dXJuIHJlc3VsdC5n
ZXQoKTsKKyAgICByZXR1cm4gYWRvcHRDRih3a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga2V5
Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSku
Z2V0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCmluZGV4IDg3YTNmYWI4YTc0MzdhZTEwYWY0Mzlh
NGU0ZTAyY2QyZTFhMzBkZWIuLjdiMWQ0ZmE0Nzg3ZjFkMWUwZDllM2E0ZGU4MWYzZWI1NDZkMGNl
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9B
dXRoZW50aWNhdGlvbkNGLmNwcApAQCAtMTE5LDEzICsxMTksNyBAQCBDRlVSTENyZWRlbnRpYWxS
ZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCiAgICAgICAgIHJl
dHVybiBDRlVSTENyZWRlbnRpYWxDcmVhdGVXaXRoSWRlbnRpdHlBbmRDZXJ0aWZpY2F0ZUFycmF5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvcmVDcmVkZW50aWFsLmlkZW50aXR5KCksIGNvcmVDcmVk
ZW50aWFsLmNlcnRpZmljYXRlcygpLCBwZXJzaXN0ZW5jZSk7CiAjZW5kaWYKIAotICAgIENGU3Ry
aW5nUmVmIHVzZXIgPSBjb3JlQ3JlZGVudGlhbC51c2VyKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAg
ICBDRlN0cmluZ1JlZiBwYXNzd29yZCA9IGNvcmVDcmVkZW50aWFsLnBhc3N3b3JkKCkuY3JlYXRl
Q0ZTdHJpbmcoKTsKLSAgICBDRlVSTENyZWRlbnRpYWxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVkZW50
aWFsQ3JlYXRlKDAsIHVzZXIsIHBhc3N3b3JkLCAwLCBwZXJzaXN0ZW5jZSk7Ci0gICAgQ0ZSZWxl
YXNlKHVzZXIpOwotICAgIENGUmVsZWFzZShwYXNzd29yZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxDcmVhdGUoMCwgY29yZUNyZWRlbnRpYWwudXNl
cigpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVDcmVkZW50aWFsLnBhc3N3b3JkKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwgcGVyc2lzdGVuY2UpOwogfQogCiBDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkKQEAg
LTE5MiwxMyArMTg2LDcgQEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIAotICAgIENGU3RyaW5nUmVmIGhvc3QgPSBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0
ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZTdHJpbmdSZWYgcmVhbG0gPSBjb3JlU3BhY2UucmVhbG0oKS5j
cmVhdGVDRlN0cmluZygpOwotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHJlc3VsdCA9IENG
VVJMUHJvdGVjdGlvblNwYWNlQ3JlYXRlKDAsIGhvc3QsIGNvcmVTcGFjZS5wb3J0KCksIHNlcnZl
clR5cGUsIHJlYWxtLCBzY2hlbWUpOwotICAgIENGUmVsZWFzZShob3N0KTsKLSAgICBDRlJlbGVh
c2UocmVhbG0pOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIENGVVJMUHJv
dGVjdGlvblNwYWNlQ3JlYXRlKDAsIGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVyVHlwZSwgY29yZVNwYWNlLnJlYWxtKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgc2NoZW1lKTsKIH0KIAogQ3JlZGVudGlhbCBjb3JlKENGVVJM
Q3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IDVkNmQ3MzkyNmM0NGVl
NDg4MDE4MmZmZmU4OTgxYWNmMzhhNzZiMGEuLjUwMTc5NzFkZTE0YTQ1NGE4NGY5YTM4OGJiNDdm
NjQ4NDg5MWRhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llSmFyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBzZXRDb29r
aWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgIC8vIGNvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMgZG9lc24ndCBwYXJz
ZSBjb29raWVzIHdpdGhvdXQgYSB2YWx1ZQogICAgIFN0cmluZyBjb29raWVTdHJpbmcgPSB2YWx1
ZS5jb250YWlucygnPScpID8gdmFsdWUgOiB2YWx1ZSArICI9IjsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gY29va2llU3RyaW5nQ0YoQWRvcHRDRiwgY29va2llU3RyaW5nLmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29va2llU3RyaW5nQ0YgPSBj
b29raWVTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBoZWFkZXJGaWVsZHNDRihBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwKICAgICAgICAgKGNvbnN0IHZvaWQqKikmc19zZXRDb29raWVLZXlDRiwgKGNv
bnN0IHZvaWQqKikmY29va2llU3RyaW5nQ0YsIDEsCiAgICAgICAgICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKaW5kZXggM2Y5
MDFhNTQxZGUwMGVlYmVjMjQzMjJkMDQzOTZlZTRhMjIwNWZiNi4uY2UxNDUxOTA5YWVkN2UyYjRk
ZWY5Y2UwZDliYjQyOTM0MThkYWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNDRk5ldC5jcHAKQEAgLTkwLDEyICs5MCwxMiBAQCB2b2lkIEROU1Jlc29s
dmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9z
dG5hbWVDRihBZG9wdENGLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZIb3N0UmVmPiBob3N0KEFkb3B0Q0YsIENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3Ru
YW1lQ0YuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihD
Rkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7
CiAgICAgaWYgKCFob3N0KSB7CiAgICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorCiAgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0g
eyAwLCAwLCAwLCAwLCAwIH07CiAgICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtS
ZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCku
CiAgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50
Q2FsbGJhY2ssICZjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCAzNTRmZDI3NTg2NDIwN2I3OWVm
YzIxYWY3ZDE5OWRiMGIzMDEyMGI0Li41ODk1ZWQ5OTM0NjY1ZWY2MzBiZTM2NTE3MTYxNTE1MmU0
MGY4M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xNDUsMTMgKzE0NSwxMSBAQCBDRkVycm9yUmVmIFJl
c291cmNlRXJyb3I6OmNmRXJyb3IoKSBjb25zdAogICAgIGlmICghbV9wbGF0Zm9ybUVycm9yKSB7
CiAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyhBZG9w
dENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgICAg
ICBpZiAoIW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvY2FsaXplZERlc2NyaXB0aW9uU3RyaW5nKEFkb3B0Q0Ys
IG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6ZWREZXNj
cmlwdGlvbktleSwgbG9jYWxpemVkRGVzY3JpcHRpb25TdHJpbmcuZ2V0KCkpOwotICAgICAgICB9
CisgICAgICAgIGlmICghbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6
ZWREZXNjcmlwdGlvbktleSwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKIAogICAgICAgICBpZiAoIW1fZmFpbGluZ1VSTC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmFpbGluZ1VSTFN0cmluZyhBZG9wdENGLCBt
X2ZhaWxpbmdVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcgPSBtX2ZhaWxpbmdVUkwuY3JlYXRlQ0ZTdHJpbmco
KTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWls
aW5nVVJMU3RyaW5nS2V5LCBmYWlsaW5nVVJMU3RyaW5nLmdldCgpKTsKICAgICAgICAgICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZygwLCBm
YWlsaW5nVVJMU3RyaW5nLmdldCgpLCAwKSk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTEtleSwgdXJsLmdldCgpKTsKQEAgLTE2Miw4
ICsxNjAsNyBAQCBDRkVycm9yUmVmIFJlc291cmNlRXJyb3I6OmNmRXJyb3IoKSBjb25zdAogICAg
ICAgICAgICAgd2tTZXRTU0xQZWVyQ2VydGlmaWNhdGVEYXRhKHVzZXJJbmZvLmdldCgpLCBtX2Nl
cnRpZmljYXRlLmdldCgpKTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBkb21haW5TdHJpbmcoQWRvcHRDRiwgbV9kb21haW4uY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgICAgIG1fcGxhdGZvcm1FcnJvci5hZG9wdENGKENGRXJyb3JDcmVhdGUoMCwgZG9t
YWluU3RyaW5nLmdldCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKKyAgICAgICAg
bV9wbGF0Zm9ybUVycm9yID0gYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIG1fZG9tYWluLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXJyb3JDb2RlLCB1c2VySW5mby5nZXQoKSkpOwogICAgIH0K
IAogICAgIHJldHVybiBtX3BsYXRmb3JtRXJyb3IuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApp
bmRleCAwMWU4YjhhZTVjMGQxYzZhNmE4ZjAzMzA4NWU5MGYwMTBiYzFmN2M2Li44MDcwYzI1ODJi
N2NhYTBkZTZmZTM1ZjMwNzQzZjc4YjIwYjc3YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAg
LTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFS
ZWY+ID4mIGNsaWVudENlcnRzKCkKIAogc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENG
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7Ci0gICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1
bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7Cisg
ICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1F
VHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgIAogICAgIENGVVJMUmVzcG9u
c2VTZXRNSU1FVHlwZShyZXNwb25zZSwgZGVmYXVsdE1JTUVUeXBlU3RyaW5nKTsKIH0KQEAgLTE2
MSw4ICsxNjEsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVS
TENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgaWYgKGNmUmVkaXJlY3RS
ZXNwb25zZSkgewogICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxS
ZXNwb25zZUdldEhUVFBSZXNwb25zZShjZlJlZGlyZWN0UmVzcG9uc2UpOwogICAgICAgICBpZiAo
aHR0cE1lc3NhZ2UgJiYgQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29kZShodHRwTWVz
c2FnZSkgPT0gMzA3KSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RI
VFRQTWV0aG9kKEFkb3B0Q0YsIGhhbmRsZS0+bGFzdEhUVFBNZXRob2QoKS5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmV3TWV0aG9kKEFkb3B0
Q0YsIENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QpKTsKKyAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBNZXRob2QgPSBoYW5kbGUtPmxh
c3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbmV3TWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVl
c3RNZXRob2QoY2ZSZXF1ZXN0KSk7CiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlV2l0
aE9wdGlvbnMobGFzdEhUVFBNZXRob2QuZ2V0KCksIG5ld01ldGhvZC5nZXQoKSwgQ0ZSYW5nZU1h
a2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgobGFzdEhUVFBNZXRob2QuZ2V0KCkpKSwga0NGQ29tcGFy
ZUNhc2VJbnNlbnNpdGl2ZSkpIHsKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
VVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRl
TXV0YWJsZUNvcHkoMCwgY2ZSZXF1ZXN0KSk7CiAjaWYgVVNFKENGVVJMU1RPUkFHRVNFU1NJT05T
KQpAQCAtMTc1LDkgKzE3NSw4IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1
ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYKICAgICAgICAgICAg
ICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkobXV0YWJsZVJlcXVlc3QuZ2V0KCksIGJvZHkp
OwogCiAgICAgICAgICAgICAgICAgU3RyaW5nIG9yaWdpbmFsQ29udGVudFR5cGUgPSBoYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLmh0dHBDb250ZW50VHlwZSgpOwotICAgICAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxDb250ZW50VHlwZUNGKEFkb3B0Q0YsIG9yaWdpbmFs
Q29udGVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFvcmln
aW5hbENvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVlc3QuZ2V0KCksIENGU1RSKCJD
b250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZUNGLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVl
c3QuZ2V0KCksIENGU1RSKCJDb250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBtdXRhYmxl
UmVxdWVzdC5nZXQoKTsKICAgICAgICAgICAgIH0KQEAgLTYwNywxMCArNjA2LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGwKICNlbmRpZgogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkg
JiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHVzZXIoQWRvcHRDRiwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHBhc3MoQWRvcHRDRiwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsKEFk
b3B0Q0YsCi0gICAgICAgICAgICBDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdXNlci5nZXQoKSwgcGFzcy5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50
aWFsID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7CiAgICAgICAg
IAogICAgICAgICBLVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVy
ZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCkBAIC0xMDA1LDcgKzEwMDEsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGJhc2UgPSBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkgPyBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJEZWZhdWx0QmFzZSgpIDogcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2ZJZGVudGlmaWVyKEFkb3B0Q0YsIFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3Npbmci
KS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRp
ZmllciA9IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygp
OwogCiAgICAgcHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKCkgPSBjcmVhdGVQcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAppbmRleCA4Y2ZmODdjYTBkNThlYTJlNTIzZjM3MzBkNmI0YTc3MzBiMDZiZTRiLi4wZTNkZWNl
MDE4MjdlYzVhZDFiNmI1ODFlMTE2MjgyOWI0MTMwYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cApAQCAtMTE5LDEzICsxMTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0SGVhZGVyRmllbGRz
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3QgSFRUUEhlYQogICAgIH0KIAog
ICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlcXVlc3RIZWFkZXJzLmVu
ZCgpOwotICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXF1ZXN0
SGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYg
a2V5ID0gaXQtPmtleS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBDRlN0cmluZ1JlZiB2YWx1
ZSA9IGl0LT52YWx1ZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LCBrZXksIHZhbHVlKTsKLSAgICAgICAgQ0ZSZWxl
YXNlKGtleSk7Ci0gICAgICAgIENGUmVsZWFzZSh2YWx1ZSk7Ci0gICAgfQorICAgIGZvciAoSFRU
UEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXF1ZXN0SGVhZGVycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZh
bHVlKHJlcXVlc3QsIGl0LT5rZXkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgaXQt
PnZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQpAQCAtMTQ2LDggKzE0MSw3IEBAIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgd2tTZXRSZXF1ZXN0
U3RvcmFnZVNlc3Npb24oUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRTdG9yYWdlU2Vzc2lvbigpLCBj
ZlJlcXVlc3QpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlcXVlc3RN
ZXRob2QoQWRvcHRDRiwgaHR0cE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGVVJM
UmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgcmVxdWVzdE1ldGhvZC5nZXQo
KSk7CisgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0LCBodHRw
TWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICBpZiAoaHR0cFBpcGVsaW5p
bmdFbmFibGVkKCkpCiAgICAgICAgIHdrU2V0SFRUUFBpcGVsaW5pbmdQcmlvcml0eShjZlJlcXVl
c3QsIHRvSFRUUFBpcGVsaW5pbmdQcmlvcml0eShtX3ByaW9yaXR5KSk7CkBAIC0xNjQsNyArMTU4
LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAg
ICB1bnNpZ25lZCBmYWxsYmFja0NvdW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVu
Y29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5
UmVmPiBlbmNvZGluZ0ZhbGxiYWNrcyhBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0NvdW50LCAwKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSAhPSBmYWxsYmFja0NvdW50OyArK2kpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBlbmNvZGluZ05hbWUoQWRvcHRDRiwgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAg
IENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5h
bWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZS5nZXQoKSk7CiAgICAgICAgIGlmIChlbmNvZGluZyAh
PSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oZW5jb2RpbmcpKTsKQEAgLTIxMyw3ICsyMDcsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEy
OD4gdmFsdWVzKGhlYWRlckNvdW50KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhoZWFkZXJzLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKLSAgICAgICAgICAgIG1faHR0cEhlYWRl
ckZpZWxkcy5zZXQoKENGU3RyaW5nUmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1ZXNbaV0p
OworICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChTdHJpbmcoKENGU3RyaW5nUmVm
KWtleXNbaV0pLCBTdHJpbmcoKENGU3RyaW5nUmVmKXZhbHVlc1tpXSkpOwogICAgICAgICBDRlJl
bGVhc2UoaGVhZGVycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKaW5kZXggYTQ1
YmVlZGM0MzMwMDc3MmIzOWNhZWUyYjM5NDZjYWMzZGYwYmYzMS4uMzgyMTZkNGQyMGJmOTgxMTNm
M2FlZDIzNmNhNTE2ZmVkYzA0OTA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcApAQCAtNTEs
OSArNTEsNyBAQCBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9u
c2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewogICAg
ICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBtX3VybC5jcmVhdGVDRlVSTCgp
KTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBtX21p
bWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHRleHRFbmNvZGluZ05hbWUoQWRvcHRDRiwgbV90ZXh0RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICBtX2NmUmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRl
KDAsIHVybC5nZXQoKSwgbWltZVR5cGUuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCB0
ZXh0RW5jb2RpbmdOYW1lLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CisgICAg
ICAgIG1fY2ZSZXNwb25zZS5hZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgp
LCBtX21pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVu
Z3RoLCBtX3RleHRFbmNvZGluZ05hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2Fj
aGVTdG9yYWdlQWxsb3dlZCkpOwogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0
KCk7CkBAIC0xMDUsNyArMTAzLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxh
enlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUNvbW1vbkhlYWRlckZpZWxkczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgQ0ZTdHJp
bmdSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQ
cmVzZW50KGhlYWRlcnMuZ2V0KCksIGNvbW1vbkhlYWRlckZpZWxkc1tpXSwgKGNvbnN0IHZvaWQg
KiopJnZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChj
b21tb25IZWFkZXJGaWVsZHNbaV0sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9odHRw
SGVhZGVyRmllbGRzLnNldChTdHJpbmcoY29tbW9uSGVhZGVyRmllbGRzW2ldKSwgU3RyaW5nKHZh
bHVlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9odHRw
U3RhdHVzQ29kZSA9IDA7CkBAIC0xMjMsNyArMTIxLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpCiAgICAgICAgICAgICBWZWN0
b3I8Y29uc3Qgdm9pZCosIDEyOD4gdmFsdWVzKGhlYWRlckNvdW50KTsKICAgICAgICAgICAgIENG
RGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVycy5nZXQoKSwga2V5cy5kYXRhKCksIHZh
bHVlcy5kYXRhKCkpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWFkZXJDb3Vu
dDsgKytpKQotICAgICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoKENGU3RyaW5n
UmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pOworICAgICAgICAgICAgICAgIG1f
aHR0cEhlYWRlckZpZWxkcy5zZXQoU3RyaW5nKChDRlN0cmluZ1JlZilrZXlzW2ldKSwgU3RyaW5n
KChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAKaW5kZXggZDg2Yzc2YmM2ZjQ1YzE4MTY0OGUwYTc3NmNkMzli
YWU4OTA4NDBkNi4uNGE3Y2Q5MDJhZTlmMDI4N2Q4OThkOTJiZDk4NWRkNzY2ZDQyYTE3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1I
YW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcygpCiAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUg
PT0gVW5rbm93bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBob3N0KEFkb3B0Q0YsIG1fdXJsLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3QgPSBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
IAogICAgIC8vIENyZWF0aW5nIHN0cmVhbXMgdG8gZmluYWwgZGVzdGluYXRpb24sIG5vdCB0byBw
cm94eS4KICAgICBDRlJlYWRTdHJlYW1SZWYgcmVhZFN0cmVhbSA9IDA7CkBAIC0zNTksMTIgKzM1
OSwxMCBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENG
SFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKICAgICBTdHJpbmcgcGFzc3dvcmQ7CiAgICAg
aWYgKCFtX3NlbnRTdG9yZWRDcmVkZW50aWFscyAmJiBnZXRTdG9yZWRDT05ORUNUUHJveHlDcmVk
ZW50aWFscyhwcm90ZWN0aW9uU3BhY2UsIGxvZ2luLCBwYXNzd29yZCkpIHsKICAgICAgICAgLy8g
VHJ5IHRvIGFwcGx5IHN0b3JlZCBjcmVkZW50aWFscywgaWYgd2UgaGF2ZW4ndCB0cmllZCB0aG9z
ZSBhbHJlYWR5LgotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvZ2luQ0YoQWRvcHRD
RiwgbG9naW4uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcGFzc3dvcmRDRihBZG9wdENGLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAg
ICAgLy8gQ3JlYXRpbmcgYSB0ZW1wb3JhcnkgcmVxdWVzdCB0byBtYWtlIENGTmV0d29yayBhcHBs
eSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5hdGVseSwgdGhpcyBjYW5ub3Qgd29yayB3aXRo
IE5UTE0gYXV0aGVudGljYXRpb24uCisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSByZXF1
ZXN0IHRvIG1ha2UgQ0ZOZXR3b3JrIGFwcGx5IGNyZWRlbnRpYWxzIHRvIGl0LiBVbmZvcnR1bmF0
ZWx5LCB0aGlzIGNhbm5vdCB3b3JrIHdpdGggTlRMTSBhdXRoZW50aWNhdGlvbi4KICAgICAgICAg
UmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IGR1bW15UmVxdWVzdChBZG9wdENGLCBDRkhUVFBN
ZXNzYWdlQ3JlYXRlUmVxdWVzdCgwLCBDRlNUUigiR0VUIiksIG1faHR0cHNVUkwuZ2V0KCksIGtD
RkhUVFBWZXJzaW9uMV8xKSk7CiAKLSAgICAgICAgQm9vbGVhbiBhcHBsaWVkQ3JlZGVudGlhbHMg
PSBDRkhUVFBNZXNzYWdlQXBwbHlDcmVkZW50aWFscyhkdW1teVJlcXVlc3QuZ2V0KCksIGF1dGhl
bnRpY2F0aW9uLmdldCgpLCBsb2dpbkNGLmdldCgpLCBwYXNzd29yZENGLmdldCgpLCAwKTsKKyAg
ICAgICAgQm9vbGVhbiBhcHBsaWVkQ3JlZGVudGlhbHMgPSBDRkhUVFBNZXNzYWdlQXBwbHlDcmVk
ZW50aWFscyhkdW1teVJlcXVlc3QuZ2V0KCksIGF1dGhlbnRpY2F0aW9uLmdldCgpLCBsb2dpbi5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAw
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhcHBsaWVkQ3JlZGVudGlhbHMsIGFwcGxpZWRDcmVk
ZW50aWFscyk7CiAKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcm94eUF1dGhvcml6
YXRpb25TdHJpbmcoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZhbHVlKGR1
bW15UmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIlByb3h5LUF1dGhvcml6YXRpb24iKSkpOwpAQCAtMzg5
LDcgKzM4Nyw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGVudGlh
bHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogQ0ZTdHJpbmdSZWYgU29ja2V0U3Ry
ZWFtSGFuZGxlOjpjb3B5Q0ZTdHJlYW1EZXNjcmlwdGlvbih2b2lkKiBpbmZvKQogewogICAgIFNv
Y2tldFN0cmVhbUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxl
Kj4oaW5mbyk7Ci0gICAgcmV0dXJuIFN0cmluZygiV2ViS2l0IHNvY2tldCBzdHJlYW0sICIgKyBo
YW5kbGUtPm1fdXJsLnN0cmluZygpKS5jcmVhdGVDRlN0cmluZygpOworICAgIHJldHVybiBTdHJp
bmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxlLT5tX3VybC5zdHJpbmcoKSkuY3Jl
YXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiB9CiAKIHN0cnVjdCBNYWluVGhyZWFkRXZlbnRDYWxs
YmFja0luZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4IDkzMjE2Y2I1NWU4NTc3MzEzNmYzZThj
M2EwN2NlNmZiNTU2ZTA2ZDIuLmU2OTM0ODQ4MWFiMGEwMjEzNzk0ZGEyNGVmYmNjNGY1NmRjMDA4
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KQEAgLTE2Myw5ICsxNjMsOSBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgICAgICBOU011dGFibGVBcnJh
eSAqZW5jb2RpbmdGYWxsYmFja3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgICAgICB1
bnNpZ25lZCBjb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGNvdW50
OyArK2kpIHsKLSAgICAgICAgICAgIENGU3RyaW5nUmVmIGVuY29kaW5nTmFtZSA9IG1fcmVzcG9u
c2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENGU3RyaW5nQ29u
dmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElBTkFDaGFyU2V0
TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lKSk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UoZW5j
b2RpbmdOYW1lKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZW5jb2RpbmdO
YW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtp
XS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuc0VuY29kaW5n
ID0gQ0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb05TU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdDb252
ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUuZ2V0KCkpKTsKKwogICAg
ICAgICAgICAgaWYgKG5zRW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpCiAg
ICAgICAgICAgICAgICAgW2VuY29kaW5nRmFsbGJhY2tzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVt
YmVyV2l0aFVuc2lnbmVkTG9uZzpuc0VuY29kaW5nXV07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbQppbmRleCA2YWE3NmY2ZGQ3ODRkYTA5ZDdiZmY3ZTFlNjg1NWU3NWNhZGFlOTljLi5mOTcx
MGIyZGQyNTE4NDYyMDE1MTMyNDJmNDBmM2E0MTI2NGYyMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
CkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKICAgICB9CiAgICAgCiAgICAgaWYgKCFyZXN1bHQpIHsK
LSAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IFdlYkNv
cmU6OmRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpkZWZhdWx0TUlNRVR5
cGUoKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAgICAgcmVzdWx0ID0gZGVmYXVs
dE1JTUVUeXBlU3RyaW5nOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKaW5kZXggNGUzZmNlZDQ0NDY0OWE5YzVjZWYzNjRl
YzA2MmZlOGRiMTg4NGYwOS4uMGY2NjhkMTBmOGU0MTdmNTZlYTkzYTA4NTgxMjRjZGYyYmE0MTdi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlv
bkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9u
Q0YuY3BwCkBAIC00Niw4ICs0Niw3IEBAIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3Ry
aW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0CiB0ZW1wbGF0
ZTw+CiBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0
YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkxv
Y2FsZUlkZW50aWZpZXIoQWRvcHRDRiwgbG9jYWxlSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZShBZG9wdENGLCBDRkxvY2FsZUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZkxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxlSWRlbnRpZmllci5pbXBsKCktPmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpKTsKIAogICAgIHJldHVybiBDRlN0cmluZ0lzSHlwaGVuYXRpb25BdmFpbGFi
bGVGb3JMb2NhbGUobG9jYWxlLmdldCgpKSA/IGxvY2FsZSA6IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwCmluZGV4IGQ3Y2RhNzk2Mjk4NjI1NzNh
MzVjNmE5MjY4NTc1MjMwNWFiNmMyN2UuLjI2OTdlNzZmMGJmNTkyM2IxNTJmZWRkNzEwMzdlOTcx
MTQ5MjZkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3Ry
aW5nQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0Yu
Y3BwCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQ0YpCi0KICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTUx
LDcgKzUxLDcgQEAgU3RyaW5nOjpTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogICAgIH0KIH0KIAot
Q0ZTdHJpbmdSZWYgU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CitSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9p
bXBsKQogICAgICAgICByZXR1cm4gQ0ZTVFIoIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IDdhMmQ4MmU0MDJkMjRiMzdiYmMw
NzFmNDdmOThlMGE4NjUxODQ5MjEuLjFkYTU2MWI2MDYyYmNhYjQ5ZTA5YmZlNzk3ODJiMjczZjBk
YTA5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5n
SW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0lt
cGxDRi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTMyLDcgKzEzMyw3IEBAIG5h
bWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgewogCiB9CiAKLUNGU3RyaW5nUmVmIFN0
cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5n
SW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlzTWFpblRo
cmVhZCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKQEAgLTE1Myw3ICsxNTQsNyBAQCBDRlN0
cmluZ1JlZiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiAgICAgLy8gQ29yZUZvdW5kYXRp
b24gbWlnaHQgbm90IGhhdmUgdG8gYWxsb2NhdGUgYW55dGhpbmcsIHdlIGNsZWFyIGN1cnJlbnRT
dHJpbmcgaW4gY2FzZSB3ZSBkaWQgbm90IGV4ZWN1dGUgYWxsb2NhdGUoKS4KICAgICBTdHJpbmdX
cmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSAwOwogCi0gICAgcmV0dXJuIHN0cmlu
ZzsKKyAgICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOwogfQogCiAvLyBPbiBTdHJpbmdJbXBsIGNy
ZWF0aW9uIHdlIGNvdWxkIGNoZWNrIGlmIHRoZSBhbGxvY2F0b3IgaXMgdGhlIFN0cmluZ1dyYXBw
ZXJDRkFsbG9jYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1N0cmluZ0ltcGxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9T
dHJpbmdJbXBsTWFjLm1tCmluZGV4IDZmNWU5NTNiYTE5MjVlNTQ1YmJiNWFjNTNlMjE0NzZiYjhm
MDNhNTcuLjJmMDg4YTdlYjM2M2M1YWNkMDE0MmYzODcwOTViOTYyYzE4MTZhNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQpAQCAt
MjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiAjaW5j
bHVkZSAiRm91bmRhdGlvbkV4dHJhcy5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKIFN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICooKQogewot
ICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2UoY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJu
IEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCmlu
ZGV4IDMxMjQxMmZhYWI4YWMyMzYyODY1MDNkYWNhNWE5MjhiZWJkNDM5NjYuLmE3MDQ3NDk1MjBm
ZGQzMmQ0ZTFlMDBmY2ZjMGRlYWYzODdjYmE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIENT
dHJpbmcgVGV4dENvZGVjTWFjOjplbmNvZGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgsIFVuZW5jb2RhYmxlCiAgICAgLy8gRW5jb2Rpbmcgd2lsbCBjaGFuZ2UgdGhlIHll
biBzaWduIGJhY2sgaW50byBhIGJhY2tzbGFzaC4KICAgICBTdHJpbmcgY29weShjaGFyYWN0ZXJz
LCBsZW5ndGgpOwogICAgIGNvcHkucmVwbGFjZSgnXFwnLCBtX2JhY2tzbGFzaEFzQ3VycmVuY3lT
eW1ib2wpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZzKEFkb3B0Q0YsIGNvcHkuY3Jl
YXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMgPSBjb3B5LmNy
ZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBDRkluZGV4IHN0YXJ0UG9zID0gMDsKICAgICBDRkluZGV4
IGNoYXJhY3RlcnNMZWZ0ID0gQ0ZTdHJpbmdHZXRMZW5ndGgoY2ZzLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXgg
YTVjYTliNzQ0NjkyZjI4N2YyM2YzNDgxNTBiMDhmNjVlMWZmOTVmZS4uYmZjMDg3YmU5ZjE5MmNi
ZTE0M2Q3YTZkMTk2NDI0YTNkZTI1ODg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBT
ZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFN0cmluZyBrZXkgPSAi
Y29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWlu
UHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0
dXJuIGtleS5jcmVhdGVDRlN0cmluZygpOwogfQogI2VuZGlmCiAKQEAgLTY3LDEwICs2Nyw4IEBA
IHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgc2l6ZV90IHNpemUgPSBzZWFyY2hJdGVtcy5z
aXplKCk7CiAgICAgaWYgKHNpemUpIHsKICAgICAgICAgaXRlbXMuYWRvcHRDRihDRkFycmF5Q3Jl
YXRlTXV0YWJsZSgwLCBzaXplLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGl0ZW0oQWRvcHRDRiwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIGl0ZW0uZ2V0
KCkpOwotICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVt
c1tpXS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9CiAKICAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDgzNzQ3ZjIy
MzU1NmE2YWMyYWExNjg5ZGZkZmFjMWYxZWYxN2M0NzcuLjMzN2RhY2FiMmY3MTJjOTg2ZjBmNTcy
Mjk2YTc4MDU2MmMzMTRiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC02MywxNSArNjMsMTQgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbnNwZWN0b3JT
dGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwogCi1zdGF0
aWMgaW5saW5lIENGU3RyaW5nUmVmIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYga2V5KQorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZv
clByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4ga2V5Q0ZTdHJpbmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJl
dHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIgSW5z
cGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXlDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQgV2ViIElu
c3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKIH0K
IAogc3RhdGljIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcq
IHNldHRpbmcpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShB
ZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5ID0gY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KTsK
ICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHZhbHVlKEFkb3B0Q0YsIENGUHJlZmVy
ZW5jZXNDb3B5QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3Vy
cmVudEFwcGxpY2F0aW9uKSk7CiAKICAgICBpZiAoIXZhbHVlKQpAQCAtODgsMTIgKzg3LDcgQEAg
c3RhdGljIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHNl
dHRpbmcpCiAKIHN0YXRpYyB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4g
b2JqZWN0VG9TdG9yZTsKLSAgICBvYmplY3RUb1N0b3JlLmFkb3B0Q0Yoc2V0dGluZy5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBBU1NFUlQob2JqZWN0VG9TdG9yZSk7Ci0KLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVu
Y2VzKGtleSkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5n
ZXQoKSwgb2JqZWN0VG9TdG9yZS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRp
b24pOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShjcmVhdGVLZXlGb3JQcmVmZXJlbmNl
cyhrZXkpLmdldCgpLCBzZXR0aW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlByZWZlcmVu
Y2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggMGU0YjEwNjU2OTgyNWRkNzRkNzRkYjI3NzZlY2M2ZDkyMWVhOGRhYS4uNWYyODM1
MDRjNWQ2NjgyMTg2NDg5MGNlNDQ1YzgyY2YwMGYxMjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtNzkyLDI0ICs3OTIsMjAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICAgICAgS1VS
TCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CiAg
ICAgICAgIGlmIChwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAg
ICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBD
T0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwot
ICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHIoQWRvcHRDRiwgcGx1Z2luUGFn
ZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHN0ci5nZXQoKSk7CisgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5QYWdlVVJMLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKCFwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdS
ZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7Ci0KLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBzdHIoQWRvcHRDRiwgcGx1Z2luVmlldy0+bWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgc3Ry
LmdldCgpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtl
eSwgcGx1Z2luVmlldy0+bWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9
CiAKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkpIHsKICAgICAgICAgU3RyaW5nIHBsdWdp
bk5hbWUgPSBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bmFtZSgpOwogICAgICAgICBpZiAoIXBsdWdp
bk5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBN
YXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVn
SW5OYW1lS2V5KTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0
Q0YsIHBsdWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBzdHIuZ2V0KCkpOworICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luTmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNmU2ODdmMTkzNGFmODA0YmRmOTQ5OWRlZmY2
MWU3N2Y1MzVjY2IyMC4uMTU4NzJlMzRmOWE1NDQ1MGFmM2I0NDlmODJjZGYwYjJhZmJlYjQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC00MDEsOCArNDAx
LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2Uo
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgw
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGF0YWJhc2VOYW1lS2V5
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYkRhdGFiYXNl
TmFtZUtleSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHIoQWRvcHRDRiwgZGF0YWJh
c2VOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJ
bmZvLmdldCgpLCBkYXRhYmFzZU5hbWVLZXksIHN0ci5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGRhdGFiYXNlTmFtZUtleSwgZGF0YWJhc2VOYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5
QmFnPiB1c2VySW5mb0JhZyA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5j
ZSgpOwogICAgIHVzZXJJbmZvQmFnLT5zZXREaWN0aW9uYXJ5KHVzZXJJbmZvLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggMWY3YTU3MmMzNDQ1ZDdjYmM1NzYzYWY5ZDkxYjll
ZGQ3ODk1MTA5Zi4uNDA4ZWE1Mzk1MDBiYjg0NThhODg3ZDZmYmNiY2Q3MGZiY2I3ZjY2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTY5Myw5ICs2OTMsNyBAQCBIUkVTVUxUIFdlYkhp
c3Rvcnk6OmFkZEl0ZW0oSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSwgYm9vbCBkaXNjYXJkRHVwbGlj
YXRlLCBib29sKgogCiB2b2lkIFdlYkhpc3Rvcnk6OnZpc2l0ZWRVUkwoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2Fz
RmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291bnQpCiB7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1cmxTdHJpbmcoQWRvcHRDRiwgdXJsLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkp
OwotCi0gICAgSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSA9IChJV2ViSGlzdG9yeUl0ZW0qKSBDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShtX2VudHJpZXNCeVVSTC5nZXQoKSwgdXJsU3RyaW5nLmdldCgpKTsK
KyAgICBJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5ID0gKElXZWJIaXN0b3J5SXRlbSopIENGRGljdGlv
bmFyeUdldFZhbHVlKG1fZW50cmllc0J5VVJMLmdldCgpLCB1cmwuc3RyaW5nKCkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAgICAgaWYgKGVudHJ5KSB7CiAgICAgICAgIENPTVB0cjxJV2ViSGlz
dG9yeUl0ZW1Qcml2YXRlPiBlbnRyeVByaXZhdGUoUXVlcnksIGVudHJ5KTsKICAgICAgICAgaWYg
KCFlbnRyeVByaXZhdGUpCkBAIC03ODYsMTEgKzc4NCwxMCBAQCBIUkVTVUxUIFdlYkhpc3Rvcnk6
OnJlbW92ZUl0ZW1Gb3JVUkxTdHJpbmcoQ0ZTdHJpbmdSZWYgdXJsU3RyaW5nKQogCiBDT01QdHI8
SVdlYkhpc3RvcnlJdGVtPiBXZWJIaXN0b3J5OjppdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nKSBjb25zdAogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0ZT
dHJpbmcoQWRvcHRDRiwgdXJsU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghdXJs
Q0ZTdHJpbmcpCisgICAgaWYgKCF1cmxTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogICAgIENP
TVB0cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW07Ci0gICAgaWYgKEZBSUxFRChpdGVtRm9yVVJMU3Ry
aW5nKHVybENGU3RyaW5nLmdldCgpLCAmaXRlbSkpKQorICAgIGlmIChGQUlMRUQoaXRlbUZvclVS
TFN0cmluZyh1cmxTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgJml0ZW0pKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5
SXRlbS5jcHAKaW5kZXggYTI2NDMwODlkY2Q3OWQ4MjQyNTIwMTk2MjEzMjdmY2E5ZjgyZDk4Mi4u
OGJmZTliZDdjMDc3Y2NmYmU4YjA3YWI1OTFhYzM5NzA2NTI0MzIxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiog
ZGljdGlvCiAKICAgICBpZiAoIW1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmlzRW1wdHkoKSkg
ewogICAgICAgICBrZXlzW2tleUNvdW50XSA9IHVybEtleTsKLSAgICAgICAgdmFsdWVzW2tleUNv
dW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAg
ICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgfQogCiAgICAga2V5c1trZXlDb3VudF0gPSBs
YXN0VmlzaXRlZERhdGVLZXk7CkBAIC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqKiBk
aWN0aW8KIAogICAgIGlmICghbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5pc0VtcHR5KCkpIHsKICAg
ICAgICAga2V5c1trZXlDb3VudF0gPSB0aXRsZUtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50
KytdID0gbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICB2
YWx1ZXNba2V5Q291bnQrK10gPSBtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5n
KCkubGVha1JlZigpOwogICAgIH0KIAogICAgIGtleXNba2V5Q291bnRdID0gdmlzaXRDb3VudEtl
eTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3Rv
cnlJdGVtOjpkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24odm9pZCoqIGRpY3RpbwogICAgICAgICBB
U1NFUlQoc2l6ZSk7CiAgICAgICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IG5ldyBDRlN0cmluZ1Jl
ZltzaXplXTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgICAgICBpdGVtc1tpXSA9IHJlZGlyZWN0VVJMcy0+YXQoaSkuY3JlYXRlQ0ZTdHJpbmcoKTsK
KyAgICAgICAgICAgIGl0ZW1zW2ldID0gcmVkaXJlY3RVUkxzLT5hdChpKS5jcmVhdGVDRlN0cmlu
ZygpLmxlYWtSZWYoKTsKICAgICAgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRl
KDAsIChjb25zdCB2b2lkKiopaXRlbXMsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgIENG
UmVsZWFzZShpdGVtc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29u
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRl
eCAyNWQ3ZWMwOWI5ODYxZTQ0MzQ5MWUzNDZkNTBkNGUyMmM3NzFiODQ1Li4wNWE5NDkwOGE4ODg0
MTJiMTVkMzk0NjNkMTM5MjlhOTE2NzQ5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJJY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRh
YmFzZS5jcHAKQEAgLTM2Niw3ICszNjYsNyBAQCBCU1RSIFdlYkljb25EYXRhYmFzZTo6aWNvbkRh
dGFiYXNlRGlkQWRkSWNvbk5vdGlmaWNhdGlvbigpCiAKIENGU3RyaW5nUmVmIFdlYkljb25EYXRh
YmFzZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKQogewotICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBpY29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlm
aWNhdGlvblVzZXJJbmZvVVJMS2V5KS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBDRlN0
cmluZ1JlZiBpY29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVz
ZXJJbmZvVVJMS2V5KS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gaWNv
blVzZXJJbmZvVVJMS2V5OwogfQogCkBAIC0zODcsOCArMzg3LDcgQEAgc3RhdGljIHZvaWQgcG9z
dERpZEFkZEljb25Ob3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBXZWJJY29uRGF0
YWJhc2UqIGkKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFy
eShBZG9wdENGLCAKICAgICBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBl
RGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3Mp
KTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsKEFkb3B0Q0YsIHBhZ2VVUkwuY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQo
KSwgV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtl
eSgpLCB1cmwuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0
KCksIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxL
ZXkoKSwgcGFnZVVSTC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRp
Y3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm8gPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6
Y3JlYXRlSW5zdGFuY2UoKTsKICAgICB1c2VySW5mby0+c2V0RGljdGlvbmFyeShkaWN0aW9uYXJ5
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3Ry
aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmlu
ZGV4IGZkNjFhMDFmYmFmMGVjYTcxNDQ2M2JiMWQ1NzBjZmZhNDFiNzY1OGQuLmRmYjcxNGI0NjUw
NjFhYjIwMzUyYmEzZDc1Nzc0ZmJlZmFmMjdkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
TG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAtMTMyLDEyICsxMzIsMTAgQEAgc3RhdGljIENGQnVu
ZGxlUmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3Ry
aW5nIGJ1bmRsZVBhdGhTdHJpbmcocGF0aFN0cik7Ci0gICAgQ0ZTdHJpbmdSZWYgYnVuZGxlUGF0
aENGU3RyaW5nID0gYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpOwotICAgIGlmICgh
YnVuZGxlUGF0aENGU3RyaW5nKQorICAgIGlmICghYnVuZGxlUGF0aFN0cmluZykKICAgICAgICAg
cmV0dXJuIDA7CiAKLSAgICBDRlVSTFJlZiBidW5kbGVVUkxSZWYgPSBDRlVSTENyZWF0ZVdpdGhG
aWxlU3lzdGVtUGF0aCgwLCBidW5kbGVQYXRoQ0ZTdHJpbmcsIGtDRlVSTFdpbmRvd3NQYXRoU3R5
bGUsIHRydWUpOwotICAgIENGUmVsZWFzZShidW5kbGVQYXRoQ0ZTdHJpbmcpOworICAgIENGVVJM
UmVmIGJ1bmRsZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRs
ZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHls
ZSwgdHJ1ZSk7CiAgICAgaWYgKCFidW5kbGVVUkxSZWYpCiAgICAgICAgIHJldHVybiAwOwogCkBA
IC0xNjgsOCArMTY2LDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRTdHJpbmdG
cm9tQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAgICBpZiAoIWJ1bmRs
ZSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBrZXlTdHJpbmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGU3RyaW5n
UmVmIHJlc3VsdCA9IENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5U3Ry
aW5nLmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKTsKKyAgICBDRlN0cmluZ1JlZiByZXN1
bHQgPSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKTsKIAogICAgIEFTU0VSVF9XSVRI
X01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUg
c3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1NjM0YTE1YjNlZDNlMDFjMjYwNGE1YmUyNjAx
MzcxMWZkY2NkYzMzLi44OTY3YjBiMzBhZTRkNDIzMzU4YjlmY2U2ZjU4MzE5MWM5NmMwYzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9p
ZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXpl
UHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAgIFN0cmluZyBkZWZhdWx0RGVmYXVs
dEVuY29kaW5nKFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEiLCAiVGhlIGRlZmF1bHQsIGRlZmF1
bHQgY2hhcmFjdGVyIGVuY29kaW5nIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1
bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBk
ZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENGRGljdGlvbmFy
eUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVBy
ZWZlcmVuY2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVz
ZXJTdHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uUHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmlu
ZGV4IDZiMWJhZGU0YWFmMmU5NWEyMDRmOTJhMjZkNGFiMDI0MGEyNzI4MzguLjNhMWI3NGUyMTM1
MWZhZGE2ZDQxYWNkZjg5ZjI1NGE4M2FhY2I2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC00
NzEsNyArNDcxLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwg
Y2FjaGVNb2RlbCkKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxDYWNoZShBZG9w
dENGLCBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOwogICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2Z1cmxDYWNoZURpcmVjdG9yeShBZG9wdENGLCB3a0NvcHlGb3VuZGF0aW9uQ2Fj
aGVEaXJlY3RvcnkoMCkpOwogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAgICAgICAg
Y2Z1cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3Rv
cmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENhY2hlRGly
ZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0
ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291bnQgZG9l
c24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC00NzEyLDggKzQ3
MTIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90
aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAg
ICAgICAgcmV0dXJuIGhyOwogCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3Ry
aW5nKEFkb3B0Q0YsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCB1cmxTdHJpbmcuZ2V0KCksIDApKTsKKyAgICAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogCiAg
ICAgICAgIC8vIENoZWNrIGlmIHRoZSBwYXNzZWQgaW4gc3RyaW5nIGlzIGEgcGF0aCBhbmQgY29u
dmVydCBpdCB0byBhIFVSTC4KICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5k
IGZvciBuaWdodGx5IGJ1aWxkcyB1bnRpbCB3ZSBjYW4gZ2V0IFNhZmFyaSB0byBwYXNzIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0KaW5kZXggNGEzNWI2YTJkOGEzMmM1
ZGQ4MzQ5NzJjZDJmZGYyYWRjMzkxZTYxYS4uMzY4NzUzMTUxNzIxOGRhMjllOWNkZGRhNDIzMmEz
YjEyODI1MzMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVs
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCkBA
IC0zMCwxMiArMzAsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2Fk
KCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgbV9w
YXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJM
KEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGJ1bmRsZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhG
aWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVV
UkwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4g
YnVuZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRs
ZVVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRD
RihDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsK
ICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBk
ZTdkNTgzMWY2MDhjMzgzMGUzYzliZTE0YjM5NDY1ZWIyYzcxYzNiLi42NzFmMjBkNmRjYWJlMWZj
MWJhMzk1NTdkNWU2MjhlZTdlZDdlZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTI3OSw4ICsyNzksNyBAQCBz
dGF0aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNv
bnN0IFN0cmluZyYgc2FuZGJveFBybwogICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBh
dGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmUGx1Z2luUGF0aCA9IGFkb3B0Q0YocGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVX
aXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQbHVnaW5QYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhT
dHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBs
dWdpblVSTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTIsOCArMjkxLDcgQEAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJp
bmcmIHNhbmRib3hQcm8KICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTYW5kYm94UHJvZmlsZURpcmVjdG9y
eVBhdGggPSBhZG9wdENGKHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0g
YWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlNhbmRib3hQcm9maWxl
RGlyZWN0b3J5UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKIAog
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZTdHJpbmdDcmVh
dGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlmaWVyKTsKICAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0
aEZpbGVTeXN0ZW1QYXRoUmVsYXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1lLmdldCgpLCBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5LmdldCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9t
YWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggODFiMzhl
MGVjOGZlM2M0MTg4OTc5ZWVmZDA2MjI3YjM3MGZkNGEzZS4uM2RjMzc3YzQ0NTBkODhmZTI1Zjcw
MmIwZmE1NDNhMzhlMjhmNmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbQpAQCAtMzUyLDExICszNTIsMTAgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zy
b21DYXJib25SZXNvdXJjZXMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmYKIAog
Ym9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0
ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgp
LCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQ
T1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlhbGl6ZSB0
aGUgYnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENG
QnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAg
IFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMzk1LDExICszOTQsOSBAQCBib29sIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgUGx1Z2luTW9kdWxlSQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVn
aW5NSU1FVHlwZXNQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRD
RiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVu
ZGxlUGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCi0gICAgLy8gVHJ5IHRv
IGluaXRpYWxpemUgdGhlIGJ1bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRs
ZShBZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwu
Z2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZC
dW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAg
aWYgKCFidW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggY2RmZjM0
NDY5YTIzOTNkMzVhZGJhYmM0Y2IwYTM4YmEwZjU2MjMyNC4uN2MxZjI0MGVjYzQ4YjhiNGMxOTEz
ZTA1NGM1OGFiM2E0OGEyYjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCkBAIC05NCw5ICs5NCw5IEBAIENGRGljdGlv
bmFyeVJlZiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0
aW9uKFdlYlBhZ2VQcm94CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwoQWRvcHRDRiwgbV9lbnRyaWVz
W2ldLT51cmwoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB0aXRsZShBZG9wdENGLCBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxVUkwoQWRvcHRDRiwg
bV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybCA9IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZT
dHJpbmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZSA9IG1fZW50cmll
c1tpXS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG9yaWdpbmFsVVJMID0gbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNG
U3RyaW5nKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgQ29yZUlQQyBkYXRh
IGVuY29kaW5nIGZvcm1hdCwgd2hpY2ggbWVhbnMgdGhhdCB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhl
IENvcmVJUEMgZW5jb2Rpbmcgd2UgbmVlZCB0byBidW1wIHRoZSBDdXJyZW50U2Vzc2lvblN0YXRl
RGF0YVZlcnNpb24KICAgICAgICAgLy8gY29uc3RhbnQgaW4gV2ViUGFnZVByb3h5Q0YuY3BwLiBU
aGUgQ29yZUlQQyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBk
ZXRhaWwsIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gZGlzay4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCmluZGV4
IDc5ZGQ4Y2VkMDJkN2NlMGQ0ZjNjMjQwNDgxOGI4MDFiZTQwZjFmN2EuLmZhYzAyYzFiNDY5MGYx
MjM2ZTlhYTc4ZGFjYTQ5MmIxYzQyNjNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYXNzUmVmUHRyPFdl
YkRhdGE+IFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YShXZWJQYWdlUHJveHlTZXNzaW9u
U3RhdGVGaWx0ZQogICAgICAgICBpZiAocHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgcHJvdmlzaW9uYWxVUkwgPSBtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKICAg
ICAgICAgaWYgKCFwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHByb3Zp
c2lvbmFsVVJMU3RyaW5nLmFkb3B0Q0YocHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7
CisgICAgICAgICAgICBwcm92aXNpb25hbFVSTFN0cmluZyA9IHByb3Zpc2lvbmFsVVJMLmNyZWF0
ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBrZXlzW251bVZhbHVlc10gPSBQcm92aXNpb25hbFVS
TEtleSgpOwogICAgICAgICAgICAgdmFsdWVzW251bVZhbHVlc10gPSBwcm92aXNpb25hbFVSTFN0
cmluZy5nZXQoKTsKICAgICAgICAgICAgICsrbnVtVmFsdWVzOwpAQCAtMTc5LDggKzE3OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSog
d2ViRGF0YSkKIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29u
c3QgU3RyaW5nJiBuYW1lKQogewotICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5z
ZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihB
ZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuIFN0cmluZygiY29tLmFw
cGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKQEAgLTE5MiwxMCArMTkxLDggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogCiAgICAgaWYgKHNpemVfdCBzaXplID0gc2VhcmNoSXRl
bXMuc2l6ZSgpKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
MCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBpdGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAg
ICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
ICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJy
ZW50QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9S
ZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5k
ZXggNjgxMGYwYWJkYjlkYmViYTk5ZmEzZTFlOWIwZjA2Y2U0NWFlMDQ5NC4uMzk1NjQ5YzUwYmY0
ZDZkZjA0YmM3NTQwYjU0YmFmNTlkYjJjMzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXIuY3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFu
YWdlcjo6Y2xlYXJDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwK
ICNpZiBVU0UoQ0ZVUkxDQUNIRSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9IElu
TWVtb3J5UmVzb3VyY2VDYWNoZXNPbmx5KSB7IAogICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
QXJyYXlSZWY+IGhvc3RBcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAm
a0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
aG9zdChBZG9wdENGLCBvcmlnaW4tPmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAg
Q0ZBcnJheUFwcGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwgaG9zdC5nZXQoKSk7CisgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCksIG9yaWdpbi0+aG9zdCgpLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgIGNsZWFyQ0ZVUkxDYWNoZUZvckhvc3ROYW1l
cyhob3N0QXJyYXkuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmMjliMWE3ZjZkMjQzOWIwYzM0OGFhZDYyODVhMWI4OGU3
ZDU0MGY5Li4xZWI3ZjFjZjI1MmNlNmVmMTU3ZTdkNmU4NWI3ZDM1MjEwYTY4ZmJlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBj
YWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW06CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6cGxhdGZvcm1EaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKToKKwogMjAxMi0xMC0yNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHdoZW4gbWFraW5nIE5QUnVudGltZSBjYWxscyB3
aXRoIGEgbnVsbCBOUFAgcG9pbnRlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1t
CmluZGV4IDQ2YzI3M2YxZjhjYTQwYWVlMjdjOTQ3NmM4MWZlNzM5NGMzM2JiMjQuLmIwY2I0ZTAz
MWNiNzQ0NjI4YzBiYzM0ZDU3ZDE3NmI2ODdhZjEzNDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1
bmRsZVBhZ2VNYWMubW0KQEAgLTg1LDggKzg1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmUK
ICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExp
dGVyYWwoIkNSQVNISU5HIFRFU1Q6ICIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCh0ZXN0UGF0
aCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwgYnVp
bGRlci50b1N0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBXS1NldENyYXNoUmVw
b3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGNmU3RyaW5nLmdldCgpKTsKKyAgICAg
ICAgV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbihidWlsZGVy
LnRvU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171114</attachid>
            <date>2012-10-27 19:25:33 -0700</date>
            <delta_ts>2012-10-27 22:39:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121027192402.patch</filename>
            <type>text/plain</type>
            <size>80076</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU4YjQ5NjdiN2U2MmU2Yzk2MTViMGVm
MjhlYmNjY2Q1MmViMTgwNGMuLjJjYzM4YWQyMjM4YmZmM2RjMDM0MjkzYzQ3N2NmOWY1ZmQxNDZm
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDEyLTEwLTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyNjg5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY0YWVjNGU2ZWVmOGM0MjUwOTEyMmQ3ZGIwNjk0M2Q3YzYyMDkyMjguLmVmOWE5M2Mw
NjIzZTI4NGVmNDQ2MTE4MjczZTBlMjcyZjE4YjU2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
MSBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFs
bGJhY2tPYmplY3QpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlVGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0dNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFn
ZVNvdXJjZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5
cGVGcm9tSFRNTENsaXBib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21D
b2NvYVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjo6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0NGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjcmVhdGVDRlN0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMv
U3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNT
dHJpbmcgKik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZW5jb2RlKToKKwogMjAxMi0xMC0yNiAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgLmxvb3BTdGFydCBhbmQgLmxvb3BFbmQgYXR0cmlidXRlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nm
L0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJlY2M1
Li42ZTBhZWQ1ZmZhNTZlNzFmMmIwNTYyOTNmZmNmYzBlZTA1OWE1ZjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0
dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAo
Y3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToKKyAg
ICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcuaCwg
cmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxMWQ1MGIxNzdkYWY2
ZTIwZjdhYWFkYjEzYjEyNWVlNWNkOTUwMGUzLi5lOWI2ODMxNDFhYzVjYmM4NTU5YjZjNTZjMzgy
ZTdkODFiZjU0YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMTAt
MjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJp
bmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9mIFN0
cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFz
ZSk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojp2aXNp
dGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcpOgorICAgICAg
ICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChjcmVhdGVXZWJLaXRCdW5kbGUpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0
cmluZ0Zyb21CdW5kbGUpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAg
KFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAo
V2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxMi0xMC0yNCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RyYXRlZ3kgZm9y
IGxvYWRlciBjdXN0b21pemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFmODliZmIxNzRlOWYxOTJhZGIx
OWVkYjBiNmE4YjA2YTZjNzIxMDkuLjYzNTZlNGJjODQxNjAyZGE2MzM2MDJkMzhlMGIxZmM2MmU5
NWM5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZT
dHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVD
RlN0cmluZy4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vZHVsZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdp
bkluZm8pOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1
Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNr
Rm9yd2FyZExpc3RDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6
Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9j
Zi9XZWJQYWdlUHJveHlDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vz
c2lvblN0YXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OmF1dG9zYXZlS2V5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2lu
KToKKwogMjAxMi0xMC0yNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ3Jhc2ggaW4gV2ViUHJvY2VzIGF0IFdlYkNvcmU6OlJlc291cmNlTG9hZFNjaGVkdWxl
cjo6Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkICsgNzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0
cmluZy5oCmluZGV4IDZhYzYwZTZhZDU3MjQzMzk3OGY1ZmI0YjQ4ODBhOWZiNDAxMDVjNjYuLjdk
YTBkZDRmM2EwMTcxOWI0NmNlYTliMTg4ZGJkZmE1ZTY5M2NjZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9B
dG9taWNTdHJpbmcuaApAQCAtMTM3LDEwICsxMzcsNiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCByZW1vdmUoU3RyaW5nSW1wbCopOwogICAgIAotI2lmIFVTRShDRikKLSAgICBBdG9taWNT
dHJpbmcoQ0ZTdHJpbmdSZWYgcykgOiAgbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7
IH0KLSAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nLmNyZWF0ZUNGU3RyaW5nKCk7IH0KLSNlbmRpZiAgICAKICNpZmRlZiBfX09CSkNfXwogICAg
IEF0b21pY1N0cmluZyhOU1N0cmluZyogcykgOiBtX3N0cmluZyhhZGQoU3RyaW5nKHMpLmltcGwo
KSkpIHsgfQogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5n
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDAwNjdiZWJlZWQ5MGZmNzQzNzMyY2Rh
YWY1NjBhYWY1OTIwOTg0ZWMuLjY3Njc3OTA2ZGIwMjUwM2UyMTc5NDE3NDM5NjI0MTFmYjIzMjY1
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC02Nyw2ICs2Nyw3IEBAIHN0cnVjdCBD
aGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvcjsKIGNsYXNzIE1lbW9yeU9iamVjdElu
Zm87CiBzdHJ1Y3QgU3Vic3RyaW5nVHJhbnNsYXRvcjsKIHN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5z
bGF0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgUmV0YWluUHRyOwogCiBlbnVtIFRleHRD
YXNlU2Vuc2l0aXZpdHkgeyBUZXh0Q2FzZVNlbnNpdGl2ZSwgVGV4dENhc2VJbnNlbnNpdGl2ZSB9
OwogCkBAIC03MTMsNyArNzE0LDcgQEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBo
YXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOwogCiAjaWYgVVNFKENGKQotICAgIENGU3RyaW5n
UmVmIGNyZWF0ZUNGU3RyaW5nKCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVD
RlN0cmluZygpOwogI2VuZGlmCiAjaWZkZWYgX19PQkpDX18KICAgICBvcGVyYXRvciBOU1N0cmlu
ZyooKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUwYzA0OGQ2M2YzZGNmMWM1Mzg2NTU2
NmU0NzI0ZjFhODI0OGZlMDcuLmQ2N2FkMzI5OTJjMjQwZjFlNTUyZjZlYzNlZmMwODAwOGIzYmE4
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNsdWRl
IDxvYmpjL29iamMuaD4KICNlbmRpZgogCi0jaWYgVVNFKENGKQotdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX19DRlN0cmluZyAqIENGU3RyaW5nUmVmOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkK
IFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVN0cmluZzsKQEAgLTM4Niw3ICszODIsNyBAQCBw
dWJsaWM6CiAKICNpZiBVU0UoQ0YpCiAgICAgU3RyaW5nKENGU3RyaW5nUmVmKTsKLSAgICBDRlN0
cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0OworICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCiAjaWZkZWYgX19PQkpDX18KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQppbmRleCAyY2YwZGI1NjE4
ZTM4MjBjZGY0NDY0NTU4MzQxZjY5NGY1M2QxZmEzLi5iZTI0ZmRiM2ZkYjEzN2M4MGI2ZjBhNGZi
ODg3NDFhYjM0MWE0ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCkBAIC0yNDgsOCArMjQ4LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIE9i
amNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0NsYXNzKj4ob2JqY0luc3RhbmNl
LT5nZXRDbGFzcygpKTsKICAgICAgICAgT3duUHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9k
KGFkb3B0UHRyKG5ldyBPYmpjTWV0aG9kKG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZv
a2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpKTsKICAgICAg
ICAgY29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFj
a09iamVjdEltcCo+KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBuYW1lSWRlbnRpZmllci5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5h
bWUuZ2V0KCkpOworICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFt
ZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9i
amNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7
CiAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAppbmRleCA5N2ZlOTViM2E0NGQ0MTg1ZTIxMjZmNmJiNmVkYmVjZjQzOWZlZWVlLi43NWRm
OTlhZjM2YmI2MDAyNjdiOWE3MmQ1YzkxNTg5MGM0ZGM1Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTkxNiw4ICs5MTYsNyBAQCBzdGF0aWMgS1VSTCBj
cmVhdGVGaWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICAvLyBhcHAgY2FjaGUgbWVkaWEgZmlsZXMgYXJlIGFsd2F5cyBjcmVhdGVkIHdpdGgg
ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS4KIAogI2lmIFVT
RShDRikgJiYgUExBVEZPUk0oV0lOKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZQYXRo
KEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVm
PiBjZlVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlBhdGgu
Z2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiBjZlVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBw
YXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNl
KSk7CiAgICAgS1VSTCB1cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKICAgICBLVVJMIHVybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKaW5kZXggMzU3NmQ2NGRmYzQ4MmE0MWQ1NGUxM2VmZDE5NzgxNjJiNzgwN2E3Zi4uZDc3
Zjg3NGIwOWRjMjAwOWJiZWQwMzUyNDE4MzViZmU4NmY4OGUzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkx
LDggKzkxLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6
Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXks
IGNmRGF0YS5nZXQoKSk7CiAgICAgCiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxs
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlVSTChBZG9wdENGLCByZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgaWYgKGNmVVJMKQorICAgIGlmIChS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmNy
ZWF0ZUNGU3RyaW5nKCkpCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlz
dC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVVJMS2V5LCBjZlVSTC5nZXQoKSk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOVUxM
IHJlc291cmNlIFVSTCBpcyBpbnZhbGlkIC0gcmV0dXJuaW5nIG51bGwgcHJvcGVydHkgbGlzdCIp
OwpAQCAtMTAxLDIzICsxMDAsMTcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKIAogICAgIC8v
IEZyYW1lTmFtZSBzaG91bGQgYmUgbGVmdCBvdXQgaWYgZW1wdHkgZm9yIHN1YnJlc291cmNlcywg
YnV0IGFsd2F5cyBpbmNsdWRlZCBmb3IgbWFpbiByZXNvdXJjZXMKICAgICBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZShyZXNvdXJjZS0+ZnJhbWVOYW1lKCkpOwotICAgIGlmICghZnJhbWVOYW1lLmlz
RW1wdHkoKSB8fCBpc01haW5SZXNvdXJjZSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNmRnJhbWVOYW1lKEFkb3B0Q0YsIGZyYW1lTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJB
cmNoaXZlUmVzb3VyY2VGcmFtZU5hbWVLZXksIGNmRnJhbWVOYW1lLmdldCgpKTsKLSAgICB9Cisg
ICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpIHx8IGlzTWFpblJlc291cmNlKQorICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZUZyYW1lTmFtZUtleSwgZnJhbWVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
ICAgIAogICAgIC8vIFNldCBNSU1FVHlwZSwgVGV4dEVuY29kaW5nTmFtZSwgYW5kIFJlc291cmNl
UmVzcG9uc2Ugb25seSBpZiB0aGV5IGFjdHVhbGx5IGV4aXN0CiAgICAgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZShyZXNvdXJjZS0+bWltZVR5cGUoKSk7Ci0gICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk1JTUVUeXBlKEFkb3B0Q0Ys
IG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZU1JTUVUeXBlS2V5
LCBjZk1JTUVUeXBlLmdldCgpKTsKLSAgICB9CisgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkp
CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXksIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogICAgIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKHJlc291cmNlLT50
ZXh0RW5jb2RpbmcoKSk7Ci0gICAgaWYgKCF0ZXh0RW5jb2RpbmcuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZUZXh0RW5jb2RpbmcoQWRvcHRDRiwgdGV4dEVu
Y29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVRleHRFbmNvZGluZ05h
bWVLZXksIGNmVGV4dEVuY29kaW5nLmdldCgpKTsKLSAgICB9CisgICAgaWYgKCF0ZXh0RW5jb2Rp
bmcuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3Qu
Z2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXksIHRleHRF
bmNvZGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIC8vIERvbid0IGluY2x1ZGUg
dGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNN
YWluUmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2Fs
aXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5jcHAKaW5kZXggYWJmMWJjYTVlODU0MTBiYTg3ZDVjYWI4MjUwMGQ5NjlmMTA5MjZhNy4uNjkw
ODQzYjEzNzc4MzQ4MjgwZWM3ZWE1YjQzNzM4OGU5ZGRjNjQxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTU0LDEzICs1NCwxMiBAQCBzdGF0
aWMgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCiAjaWYg
VVNFKENGKQogICAgIHZhX2xpc3QgYXJndW1lbnRzOwogICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywg
Zm9ybWF0KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvcm1hdENGU3RyaW5nKEFkb3B0
Q0YsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpKTsKIAogI2lmIENPTVBJTEVSKENMQU5HKQogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgogI2VuZGlmCi0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiByZXN1bHQoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRz
KDAsIDAsIGZvcm1hdENGU3RyaW5nLmdldCgpLCBhcmd1bWVudHMpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5k
QXJndW1lbnRzKDAsIDAsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcmd1bWVudHMp
KTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNl
bmRpZgpAQCAtMjYwLDcgKzI1OSw3IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJ
bkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykKICAgICByZXR1cm4gV0VC
X1VJX1NUUklORygiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IiwgIkxvb2sgVXAgaW4gRGljdGlvbmFy
eSBjb250ZXh0IG1lbnUgaXRlbSIpOwogI2Vsc2UKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBzZWxlY3RlZENGU3RyaW5nKEFkb3B0Q0YsIHRydW5jYXRlZFN0cmluZ0Zv
ckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdG
b3JMb29rdXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICBy
ZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJUDi
gJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2Vs
ZWN0ZWRDRlN0cmluZy5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJM
b29rIFVwIOKAnDxzZWxlY3Rpb24+4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0
aCBzZWxlY3RlZCB3b3JkIikucmVwbGFjZSgiPHNlbGVjdGlvbj4iLCB0cnVuY2F0ZWRTdHJpbmdG
b3JMb29rdXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykpOwpAQCAtNzM4LDggKzczNyw3IEBAIFN0
cmluZyBrZXlnZW5NZW51SXRlbTIwNDgoKQogCiBTdHJpbmcga2V5Z2VuS2V5Y2hhaW5JdGVtTmFt
ZShjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0
Q0ZTdHJpbmcoQWRvcHRDRiwgaG9zdC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gZm9y
bWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yg
a2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0Q0ZTdHJpbmcu
Z2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygi
S2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlH
RU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNlbmRpZgpAQCAt
NzYyLDggKzc2MCw3IEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAjaWYgVVNFKENGKQogI2lmICFQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDYwCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNGU3RyaW5nKEFkb3B0Q0Ys
IGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4g
bG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CisgICAgUmV0YWluUHRyPENG
TG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CiAgICAg
UmV0YWluUHRyPENGTnVtYmVyRm9ybWF0dGVyUmVmPiBmb3JtYXR0ZXIoQWRvcHRDRiwgQ0ZOdW1i
ZXJGb3JtYXR0ZXJDcmVhdGUoMCwgbG9jYWxlLmdldCgpLCBrQ0ZOdW1iZXJGb3JtYXR0ZXJEZWNp
bWFsU3R5bGUpKTsKIAogICAgIGludCB3aWR0aEludCA9IHNpemUud2lkdGgoKTsKQEAgLTc3NCw3
ICs3NzEsNyBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBJbnRTaXplJiBzaXplKQogICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gaGVpZ2h0KEFkb3B0
Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZoZWlnaHRJbnQpKTsKICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhlaWdodFN0cmluZyhBZG9wdENGLCBDRk51bWJlckZv
cm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhOdW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWlnaHQu
Z2V0KCkpKTsKIAotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklO
RygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFn
ZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5n
LmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKKyAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAICVAw5clQCBwaXhlbHMi
LCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRp
b24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgd2lk
dGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CiAjZWxzZQogICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBmaWxlbmFtZS5jcmVhdGVD
RlN0cmluZygpKTsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJ
TkcoIiVAICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1h
Z2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmlu
Zy5nZXQoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCmluZGV4IDFiOGQw
MDZmMjUxOWFhOGE4ZjNhOGM0NTBlZmQyNzM0MThhZjQyODQuLjczMGVkYzE1ZmU5MWJjOTI3NzA4
NWNjYzI4ODdiMDc5MDY3ODBiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcApAQCAtNDYsOCArNDYsNyBAQCBzdGF0aWMg
Ym9vbCBtYWluQnVuZGxlSXNFcXVhbFRvKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllclN0
cmluZykKICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlSWRlbnRpZmllclRvQ29tcGFyZShB
ZG9wdENGLCBidW5kbGVJZGVudGlmaWVyU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJl
dHVybiBDRlN0cmluZ0NvbXBhcmUoYnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmllclRv
Q29tcGFyZS5nZXQoKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG87CisgICAgcmV0dXJuIENGU3Ry
aW5nQ29tcGFyZShidW5kbGVJZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyU3RyaW5nLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oYnVuZGxlSWRlbnRpZmllclN0cmluZyk7CiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKaW5kZXggOGVmNTBl
ZWIwY2IwODRkMWI5YjIzYjg3YzNiZmE4OTgzOTJiOGEyZC4uYzE4NzA2NjMzNTY1MDU1NzlhZmQ3
YjYxYWMxNzM5MDQwNjQ0ZjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvRmlsZVN5c3RlbUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxl
U3lzdGVtQ0YuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1N0
cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0
cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVh
dGVDRlN0cmluZygpOwogCiAgICAgaWYgKCFjZlN0cmluZykKICAgICAgICAgcmV0dXJuIENTdHJp
bmcoKTsKQEAgLTYzLDggKzYzLDcgQEAgUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29u
c3QgU3RyaW5nJiBwYXRoKQogI2Vsc2UKICAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhT
dHlsZTsKICNlbmRpZgotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0Q0YsIENG
VVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4oQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmluZygpKS5nZXQoKSwgcGF0aFN0eWxlLCBG
QUxTRSkpOworICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0Q0YsIENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0
aFN0eWxlLCBGQUxTRSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1h
dGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKaW5kZXggOTdmYjBiNjA5NDY4ZjRlZDM1YjFlMTkzOGQ5
OGJiZDg5NDIyMjU4Ni4uODU2YTRmY2FkZWQyZjBiNjI2MGY1ZTkyYmUxMTQ1ZGMxMmE1Yzg0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FBbmltYXRpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcApAQCAtMTUxLDggKzE1MSw3IEBA
IFBsYXRmb3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oQW5pbWF0aW9uVHlwZSB0
eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhCiAgICAgZWxzZQogICAgICAgICBtX2FuaW1hdGlvbi5h
ZG9wdENGKENBQ0ZBbmltYXRpb25DcmVhdGUoa0NBQ0ZLZXlmcmFtZUFuaW1hdGlvbikpOwogICAg
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXlQYXRoLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgp
LCBzLmdldCgpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQo
KSwga2V5UGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1h
dGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDcwMTY4YjIxMDRkYjM2OWRhMDc1N2Ex
MTQ0NjIyMTExYmMzMDYxZjAuLmRkNjE2MzM3ZTkzNjZlYjc5Yzk2YzY3MmI3MzkzYjY5MjQzNmZj
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNzYsMTAgKzE3Niw4IEBAIHZv
aWQgUGxhdGZvcm1DQUxheWVyOjphbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2lu
VGltZSkKIHN0YXRpYyB2b2lkIHJlc3VibWl0QWxsQW5pbWF0aW9ucyhQbGF0Zm9ybUNBTGF5ZXIq
IGxheWVyKQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlv
bj4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgaXQtPmtl
eS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKGxheWVy
LT5wbGF0Zm9ybUxheWVyKCksIHMuZ2V0KCksIGl0LT52YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24o
KSk7Ci0gICAgfQorICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5p
bWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRpb25zKCkuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSwgaXQtPmtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBpdC0+dmFs
dWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZW5z
dXJlQW5pbWF0aW9uc1N1Ym1pdHRlZCgpCkBAIC0yOTcsOCArMjk1LDcgQEAgdm9pZCBQbGF0Zm9y
bUNBTGF5ZXI6OmFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1D
QUFuaW1hdGlvbioKICAgICAvLyBBZGQgaXQgdG8gdGhlIGFuaW1hdGlvbiBsaXN0CiAgICAgbV9h
bmltYXRpb25zLmFkZChrZXksIGFuaW1hdGlvbik7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHMoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZMYXllckFkZEFu
aW1hdGlvbihtX2xheWVyLmdldCgpLCBzLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0
aW9uKCkpOworICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBrZXkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBpdCBzbyB3
ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CkBAIC0zMTIsOCArMzA5LDcgQEAg
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkKICAgICAvLyBSZW1vdmUgaXQgZnJvbSB0aGUgYW5pbWF0aW9uIGxpc3QKICAgICBtX2Fu
aW1hdGlvbnMucmVtb3ZlKGtleSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRv
cHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZMYXllclJlbW92ZUFuaW1hdGlv
bihtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBDQUNGTGF5ZXJSZW1vdmVBbmltYXRpb24o
bV9sYXllci5nZXQoKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgLy8gV2Ug
ZG9uJ3QgInJlbW92ZSIgYSBsYXllciBmcm9tIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3Qgd2hl
biBpdCBsb3NlcyBhbiBhbmltYXRpb24uCiAgICAgLy8gVGhlcmUgbWF5IGJlIG90aGVyIGFjdGl2
ZSBhbmltYXRpb25zIG9uIHRoZSBsYXllciBhbmQgaWYgYW4gYW5pbWF0aW9uCkBAIC01ODYsOCAr
NTgyLDcgQEAgU3RyaW5nIFBsYXRmb3JtQ0FMYXllcjo6bmFtZSgpIGNvbnN0CiAKIHZvaWQgUGxh
dGZvcm1DQUxheWVyOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAg
IENBQ0ZMYXllclNldE5hbWUobV9sYXllci5nZXQoKSwgcy5nZXQoKSk7CisgICAgQ0FDRkxheWVy
U2V0TmFtZShtX2xheWVyLmdldCgpLCB2YWx1ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICBzZXROZWVkc0NvbW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbklu
dGVybmFsLmNwcAppbmRleCBjNDMwY2YyODQ2MTQ2NjQ3YmY2MWZjN2E3MTYyOWY1MmYwMjFmYTZh
Li4xNTI3NWIzYWU1ZmU1YzFjNmE0ZjhmODRmZDY2OTBkMjFmY2Y1OGRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2lu
SW50ZXJuYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dp
bi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp1cGRhdGVUaWxlcygpCiAKICNpZm5kZWYgTkRF
QlVHCiAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9ICJUaWxlICgiICsgU3RyaW5nOjpudW1iZXIo
aSkgKyAiLCIgKyBTdHJpbmc6Om51bWJlcihqKSArICIpIjsKLSAgICAgICAgICAgIENBQ0ZMYXll
clNldE5hbWUodGlsZSwgUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBuYW1lLmNyZWF0
ZUNGU3RyaW5nKCkpLmdldCgpKTsKKyAgICAgICAgICAgIENBQ0ZMYXllclNldE5hbWUodGlsZSwg
bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZm
ZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAppbmRleCAyMWU5ZGI0YzI4ZDlhMjU1MTM1MjBhY2U3MDg0MDNhYzVlNzdhYjkzLi5k
ZDM3ODE1OTdmODVlYjYxMGRjYzQ3MWVjODMxNTNlMGFiZDJjZWIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAt
Mzc3LDggKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYganBlZ1VUSSgpCiBzdGF0
aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBtaW1lVHlwZUNGU3RyaW5nKEFkb3B0Q0YsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVBy
ZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGVDRlN0
cmluZy5nZXQoKSwgMCkpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgMCkpOwogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAv
LyBJdCBpcyB1bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCmlu
ZGV4IGJkNTBhMzE3NWYzYjQyNWE4ODI2Y2QyYTU2YTYyZTIxOTM2OTYzMzcuLjk1M2JjYjlkMjhh
ZDBlYjc1YWIzODgxM2MzNDM5NDU1ZjEyNjJjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQpAQCAtMzMsMTYg
KzMzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VT
b3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdXRpcmVmKEFkb3B0Q0YsIHV0aS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG1pbWUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFz
cyh1dGlyZWYuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAgICByZXR1cm4gbWltZS5n
ZXQoKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNz
KHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSkuZ2V0KCk7
CiB9CiAKIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoY29uc3Qg
U3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlKEFkb3B0Q0Ys
IHV0aS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVu
c2lvbihBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHR5cGUuZ2V0KCks
IGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9uLmdl
dCgpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3Mo
dXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24p
KS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlckNvcmVU
ZXh0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0
Q29udHJvbGxlckNvcmVUZXh0Lm1tCmluZGV4IDRjYjg3NmMzNjVlYzlkZDcxNjBhMWQyZmRlMDll
N2YzMmYwMGJhYzkuLjU3ZjcwZmZmMjhlNzRmNmZlMTU3Nzg3MzVjYjAzMjA0N2FhMzE2MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0KQEAgLTI4Miw3ICsyODIs
NyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0Zv
ckNoYXJhY3RlcnMoY29uc3QgVUNoYXIqIGNwLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9j
b21wbGV4VGV4dFJ1bnMuYXBwZW5kKENvbXBsZXhUZXh0UnVuOjpjcmVhdGUobV9mb250LnByaW1h
cnlGb250KCksIGNwLCBzdHJpbmdMb2NhdGlvbiArIHJ1blJhbmdlLmxvY2F0aW9uLCBydW5SYW5n
ZS5sZW5ndGgsIG1fcnVuLmx0cigpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBydW5Gb250RGF0
YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YShtX2ZvbnQuZm9udERlc2NyaXB0aW9u
KCksIGZvbnROYW1lLmdldCgpLCBmYWxzZSwgRm9udENhY2hlOjpEb05vdFJldGFpbikuZ2V0KCk7
CisgICAgICAgICAgICAgICAgICAgIHJ1bkZvbnREYXRhID0gZm9udENhY2hlKCktPmdldENhY2hl
ZEZvbnREYXRhKG1fZm9udC5mb250RGVzY3JpcHRpb24oKSwgU3RyaW5nKGZvbnROYW1lLmdldCgp
KSwgZmFsc2UsIEZvbnRDYWNoZTo6RG9Ob3RSZXRhaW4pLmdldCgpOwogI2lmICFQTEFURk9STShX
WCkKICAgICAgICAgICAgICAgICAgICAgLy8gQ29yZSBUZXh0IG1heSBoYXZlIHVzZWQgYSBmb250
IHRoYXQgaXMgbm90IGtub3duIHRvIE5TRm9udE1hbmFnZXIuIEluIHRoYXQgY2FzZSwgZmFsbCBi
YWNrIG9uCiAgICAgICAgICAgICAgICAgICAgIC8vIHVzaW5nIHRoZSBmb250IGFzIHJldHVybmVk
LCBldmVuIHRob3VnaCBpdCBtYXkgbm90IGhhdmUgdGhlIGJlc3QgTlNGb250UmVuZGVyaW5nTW9k
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCmluZGV4IGJk
ODgwMjA0NDFiMGU5YWUwMGJhZGFmMzZiMmY0ZjVhNmE2YmVhZTcuLmZkNGFiOTliMTc0NzVkNDE0
YjIxYWEzZWNkNTdlNjE4MGEyOGZjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9DbGlwYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0NsaXBib2FyZE1hYy5tbQpAQCAtOTksMTEgKzk5LDEwIEBAIHN0YXRpYyBTdHJpbmcgY29jb2FU
eXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAogICAgIC8vIFRy
eSBVVEkgbm93CiAgICAgU3RyaW5nIG1pbWVUeXBlID0gcVR5cGU7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZp
ZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSwg
TlVMTCkpOwotICAgIGlmICh1dGlUeXBlKSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIHBiVHlwZSA9
IFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xh
c3NOU1Bib2FyZFR5cGUpOworICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aVR5cGUg
PSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xh
c3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgTlVMTCkpKSB7Cisg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGJUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRU
eXBlKSk7CiAgICAgICAgIGlmIChwYlR5cGUpCi0gICAgICAgICAgICByZXR1cm4gcGJUeXBlOwor
ICAgICAgICAgICAgcmV0dXJuIHBiVHlwZS5nZXQoKTsKICAgICB9CiAKICAgICAvLyBObyBtYXBw
aW5nLCBqdXN0IHBhc3MgdGhlIHdob2xlIHN0cmluZyB0aG91Z2gKQEAgLTExMiwxMSArMTExLDgg
QEAgc3RhdGljIFN0cmluZyBjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3Ry
aW5nJiB0eXBlKQogCiBzdGF0aWMgU3RyaW5nIHV0aVR5cGVGcm9tQ29jb2FUeXBlKGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGVDRiA9IGFkb3B0
Q0YodHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0
aVR5cGUoQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc05TUGJvYXJkVHlwZSwgdHlwZUNGLmdldCgpLCAwKSk7Ci0gICAgaWYgKHV0aVR5cGUp
IHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBVVFR5
cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTUlN
RVR5cGUpKTsKLSAgICAgICAgaWYgKG1pbWVUeXBlKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IHV0aVR5cGUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJG
b3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUsIHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwgMCkpKSB7CisgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0g
YWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtV
VFRhZ0NsYXNzTUlNRVR5cGUpKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcobWltZVR5cGUu
Z2V0KCkpOwogICAgIH0KICAgICByZXR1cm4gU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwCmluZGV4IDBhMWE0ZDhjNzUx
NGRhOTEzNzM5YmU1ZTM0NDZkNDk3ZDk1YTQ3OGIuLmU1OGQ5YTk0OTk2OTI3YjliYjViOWIzNDYx
NDk3OGY1YWJmNGYzZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMuY3BwCkBAIC02MCwxMSArNjAsNyBAQCBTdHJpbmcgc2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgU3Ry
aW5nJiBjaAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjaGFsbGVuZ2VTdHJpbmdDRihBZG9wdENGLCBjaGFsbGVuZ2VTdHJpbmcu
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlEZXNjcmlw
dGlvbihBZG9wdENGLCBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0KEFkb3B0Q0YsIHdr
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemUsIGNoYWxsZW5nZVN0cmlu
Z0NGLmdldCgpLCBrZXlEZXNjcmlwdGlvbi5nZXQoKSkpOwotCi0gICAgcmV0dXJuIHJlc3VsdC5n
ZXQoKTsKKyAgICByZXR1cm4gYWRvcHRDRih3a1NpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga2V5
Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSku
Z2V0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCmluZGV4IDg3YTNmYWI4YTc0MzdhZTEwYWY0Mzlh
NGU0ZTAyY2QyZTFhMzBkZWIuLjdiMWQ0ZmE0Nzg3ZjFkMWUwZDllM2E0ZGU4MWYzZWI1NDZkMGNl
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9B
dXRoZW50aWNhdGlvbkNGLmNwcApAQCAtMTE5LDEzICsxMTksNyBAQCBDRlVSTENyZWRlbnRpYWxS
ZWYgY3JlYXRlQ0YoY29uc3QgQ3JlZGVudGlhbCYgY29yZUNyZWRlbnRpYWwpCiAgICAgICAgIHJl
dHVybiBDRlVSTENyZWRlbnRpYWxDcmVhdGVXaXRoSWRlbnRpdHlBbmRDZXJ0aWZpY2F0ZUFycmF5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNvcmVDcmVkZW50aWFsLmlkZW50aXR5KCksIGNvcmVDcmVk
ZW50aWFsLmNlcnRpZmljYXRlcygpLCBwZXJzaXN0ZW5jZSk7CiAjZW5kaWYKIAotICAgIENGU3Ry
aW5nUmVmIHVzZXIgPSBjb3JlQ3JlZGVudGlhbC51c2VyKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAg
ICBDRlN0cmluZ1JlZiBwYXNzd29yZCA9IGNvcmVDcmVkZW50aWFsLnBhc3N3b3JkKCkuY3JlYXRl
Q0ZTdHJpbmcoKTsKLSAgICBDRlVSTENyZWRlbnRpYWxSZWYgcmVzdWx0ID0gQ0ZVUkxDcmVkZW50
aWFsQ3JlYXRlKDAsIHVzZXIsIHBhc3N3b3JkLCAwLCBwZXJzaXN0ZW5jZSk7Ci0gICAgQ0ZSZWxl
YXNlKHVzZXIpOwotICAgIENGUmVsZWFzZShwYXNzd29yZCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiBDRlVSTENyZWRlbnRpYWxDcmVhdGUoMCwgY29yZUNyZWRlbnRpYWwudXNl
cigpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVDcmVkZW50aWFsLnBhc3N3b3JkKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwgcGVyc2lzdGVuY2UpOwogfQogCiBDRlVSTFByb3RlY3Rp
b25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkKQEAg
LTE5MiwxMyArMTg2LDcgQEAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3JlYXRlQ0YoY29uc3Qg
UHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIH0KIAotICAgIENGU3RyaW5nUmVmIGhvc3QgPSBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0
ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZTdHJpbmdSZWYgcmVhbG0gPSBjb3JlU3BhY2UucmVhbG0oKS5j
cmVhdGVDRlN0cmluZygpOwotICAgIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIHJlc3VsdCA9IENG
VVJMUHJvdGVjdGlvblNwYWNlQ3JlYXRlKDAsIGhvc3QsIGNvcmVTcGFjZS5wb3J0KCksIHNlcnZl
clR5cGUsIHJlYWxtLCBzY2hlbWUpOwotICAgIENGUmVsZWFzZShob3N0KTsKLSAgICBDRlJlbGVh
c2UocmVhbG0pOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIENGVVJMUHJv
dGVjdGlvblNwYWNlQ3JlYXRlKDAsIGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVyVHlwZSwgY29yZVNwYWNlLnJlYWxtKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgc2NoZW1lKTsKIH0KIAogQ3JlZGVudGlhbCBjb3JlKENGVVJM
Q3JlZGVudGlhbFJlZiBjZkNyZWRlbnRpYWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCmluZGV4IDVkNmQ3MzkyNmM0NGVl
NDg4MDE4MmZmZmU4OTgxYWNmMzhhNzZiMGEuLjUwMTc5NzFkZTE0YTQ1NGE4NGY5YTM4OGJiNDdm
NjQ4NDg5MWRhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llSmFyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBzZXRDb29r
aWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgIC8vIGNvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMgZG9lc24ndCBwYXJz
ZSBjb29raWVzIHdpdGhvdXQgYSB2YWx1ZQogICAgIFN0cmluZyBjb29raWVTdHJpbmcgPSB2YWx1
ZS5jb250YWlucygnPScpID8gdmFsdWUgOiB2YWx1ZSArICI9IjsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gY29va2llU3RyaW5nQ0YoQWRvcHRDRiwgY29va2llU3RyaW5nLmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY29va2llU3RyaW5nQ0YgPSBj
b29raWVTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBoZWFkZXJGaWVsZHNDRihBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwKICAgICAgICAgKGNvbnN0IHZvaWQqKikmc19zZXRDb29raWVLZXlDRiwgKGNv
bnN0IHZvaWQqKikmY29va2llU3RyaW5nQ0YsIDEsCiAgICAgICAgICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKaW5kZXggM2Y5
MDFhNTQxZGUwMGVlYmVjMjQzMjJkMDQzOTZlZTRhMjIwNWZiNi4uY2UxNDUxOTA5YWVkN2UyYjRk
ZWY5Y2UwZDliYjQyOTM0MThkYWNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9ETlNDRk5ldC5jcHAKQEAgLTkwLDEyICs5MCwxMiBAQCB2b2lkIEROU1Jlc29s
dmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9z
dG5hbWVDRihBZG9wdENGLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZIb3N0UmVmPiBob3N0KEFkb3B0Q0YsIENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3Ru
YW1lQ0YuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZIb3N0UmVmPiBob3N0ID0gYWRvcHRDRihD
Rkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7
CiAgICAgaWYgKCFob3N0KSB7CiAgICAgICAgIGRlY3JlbWVudFJlcXVlc3RDb3VudCgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorCiAgICAgQ0ZIb3N0Q2xpZW50Q29udGV4dCBjb250ZXh0ID0g
eyAwLCAwLCAwLCAwLCAwIH07CiAgICAgQ0ZIb3N0UmVmIGxlYWtlZEhvc3QgPSBob3N0LmxlYWtS
ZWYoKTsgLy8gVGhlIGhvc3Qgd2lsbCBiZSByZWxlYXNlZCBmcm9tIGNsaWVudENhbGxiYWNrKCku
CiAgICAgQm9vbGVhbiByZXN1bHQgPSBDRkhvc3RTZXRDbGllbnQobGVha2VkSG9zdCwgY2xpZW50
Q2FsbGJhY2ssICZjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAppbmRleCAzNTRmZDI3NTg2NDIwN2I3OWVm
YzIxYWY3ZDE5OWRiMGIzMDEyMGI0Li41ODk1ZWQ5OTM0NjY1ZWY2MzBiZTM2NTE3MTYxNTE1MmU0
MGY4M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yQ0YuY3BwCkBAIC0xNDUsMTMgKzE0NSwxMSBAQCBDRkVycm9yUmVmIFJl
c291cmNlRXJyb3I6OmNmRXJyb3IoKSBjb25zdAogICAgIGlmICghbV9wbGF0Zm9ybUVycm9yKSB7
CiAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyhBZG9w
dENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgICAg
ICBpZiAoIW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvY2FsaXplZERlc2NyaXB0aW9uU3RyaW5nKEFkb3B0Q0Ys
IG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6ZWREZXNj
cmlwdGlvbktleSwgbG9jYWxpemVkRGVzY3JpcHRpb25TdHJpbmcuZ2V0KCkpOwotICAgICAgICB9
CisgICAgICAgIGlmICghbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga0NGRXJyb3JMb2NhbGl6
ZWREZXNjcmlwdGlvbktleSwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKIAogICAgICAgICBpZiAoIW1fZmFpbGluZ1VSTC5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmFpbGluZ1VSTFN0cmluZyhBZG9wdENGLCBt
X2ZhaWxpbmdVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcgPSBtX2ZhaWxpbmdVUkwuY3JlYXRlQ0ZTdHJpbmco
KTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWls
aW5nVVJMU3RyaW5nS2V5LCBmYWlsaW5nVVJMU3RyaW5nLmdldCgpKTsKICAgICAgICAgICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZygwLCBm
YWlsaW5nVVJMU3RyaW5nLmdldCgpLCAwKSk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTEtleSwgdXJsLmdldCgpKTsKQEAgLTE2Miw4
ICsxNjAsNyBAQCBDRkVycm9yUmVmIFJlc291cmNlRXJyb3I6OmNmRXJyb3IoKSBjb25zdAogICAg
ICAgICAgICAgd2tTZXRTU0xQZWVyQ2VydGlmaWNhdGVEYXRhKHVzZXJJbmZvLmdldCgpLCBtX2Nl
cnRpZmljYXRlLmdldCgpKTsKICNlbmRpZgogICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBkb21haW5TdHJpbmcoQWRvcHRDRiwgbV9kb21haW4uY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgICAgIG1fcGxhdGZvcm1FcnJvci5hZG9wdENGKENGRXJyb3JDcmVhdGUoMCwgZG9t
YWluU3RyaW5nLmdldCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKKyAgICAgICAg
bV9wbGF0Zm9ybUVycm9yID0gYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIG1fZG9tYWluLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXJyb3JDb2RlLCB1c2VySW5mby5nZXQoKSkpOwogICAgIH0K
IAogICAgIHJldHVybiBtX3BsYXRmb3JtRXJyb3IuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApp
bmRleCAwMWU4YjhhZTVjMGQxYzZhNmE4ZjAzMzA4NWU5MGYwMTBiYzFmN2M2Li44MDcwYzI1ODJi
N2NhYTBkZTZmZTM1ZjMwNzQzZjc4YjIwYjc3YTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAg
LTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxDRkRhdGFS
ZWY+ID4mIGNsaWVudENlcnRzKCkKIAogc3RhdGljIHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENG
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiB7Ci0gICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1
bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7Cisg
ICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IGRlZmF1bHRNSU1F
VHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgIAogICAgIENGVVJMUmVzcG9u
c2VTZXRNSU1FVHlwZShyZXNwb25zZSwgZGVmYXVsdE1JTUVUeXBlU3RyaW5nKTsKIH0KQEAgLTE2
MSw4ICsxNjEsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVS
TENvbm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgaWYgKGNmUmVkaXJlY3RS
ZXNwb25zZSkgewogICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxS
ZXNwb25zZUdldEhUVFBSZXNwb25zZShjZlJlZGlyZWN0UmVzcG9uc2UpOwogICAgICAgICBpZiAo
aHR0cE1lc3NhZ2UgJiYgQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29kZShodHRwTWVz
c2FnZSkgPT0gMzA3KSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RI
VFRQTWV0aG9kKEFkb3B0Q0YsIGhhbmRsZS0+bGFzdEhUVFBNZXRob2QoKS5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmV3TWV0aG9kKEFkb3B0
Q0YsIENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QpKTsKKyAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBNZXRob2QgPSBoYW5kbGUtPmxh
c3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbmV3TWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVl
c3RNZXRob2QoY2ZSZXF1ZXN0KSk7CiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlV2l0
aE9wdGlvbnMobGFzdEhUVFBNZXRob2QuZ2V0KCksIG5ld01ldGhvZC5nZXQoKSwgQ0ZSYW5nZU1h
a2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgobGFzdEhUVFBNZXRob2QuZ2V0KCkpKSwga0NGQ29tcGFy
ZUNhc2VJbnNlbnNpdGl2ZSkpIHsKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
VVJMUmVxdWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRl
TXV0YWJsZUNvcHkoMCwgY2ZSZXF1ZXN0KSk7CiAjaWYgVVNFKENGVVJMU1RPUkFHRVNFU1NJT05T
KQpAQCAtMTc1LDkgKzE3NSw4IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1
ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYKICAgICAgICAgICAg
ICAgICAgICAgV2ViQ29yZTo6c2V0SFRUUEJvZHkobXV0YWJsZVJlcXVlc3QuZ2V0KCksIGJvZHkp
OwogCiAgICAgICAgICAgICAgICAgU3RyaW5nIG9yaWdpbmFsQ29udGVudFR5cGUgPSBoYW5kbGUt
PmZpcnN0UmVxdWVzdCgpLmh0dHBDb250ZW50VHlwZSgpOwotICAgICAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxDb250ZW50VHlwZUNGKEFkb3B0Q0YsIG9yaWdpbmFs
Q29udGVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFvcmln
aW5hbENvbnRlbnRUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgQ0ZVUkxSZXF1
ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVlc3QuZ2V0KCksIENGU1RSKCJD
b250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZUNGLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUobXV0YWJsZVJlcXVl
c3QuZ2V0KCksIENGU1RSKCJDb250ZW50LVR5cGUiKSwgb3JpZ2luYWxDb250ZW50VHlwZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBtdXRhYmxl
UmVxdWVzdC5nZXQoKTsKICAgICAgICAgICAgIH0KQEAgLTYwNywxMCArNjA2LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1
dGhlbnRpY2F0aW9uQ2hhbGwKICNlbmRpZgogCiAgICAgaWYgKCFkLT5tX3VzZXIuaXNOdWxsKCkg
JiYgIWQtPm1fcGFzcy5pc051bGwoKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHVzZXIoQWRvcHRDRiwgZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHBhc3MoQWRvcHRDRiwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50aWFsKEFk
b3B0Q0YsCi0gICAgICAgICAgICBDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgdXNlci5nZXQoKSwgcGFzcy5nZXQoKSwgMCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3Rl
bmNlTm9uZSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxDcmVkZW50aWFsUmVmPiBjcmVkZW50
aWFsID0gYWRvcHRDRihDRlVSTENyZWRlbnRpYWxDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZC0+bV91c2VyLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7CiAgICAgICAg
IAogICAgICAgICBLVVJMIHVybFRvU3RvcmU7CiAgICAgICAgIGlmIChjaGFsbGVuZ2UuZmFpbHVy
ZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKSA9PSA0MDEpCkBAIC0xMDA1LDcgKzEwMDEsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIGJhc2UgPSBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkgPyBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJEZWZhdWx0QmFzZSgpIDogcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2ZJZGVudGlmaWVyKEFkb3B0Q0YsIFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3Npbmci
KS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRp
ZmllciA9IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygp
OwogCiAgICAgcHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKCkgPSBjcmVhdGVQcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAppbmRleCA4Y2ZmODdjYTBkNThlYTJlNTIzZjM3MzBkNmI0YTc3MzBiMDZiZTRiLi4wZTNkZWNl
MDE4MjdlYzVhZDFiNmI1ODFlMTE2MjgyOWI0MTMwYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cApAQCAtMTE5LDEzICsxMTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc2V0SGVhZGVyRmllbGRz
KENGTXV0YWJsZVVSTFJlcXVlc3RSZWYgcmVxdWVzdCwgY29uc3QgSFRUUEhlYQogICAgIH0KIAog
ICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJlcXVlc3RIZWFkZXJzLmVu
ZCgpOwotICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXF1ZXN0
SGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYg
a2V5ID0gaXQtPmtleS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBDRlN0cmluZ1JlZiB2YWx1
ZSA9IGl0LT52YWx1ZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LCBrZXksIHZhbHVlKTsKLSAgICAgICAgQ0ZSZWxl
YXNlKGtleSk7Ci0gICAgICAgIENGUmVsZWFzZSh2YWx1ZSk7Ci0gICAgfQorICAgIGZvciAoSFRU
UEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSByZXF1ZXN0SGVhZGVycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZh
bHVlKHJlcXVlc3QsIGl0LT5rZXkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgaXQt
PnZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQpAQCAtMTQ2LDggKzE0MSw3IEBAIHZvaWQgUmVz
b3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgd2tTZXRSZXF1ZXN0
U3RvcmFnZVNlc3Npb24oUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRTdG9yYWdlU2Vzc2lvbigpLCBj
ZlJlcXVlc3QpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlcXVlc3RN
ZXRob2QoQWRvcHRDRiwgaHR0cE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGVVJM
UmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgcmVxdWVzdE1ldGhvZC5nZXQo
KSk7CisgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0LCBodHRw
TWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICBpZiAoaHR0cFBpcGVsaW5p
bmdFbmFibGVkKCkpCiAgICAgICAgIHdrU2V0SFRUUFBpcGVsaW5pbmdQcmlvcml0eShjZlJlcXVl
c3QsIHRvSFRUUFBpcGVsaW5pbmdQcmlvcml0eShtX3ByaW9yaXR5KSk7CkBAIC0xNjQsNyArMTU4
LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAg
ICB1bnNpZ25lZCBmYWxsYmFja0NvdW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVu
Y29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5
UmVmPiBlbmNvZGluZ0ZhbGxiYWNrcyhBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBmYWxsYmFja0NvdW50LCAwKSk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSAhPSBmYWxsYmFja0NvdW50OyArK2kpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBlbmNvZGluZ05hbWUoQWRvcHRDRiwgbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAg
IENGU3RyaW5nRW5jb2RpbmcgZW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5h
bWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZS5nZXQoKSk7CiAgICAgICAgIGlmIChlbmNvZGluZyAh
PSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKICAgICAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShlbmNvZGluZ0ZhbGxiYWNrcy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kj4oZW5jb2RpbmcpKTsKQEAgLTIxMyw3ICsyMDcsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVSZXNvdXJjZVJlcXVlc3QoKQogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCosIDEy
OD4gdmFsdWVzKGhlYWRlckNvdW50KTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZh
bHVlcyhoZWFkZXJzLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKLSAgICAgICAgICAgIG1faHR0cEhlYWRl
ckZpZWxkcy5zZXQoKENGU3RyaW5nUmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1ZXNbaV0p
OworICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChTdHJpbmcoKENGU3RyaW5nUmVm
KWtleXNbaV0pLCBTdHJpbmcoKENGU3RyaW5nUmVmKXZhbHVlc1tpXSkpOwogICAgICAgICBDRlJl
bGVhc2UoaGVhZGVycyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKaW5kZXggYTQ1
YmVlZGM0MzMwMDc3MmIzOWNhZWUyYjM5NDZjYWMzZGYwYmYzMS4uMzgyMTZkNGQyMGJmOTgxMTNm
M2FlZDIzNmNhNTE2ZmVkYzA0OTA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcApAQCAtNTEs
OSArNTEsNyBAQCBDRlVSTFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9u
c2UoKSBjb25zdAogewogICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewogICAg
ICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBtX3VybC5jcmVhdGVDRlVSTCgp
KTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBtX21p
bWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHRleHRFbmNvZGluZ05hbWUoQWRvcHRDRiwgbV90ZXh0RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICBtX2NmUmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRl
KDAsIHVybC5nZXQoKSwgbWltZVR5cGUuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCB0
ZXh0RW5jb2RpbmdOYW1lLmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CisgICAg
ICAgIG1fY2ZSZXNwb25zZS5hZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgp
LCBtX21pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVu
Z3RoLCBtX3RleHRFbmNvZGluZ05hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2Fj
aGVTdG9yYWdlQWxsb3dlZCkpOwogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0
KCk7CkBAIC0xMDUsNyArMTAzLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxh
enlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUNvbW1vbkhlYWRlckZpZWxkczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgQ0ZTdHJp
bmdSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQ
cmVzZW50KGhlYWRlcnMuZ2V0KCksIGNvbW1vbkhlYWRlckZpZWxkc1tpXSwgKGNvbnN0IHZvaWQg
KiopJnZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChj
b21tb25IZWFkZXJGaWVsZHNbaV0sIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9odHRw
SGVhZGVyRmllbGRzLnNldChTdHJpbmcoY29tbW9uSGVhZGVyRmllbGRzW2ldKSwgU3RyaW5nKHZh
bHVlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9odHRw
U3RhdHVzQ29kZSA9IDA7CkBAIC0xMjMsNyArMTIxLDcgQEAgdm9pZCBSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCBpbml0TGV2ZWwpCiAgICAgICAgICAgICBWZWN0
b3I8Y29uc3Qgdm9pZCosIDEyOD4gdmFsdWVzKGhlYWRlckNvdW50KTsKICAgICAgICAgICAgIENG
RGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVycy5nZXQoKSwga2V5cy5kYXRhKCksIHZh
bHVlcy5kYXRhKCkpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWFkZXJDb3Vu
dDsgKytpKQotICAgICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoKENGU3RyaW5n
UmVmKWtleXNbaV0sIChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pOworICAgICAgICAgICAgICAgIG1f
aHR0cEhlYWRlckZpZWxkcy5zZXQoU3RyaW5nKChDRlN0cmluZ1JlZilrZXlzW2ldKSwgU3RyaW5n
KChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFu
ZGxlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRT
dHJlYW1IYW5kbGVDRk5ldC5jcHAKaW5kZXggZDg2Yzc2YmM2ZjQ1YzE4MTY0OGUwYTc3NmNkMzli
YWU4OTA4NDBkNi4uNGE3Y2Q5MDJhZTlmMDI4N2Q4OThkOTJiZDk4NWRkNzY2ZDQyYTE3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1I
YW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAKQEAgLTI2OSw3ICsyNjksNyBAQCB2b2lkIFNvY2tl
dFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcygpCiAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUg
PT0gVW5rbm93bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBob3N0KEFkb3B0Q0YsIG1fdXJsLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3QgPSBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
IAogICAgIC8vIENyZWF0aW5nIHN0cmVhbXMgdG8gZmluYWwgZGVzdGluYXRpb24sIG5vdCB0byBw
cm94eS4KICAgICBDRlJlYWRTdHJlYW1SZWYgcmVhZFN0cmVhbSA9IDA7CkBAIC0zNTksMTIgKzM1
OSwxMCBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENG
SFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKICAgICBTdHJpbmcgcGFzc3dvcmQ7CiAgICAg
aWYgKCFtX3NlbnRTdG9yZWRDcmVkZW50aWFscyAmJiBnZXRTdG9yZWRDT05ORUNUUHJveHlDcmVk
ZW50aWFscyhwcm90ZWN0aW9uU3BhY2UsIGxvZ2luLCBwYXNzd29yZCkpIHsKICAgICAgICAgLy8g
VHJ5IHRvIGFwcGx5IHN0b3JlZCBjcmVkZW50aWFscywgaWYgd2UgaGF2ZW4ndCB0cmllZCB0aG9z
ZSBhbHJlYWR5LgotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGxvZ2luQ0YoQWRvcHRD
RiwgbG9naW4uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcGFzc3dvcmRDRihBZG9wdENGLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAg
ICAgLy8gQ3JlYXRpbmcgYSB0ZW1wb3JhcnkgcmVxdWVzdCB0byBtYWtlIENGTmV0d29yayBhcHBs
eSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5hdGVseSwgdGhpcyBjYW5ub3Qgd29yayB3aXRo
IE5UTE0gYXV0aGVudGljYXRpb24uCisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSByZXF1
ZXN0IHRvIG1ha2UgQ0ZOZXR3b3JrIGFwcGx5IGNyZWRlbnRpYWxzIHRvIGl0LiBVbmZvcnR1bmF0
ZWx5LCB0aGlzIGNhbm5vdCB3b3JrIHdpdGggTlRMTSBhdXRoZW50aWNhdGlvbi4KICAgICAgICAg
UmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IGR1bW15UmVxdWVzdChBZG9wdENGLCBDRkhUVFBN
ZXNzYWdlQ3JlYXRlUmVxdWVzdCgwLCBDRlNUUigiR0VUIiksIG1faHR0cHNVUkwuZ2V0KCksIGtD
RkhUVFBWZXJzaW9uMV8xKSk7CiAKLSAgICAgICAgQm9vbGVhbiBhcHBsaWVkQ3JlZGVudGlhbHMg
PSBDRkhUVFBNZXNzYWdlQXBwbHlDcmVkZW50aWFscyhkdW1teVJlcXVlc3QuZ2V0KCksIGF1dGhl
bnRpY2F0aW9uLmdldCgpLCBsb2dpbkNGLmdldCgpLCBwYXNzd29yZENGLmdldCgpLCAwKTsKKyAg
ICAgICAgQm9vbGVhbiBhcHBsaWVkQ3JlZGVudGlhbHMgPSBDRkhUVFBNZXNzYWdlQXBwbHlDcmVk
ZW50aWFscyhkdW1teVJlcXVlc3QuZ2V0KCksIGF1dGhlbnRpY2F0aW9uLmdldCgpLCBsb2dpbi5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBwYXNzd29yZC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAw
KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChhcHBsaWVkQ3JlZGVudGlhbHMsIGFwcGxpZWRDcmVk
ZW50aWFscyk7CiAKICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcm94eUF1dGhvcml6
YXRpb25TdHJpbmcoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNvcHlIZWFkZXJGaWVsZFZhbHVlKGR1
bW15UmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIlByb3h5LUF1dGhvcml6YXRpb24iKSkpOwpAQCAtMzg5
LDcgKzM4Nyw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGVudGlh
bHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogQ0ZTdHJpbmdSZWYgU29ja2V0U3Ry
ZWFtSGFuZGxlOjpjb3B5Q0ZTdHJlYW1EZXNjcmlwdGlvbih2b2lkKiBpbmZvKQogewogICAgIFNv
Y2tldFN0cmVhbUhhbmRsZSogaGFuZGxlID0gc3RhdGljX2Nhc3Q8U29ja2V0U3RyZWFtSGFuZGxl
Kj4oaW5mbyk7Ci0gICAgcmV0dXJuIFN0cmluZygiV2ViS2l0IHNvY2tldCBzdHJlYW0sICIgKyBo
YW5kbGUtPm1fdXJsLnN0cmluZygpKS5jcmVhdGVDRlN0cmluZygpOworICAgIHJldHVybiBTdHJp
bmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxlLT5tX3VybC5zdHJpbmcoKSkuY3Jl
YXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiB9CiAKIHN0cnVjdCBNYWluVGhyZWFkRXZlbnRDYWxs
YmFja0luZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCmluZGV4IDkzMjE2Y2I1NWU4NTc3MzEzNmYzZThj
M2EwN2NlNmZiNTU2ZTA2ZDIuLmU2OTM0ODQ4MWFiMGEwMjEzNzk0ZGEyNGVmYmNjNGY1NmRjMDA4
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KQEAgLTE2Myw5ICsxNjMsOSBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgICAgICBOU011dGFibGVBcnJh
eSAqZW5jb2RpbmdGYWxsYmFja3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgICAgICB1
bnNpZ25lZCBjb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkuc2l6ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGNvdW50
OyArK2kpIHsKLSAgICAgICAgICAgIENGU3RyaW5nUmVmIGVuY29kaW5nTmFtZSA9IG1fcmVzcG9u
c2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENGU3RyaW5nQ29u
dmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElBTkFDaGFyU2V0
TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lKSk7Ci0gICAgICAgICAgICBDRlJlbGVhc2UoZW5j
b2RpbmdOYW1lKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZW5jb2RpbmdO
YW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtp
XS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuc0VuY29kaW5n
ID0gQ0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb05TU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdDb252
ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUuZ2V0KCkpKTsKKwogICAg
ICAgICAgICAgaWYgKG5zRW5jb2RpbmcgIT0ga0NGU3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpCiAg
ICAgICAgICAgICAgICAgW2VuY29kaW5nRmFsbGJhY2tzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVt
YmVyV2l0aFVuc2lnbmVkTG9uZzpuc0VuY29kaW5nXV07CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbQppbmRleCA2YWE3NmY2ZGQ3ODRkYTA5ZDdiZmY3ZTFlNjg1NWU3NWNhZGFlOTljLi5mOTcx
MGIyZGQyNTE4NDYyMDE1MTMyNDJmNDBmM2E0MTI2NGYyMmUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
CkBAIC00NzgsNyArNDc4LDcgQEAgdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSkKICAgICB9CiAgICAgCiAgICAgaWYgKCFyZXN1bHQpIHsK
LSAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IFdlYkNv
cmU6OmRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpkZWZhdWx0TUlNRVR5
cGUoKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAgICAgcmVzdWx0ID0gZGVmYXVs
dE1JTUVUeXBlU3RyaW5nOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKaW5kZXggNGUzZmNlZDQ0NDY0OWE5YzVjZWYzNjRl
YzA2MmZlOGRiMTg4NGYwOS4uMGY2NjhkMTBmOGU0MTdmNTZlYTkzYTA4NTgxMjRjZGYyYmE0MTdi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlv
bkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9u
Q0YuY3BwCkBAIC00Niw4ICs0Niw3IEBAIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3Ry
aW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0CiB0ZW1wbGF0
ZTw+CiBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJVQ2FjaGU8UmV0
YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdGVWYWx1ZUZvcktleShjb25zdCBBdG9taWNTdHJp
bmcmIGxvY2FsZUlkZW50aWZpZXIpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkxv
Y2FsZUlkZW50aWZpZXIoQWRvcHRDRiwgbG9jYWxlSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZShBZG9wdENGLCBDRkxvY2FsZUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjZkxvY2FsZUlkZW50aWZpZXIuZ2V0KCkpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0YoQ0ZMb2NhbGVDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgbG9jYWxlSWRlbnRpZmllci5pbXBsKCktPmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpKTsKIAogICAgIHJldHVybiBDRlN0cmluZ0lzSHlwaGVuYXRpb25BdmFpbGFi
bGVGb3JMb2NhbGUobG9jYWxlLmdldCgpKSA/IGxvY2FsZSA6IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwCmluZGV4IGQ3Y2RhNzk2Mjk4NjI1NzNh
MzVjNmE5MjY4NTc1MjMwNWFiNmMyN2UuLjI2OTdlNzZmMGJmNTkyM2IxNTJmZWRkNzEwMzdlOTcx
MTQ5MjZkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3Ry
aW5nQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0Yu
Y3BwCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
ICNpZiBVU0UoQ0YpCi0KICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5o
PgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTUx
LDcgKzUxLDcgQEAgU3RyaW5nOjpTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogICAgIH0KIH0KIAot
Q0ZTdHJpbmdSZWYgU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CitSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAogewogICAgIGlmICghbV9p
bXBsKQogICAgICAgICByZXR1cm4gQ0ZTVFIoIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IDdhMmQ4MmU0MDJkMjRiMzdiYmMw
NzFmNDdmOThlMGE4NjUxODQ5MjEuLjFkYTU2MWI2MDYyYmNhYjQ5ZTA5YmZlNzk3ODJiMjczZjBk
YTA5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5n
SW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0lt
cGxDRi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1RocmVhZGluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTMyLDcgKzEzMyw3IEBAIG5h
bWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgewogCiB9CiAKLUNGU3RyaW5nUmVmIFN0
cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5n
SW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlzTWFpblRo
cmVhZCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKQEAgLTE1Myw3ICsxNTQsNyBAQCBDRlN0
cmluZ1JlZiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiAgICAgLy8gQ29yZUZvdW5kYXRp
b24gbWlnaHQgbm90IGhhdmUgdG8gYWxsb2NhdGUgYW55dGhpbmcsIHdlIGNsZWFyIGN1cnJlbnRT
dHJpbmcgaW4gY2FzZSB3ZSBkaWQgbm90IGV4ZWN1dGUgYWxsb2NhdGUoKS4KICAgICBTdHJpbmdX
cmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSAwOwogCi0gICAgcmV0dXJuIHN0cmlu
ZzsKKyAgICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOwogfQogCiAvLyBPbiBTdHJpbmdJbXBsIGNy
ZWF0aW9uIHdlIGNvdWxkIGNoZWNrIGlmIHRoZSBhbGxvY2F0b3IgaXMgdGhlIFN0cmluZ1dyYXBw
ZXJDRkFsbG9jYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1N0cmluZ0ltcGxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9T
dHJpbmdJbXBsTWFjLm1tCmluZGV4IDZmNWU5NTNiYTE5MjVlNTQ1YmJiNWFjNTNlMjE0NzZiYjhm
MDNhNTcuLjJmMDg4YTdlYjM2M2M1YWNkMDE0MmYzODcwOTViOTYyYzE4MTZhNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQpAQCAt
MjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiAjaW5j
bHVkZSAiRm91bmRhdGlvbkV4dHJhcy5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
bmFtZXNwYWNlIFdURiB7CiAKIFN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICooKQogewot
ICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2UoY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJu
IEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCmlu
ZGV4IDMxMjQxMmZhYWI4YWMyMzYyODY1MDNkYWNhNWE5MjhiZWJkNDM5NjYuLmE3MDQ3NDk1MjBm
ZGQzMmQ0ZTFlMDBmY2ZjMGRlYWYzODdjYmE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIENT
dHJpbmcgVGV4dENvZGVjTWFjOjplbmNvZGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVf
dCBsZW5ndGgsIFVuZW5jb2RhYmxlCiAgICAgLy8gRW5jb2Rpbmcgd2lsbCBjaGFuZ2UgdGhlIHll
biBzaWduIGJhY2sgaW50byBhIGJhY2tzbGFzaC4KICAgICBTdHJpbmcgY29weShjaGFyYWN0ZXJz
LCBsZW5ndGgpOwogICAgIGNvcHkucmVwbGFjZSgnXFwnLCBtX2JhY2tzbGFzaEFzQ3VycmVuY3lT
eW1ib2wpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZzKEFkb3B0Q0YsIGNvcHkuY3Jl
YXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMgPSBjb3B5LmNy
ZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBDRkluZGV4IHN0YXJ0UG9zID0gMDsKICAgICBDRkluZGV4
IGNoYXJhY3RlcnNMZWZ0ID0gQ0ZTdHJpbmdHZXRMZW5ndGgoY2ZzLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKaW5kZXgg
YTVjYTliNzQ0NjkyZjI4N2YyM2YzNDgxNTBiMDhmNjVlMWZmOTVmZS4uYmZjMDg3YmU5ZjE5MmNi
ZTE0M2Q3YTZkMTk2NDI0YTNkZTI1ODg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgYm9vbCBT
ZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIFN0cmluZyBrZXkgPSAi
Y29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWlu
UHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0
dXJuIGtleS5jcmVhdGVDRlN0cmluZygpOwogfQogI2VuZGlmCiAKQEAgLTY3LDEwICs2Nyw4IEBA
IHZvaWQgU2VhcmNoUG9wdXBNZW51V2luOjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0CiAgICAgc2l6ZV90IHNpemUgPSBzZWFyY2hJdGVtcy5z
aXplKCk7CiAgICAgaWYgKHNpemUpIHsKICAgICAgICAgaXRlbXMuYWRvcHRDRihDRkFycmF5Q3Jl
YXRlTXV0YWJsZSgwLCBzaXplLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGl0ZW0oQWRvcHRDRiwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIGl0ZW0uZ2V0
KCkpOwotICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVt
c1tpXS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9CiAKICAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUoYXV0b3NhdmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDgzNzQ3ZjIy
MzU1NmE2YWMyYWExNjg5ZGZkZmFjMWYxZWYxN2M0NzcuLjMzN2RhY2FiMmY3MTJjOTg2ZjBmNTcy
Mjk2YTc4MDU2MmMzMTRiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2YvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC02MywxNSArNjMsMTQgQEAg
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBpbnNwZWN0b3JT
dGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwogCi1zdGF0
aWMgaW5saW5lIENGU3RyaW5nUmVmIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGNvbnN0IFN0cmlu
ZyYga2V5KQorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZv
clByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4ga2V5Q0ZTdHJpbmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJl
dHVybiBDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIgSW5z
cGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXlDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQgV2ViIElu
c3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKIH0K
IAogc3RhdGljIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcq
IHNldHRpbmcpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShB
ZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5ID0gY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KTsK
ICAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHZhbHVlKEFkb3B0Q0YsIENGUHJlZmVy
ZW5jZXNDb3B5QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3Vy
cmVudEFwcGxpY2F0aW9uKSk7CiAKICAgICBpZiAoIXZhbHVlKQpAQCAtODgsMTIgKzg3LDcgQEAg
c3RhdGljIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHNl
dHRpbmcpCiAKIHN0YXRpYyB2b2lkIHN0b3JlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgY29u
c3QgU3RyaW5nJiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4g
b2JqZWN0VG9TdG9yZTsKLSAgICBvYmplY3RUb1N0b3JlLmFkb3B0Q0Yoc2V0dGluZy5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBBU1NFUlQob2JqZWN0VG9TdG9yZSk7Ci0KLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVu
Y2VzKGtleSkpOwotICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5n
ZXQoKSwgb2JqZWN0VG9TdG9yZS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRp
b24pOworICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShjcmVhdGVLZXlGb3JQcmVmZXJlbmNl
cyhrZXkpLmdldCgpLCBzZXR0aW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlByZWZlcmVu
Y2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKIH0KIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggMGU0YjEwNjU2OTgyNWRkNzRkNzRkYjI3NzZlY2M2ZDkyMWVhOGRhYS4uNWYyODM1
MDRjNWQ2NjgyMTg2NDg5MGNlNDQ1YzgyY2YwMGYxMjZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtNzkyLDI0ICs3OTIsMjAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBQbHVnaW5WaWV3KiBwbHVnaW4KICAgICAgICAgS1VS
TCBwbHVnaW5QYWdlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CiAg
ICAgICAgIGlmIChwbHVnaW5QYWdlVVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAg
ICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBD
T0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwot
ICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHIoQWRvcHRDRiwgcGx1Z2luUGFn
ZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHN0ci5nZXQoKSk7CisgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5QYWdlVVJMLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAg
aWYgKCFwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmlzTnVsbCgpKSB7CiAgICAgICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdS
ZWYoV2ViS2l0RXJyb3JNSU1FVHlwZUtleSk7Ci0KLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBzdHIoQWRvcHRDRiwgcGx1Z2luVmlldy0+bWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgc3Ry
LmdldCgpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtl
eSwgcGx1Z2luVmlldy0+bWltZVR5cGUoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9
CiAKICAgICBpZiAocGx1Z2luVmlldy0+cGx1Z2luKCkpIHsKICAgICAgICAgU3RyaW5nIHBsdWdp
bk5hbWUgPSBwbHVnaW5WaWV3LT5wbHVnaW4oKS0+bmFtZSgpOwogICAgICAgICBpZiAoIXBsdWdp
bk5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBN
YXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVn
SW5OYW1lS2V5KTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0
Q0YsIHBsdWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBzdHIuZ2V0KCkpOworICAgICAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luTmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNmU2ODdmMTkzNGFmODA0YmRmOTQ5OWRlZmY2
MWU3N2Y1MzVjY2IyMC4uMTU4NzJlMzRmOWE1NDQ1MGFmM2I0NDlmODJjZGYwYjJhZmJlYjQ3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC00MDEsOCArNDAx
LDcgQEAgdm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0YWJhc2Uo
U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgw
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAKICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGF0YWJhc2VOYW1lS2V5
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYkRhdGFiYXNl
TmFtZUtleSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHIoQWRvcHRDRiwgZGF0YWJh
c2VOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJ
bmZvLmdldCgpLCBkYXRhYmFzZU5hbWVLZXksIHN0ci5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGRhdGFiYXNlTmFtZUtleSwgZGF0YWJhc2VOYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgQ09NUHRyPENGRGljdGlvbmFyeVByb3BlcnR5
QmFnPiB1c2VySW5mb0JhZyA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJbnN0YW5j
ZSgpOwogICAgIHVzZXJJbmZvQmFnLT5zZXREaWN0aW9uYXJ5KHVzZXJJbmZvLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViSGlzdG9yeS5jcHAKaW5kZXggMWY3YTU3MmMzNDQ1ZDdjYmM1NzYzYWY5ZDkxYjll
ZGQ3ODk1MTA5Zi4uYTczMTBiODBiMGQ0MzQ0MDRmOTg1OGRjOGRiNTVjOTNmMWE1ODk0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViSGlzdG9yeS5jcHAKQEAgLTY5Myw5ICs2OTMsOSBAQCBIUkVTVUxUIFdlYkhp
c3Rvcnk6OmFkZEl0ZW0oSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSwgYm9vbCBkaXNjYXJkRHVwbGlj
YXRlLCBib29sKgogCiB2b2lkIFdlYkhpc3Rvcnk6OnZpc2l0ZWRVUkwoY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGh0dHBNZXRob2QsIGJvb2wgd2Fz
RmFpbHVyZSwgYm9vbCBpbmNyZWFzZVZpc2l0Q291bnQpCiB7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiB1cmxTdHJpbmcoQWRvcHRDRiwgdXJsLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkp
OworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nID0gdXJsLnN0cmluZygpLmNy
ZWF0ZUNGU3RyaW5nKCk7CiAKLSAgICBJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5ID0gKElXZWJIaXN0
b3J5SXRlbSopIENGRGljdGlvbmFyeUdldFZhbHVlKG1fZW50cmllc0J5VVJMLmdldCgpLCB1cmxT
dHJpbmcuZ2V0KCkpOworICAgIElXZWJIaXN0b3J5SXRlbSogZW50cnkgPSAoSVdlYkhpc3RvcnlJ
dGVtKilDRkRpY3Rpb25hcnlHZXRWYWx1ZShtX2VudHJpZXNCeVVSTC5nZXQoKSwgdXJsU3RyaW5n
LmdldCgpKTsKICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgQ09NUHRyPElXZWJIaXN0b3J5SXRl
bVByaXZhdGU+IGVudHJ5UHJpdmF0ZShRdWVyeSwgZW50cnkpOwogICAgICAgICBpZiAoIWVudHJ5
UHJpdmF0ZSkKQEAgLTc4NiwxMSArNzg2LDEwIEBAIEhSRVNVTFQgV2ViSGlzdG9yeTo6cmVtb3Zl
SXRlbUZvclVSTFN0cmluZyhDRlN0cmluZ1JlZiB1cmxTdHJpbmcpCiAKIENPTVB0cjxJV2ViSGlz
dG9yeUl0ZW0+IFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcpIGNvbnN0CiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxDRlN0cmluZyhB
ZG9wdENGLCB1cmxTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgaWYgKCF1cmxDRlN0cmlu
ZykKKyAgICBpZiAoIXVybFN0cmluZykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgQ09NUHRyPElX
ZWJIaXN0b3J5SXRlbT4gaXRlbTsKLSAgICBpZiAoRkFJTEVEKGl0ZW1Gb3JVUkxTdHJpbmcodXJs
Q0ZTdHJpbmcuZ2V0KCksICZpdGVtKSkpCisgICAgaWYgKEZBSUxFRChpdGVtRm9yVVJMU3RyaW5n
KHVybFN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAmaXRlbSkpKQogICAgICAgICByZXR1
cm4gMDsKICAgICByZXR1cm4gaXRlbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkhpc3RvcnlJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNw
cAppbmRleCBhMjY0MzA4OWRjZDc5ZDgyNDI1MjAxOTYyMTMyN2ZjYTlmODJkOTgyLi44YmZlOWJk
N2MwNzdjY2ZiZThiMDdhYjU5MWFjMzk3MDY1MjQzMjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlz
dG9yeUl0ZW0uY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBXZWJIaXN0b3J5SXRlbTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0aW8K
IAogICAgIGlmICghbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGtleXNba2V5Q291bnRdID0gdXJsS2V5OwotICAgICAgICB2YWx1ZXNba2V5Q291bnQrK10g
PSBtX2hpc3RvcnlJdGVtLT51cmxTdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICB2
YWx1ZXNba2V5Q291bnQrK10gPSBtX2hpc3RvcnlJdGVtLT51cmxTdHJpbmcoKS5jcmVhdGVDRlN0
cmluZygpLmxlYWtSZWYoKTsKICAgICB9CiAKICAgICBrZXlzW2tleUNvdW50XSA9IGxhc3RWaXNp
dGVkRGF0ZUtleTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24odm9pZCoqIGRpY3Rpbwog
CiAgICAgaWYgKCFtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmlzRW1wdHkoKSkgewogICAgICAgICBr
ZXlzW2tleUNvdW50XSA9IHRpdGxlS2V5OwotICAgICAgICB2YWx1ZXNba2V5Q291bnQrK10gPSBt
X2hpc3RvcnlJdGVtLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIHZhbHVlc1tr
ZXlDb3VudCsrXSA9IG1faGlzdG9yeUl0ZW0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFr
UmVmKCk7CiAgICAgfQogCiAgICAga2V5c1trZXlDb3VudF0gPSB2aXNpdENvdW50S2V5OwpAQCAt
MjQ1LDcgKzI0NSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06
OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiogZGljdGlvCiAgICAgICAgIEFTU0VSVChz
aXplKTsKICAgICAgICAgQ0ZTdHJpbmdSZWYqIGl0ZW1zID0gbmV3IENGU3RyaW5nUmVmW3NpemVd
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgICAg
IGl0ZW1zW2ldID0gcmVkaXJlY3RVUkxzLT5hdChpKS5jcmVhdGVDRlN0cmluZygpOworICAgICAg
ICAgICAgaXRlbXNbaV0gPSByZWRpcmVjdFVSTHMtPmF0KGkpLmNyZWF0ZUNGU3RyaW5nKCkubGVh
a1JlZigpOwogICAgICAgICBDRkFycmF5UmVmIHJlc3VsdCA9IENGQXJyYXlDcmVhdGUoMCwgKGNv
bnN0IHZvaWQqKilpdGVtcywgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICAgQ0ZSZWxlYXNl
KGl0ZW1zW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCmluZGV4IDI1ZDdl
YzA5Yjk4NjFlNDQzNDkxZTM0NmQ1MGQ0ZTIyYzc3MWI4NDUuLjA1YTk0OTA4YTg4ODQxMmIxNWQz
OTQ2M2QxMzkyOWE5MTY3NDk0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYklj
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNw
cApAQCAtMzY2LDcgKzM2Niw3IEBAIEJTVFIgV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VE
aWRBZGRJY29uTm90aWZpY2F0aW9uKCkKIAogQ0ZTdHJpbmdSZWYgV2ViSWNvbkRhdGFiYXNlOjpp
Y29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgpCiB7Ci0gICAgc3RhdGljIENG
U3RyaW5nUmVmIGljb25Vc2VySW5mb1VSTEtleSA9IFN0cmluZyhXZWJJY29uTm90aWZpY2F0aW9u
VXNlckluZm9VUkxLZXkpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgc3RhdGljIENGU3RyaW5nUmVm
IGljb25Vc2VySW5mb1VSTEtleSA9IFN0cmluZyhXZWJJY29uTm90aWZpY2F0aW9uVXNlckluZm9V
UkxLZXkpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgIHJldHVybiBpY29uVXNlcklu
Zm9VUkxLZXk7CiB9CiAKQEAgLTM4Nyw4ICszODcsNyBAQCBzdGF0aWMgdm9pZCBwb3N0RGlkQWRk
SWNvbk5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHBhZ2VVUkwsIFdlYkljb25EYXRhYmFzZSog
aQogICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBkaWN0aW9uYXJ5KEFkb3B0
Q0YsIAogICAgIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwoQWRvcHRDRiwgcGFnZVVSTC5jcmVhdGVDRlN0
cmluZygpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBXZWJJ
Y29uRGF0YWJhc2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KCksIHVy
bC5nZXQoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgV2Vi
SWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgpLCBw
YWdlVVJMLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgQ09NUHRyPENGRGljdGlvbmFy
eVByb3BlcnR5QmFnPiB1c2VySW5mbyA9IENGRGljdGlvbmFyeVByb3BlcnR5QmFnOjpjcmVhdGVJ
bnN0YW5jZSgpOwogICAgIHVzZXJJbmZvLT5zZXREaWN0aW9uYXJ5KGRpY3Rpb25hcnkuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKaW5kZXggZmQ2
MWEwMWZiYWYwZWNhNzE0NDYzYmIxZDU3MGNmZmE0MWI3NjU4ZC4uZGZiNzE0YjQ2NTA2MWFiMjAz
NTJiYTNkNzU3NzRmYmVmYWYyN2Q3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
TG9jYWxpemFibGVTdHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6
YWJsZVN0cmluZ3MuY3BwCkBAIC0xMzIsMTIgKzEzMiwxMCBAQCBzdGF0aWMgQ0ZCdW5kbGVSZWYg
Y3JlYXRlV2ViS2l0QnVuZGxlKCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBTdHJpbmcgYnVu
ZGxlUGF0aFN0cmluZyhwYXRoU3RyKTsKLSAgICBDRlN0cmluZ1JlZiBidW5kbGVQYXRoQ0ZTdHJp
bmcgPSBidW5kbGVQYXRoU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgaWYgKCFidW5kbGVQ
YXRoQ0ZTdHJpbmcpCisgICAgaWYgKCFidW5kbGVQYXRoU3RyaW5nKQogICAgICAgICByZXR1cm4g
MDsKIAotICAgIENGVVJMUmVmIGJ1bmRsZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKDAsIGJ1bmRsZVBhdGhDRlN0cmluZywga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1
ZSk7Ci0gICAgQ0ZSZWxlYXNlKGJ1bmRsZVBhdGhDRlN0cmluZyk7CisgICAgQ0ZVUkxSZWYgYnVu
ZGxlVVJMUmVmID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgYnVuZGxlUGF0aFN0
cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCB0cnVl
KTsKICAgICBpZiAoIWJ1bmRsZVVSTFJlZikKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE2OCw4
ICsxNjYsNyBAQCBzdGF0aWMgQ0ZTdHJpbmdSZWYgY29weUxvY2FsaXplZFN0cmluZ0Zyb21CdW5k
bGUoV2ViTG9jYWxpemFibGVTdHJpbmdzQnVuZGxlKiBzdAogICAgIGlmICghYnVuZGxlKQogICAg
ICAgICByZXR1cm4gbm90Rm91bmQ7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleVN0
cmluZyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0ZTdHJpbmdSZWYgcmVz
dWx0ID0gQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXlTdHJpbmcuZ2V0
KCksIDAsIGJ1bmRsZSwgbm90Rm91bmQsIDApOworICAgIENGU3RyaW5nUmVmIHJlc3VsdCA9IENG
Q29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5LmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIGJ1bmRsZSwgbm90Rm91bmQsIDApOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShyZXN1bHQgIT0gbm90Rm91bmQsICJjb3VsZCBub3QgZmluZCBsb2NhbGl6YWJsZSBzdHJpbmcg
JXMgaW4gYnVuZGxlIiwga2V5KTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwCmluZGV4IDU2MzRhMTViM2VkM2UwMWMyNjA0YTViZTI2MDEzNzExZmRj
Y2RjMzMuLjg5NjdiMGIzMGFlNGQ0MjMzNThiOWZjZTZmNTgzMTkxYzk2YzBjMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFdlYlBy
ZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKCkKICAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGVmYXVsdEZpeGVkRm9udFNpemVQcmVmZXJl
bmNlS2V5KSwgQ0ZTVFIoIjEzIikpOwogCiAgICAgU3RyaW5nIGRlZmF1bHREZWZhdWx0RW5jb2Rp
bmcoV0VCX1VJX1NUUklORygiSVNPLTg4NTktMSIsICJUaGUgZGVmYXVsdCwgZGVmYXVsdCBjaGFy
YWN0ZXIgZW5jb2RpbmciKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5jZUtleSksIGRlZmF1bHRE
ZWZhdWx0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lUHJlZmVyZW5j
ZUtleSksIGRlZmF1bHREZWZhdWx0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VXNlclN0eWxl
U2hlZXRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0TG9jYXRp
b25QcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIiIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggNmIx
YmFkZTRhYWYyZTk1YTIwNGY5MmEyNmQ0YWIwMjQwYTI3MjgzOC4uM2ExYjc0ZTIxMzUxZmFkYTZk
NDFhY2RmODlmMjU0YTgzYWFjYjY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTQ3MSw3ICs0
NzEsNyBAQCB2b2lkIFdlYlZpZXc6OnNldENhY2hlTW9kZWwoV2ViQ2FjaGVNb2RlbCBjYWNoZU1v
ZGVsKQogICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiBjZnVybENhY2hlKEFkb3B0Q0YsIENG
VVJMQ2FjaGVDb3B5U2hhcmVkVVJMQ2FjaGUoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjZnVybENhY2hlRGlyZWN0b3J5KEFkb3B0Q0YsIHdrQ29weUZvdW5kYXRpb25DYWNoZURpcmVj
dG9yeSgwKSk7CiAgICAgaWYgKCFjZnVybENhY2hlRGlyZWN0b3J5KQotICAgICAgICBjZnVybENh
Y2hlRGlyZWN0b3J5LmFkb3B0Q0YoV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIGNmdXJsQ2FjaGVEaXJlY3Rvcnkg
PSBXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0
cmluZygpOwogCiAgICAgLy8gQXMgYSBmdWRnZSBmYWN0b3IsIHVzZSAxMDAwIGluc3RlYWQgb2Yg
MTAyNCwgaW4gY2FzZSB0aGUgcmVwb3J0ZWQgYnl0ZSAKICAgICAvLyBjb3VudCBkb2Vzbid0IGFs
aWduIGV4YWN0bHkgdG8gYSBtZWdhYnl0ZSBib3VuZGFyeS4KQEAgLTQ3MTIsOCArNDcxMiw3IEBA
IEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKElXZWJOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbikKICAgICAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgICAgICBy
ZXR1cm4gaHI7CiAKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxTdHJpbmcoQWRv
cHRDRiwgdG9TdHJpbmcoc3RyKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHVybFN0cmluZy5nZXQoKSwgMCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgdG9TdHJpbmcoc3RyKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CiAKICAgICAgICAg
Ly8gQ2hlY2sgaWYgdGhlIHBhc3NlZCBpbiBzdHJpbmcgaXMgYSBwYXRoIGFuZCBjb252ZXJ0IGl0
IHRvIGEgVVJMLgogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIG5p
Z2h0bHkgYnVpbGRzIHVudGlsIHdlIGNhbiBnZXQgU2FmYXJpIHRvIHBhc3MgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQppbmRleCA0YTM1YjZhMmQ4YTMyYzVkZDgzNDk3
MmNkMmZkZjJhZGMzOTFlNjFhLi4zNjg3NTMxNTE3MjE4ZGEyOWU5Y2RkZGE0MjMyYTNiMTI4MjUz
MzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0KQEAgLTMwLDEy
ICszMCwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9vbCBNb2R1bGU6OmxvYWQoKQogewot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlUGF0aChBZG9wdENGLCBtX3BhdGguY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRD
RiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVu
ZGxlUGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKSk7CisgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIG1fcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UpKTsKICAgICBpZiAoIWJ1bmRsZVVSTCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUo
QWRvcHRDRiwgQ0ZCdW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdl
dCgpKSk7CisgICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUgPSBhZG9wdENGKENGQnVu
ZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOwogICAgIGlm
ICghYnVuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCmluZGV4IGRlN2Q1ODMx
ZjYwOGMzODMwZTNjOWJlMTRiMzk0NjVlYjJjNzFjM2IuLjY3MWYyMGQ2ZGNhYmUxZmMxYmEzOTU1
N2Q1ZTYyOGVlN2VkN2VkMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQpAQCAtMjc5LDggKzI3OSw3IEBAIHN0YXRpYyB2
b2lkIGluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgU3Ry
aW5nJiBzYW5kYm94UHJvCiAgICAgaWYgKHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZQ
bHVnaW5QYXRoID0gYWRvcHRDRihwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aCgwLCBjZlBsdWdpblBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBm
YWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcGx1Z2luVVJMID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIGlmICghcGx1Z2luVVJM
KQogICAgICAgICByZXR1cm47CiAKQEAgLTI5Miw4ICsyOTEsNyBAQCBzdGF0aWMgdm9pZCBpbml0
aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmluZyYgc2Fu
ZGJveFBybwogICAgIGlmICghYnVuZGxlSWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aCA9
IGFkb3B0Q0Yoc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gc2FuZGJveFByb2ZpbGVEaXJlY3RvcnkgPSBhZG9wdENG
KENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGNmU2FuZGJveFByb2ZpbGVEaXJlY3Rv
cnlQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgVFJVRSkpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gc2FuZGJveFByb2ZpbGVEaXJlY3RvcnkgPSBhZG9wdENGKENGVVJMQ3JlYXRl
V2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgVFJVRSkpOwogCiAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBzYW5kYm94RmlsZU5hbWUgPSBDRlN0cmluZ0NyZWF0ZVdpdGhG
b3JtYXQoMCwgMCwgQ0ZTVFIoIiVALnNiIiksIGJ1bmRsZUlkZW50aWZpZXIpOwogICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gc2FuZGJveFVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5
c3RlbVBhdGhSZWxhdGl2ZVRvQmFzZSgwLCBzYW5kYm94RmlsZU5hbWUuZ2V0KCksIGtDRlVSTFBP
U0lYUGF0aFN0eWxlLCBGQUxTRSwgc2FuZGJveFByb2ZpbGVEaXJlY3RvcnkuZ2V0KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRz
Y2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05l
dHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQppbmRleCA4MWIzOGUwZWM4ZmUz
YzQxODg5NzllZWZkMDYyMjdiMzcwZmQ0YTNlLi4zZGMzNzdjNDQ1MGQ4OGZlMjVmNzAyYjBmYTU0
M2EzOGUyOGY2YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1t
CkBAIC0zNTIsMTEgKzM1MiwxMCBAQCBzdGF0aWMgYm9vbCBnZXRQbHVnaW5JbmZvRnJvbUNhcmJv
blJlc291cmNlcyhDRkJ1bmRsZVJlZiBidW5kbGUsIFBsdWdpbk1vZHVsZUluZgogCiBib29sIE5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gYnVuZGxlUGF0aChBZG9wdENGLCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZp
bGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVBhdGguZ2V0KCksIGtDRlVS
TFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxl
VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0
aFN0eWxlLCBmYWxzZSkpOwogICAgIAogICAgIC8vIFRyeSB0byBpbml0aWFsaXplIHRoZSBidW5k
bGUuCi0gICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUoQWRvcHRDRiwgQ0ZCdW5kbGVD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CisgICAgUmV0YWlu
UHRyPENGQnVuZGxlUmVmPiBidW5kbGUgPSBhZG9wdENGKENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOwogICAgIGlmICghYnVuZGxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0zOTUsMTEgKzM5NCw5IEBAIGJvb2wgTmV0c2NhcGVQ
bHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVn
aW5Nb2R1bGVJCiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1JTUVU
eXBlc1ByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKIHsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0
cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRo
LmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKLSAgICAvLyBUcnkgdG8gaW5pdGlh
bGl6ZSB0aGUgYnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0
Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkp
OworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1
bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAppbmRleCBjZGZmMzQ0NjlhMjM5
M2QzNWFkYmFiYzRjYjBhMzhiYTBmNTYyMzI0Li43YzFmMjQwZWNjNDhiOGI0YzE5MTNlMDU0YzU4
YWIzYTQ4YTJiNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2Vi
QmFja0ZvcndhcmRMaXN0Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9X
ZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKQEAgLTk0LDkgKzk0LDkgQEAgQ0ZEaWN0aW9uYXJ5UmVm
IFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24oV2Vi
UGFnZVByb3gKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybChBZG9wdENGLCBtX2VudHJpZXNbaV0tPnVy
bCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRp
dGxlKEFkb3B0Q0YsIG1fZW50cmllc1tpXS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBvcmlnaW5hbFVSTChBZG9wdENGLCBtX2VudHJp
ZXNbaV0tPm9yaWdpbmFsVVJMKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXJsID0gbV9lbnRyaWVzW2ldLT51cmwoKS5jcmVhdGVDRlN0cmluZygp
OworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRpdGxlID0gbV9lbnRyaWVzW2ldLT50
aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
b3JpZ2luYWxVUkwgPSBtX2VudHJpZXNbaV0tPm9yaWdpbmFsVVJMKCkuY3JlYXRlQ0ZTdHJpbmco
KTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyB1c2VzIHRoZSBDb3JlSVBDIGRhdGEgZW5jb2Rp
bmcgZm9ybWF0LCB3aGljaCBtZWFucyB0aGF0IHdoZW5ldmVyIHdlIGNoYW5nZSB0aGUgQ29yZUlQ
QyBlbmNvZGluZyB3ZSBuZWVkIHRvIGJ1bXAgdGhlIEN1cnJlbnRTZXNzaW9uU3RhdGVEYXRhVmVy
c2lvbgogICAgICAgICAvLyBjb25zdGFudCBpbiBXZWJQYWdlUHJveHlDRi5jcHAuIFRoZSBDb3Jl
SVBDIGRhdGEgZm9ybWF0IGlzIG1lYW50IHRvIGJlIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbCwg
YW5kIG5vdCBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgd3JpdHRlbiB0byBkaXNrLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKaW5kZXggNzlkZDhj
ZWQwMmQ3Y2UwZDRmM2MyNDA0ODE4YjgwMWJlNDBmMWY3YS4uZmFjMDJjMWI0NjkwZjEyMzZlOWFh
NzhkYWNhNDkyYjFjNDI2M2ExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYlBhZ2VQcm94eUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2Yv
V2ViUGFnZVByb3h5Q0YuY3BwCkBAIC02NSw3ICs2NSw3IEBAIFBhc3NSZWZQdHI8V2ViRGF0YT4g
V2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGVEYXRhKFdlYlBhZ2VQcm94eVNlc3Npb25TdGF0ZUZp
bHRlCiAgICAgICAgIGlmIChwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBw
cm92aXNpb25hbFVSTCA9IG1fbWFpbkZyYW1lLT5wcm92aXNpb25hbFVSTCgpOwogICAgICAgICBp
ZiAoIXByb3Zpc2lvbmFsVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcHJvdmlzaW9uYWxV
UkxTdHJpbmcuYWRvcHRDRihwcm92aXNpb25hbFVSTC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAg
ICAgICAgIHByb3Zpc2lvbmFsVVJMU3RyaW5nID0gcHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJp
bmcoKTsKICAgICAgICAgICAgIGtleXNbbnVtVmFsdWVzXSA9IFByb3Zpc2lvbmFsVVJMS2V5KCk7
CiAgICAgICAgICAgICB2YWx1ZXNbbnVtVmFsdWVzXSA9IHByb3Zpc2lvbmFsVVJMU3RyaW5nLmdl
dCgpOwogICAgICAgICAgICAgKytudW1WYWx1ZXM7CkBAIC0xNzksOCArMTc5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlRGF0YShXZWJEYXRhKiB3ZWJEYXRh
KQogCiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBhdXRvc2F2ZUtleShjb25zdCBTdHJp
bmcmIG5hbWUpCiB7Ci0gICAgU3RyaW5nIGtleSA9ICJjb20uYXBwbGUuV2ViS2l0LnNlYXJjaEZp
ZWxkOiIgKyBuYW1lOwotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0Ys
IGtleS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICByZXR1cm4gU3RyaW5nKCJjb20uYXBwbGUuV2Vi
S2l0LnNlYXJjaEZpZWxkOiIgKyBuYW1lKS5jcmVhdGVDRlN0cmluZygpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHNlYXJjaEl0ZW1zKQpAQCAtMTkyLDEwICsxOTEsOCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mCiAKICAgICBpZiAoc2l6ZV90IHNpemUgPSBzZWFyY2hJdGVtcy5zaXpl
KCkpIHsKICAgICAgICAgaXRlbXMuYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCBzaXpl
LCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGl0ZW0o
QWRvcHRDRiwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBD
RkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIGl0ZW0uZ2V0KCkpOwotICAgICAgICB9Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKICAgICB9CiAKICAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoYXV0b3Nh
dmVLZXkobmFtZSkuZ2V0KCksIGl0ZW1zLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBs
aWNhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNl
Q2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAppbmRleCA2ODEw
ZjBhYmRiOWRiZWJhOTlmYTNlMWU5YjBmMDZjZTQ1YWUwNDk0Li4zOTU2NDljNTBiZjRkNmRmMDRi
Yzc1NDBiNTRiYWY1OWRiMmMzNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdl
ci5jcHAKQEAgLTExOCw4ICsxMTgsNyBAQCB2b2lkIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpj
bGVhckNhY2hlRm9yT3JpZ2luKFNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5EYXRhLAogI2lmIFVT
RShDRlVSTENBQ0hFKQogICAgIGlmIChyZXNvdXJjZUNhY2hlc1RvQ2xlYXIgIT0gSW5NZW1vcnlS
ZXNvdXJjZUNhY2hlc09ubHkpIHsgCiAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJl
Zj4gaG9zdEFycmF5KEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBl
QXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0KEFk
b3B0Q0YsIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkFycmF5
QXBwZW5kVmFsdWUoaG9zdEFycmF5LmdldCgpLCBob3N0LmdldCgpKTsKKyAgICAgICAgQ0ZBcnJh
eUFwcGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwgb3JpZ2luLT5ob3N0KCkuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSk7CiAKICAgICAgICAgY2xlYXJDRlVSTENhY2hlRm9ySG9zdE5hbWVzKGhvc3RB
cnJheS5nZXQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IGYyOWIxYTdmNmQyNDM5YjBjMzQ4YWFkNjI4NWExYjg4ZTdkNTQwZjku
LjFlYjdmMWNmMjUyY2U2ZWYxNTdlN2Q2ZTg1YjdkMzUyMTBhNjhmYmUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAg
IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMg
b2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbToKKyAgICAgICAgKFdU
Ujo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUpOgorCiAyMDEyLTEwLTI2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBtYWtpbmcgTlBSdW50aW1lIGNhbGxzIHdpdGggYSBu
dWxsIE5QUCBwb2ludGVyCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0KaW5kZXgg
NDZjMjczZjFmOGNhNDBhZWUyN2M5NDc2YzgxZmU3Mzk0YzMzYmIyNC4uYjBjYjRlMDMxY2I3NDQ2
MjhjMGJjMzRkNTdkMTc2YjY4N2FmMTM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFn
ZU1hYy5tbQpAQCAtODUsOCArODUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6cGxhdGZv
cm1EaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZQogICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
Q1JBU0hJTkcgVEVTVDogIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3RQYXRoKTsKLSAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyhBZG9wdENGLCBidWlsZGVyLnRv
U3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFdLU2V0Q3Jhc2hSZXBvcnRBcHBs
aWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24oY2ZTdHJpbmcuZ2V0KCkpOworICAgICAgICBXS1Nl
dENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGJ1aWxkZXIudG9TdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171122</attachid>
            <date>2012-10-27 22:39:43 -0700</date>
            <delta_ts>2012-10-28 12:16:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121027223813.patch</filename>
            <type>text/plain</type>
            <size>81969</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU4YjQ5NjdiN2U2MmU2Yzk2MTViMGVm
MjhlYmNjY2Q1MmViMTgwNGMuLjJjYzM4YWQyMjM4YmZmM2RjMDM0MjkzYzQ3N2NmOWY1ZmQxNDZm
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDEyLTEwLTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyNjg5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY0YWVjNGU2ZWVmOGM0MjUwOTEyMmQ3ZGIwNjk0M2Q3YzYyMDkyMjguLmVmOWE5M2Mw
NjIzZTI4NGVmNDQ2MTE4MjczZTBlMjcyZjE4YjU2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
MSBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFs
bGJhY2tPYmplY3QpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlVGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0dNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFn
ZVNvdXJjZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5
cGVGcm9tSFRNTENsaXBib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21D
b2NvYVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjo6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0NGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjcmVhdGVDRlN0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMv
U3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNT
dHJpbmcgKik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZW5jb2RlKToKKwogMjAxMi0xMC0yNiAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgLmxvb3BTdGFydCBhbmQgLmxvb3BFbmQgYXR0cmlidXRlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nm
L0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJlY2M1
Li42ZTBhZWQ1ZmZhNTZlNzFmMmIwNTYyOTNmZmNmYzBlZTA1OWE1ZjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0
dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAo
Y3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToKKyAg
ICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcuaCwg
cmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxMWQ1MGIxNzdkYWY2
ZTIwZjdhYWFkYjEzYjEyNWVlNWNkOTUwMGUzLi5lOWI2ODMxNDFhYzVjYmM4NTU5YjZjNTZjMzgy
ZTdkODFiZjU0YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMTAt
MjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJp
bmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9mIFN0
cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFz
ZSk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojp2aXNp
dGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcpOgorICAgICAg
ICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChjcmVhdGVXZWJLaXRCdW5kbGUpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0
cmluZ0Zyb21CdW5kbGUpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAg
KFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAo
V2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxMi0xMC0yNCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RyYXRlZ3kgZm9y
IGxvYWRlciBjdXN0b21pemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFmODliZmIxNzRlOWYxOTJhZGIx
OWVkYjBiNmE4YjA2YTZjNzIxMDkuLmRmY2JhMDM0ZmYyNmQ0M2VlNmM2MjYzODcwZGUzZjliNmI3
NTQwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0yNyAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZT
dHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVD
RlN0cmluZy4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vZHVsZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdp
bkluZm8pOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1
Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNr
Rm9yd2FyZExpc3RDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6
Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9j
Zi9XZWJQYWdlUHJveHlDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vz
c2lvblN0YXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OmF1dG9zYXZlS2V5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2lu
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMTIt
MTAtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNo
IGluIFdlYlByb2NlcyBhdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3Jp
Z2luUmVkaXJlY3RSZWNlaXZlZCArIDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRl
eCA2YWM2MGU2YWQ1NzI0MzM5NzhmNWZiNGI0ODgwYTlmYjQwMTA1YzY2Li43ZGEwZGQ0ZjNhMDE3
MTliNDZjZWE5YjE4OGRiZGZhNWU2OTNjY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmgKQEAgLTEzNywxMCArMTM3LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVtb3Zl
KFN0cmluZ0ltcGwqKTsKICAgICAKLSNpZiBVU0UoQ0YpCi0gICAgQXRvbWljU3RyaW5nKENGU3Ry
aW5nUmVmIHMpIDogIG1fc3RyaW5nKGFkZChTdHJpbmcocykuaW1wbCgpKSkgeyB9Ci0gICAgQ0ZT
dHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jcmVhdGVD
RlN0cmluZygpOyB9Ci0jZW5kaWYgICAgCiAjaWZkZWYgX19PQkpDX18KICAgICBBdG9taWNTdHJp
bmcoTlNTdHJpbmcqIHMpIDogbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7IH0KICAg
ICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAwMDY3YmViZWVkOTBmZjc0MzczMmNkYWFmNTYwYWFmNTky
MDk4NGVjLi42NzY3NzkwNmRiMDI1MDNlMjE3OTQxNzQzOTYyNDExZmIyMzI2NTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNjcsNiArNjcsNyBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZy
b21MaXRlcmFsRGF0YVRyYW5zbGF0b3I7CiBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogc3RydWN0
IFN1YnN0cmluZ1RyYW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yOwordGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKIAogZW51bSBUZXh0Q2FzZVNlbnNpdGl2
aXR5IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUgfTsKIApAQCAtNzEz
LDcgKzcxNCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFVTRShDRikKLSAgICBDRlN0cmluZ1JlZiBjcmVhdGVD
RlN0cmluZygpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJpbmcoKTsK
ICNlbmRpZgogI2lmZGVmIF9fT0JKQ19fCiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaAppbmRleCA1MGMwNDhkNjNmM2RjZjFjNTM4NjU1NjZlNDcyNGYxYTgy
NDhmZTA3Li5kNjdhZDMyOTkyYzI0MGYxZTU1MmY2ZWMzZWZjMDgwMDhiM2JhODM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8b2JqYy9vYmpj
Lmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJp
bmcgKiBDRlN0cmluZ1JlZjsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQpCiBRVF9CRUdJTl9O
QU1FU1BBQ0UKIGNsYXNzIFFTdHJpbmc7CkBAIC0zODYsNyArMzgyLDcgQEAgcHVibGljOgogCiAj
aWYgVVNFKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7Ci0gICAgQ0ZTdHJpbmdSZWYgY3Jl
YXRlQ0ZTdHJpbmcoKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNG
U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMmNmMGRiNTYxOGUzODIwY2RmNDQ2
NDU1ODM0MWY2OTRmNTNkMWZhMy4uYmUyNGZkYjNmZGIxMzdjODBiNmYwYTRmYjg4NzQxYWIzNDFh
NGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAt
MjQ4LDggKzI0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxP
YmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBPYmpjQ2xhc3MqIG9i
amNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0Q2xhc3Mo
KSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChhZG9wdFB0cihu
ZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVk
TWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKSk7CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmplY3RJbXAq
PihleGVjLT5jYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgbmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lLmdldCgpKTsK
KyAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVudGlmaWVy
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2Ut
Pmludm9rZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwogICAgIH0KICAg
ICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
OTdmZTk1YjNhNDRkNDE4NWUyMTI2ZjZiYjZlZGJlY2Y0MzlmZWVlZS4uNzVkZjk5YWYzNmJiNjAw
MjY3YjlhNzJkNWM5MTU4OTBjNGRjNWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC05MTYsOCArOTE2LDcgQEAgc3RhdGljIEtVUkwgY3JlYXRlRmlsZVVS
TEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgLy8g
YXBwIGNhY2hlIG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29kZUZvckZp
bGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0YpICYmIFBM
QVRGT1JNKFdJTikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGF0aChBZG9wdENGLCBw
YXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwoQWRv
cHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQYXRoLmdldCgpLCBrQ0ZV
UkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZV
UkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIEtV
UkwgdXJsKGNmVVJMLmdldCgpKTsKICNlbHNlCiAgICAgS1VSTCB1cmw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4
IDM1NzZkNjRkZmM0ODJhNDFkNTRlMTNlZmQxOTc4MTYyYjc4MDdhN2YuLmQ3N2Y4NzRiMDlkYzIw
MDliYmVkMDM1MjQxODM1YmZlODZmODhlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MSw4ICs5MSw3IEBA
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3Bl
cnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBjZkRhdGEuZ2V0
KCkpOwogICAgIAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwoQWRvcHRDRiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygp
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmIChjZlVSTCkKKyAgICBpZiAoUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVVSTEtleSwgY2ZVUkwuZ2V0KCkpOwogICAgIGVsc2Ugewog
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTlVMTCByZXNvdXJjZSBV
UkwgaXMgaW52YWxpZCAtIHJldHVybmluZyBudWxsIHByb3BlcnR5IGxpc3QiKTsKQEAgLTEwMSwy
MyArMTAwLDE3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAKICAgICAvLyBGcmFtZU5hbWUg
c2hvdWxkIGJlIGxlZnQgb3V0IGlmIGVtcHR5IGZvciBzdWJyZXNvdXJjZXMsIGJ1dCBhbHdheXMg
aW5jbHVkZWQgZm9yIG1haW4gcmVzb3VyY2VzCiAgICAgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUo
cmVzb3VyY2UtPmZyYW1lTmFtZSgpKTsKLSAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkgfHwg
aXNNYWluUmVzb3VyY2UpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkZyYW1l
TmFtZShBZG9wdENGLCBmcmFtZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlRnJhbWVOYW1lS2V5LCBjZkZyYW1lTmFtZS5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghZnJh
bWVOYW1lLmlzRW1wdHkoKSB8fCBpc01haW5SZXNvdXJjZSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VGcmFt
ZU5hbWVLZXksIGZyYW1lTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAKICAgICAv
LyBTZXQgTUlNRVR5cGUsIFRleHRFbmNvZGluZ05hbWUsIGFuZCBSZXNvdXJjZVJlc3BvbnNlIG9u
bHkgaWYgdGhleSBhY3R1YWxseSBleGlzdAogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUocmVz
b3VyY2UtPm1pbWVUeXBlKCkpOwotICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZNSU1FVHlwZShBZG9wdENGLCBtaW1lVHlwZS5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlM
aXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtleSwgY2ZNSU1FVHlw
ZS5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZU1JTUVUeXBlS2V5LCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICAKICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyhyZXNvdXJjZS0+dGV4dEVuY29kaW5n
KCkpOwotICAgIGlmICghdGV4dEVuY29kaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNmVGV4dEVuY29kaW5nKEFkb3B0Q0YsIHRleHRFbmNvZGluZy5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0
LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5LCBjZlRl
eHRFbmNvZGluZy5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghdGV4dEVuY29kaW5nLmlzRW1wdHko
KSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdh
Y3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5LCB0ZXh0RW5jb2RpbmcuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJj
ZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4
IGFiZjFiY2E1ZTg1NDEwYmE4N2Q1Y2FiODI1MDBkOTY5ZjEwOTI2YTcuLjY5MDg0M2IxMzc3ODM0
ODI4MGVjN2VhNWI0MzczODhlOWRkYzY0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC01NCwxMyArNTQsMTIgQEAgc3RhdGljIFN0cmluZyBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogI2lmIFVTRShDRikKICAg
ICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7Ci0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb3JtYXRDRlN0cmluZyhBZG9wdENGLCBmb3JtYXQu
Y3JlYXRlQ0ZTdHJpbmcoKSk7CiAKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3Jt
YXQtbm9ubGl0ZXJhbCIKICNlbmRpZgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0
KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cygwLCAwLCBmb3Jt
YXRDRlN0cmluZy5nZXQoKSwgYXJndW1lbnRzKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cygw
LCAwLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXJndW1lbnRzKSk7CiAjaWYgQ09N
UElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYKQEAgLTI2
MCw3ICsyNTksNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5
KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkco
Ikxvb2sgVXAgaW4gRGljdGlvbmFyeSIsICJMb29rIFVwIGluIERpY3Rpb25hcnkgY29udGV4dCBt
ZW51IGl0ZW0iKTsKICNlbHNlCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gc2VsZWN0ZWRDRlN0cmluZyhBZG9wdENGLCB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51
SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBzZWxlY3RlZENGU3RyaW5nID0gdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVu
dUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnCVA4oCdIiwgIkxvb2sg
VXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZTdHJp
bmcuZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBVcCDigJw8
c2VsZWN0aW9uPuKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQg
d29yZCIpLnJlcGxhY2UoIjxzZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVu
dUl0ZW0oc2VsZWN0ZWRTdHJpbmcpKTsKQEAgLTczOCw4ICs3MzcsNyBAQCBTdHJpbmcga2V5Z2Vu
TWVudUl0ZW0yMDQ4KCkKIAogU3RyaW5nIGtleWdlbktleWNoYWluSXRlbU5hbWUoY29uc3QgU3Ry
aW5nJiBob3N0KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdENGU3RyaW5nKEFk
b3B0Q0YsIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtleWNoYWluIGtl
eSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdENGU3RyaW5nLmdldCgpKTsKKyAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVA
IiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBo
b3N0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiAjZW5kaWYKQEAgLTc2Miw4ICs3NjAs
NyBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewogI2lmIFVTRShDRikKICNpZiAhUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBmaWxlbmFtZS5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZShBZG9w
dENGLCBDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4g
bG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOwogICAgIFJldGFpblB0cjxD
Rk51bWJlckZvcm1hdHRlclJlZj4gZm9ybWF0dGVyKEFkb3B0Q0YsIENGTnVtYmVyRm9ybWF0dGVy
Q3JlYXRlKDAsIGxvY2FsZS5nZXQoKSwga0NGTnVtYmVyRm9ybWF0dGVyRGVjaW1hbFN0eWxlKSk7
CiAKICAgICBpbnQgd2lkdGhJbnQgPSBzaXplLndpZHRoKCk7CkBAIC03NzQsNyArNzcxLDcgQEAg
U3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGhlaWdodChBZG9wdENGLCBDRk51bWJl
ckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaGVpZ2h0SW50KSk7CiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBoZWlnaHRTdHJpbmcoQWRvcHRDRiwgQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVh
dGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1hdHRlci5nZXQoKSwgaGVpZ2h0LmdldCgpKSk7CiAK
LSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAICVAw5cl
QCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVs
dGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmluZy5nZXQoKSwgd2lk
dGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRvdyB0
aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwg
bm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5nLmdl
dCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7
CiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlZMOX
JWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11
bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0KCksIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAppbmRleCAxYjhkMDA2ZjI1MTlhYThh
OGYzYThjNDUwZWZkMjczNDE4YWY0Mjg0Li43MzBlZGMxNWZlOTFiYzkyNzcwODVjY2MyODg3YjA3
OTA2NzgwYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5jcHAKQEAgLTQ2LDggKzQ2LDcgQEAgc3RhdGljIGJvb2wgbWFpbkJ1
bmRsZUlzRXF1YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpCiAgICAg
aWYgKCFidW5kbGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBhcmUoQWRvcHRDRiwgYnVu
ZGxlSWRlbnRpZmllclN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gQ0ZTdHJp
bmdDb21wYXJlKGJ1bmRsZUlkZW50aWZpZXIsIGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBhcmUuZ2V0
KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOworICAgIHJldHVybiBDRlN0cmluZ0NvbXBhcmUo
YnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmllclN0cmluZy5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDhlZjUwZWViMGNiMDg0ZDFi
OWIyM2I4N2MzYmZhODk4MzkyYjhhMmQuLmMxODcwNjYzMzU2NTA1NTc5YWZkN2I2MWFjMTczOTA0
MDY0NGY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0
ZW1DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENTdHJpbmcgZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nKEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJpbmco
KTsKIAogICAgIGlmICghY2ZTdHJpbmcpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CkBAIC02
Myw4ICs2Myw3IEBAIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCkKICNlbHNlCiAgICAgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7CiAjZW5k
aWYKLSAgICByZXR1cm4gUmV0YWluUHRyPENGVVJMUmVmPihBZG9wdENGLCBDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aCgwLAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0
Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCksIHBhdGhTdHlsZSwgRkFMU0UpKTsKKyAg
ICByZXR1cm4gUmV0YWluUHRyPENGVVJMUmVmPihBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhdGhTdHlsZSwgRkFM
U0UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmlt
YXRpb25XaW4uY3BwCmluZGV4IDk3ZmIwYjYwOTQ2OGY0ZWQzNWIxZTE5MzhkOThiYmQ4OTQyMjI1
ODYuLjg1NmE0ZmNhZGVkMmYwYjYyNjBmNWU5MmJlMTE0NWRjMTJhNWM4NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE1MSw4ICsxNTEsNyBAQCBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYQogICAgIGVsc2UKICAgICAgICAgbV9hbmltYXRpb24uYWRvcHRDRihDQUNG
QW5pbWF0aW9uQ3JlYXRlKGtDQUNGS2V5ZnJhbWVBbmltYXRpb24pKTsKICAgICAKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwga2V5UGF0aC5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICBDQUNGQW5pbWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQoKSwgcy5nZXQoKSk7
CisgICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRpb24uZ2V0KCksIGtleVBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFBsYXRmb3JtQ0FBbmltYXRpb246OlBsYXRm
b3JtQ0FBbmltYXRpb24oUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXll
cldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luLmNwcAppbmRleCA3MDE2OGIyMTA0ZGIzNjlkYTA3NTdhMTE0NDYyMjExMWJj
MzA2MWYwLi5kZDYxNjMzN2U5MzY2ZWI3OWM5NmM2NzJiNzM5M2I2OTI0MzZmYzYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMTc2LDEwICsxNzYsOCBAQCB2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6YW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpCiBzdGF0
aWMgdm9pZCByZXN1Ym1pdEFsbEFuaW1hdGlvbnMoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKIHsK
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGxheWVyLT5hbmltYXRpb25zKCkuZW5kKCk7Ci0gICAgZm9yIChIYXNo
TWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGl0LT5rZXkuY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihsYXllci0+cGxhdGZvcm1M
YXllcigpLCBzLmdldCgpLCBpdC0+dmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpOwotICAgIH0K
KyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKKyAgICAgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCksIGl0LT5rZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgaXQtPnZhbHVlLT5wbGF0Zm9y
bUFuaW1hdGlvbigpKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmVuc3VyZUFuaW1hdGlv
bnNTdWJtaXR0ZWQoKQpAQCAtMjk3LDggKzI5NSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjph
ZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24q
CiAgICAgLy8gQWRkIGl0IHRvIHRoZSBhbmltYXRpb24gbGlzdAogICAgIG1fYW5pbWF0aW9ucy5h
ZGQoa2V5LCBhbmltYXRpb24pOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0
Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obV9s
YXllci5nZXQoKSwgcy5nZXQoKSwgYW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKKyAg
ICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obV9sYXllci5nZXQoKSwga2V5LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGFuaW1hdGlvbi0+cGxhdGZvcm1BbmltYXRpb24oKSk7CiAgICAgc2V0TmVlZHND
b21taXQoKTsKIAogICAgIC8vIFRlbGwgdGhlIGhvc3QgYWJvdXQgaXQgc28gd2UgY2FuIGZpcmUg
dGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVudApAQCAtMzEyLDggKzMwOSw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiAgICAg
Ly8gUmVtb3ZlIGl0IGZyb20gdGhlIGFuaW1hdGlvbiBsaXN0CiAgICAgbV9hbmltYXRpb25zLnJl
bW92ZShrZXkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGtleS5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJSZW1vdmVBbmltYXRpb24obV9sYXllci5n
ZXQoKSwgcy5nZXQoKSk7CisgICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0
KCksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIC8vIFdlIGRvbid0ICJyZW1v
dmUiIGEgbGF5ZXIgZnJvbSBBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHdoZW4gaXQgbG9zZXMg
YW4gYW5pbWF0aW9uLgogICAgIC8vIFRoZXJlIG1heSBiZSBvdGhlciBhY3RpdmUgYW5pbWF0aW9u
cyBvbiB0aGUgbGF5ZXIgYW5kIGlmIGFuIGFuaW1hdGlvbgpAQCAtNTg2LDggKzU4Miw3IEBAIFN0
cmluZyBQbGF0Zm9ybUNBTGF5ZXI6Om5hbWUoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXll
cjo6c2V0TmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gcyhBZG9wdENGLCB2YWx1ZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJT
ZXROYW1lKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZMYXllclNldE5hbWUobV9s
YXllci5nZXQoKSwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgc2V0TmVlZHND
b21taXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAK
aW5kZXggYzQzMGNmMjg0NjE0NjY0N2JmNjFmYzdhNzE2MjlmNTJmMDIxZmE2YS4uMTUyNzViM2Fl
NWZlNWMxYzZhNGY4Zjg0ZmQ2NjkwZDIxZmNmNThkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbDo6dXBkYXRlVGlsZXMoKQogCiAjaWZuZGVmIE5ERUJVRwogICAgICAg
ICAgICAgU3RyaW5nIG5hbWUgPSAiVGlsZSAoIiArIFN0cmluZzo6bnVtYmVyKGkpICsgIiwiICsg
U3RyaW5nOjpudW1iZXIoaikgKyAiKSI7Ci0gICAgICAgICAgICBDQUNGTGF5ZXJTZXROYW1lKHRp
bGUsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgbmFtZS5jcmVhdGVDRlN0cmluZygp
KS5nZXQoKSk7CisgICAgICAgICAgICBDQUNGTGF5ZXJTZXROYW1lKHRpbGUsIG5hbWUuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5k
ZXggMjFlOWRiNGMyOGQ5YTI1NTEzNTIwYWNlNzA4NDAzYWM1ZTc3YWI5My4uZGQzNzgxNTk3Zjg1
ZWI2MTBkY2M0NzFlYzgzMTUzZTBhYmQyY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTM3Nyw4ICszNzcs
NyBAQCBzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVmIGpwZWdVVEkoKQogc3RhdGljIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXRpRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVD
RlN0cmluZyhBZG9wdENGLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4g
UmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVu
dGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlQ0ZTdHJpbmcuZ2V0KCks
IDApKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVy
Rm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDApKTsKICNlbHNlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSXQgaXMgdW5j
bGVhciBpZiBDRlNUUiBpcyB0aHJlYWRzYWZlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQppbmRleCBiZDUwYTMx
NzVmM2I0MjVhODgyNmNkMmE1NmE2MmUyMTkzNjk2MzM3Li45NTNiY2I5ZDI4YWQwZWI3NWFiMzg4
MTNjMzQzOTQ1NWYxMjYyYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KQEAgLTMzLDE2ICszMywxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShj
b25zdCBTdHJpbmcmIHV0aSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aXJlZihB
ZG9wdENGLCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBtaW1lKEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpcmVmLmdl
dCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgcmV0dXJuIG1pbWUuZ2V0KCk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpLmdldCgpOwogfQogCiBTdHJp
bmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRp
KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdHlwZShBZG9wdENGLCB1dGkuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24oQWRvcHRD
RiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh0eXBlLmdldCgpLCBrVVRUYWdDbGFz
c0ZpbGVuYW1lRXh0ZW5zaW9uKSk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbi5nZXQoKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSkuZ2V0KCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJD
b3JlVGV4dC5tbQppbmRleCA0Y2I4NzZjMzY1ZWM5ZGQ3MTYwYTFkMmZkZTA5ZTdmMzJmMDBiYWM5
Li41N2Y3MGZmZjI4ZTc0ZjZmZTE1Nzc4NzM1Y2IwMzIwNDdhYTMxNjI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
Q29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBD
b21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJz
KGNvbnN0IFVDaGFyKiBjcCwKICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29tcGxleFRleHRS
dW5zLmFwcGVuZChDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKG1fZm9udC5wcmltYXJ5Rm9udCgpLCBj
cCwgc3RyaW5nTG9jYXRpb24gKyBydW5SYW5nZS5sb2NhdGlvbiwgcnVuUmFuZ2UubGVuZ3RoLCBt
X3J1bi5sdHIoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcnVuRm9udERhdGEgPSBmb250Q2Fj
aGUoKS0+Z2V0Q2FjaGVkRm9udERhdGEobV9mb250LmZvbnREZXNjcmlwdGlvbigpLCBmb250TmFt
ZS5nZXQoKSwgZmFsc2UsIEZvbnRDYWNoZTo6RG9Ob3RSZXRhaW4pLmdldCgpOworICAgICAgICAg
ICAgICAgICAgICBydW5Gb250RGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YSht
X2ZvbnQuZm9udERlc2NyaXB0aW9uKCksIFN0cmluZyhmb250TmFtZS5nZXQoKSksIGZhbHNlLCBG
b250Q2FjaGU6OkRvTm90UmV0YWluKS5nZXQoKTsKICNpZiAhUExBVEZPUk0oV1gpCiAgICAgICAg
ICAgICAgICAgICAgIC8vIENvcmUgVGV4dCBtYXkgaGF2ZSB1c2VkIGEgZm9udCB0aGF0IGlzIG5v
dCBrbm93biB0byBOU0ZvbnRNYW5hZ2VyLiBJbiB0aGF0IGNhc2UsIGZhbGwgYmFjayBvbgogICAg
ICAgICAgICAgICAgICAgICAvLyB1c2luZyB0aGUgZm9udCBhcyByZXR1cm5lZCwgZXZlbiB0aG91
Z2ggaXQgbWF5IG5vdCBoYXZlIHRoZSBiZXN0IE5TRm9udFJlbmRlcmluZ01vZGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBiZDg4MDIwNDQxYjBl
OWFlMDBiYWRhZjM2YjJmNGY1YTZhNmJlYWU3Li5mZDRhYjk5YjE3NDc1ZDQxNGIyMWFhM2VjZDU3
ZTYxODBhMjhmY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xp
cGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRN
YWMubW0KQEAgLTk5LDExICs5OSwxMCBAQCBzdGF0aWMgU3RyaW5nIGNvY29hVHlwZUZyb21IVE1M
Q2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKICAgICAvLyBUcnkgVVRJIG5vdwog
ICAgIFN0cmluZyBtaW1lVHlwZSA9IHFUeXBlOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dXRpVHlwZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtV
VFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCksIE5VTEwpKTsKLSAg
ICBpZiAodXRpVHlwZSkgewotICAgICAgICBDRlN0cmluZ1JlZiBwYlR5cGUgPSBVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRU
eXBlKTsKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlID0gYWRvcHRDRihV
VFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUs
IG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwpKSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRh
Z1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpOwogICAg
ICAgICBpZiAocGJUeXBlKQotICAgICAgICAgICAgcmV0dXJuIHBiVHlwZTsKKyAgICAgICAgICAg
IHJldHVybiBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gTm8gbWFwcGluZywganVzdCBw
YXNzIHRoZSB3aG9sZSBzdHJpbmcgdGhvdWdoCkBAIC0xMTIsMTEgKzExMSw4IEBAIHN0YXRpYyBT
dHJpbmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkK
IAogc3RhdGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShjb25zdCBTdHJpbmcmIHR5cGUp
CiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlQ0YgPSBhZG9wdENGKHR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0
Q0YsIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bi
b2FyZFR5cGUsIHR5cGVDRi5nZXQoKSwgMCkpOwotICAgIGlmICh1dGlUeXBlKSB7Ci0gICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZl
cnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0g
ICAgICAgIGlmIChtaW1lVHlwZSkKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlU
eXBlID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTlNQYm9hcmRUeXBlLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKSkgewor
ICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01J
TUVUeXBlKSkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKG1pbWVUeXBlLmdldCgpKTsKICAg
ICB9CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcAppbmRleCAwYTFhNGQ4Yzc1MTRkYTkxMzczOWJl
NWUzNDQ2ZDQ5N2Q5NWE0NzhiLi5lNThkOWE5NDk5NjkyN2I5YmI1YjliMzQ2MTQ5NzhmNWFiZjRm
M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJh
dG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJh
dG9yTWFjLmNwcApAQCAtNjAsMTEgKzYwLDcgQEAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2gKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2hhbGxlbmdlU3RyaW5nQ0YoQWRvcHRDRiwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5RGVzY3JpcHRpb24oQWRvcHRD
Riwga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCB3a1NpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmdDRi5nZXQoKSwg
a2V5RGVzY3JpcHRpb24uZ2V0KCkpKTsKLQotICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CisgICAg
cmV0dXJuIGFkb3B0Q0Yod2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6
ZSwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtleWdlbktleWNoYWlu
SXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpLmdldCgpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRo
ZW50aWNhdGlvbkNGLmNwcAppbmRleCA4N2EzZmFiOGE3NDM3YWUxMGFmNDM5YTRlNGUwMmNkMmUx
YTMwZGViLi43YjFkNGZhNDc4N2YxZDFlMGQ5ZTNhNGRlODFmM2ViNTQ2ZDBjZWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHAKQEAgLTExOSwxMyArMTE5LDcgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNG
KGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gQ0ZVUkxD
cmVkZW50aWFsQ3JlYXRlV2l0aElkZW50aXR5QW5kQ2VydGlmaWNhdGVBcnJheShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBjb3JlQ3JlZGVudGlhbC5pZGVudGl0eSgpLCBjb3JlQ3JlZGVudGlhbC5jZXJ0
aWZpY2F0ZXMoKSwgcGVyc2lzdGVuY2UpOwogI2VuZGlmCiAKLSAgICBDRlN0cmluZ1JlZiB1c2Vy
ID0gY29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZTdHJpbmdS
ZWYgcGFzc3dvcmQgPSBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCk7
Ci0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIHJlc3VsdCA9IENGVVJMQ3JlZGVudGlhbENyZWF0ZSgw
LCB1c2VyLCBwYXNzd29yZCwgMCwgcGVyc2lzdGVuY2UpOwotICAgIENGUmVsZWFzZSh1c2VyKTsK
LSAgICBDRlJlbGVhc2UocGFzc3dvcmQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKIH0KIAogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYg
Y3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCkBAIC0xOTIsMTMgKzE4
Niw3IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgY29yZVNwYWNlKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAK
LSAgICBDRlN0cmluZ1JlZiBob3N0ID0gY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygp
OwotICAgIENGU3RyaW5nUmVmIHJlYWxtID0gY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiByZXN1bHQgPSBDRlVSTFByb3RlY3Rp
b25TcGFjZUNyZWF0ZSgwLCBob3N0LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCByZWFs
bSwgc2NoZW1lKTsKLSAgICBDRlJlbGVhc2UoaG9zdCk7Ci0gICAgQ0ZSZWxlYXNlKHJlYWxtKTsK
LSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25TcGFj
ZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVT
cGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIHNjaGVtZSk7CiB9CiAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxS
ZWYgY2ZDcmVkZW50aWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1ZDZkNzM5MjZjNDRlZTQ4ODAxODJmZmZl
ODk4MWFjZjM4YTc2YjBhLi41MDE3OTcxZGUxNGE0NTRhODRmOWEzODhiYjQ3ZjY0ODQ4OTFkYTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tp
ZUphckNGTmV0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgc2V0Q29va2llcyhEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAv
LyBjb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRvZXNuJ3QgcGFyc2UgY29va2llcyB3
aXRob3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gdmFsdWUuY29udGFpbnMo
Jz0nKSA/IHZhbHVlIDogdmFsdWUgKyAiPSI7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNvb2tpZVN0cmluZ0NGKEFkb3B0Q0YsIGNvb2tpZVN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGID0gY29va2llU3RyaW5n
LmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVy
RmllbGRzQ0YoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
CiAgICAgICAgIChjb25zdCB2b2lkKiopJnNfc2V0Q29va2llS2V5Q0YsIChjb25zdCB2b2lkKiop
JmNvb2tpZVN0cmluZ0NGLCAxLAogICAgICAgICAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDNmOTAxYTU0MWRlMDBl
ZWJlYzI0MzIyZDA0Mzk2ZWU0YTIyMDVmYjYuLmNlMTQ1MTkwOWFlZDdlMmI0ZGVmOWNlMGQ5YmI0
MjkzNDE4ZGFjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TQ0ZOZXQuY3BwCkBAIC05MCwxMiArOTAsMTIgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RuYW1lQ0YoQWRv
cHRDRiwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJl
Zj4gaG9zdChBZG9wdENGLCBDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZUNGLmdldCgp
KSk7CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRl
V2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgIGlmICgh
aG9zdCkgewogICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKwogICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwg
MCwgMCB9OwogICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRo
ZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgogICAgIEJvb2xl
YW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAm
Y29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMzU0ZmQyNzU4NjQyMDdiNzllZmMyMWFmN2QxOTlk
YjBiMzAxMjBiNC4uNTg5NWVkOTkzNDY2NWVmNjMwYmUzNjUxNzE2MTUxNTJlNDBmODNmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9y
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvckNGLmNwcApAQCAtMTQ1LDEzICsxNDUsMTEgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9y
OjpjZkVycm9yKCkgY29uc3QKICAgICBpZiAoIW1fcGxhdGZvcm1FcnJvcikgewogICAgICAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwgQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICAgICAgaWYgKCFtX2xv
Y2FsaXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZyhBZG9wdENGLCBtX2xvY2FsaXpl
ZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXks
IGxvY2FsaXplZERlc2NyaXB0aW9uU3RyaW5nLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAoIW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRp
b25LZXksIG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAK
ICAgICAgICAgaWYgKCFtX2ZhaWxpbmdVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcoQWRvcHRDRiwgbV9mYWlsaW5nVVJM
LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBm
YWlsaW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmlu
Z0tleSwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgZmFpbGluZ1VSTFN0
cmluZy5nZXQoKSwgMCkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlcklu
Zm8uZ2V0KCksIGZhaWxpbmdVUkxLZXksIHVybC5nZXQoKSk7CkBAIC0xNjIsOCArMTYwLDcgQEAg
Q0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICAgICAgICAgIHdr
U2V0U1NMUGVlckNlcnRpZmljYXRlRGF0YSh1c2VySW5mby5nZXQoKSwgbV9jZXJ0aWZpY2F0ZS5n
ZXQoKSk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
ZG9tYWluU3RyaW5nKEFkb3B0Q0YsIG1fZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICBtX3BsYXRmb3JtRXJyb3IuYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIGRvbWFpblN0cmluZy5n
ZXQoKSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CisgICAgICAgIG1fcGxhdGZvcm1F
cnJvciA9IGFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKICAgICB9CiAKICAgICByZXR1
cm4gbV9wbGF0Zm9ybUVycm9yLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggMDFlOGI4
YWU1YzBkMWM2YTZhOGYwMzMwODVlOTBmMDEwYmMxZjdjNi4uODA3MGMyNTgyYjdjYWEwZGU2ZmUz
NWYzMDc0M2Y3OGIyMGI3N2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0xMzEsNyArMTMx
LDcgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiA+JiBjbGll
bnRDZXJ0cygpCiAKIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNl
UmVmIHJlc3BvbnNlKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVT
dHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVh
dGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAKICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5
cGUocmVzcG9uc2UsIGRlZmF1bHRNSU1FVHlwZVN0cmluZyk7CiB9CkBAIC0xNjEsOCArMTYxLDgg
QEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9u
UmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpIHsK
ICAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRI
VFRQUmVzcG9uc2UoY2ZSZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgaWYgKGh0dHBNZXNzYWdl
ICYmIENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09IDMw
NykgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZChB
ZG9wdENGLCBoYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZChBZG9wdENGLCBDRlVSTFJl
cXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7CisgICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gaGFuZGxlLT5sYXN0SFRUUE1ldGhv
ZCgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IG5ld01ldGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNm
UmVxdWVzdCkpOwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25zKGxh
c3RIVFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENGU3Ry
aW5nR2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNlSW5zZW5z
aXRpdmUpKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5
KDAsIGNmUmVxdWVzdCkpOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKQEAgLTE3NSw5
ICsxNzUsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTENv
bm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgICAgICAgICAgICAgICAgIFdl
YkNvcmU6OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5KTsKIAogICAgICAg
ICAgICAgICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS5odHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG9yaWdpbmFsQ29udGVudFR5cGVDRihBZG9wdENGLCBvcmlnaW5hbENvbnRlbnRUeXBl
LmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGlmICghb3JpZ2luYWxDb250ZW50
VHlwZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBI
ZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNUUigiQ29udGVudC1UeXBl
IiksIG9yaWdpbmFsQ29udGVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENG
VVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBD
RlNUUigiQ29udGVudC1UeXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3QuZ2V0
KCk7CiAgICAgICAgICAgICB9CkBAIC02MDcsMTAgKzYwNiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsCiAjZW5kaWYKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bh
c3MuaXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1c2VyKEFkb3B0
Q0YsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBwYXNzKEFkb3B0Q0YsIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAg
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbChBZG9wdENGLAotICAg
ICAgICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVzZXIu
Z2V0KCksIHBhc3MuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsK
KyAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
MCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogICAgICAgICAKICAgICAgICAg
S1VSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtMTAwNSw3ICsxMDAxLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb25JZGVudGlmaWVyRGVmYXVsdEJhc2UoKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uSWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRp
ZmllcihBZG9wdENGLCBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZT
dHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJp
bmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIHBy
aXZhdGVTdG9yYWdlU2Vzc2lvbigpID0gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oY2ZJZGVudGlmaWVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggOGNm
Zjg3Y2EwZDU4ZWEyZTUyM2YzNzMwZDZiNGE3NzMwYjA2YmU0Yi4uMGUzZGVjZTAxODI3ZWM1YWQx
YjZiNTgxZTExNjI4MjliNDEzMGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTExOSwx
MyArMTE5LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEhlYWRlckZpZWxkcyhDRk11dGFibGVV
UkxSZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWEKICAgICB9CiAKICAgICBIVFRQSGVh
ZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXF1ZXN0SGVhZGVycy5lbmQoKTsKLSAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVxdWVzdEhlYWRlcnMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIGtleSA9IGl0LT5r
ZXkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWUgPSBpdC0+dmFs
dWUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZp
ZWxkVmFsdWUocmVxdWVzdCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIENGUmVsZWFzZShrZXkpOwot
ICAgICAgICBDRlJlbGVhc2UodmFsdWUpOwotICAgIH0KKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVxdWVzdEhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0
LCBpdC0+a2V5LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGl0LT52YWx1ZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UGxhdGZvcm1SZXF1ZXN0KCkKQEAgLTE0Niw4ICsxNDEsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIHdrU2V0UmVxdWVzdFN0b3JhZ2VTZXNz
aW9uKFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RvcmFnZVNlc3Npb24oKSwgY2ZSZXF1ZXN0KTsK
ICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXF1ZXN0TWV0aG9kKEFkb3B0
Q0YsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIHJlcXVlc3RNZXRob2QuZ2V0KCkpOworICAgIENG
VVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhvZCgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5nRW5hYmxlZCgp
KQogICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoY2ZSZXF1ZXN0LCB0b0hUVFBQ
aXBlbGluaW5nUHJpb3JpdHkobV9wcmlvcml0eSkpOwpAQCAtMTY0LDcgKzE1OCw3IEBAIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgdW5zaWduZWQg
ZmFsbGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkuc2l6ZSgpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gZW5jb2Rp
bmdGYWxsYmFja3MoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZmFsbGJhY2tDb3VudCwgMCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0g
ZmFsbGJhY2tDb3VudDsgKytpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZW5j
b2RpbmdOYW1lKEFkb3B0Q0YsIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0Zh
bGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gZW5jb2RpbmdOYW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICBDRlN0cmluZ0Vu
Y29kaW5nIGVuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGlu
ZyhlbmNvZGluZ05hbWUuZ2V0KCkpOwogICAgICAgICBpZiAoZW5jb2RpbmcgIT0ga0NGU3RyaW5n
RW5jb2RpbmdJbnZhbGlkSWQpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoZW5jb2Rp
bmdGYWxsYmFja3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGVuY29kaW5n
KSk7CkBAIC0yMTMsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCkKICAgICAgICAgVmVjdG9yPGNvbnN0IHZvaWQqLCAxMjg+IHZhbHVlcyho
ZWFkZXJDb3VudCk7CiAgICAgICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVy
cywga2V5cy5kYXRhKCksIHZhbHVlcy5kYXRhKCkpOwogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGhlYWRlckNvdW50OyArK2kpCi0gICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0
KChDRlN0cmluZ1JlZilrZXlzW2ldLCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKKyAgICAgICAg
ICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoU3RyaW5nKChDRlN0cmluZ1JlZilrZXlzW2ldKSwg
U3RyaW5nKChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pKTsKICAgICAgICAgQ0ZSZWxlYXNlKGhlYWRl
cnMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCmluZGV4IGE0NWJlZWRjNDMzMDA3
NzJiMzljYWVlMmIzOTQ2Y2FjM2RmMGJmMzEuLjM4MjE2ZDRkMjBiZjk4MTEzZjNhZWQyMzZjYTUx
NmZlZGMwNDkwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKQEAgLTUxLDkgKzUxLDcgQEAg
Q0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKICAgICAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgbV91cmwuY3JlYXRlQ0ZVUkwoKSk7Ci0gICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgbV9taW1lVHlwZS5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0ZXh0RW5jb2Rp
bmdOYW1lKEFkb3B0Q0YsIG1fdGV4dEVuY29kaW5nTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICAgICAgbV9jZlJlc3BvbnNlLmFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwuZ2V0
KCksIG1pbWVUeXBlLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgdGV4dEVuY29kaW5n
TmFtZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOworICAgICAgICBtX2NmUmVz
cG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwgbV9taW1lVHlw
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgbV90ZXh0
RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFs
bG93ZWQpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTA1
LDcgKzEwMyw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0
TGV2ZWwgaW5pdExldmVsKQogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db21t
b25IZWFkZXJGaWVsZHM7IGkrKykgewogICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVl
OwogICAgICAgICAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2VudChoZWFk
ZXJzLmdldCgpLCBjb21tb25IZWFkZXJGaWVsZHNbaV0sIChjb25zdCB2b2lkICoqKSZ2YWx1ZSkp
Ci0gICAgICAgICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoY29tbW9uSGVhZGVy
RmllbGRzW2ldLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxk
cy5zZXQoU3RyaW5nKGNvbW1vbkhlYWRlckZpZWxkc1tpXSksIFN0cmluZyh2YWx1ZSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1faHR0cFN0YXR1c0NvZGUg
PSAwOwpAQCAtMTIzLDcgKzEyMSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1M
YXp5SW5pdChJbml0TGV2ZWwgaW5pdExldmVsKQogICAgICAgICAgICAgVmVjdG9yPGNvbnN0IHZv
aWQqLCAxMjg+IHZhbHVlcyhoZWFkZXJDb3VudCk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlH
ZXRLZXlzQW5kVmFsdWVzKGhlYWRlcnMuZ2V0KCksIGtleXMuZGF0YSgpLCB2YWx1ZXMuZGF0YSgp
KTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKLSAg
ICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KChDRlN0cmluZ1JlZilrZXlzW2ld
LCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJG
aWVsZHMuc2V0KFN0cmluZygoQ0ZTdHJpbmdSZWYpa2V5c1tpXSksIFN0cmluZygoQ0ZTdHJpbmdS
ZWYpdmFsdWVzW2ldKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
Q0ZOZXQuY3BwCmluZGV4IGQ4NmM3NmJjNmY0NWMxODE2NDhlMGE3NzZjZDM5YmFlODkwODQwZDYu
LjRhN2NkOTAyYWU5ZjAyODdkODk4ZDkyYmQ5ODVkZDc2NmQ0MmExNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGU6OmNyZWF0ZVN0cmVhbXMoKQogICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBlID09IFVua25vd24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdChBZG9w
dENGLCBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBob3N0ID0gbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICAvLyBD
cmVhdGluZyBzdHJlYW1zIHRvIGZpbmFsIGRlc3RpbmF0aW9uLCBub3QgdG8gcHJveHkuCiAgICAg
Q0ZSZWFkU3RyZWFtUmVmIHJlYWRTdHJlYW0gPSAwOwpAQCAtMzU5LDEyICszNTksMTAgQEAgdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdl
UmVmIHByb3h5UmVzcG9uc2UpCiAgICAgU3RyaW5nIHBhc3N3b3JkOwogICAgIGlmICghbV9zZW50
U3RvcmVkQ3JlZGVudGlhbHMgJiYgZ2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMocHJv
dGVjdGlvblNwYWNlLCBsb2dpbiwgcGFzc3dvcmQpKSB7CiAgICAgICAgIC8vIFRyeSB0byBhcHBs
eSBzdG9yZWQgY3JlZGVudGlhbHMsIGlmIHdlIGhhdmVuJ3QgdHJpZWQgdGhvc2UgYWxyZWFkeS4K
LSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2dpbkNGKEFkb3B0Q0YsIGxvZ2luLmNy
ZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhc3N3b3Jk
Q0YoQWRvcHRDRiwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIC8vIENyZWF0
aW5nIGEgdGVtcG9yYXJ5IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkgY3JlZGVudGlh
bHMgdG8gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0aCBOVExNIGF1dGhl
bnRpY2F0aW9uLgorICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgcmVxdWVzdCB0byBtYWtl
IENGTmV0d29yayBhcHBseSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5hdGVseSwgdGhpcyBj
YW5ub3Qgd29yayB3aXRoIE5UTE0gYXV0aGVudGljYXRpb24uCiAgICAgICAgIFJldGFpblB0cjxD
RkhUVFBNZXNzYWdlUmVmPiBkdW1teVJlcXVlc3QoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNyZWF0
ZVJlcXVlc3QoMCwgQ0ZTVFIoIkdFVCIpLCBtX2h0dHBzVVJMLmdldCgpLCBrQ0ZIVFRQVmVyc2lv
bjFfMSkpOwogCi0gICAgICAgIEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZIVFRQTWVz
c2FnZUFwcGx5Q3JlZGVudGlhbHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNhdGlvbi5n
ZXQoKSwgbG9naW5DRi5nZXQoKSwgcGFzc3dvcmRDRi5nZXQoKSwgMCk7CisgICAgICAgIEJvb2xl
YW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZIVFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlhbHMoZHVt
bXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNhdGlvbi5nZXQoKSwgbG9naW4uY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYXBwbGllZENyZWRlbnRpYWxzLCBhcHBsaWVkQ3JlZGVudGlhbHMpOwog
CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJveHlBdXRob3JpemF0aW9uU3RyaW5n
KEFkb3B0Q0YsIENGSFRUUE1lc3NhZ2VDb3B5SGVhZGVyRmllbGRWYWx1ZShkdW1teVJlcXVlc3Qu
Z2V0KCksIENGU1RSKCJQcm94eS1BdXRob3JpemF0aW9uIikpKTsKQEAgLTM4OSw3ICszODcsNyBA
QCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1l
c3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIENGU3RyaW5nUmVmIFNvY2tldFN0cmVhbUhhbmRsZTo6
Y29weUNGU3RyZWFtRGVzY3JpcHRpb24odm9pZCogaW5mbykKIHsKICAgICBTb2NrZXRTdHJlYW1I
YW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRsZSo+KGluZm8pOwot
ICAgIHJldHVybiBTdHJpbmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxlLT5tX3Vy
bC5zdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJXZWJLaXQg
c29ja2V0IHN0cmVhbSwgIiArIGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5n
KCkubGVha1JlZigpOwogfQogCiBzdHJ1Y3QgTWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJbmZvIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
UmVxdWVzdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdE1hYy5tbQppbmRleCA5MzIxNmNiNTVlODU3NzMxMzZmM2U4YzNhMDdjZTZmYjU1
NmUwNmQyLi5lNjkzNDg0ODFhYjBhMDIxMzc5NGRhMjRlZmJjYzRmNTZkYzAwOGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VS
ZXF1ZXN0TWFjLm1tCkBAIC0xNjMsOSArMTYzLDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmVuY29kaW5n
RmFsbGJhY2tzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICAgICAgdW5zaWduZWQgY291
bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNp
emUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBjb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICBDRlN0cmluZ1JlZiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERp
c3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIG5zRW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRFbmNvZGlu
Z1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29k
aW5nKGVuY29kaW5nTmFtZSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKGVuY29kaW5nTmFtZSk7
CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZSA9IG1fcmVz
cG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZT
dHJpbmcoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENGU3RyaW5n
Q29udmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElBTkFDaGFy
U2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKSk7CisKICAgICAgICAgICAgIGlm
IChuc0VuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQogICAgICAgICAgICAg
ICAgIFtlbmNvZGluZ0ZhbGxiYWNrcyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNp
Z25lZExvbmc6bnNFbmNvZGluZ11dOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KaW5kZXgg
NmFhNzZmNmRkNzg0ZGEwOWQ3YmZmN2UxZTY4NTVlNzVjYWRhZTk5Yy4uZjk3MTBiMmRkMjUxODQ2
MjAxNTEzMjQyZjQwZjNhNDEyNjRmMjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAtNDc4LDcg
KzQ3OCw3IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVm
IGNmUmVzcG9uc2UpCiAgICAgfQogICAgIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpkZWZhdWx0
TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYg
ZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRNSU1FVHlwZVN0
cmluZzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5
cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDRlM2ZjZWQ0NDQ2NDlhOWM1Y2VmMzY0ZWMwNjJmZThkYjE4
ODRmMDkuLjBmNjY4ZDEwZjhlNDE3ZjU2ZWE5M2EwODU4MTI0Y2RmMmJhNDE3YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAt
NDYsOCArNDYsNyBAQCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJV
Q2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdAogdGVtcGxhdGU8PgogUmV0YWlu
UHRyPENGTG9jYWxlUmVmPiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxv
Y2FsZVJlZj4gPjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJ
ZGVudGlmaWVyKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZMb2NhbGVJZGVudGlm
aWVyKEFkb3B0Q0YsIGxvY2FsZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0
YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2NhbGVDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgY2ZMb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7CisgICAgUmV0YWluUHRy
PENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGxvY2FsZUlkZW50aWZpZXIuaW1wbCgpLT5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiAKICAgICByZXR1cm4gQ0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxhYmxlRm9yTG9jYWxl
KGxvY2FsZS5nZXQoKSkgPyBsb2NhbGUgOiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2NmL1N0cmluZ0NGLmNwcAppbmRleCBkN2NkYTc5NjI5ODYyNTczYTM1YzZhOTI2ODU3
NTIzMDVhYjZjMjdlLi4yNjk3ZTc2ZjBiZjU5MjNiMTUyZmVkZDcxMDM3ZTk3MTE0OTI2ZDQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcApAQCAtMjMs
OCArMjMsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKENG
KQotCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC01MSw3ICs1MSw3IEBA
IFN0cmluZzo6U3RyaW5nKENGU3RyaW5nUmVmIHN0cikKICAgICB9CiB9CiAKLUNGU3RyaW5nUmVm
IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBT
dHJpbmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkKICAgICAg
ICAgcmV0dXJuIENGU1RSKCIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y2YvU3RyaW5nSW1wbENGLmNwcAppbmRleCA3YTJkODJlNDAyZDI0YjM3YmJjMDcxZjQ3Zjk4ZTBh
ODY1MTg0OTIxLi4xZGE1NjFiNjA2MmJjYWI0OWUwOWJmZTc5NzgyYjI3M2YwZGEwOTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEzMiw3ICsxMzMsNyBAQCBuYW1lc3BhY2UgU3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yIHsKIAogfQogCi1DRlN0cmluZ1JlZiBTdHJpbmdJbXBsOjpj
cmVhdGVDRlN0cmluZygpCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0
ZUNGU3RyaW5nKCkKIHsKICAgICBpZiAoIW1fbGVuZ3RoIHx8ICFpc01haW5UaHJlYWQoKSkgewog
ICAgICAgICBpZiAoaXM4Qml0KCkpCkBAIC0xNTMsNyArMTU0LDcgQEAgQ0ZTdHJpbmdSZWYgU3Ry
aW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogICAgIC8vIENvcmVGb3VuZGF0aW9uIG1pZ2h0IG5v
dCBoYXZlIHRvIGFsbG9jYXRlIGFueXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50U3RyaW5nIGluIGNh
c2Ugd2UgZGlkIG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCiAgICAgU3RyaW5nV3JhcHBlckNGQWxs
b2NhdG9yOjpjdXJyZW50U3RyaW5nID0gMDsKIAotICAgIHJldHVybiBzdHJpbmc7CisgICAgcmV0
dXJuIGFkb3B0Q0Yoc3RyaW5nKTsKIH0KIAogLy8gT24gU3RyaW5nSW1wbCBjcmVhdGlvbiB3ZSBj
b3VsZCBjaGVjayBpZiB0aGUgYWxsb2NhdG9yIGlzIHRoZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJ
bXBsTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1h
Yy5tbQppbmRleCA2ZjVlOTUzYmExOTI1ZTU0NWJiYjVhYzUzZTIxNDc2YmI4ZjAzYTU3Li4yZjA4
OGE3ZWIzNjNjNWFjZDAxNDJmMzg3MDk1Yjk2MmMxODE2YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KQEAgLTIyLDEyICsyMiwx
MyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2luY2x1ZGUgIkZvdW5k
YXRpb25FeHRyYXMuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewogCiBTdHJpbmdJbXBsOjpvcGVyYXRvciBOU1N0cmluZyAqKCkKIHsKLSAgICByZXR1cm4g
SGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiBIYXJkQXV0b3Jl
bGVhc2UoY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAppbmRleCAzMTI0MTJm
YWFiOGFjMjM2Mjg2NTAzZGFjYTVhOTI4YmViZDQzOTY2Li5hNzA0NzQ5NTIwZmRkMzJkNGUxZTAw
ZmNmYzBkZWFmMzg3Y2JhOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRDb2RlY01hYy5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBDU3RyaW5nIFRleHRD
b2RlY01hYzo6ZW5jb2RlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBV
bmVuY29kYWJsZQogICAgIC8vIEVuY29kaW5nIHdpbGwgY2hhbmdlIHRoZSB5ZW4gc2lnbiBiYWNr
IGludG8gYSBiYWNrc2xhc2guCiAgICAgU3RyaW5nIGNvcHkoY2hhcmFjdGVycywgbGVuZ3RoKTsK
ICAgICBjb3B5LnJlcGxhY2UoJ1xcJywgbV9iYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmcyhBZG9wdENGLCBjb3B5LmNyZWF0ZUNGU3RyaW5n
KCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZzID0gY29weS5jcmVhdGVDRlN0cmlu
ZygpOwogCiAgICAgQ0ZJbmRleCBzdGFydFBvcyA9IDA7CiAgICAgQ0ZJbmRleCBjaGFyYWN0ZXJz
TGVmdCA9IENGU3RyaW5nR2V0TGVuZ3RoKGNmcy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmluZGV4IGE1Y2E5Yjc0NDY5
MmYyODdmMjNmMzQ4MTUwYjA4ZjY1ZTFmZjk1ZmUuLmJmYzA4N2JlOWYxOTJjYmUxNDNkN2E2ZDE5
NjQyNGEzZGUyNTg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
ZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
ZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC01Miw3ICs1Miw3IEBAIGJvb2wgU2VhcmNoUG9wdXBN
ZW51V2luOjplbmFibGVkKCkKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZl
S2V5KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBTdHJpbmcga2V5ID0gImNvbS5hcHBsZS5X
ZWJLaXQuc2VhcmNoRmllbGQ6IiArIG5hbWU7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4oQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiBrZXkuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIH0KICNlbmRpZgogCkBAIC02NywxMCArNjcsOCBAQCB2b2lkIFNlYXJj
aFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdAogICAgIHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpOwogICAg
IGlmIChzaXplKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
MCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBpdGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAg
ICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
ICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJy
ZW50QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCA4Mzc0N2YyMjM1NTZhNmFjMmFh
MTY4OWRmZGZhYzFmMWVmMTdjNDc3Li4zMzdkYWNhYjJmNzEyYzk4NmYwZjU3MjI5NmE3ODA1NjJj
MzE0YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNjMsMTUgKzYzLDE0IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yU3RhcnRzQXR0YWNo
ZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIjsKIAotc3RhdGljIGlubGluZSBD
RlN0cmluZ1JlZiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKK3N0
YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNl
cyhjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleUNG
U3RyaW5nKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gQ0ZTdHJp
bmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQgV2ViIEluc3BlY3RvciBTZXR0
aW5nIC0gJUAiKSwga2V5Q0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdlYiBJbnNwZWN0b3IgU2V0
dGluZyAtICVAIiksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBzZXR0aW5nKQog
ewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3Jl
YXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBw
cmVmZXJlbmNlc0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSk7CiAgICAgUmV0YWlu
UHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZShBZG9wdENGLCBDRlByZWZlcmVuY2VzQ29weUFw
cFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNh
dGlvbikpOwogCiAgICAgaWYgKCF2YWx1ZSkKQEAgLTg4LDEyICs4Nyw3IEBAIHN0YXRpYyB2b2lk
IHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBzZXR0aW5nKQogCiBz
dGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
c2V0dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IG9iamVjdFRvU3Rv
cmU7Ci0gICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKHNldHRpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgQVNTRVJUKG9iamVjdFRvU3RvcmUpOwotCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsK
LSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIG9iamVj
dFRvU3RvcmUuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKKyAgICBD
RlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KS5nZXQo
KSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRB
cHBsaWNhdGlvbik7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRv
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDBl
NGIxMDY1Njk4MjVkZDc0ZDc0ZGIyNzc2ZWNjNmQ5MjFlYThkYWEuLjVmMjgzNTA0YzVkNjY4MjE4
NjQ4OTBjZTQ0NWM4MmNmMDBmMTI2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTc5MiwyNCAr
NzkyLDIwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3Rh
cnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgICAgIEtVUkwgcGx1Z2luUGFn
ZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkpOwogICAgICAgICBpZiAo
cGx1Z2luUGFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZT
dHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5KTsKLSAgICAgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIHBsdWdpblBhZ2VVUkwuc3RyaW5n
KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwga2V5LCBzdHIuZ2V0KCkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghcGx1Z2lu
Vmlldy0+bWltZVR5cGUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYg
a2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVy
cm9yTUlNRVR5cGVLZXkpOwotCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFk
b3B0Q0YsIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHN0ci5nZXQoKSk7Cisg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblZp
ZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYg
KHBsdWdpblZpZXctPnBsdWdpbigpKSB7CiAgICAgICAgIFN0cmluZyBwbHVnaW5OYW1lID0gcGx1
Z2luVmlldy0+cGx1Z2luKCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzTnVs
bCgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdI
ZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7
Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cihBZG9wdENGLCBwbHVnaW5O
YW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
dXNlckluZm8uZ2V0KCksIGtleSwgc3RyLmdldCgpKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwCmluZGV4IDZlNjg3ZjE5MzRhZjgwNGJkZjk0OTlkZWZmNjFlNzdmNTM1Y2Ni
MjAuLjE1ODcyZTM0ZjlhNTQ0NTBhZjNiNDQ5ZjgyY2RmMGIyYWZiZWI0NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtNDAxLDggKzQwMSw3IEBAIHZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4sIGNvbnN0CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+
IHVzZXJJbmZvKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOwogCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRhdGFiYXNlTmFtZUtleSA9IE1hcnNoYWxs
aW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJEYXRhYmFzZU5hbWVLZXkpOwot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIGRhdGFiYXNlTmFtZS5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwg
ZGF0YWJhc2VOYW1lS2V5LCBzdHIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVz
ZXJJbmZvLmdldCgpLCBkYXRhYmFzZU5hbWVLZXksIGRhdGFiYXNlTmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlcklu
Zm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsKICAgICB1
c2VySW5mb0JhZy0+c2V0RGljdGlvbmFyeSh1c2VySW5mby5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhp
c3RvcnkuY3BwCmluZGV4IDFmN2E1NzJjMzQ0NWQ3Y2JjNTc2M2FmOWQ5MWI5ZWRkNzg5NTEwOWYu
LmE3MzEwYjgwYjBkNDM0NDA0Zjk4NThkYzhkYjU1YzkzZjFhNTg5NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykhpc3RvcnkuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjphZGRJ
dGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnksIGJvb2wgZGlzY2FyZER1cGxpY2F0ZSwgYm9vbCoK
IAogdm9pZCBXZWJIaXN0b3J5Ojp2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJv
b2wgaW5jcmVhc2VWaXNpdENvdW50KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJs
U3RyaW5nKEFkb3B0Q0YsIHVybC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyA9IHVybC5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpOwogCi0gICAgSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSA9IChJV2ViSGlzdG9yeUl0ZW0qKSBD
RkRpY3Rpb25hcnlHZXRWYWx1ZShtX2VudHJpZXNCeVVSTC5nZXQoKSwgdXJsU3RyaW5nLmdldCgp
KTsKKyAgICBJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5ID0gKElXZWJIaXN0b3J5SXRlbSopQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUobV9lbnRyaWVzQnlVUkwuZ2V0KCksIHVybFN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKGVudHJ5KSB7CiAgICAgICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW1Qcml2YXRlPiBl
bnRyeVByaXZhdGUoUXVlcnksIGVudHJ5KTsKICAgICAgICAgaWYgKCFlbnRyeVByaXZhdGUpCkBA
IC03ODYsMTEgKzc4NiwxMCBAQCBIUkVTVUxUIFdlYkhpc3Rvcnk6OnJlbW92ZUl0ZW1Gb3JVUkxT
dHJpbmcoQ0ZTdHJpbmdSZWYgdXJsU3RyaW5nKQogCiBDT01QdHI8SVdlYkhpc3RvcnlJdGVtPiBX
ZWJIaXN0b3J5OjppdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25z
dAogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0ZTdHJpbmcoQWRvcHRDRiwgdXJs
U3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghdXJsQ0ZTdHJpbmcpCisgICAgaWYg
KCF1cmxTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0
ZW0+IGl0ZW07Ci0gICAgaWYgKEZBSUxFRChpdGVtRm9yVVJMU3RyaW5nKHVybENGU3RyaW5nLmdl
dCgpLCAmaXRlbSkpKQorICAgIGlmIChGQUlMRUQoaXRlbUZvclVSTFN0cmluZyh1cmxTdHJpbmcu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgJml0ZW0pKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
cmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5
SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggYTI2
NDMwODlkY2Q3OWQ4MjQyNTIwMTk2MjEzMjdmY2E5ZjgyZDk4Mi4uOGJmZTliZDdjMDc3Y2NmYmU4
YjA3YWI1OTFhYzM5NzA2NTI0MzIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
SGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNw
cApAQCAtMjE0LDcgKzIxNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9y
eUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiogZGljdGlvCiAKICAgICBpZiAo
IW1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmlzRW1wdHkoKSkgewogICAgICAgICBrZXlzW2tl
eUNvdW50XSA9IHVybEtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5
SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgdmFsdWVzW2tleUNv
dW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFr
UmVmKCk7CiAgICAgfQogCiAgICAga2V5c1trZXlDb3VudF0gPSBsYXN0VmlzaXRlZERhdGVLZXk7
CkBAIC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5
SXRlbTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0aW8KIAogICAgIGlmICgh
bV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAga2V5c1trZXlDb3Vu
dF0gPSB0aXRsZUtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRl
bS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICB2YWx1ZXNba2V5Q291bnQrK10g
PSBtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAg
IH0KIAogICAgIGtleXNba2V5Q291bnRdID0gdmlzaXRDb3VudEtleTsKQEAgLTI0NSw3ICsyNDUs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9uYXJ5
UmVwcmVzZW50YXRpb24odm9pZCoqIGRpY3RpbwogICAgICAgICBBU1NFUlQoc2l6ZSk7CiAgICAg
ICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IG5ldyBDRlN0cmluZ1JlZltzaXplXTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBpdGVtc1tpXSA9
IHJlZGlyZWN0VVJMcy0+YXQoaSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIGl0ZW1z
W2ldID0gcmVkaXJlY3RVUkxzLT5hdChpKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAg
ICAgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiop
aXRlbXMsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgIENGUmVsZWFzZShpdGVtc1tpXSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRleCAyNWQ3ZWMwOWI5ODYxZTQ0
MzQ5MWUzNDZkNTBkNGUyMmM3NzFiODQ1Li4wNWE5NDkwOGE4ODg0MTJiMTVkMzk0NjNkMTM5Mjlh
OTE2NzQ5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFzZS5jcHAKQEAgLTM2Niw3
ICszNjYsNyBAQCBCU1RSIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkQWRkSWNvbk5v
dGlmaWNhdGlvbigpCiAKIENGU3RyaW5nUmVmIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNl
Tm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBp
Y29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJbmZvVVJM
S2V5KS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBpY29uVXNlcklu
Zm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KS5jcmVh
dGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gaWNvblVzZXJJbmZvVVJMS2V5Owog
fQogCkBAIC0zODcsOCArMzg3LDcgQEAgc3RhdGljIHZvaWQgcG9zdERpZEFkZEljb25Ob3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBXZWJJY29uRGF0YWJhc2UqIGkKICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENGLCAKICAgICBD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXJsKEFkb3B0Q0YsIHBhZ2VVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgV2ViSWNvbkRhdGFiYXNl
OjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgpLCB1cmwuZ2V0KCkpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIFdlYkljb25EYXRhYmFz
ZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKSwgcGFnZVVSTC5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zz4gdXNlckluZm8gPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsK
ICAgICB1c2VySW5mby0+c2V0RGljdGlvbmFyeShkaWN0aW9uYXJ5LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGZkNjFhMDFmYmFmMGVj
YTcxNDQ2M2JiMWQ1NzBjZmZhNDFiNzY1OGQuLmRmYjcxNGI0NjUwNjFhYjIwMzUyYmEzZDc1Nzc0
ZmJlZmFmMjdkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxl
U3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdz
LmNwcApAQCAtMTMyLDEyICsxMzIsMTAgQEAgc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktp
dEJ1bmRsZSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3RyaW5nIGJ1bmRsZVBhdGhTdHJp
bmcocGF0aFN0cik7Ci0gICAgQ0ZTdHJpbmdSZWYgYnVuZGxlUGF0aENGU3RyaW5nID0gYnVuZGxl
UGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpOwotICAgIGlmICghYnVuZGxlUGF0aENGU3RyaW5n
KQorICAgIGlmICghYnVuZGxlUGF0aFN0cmluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBD
RlVSTFJlZiBidW5kbGVVUkxSZWYgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBi
dW5kbGVQYXRoQ0ZTdHJpbmcsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIHRydWUpOwotICAgIENG
UmVsZWFzZShidW5kbGVQYXRoQ0ZTdHJpbmcpOworICAgIENGVVJMUmVmIGJ1bmRsZVVSTFJlZiA9
IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSk7CiAgICAgaWYg
KCFidW5kbGVVUkxSZWYpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjgsOCArMTY2LDcgQEAg
c3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxlKFdlYkxvY2Fs
aXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJu
IG5vdEZvdW5kOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJpbmcoQWRvcHRD
Riwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGU3RyaW5nUmVmIHJlc3VsdCA9IENGQ29w
eUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5nLmdldCgpLCAwLCBidW5k
bGUsIG5vdEZvdW5kLCAwKTsKKyAgICBDRlN0cmluZ1JlZiByZXN1bHQgPSBDRkNvcHlMb2NhbGl6
ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBi
dW5kbGUsIG5vdEZvdW5kLCAwKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9
IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRs
ZSIsIGtleSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcAppbmRleCA1NjM0YTE1YjNlZDNlMDFjMjYwNGE1YmUyNjAxMzcxMWZkY2NkYzMzLi44OTY3
YjBiMzBhZTRkNDIzMzU4YjlmY2U2ZjU4MzE5MWM5NmMwYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6
aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENG
U1RSKCIxMyIpKTsKIAogICAgIFN0cmluZyBkZWZhdWx0RGVmYXVsdEVuY29kaW5nKFdFQl9VSV9T
VFJJTkcoIklTTy04ODU5LTEiLCAiVGhlIGRlZmF1bHQsIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29k
aW5nIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRE
ZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29k
aW5nLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZh
dWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9uUHJlZmVyZW5j
ZUtleSksIENGU1RSKCIiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDZiMWJhZGU0YWFmMmU5
NWEyMDRmOTJhMjZkNGFiMDI0MGEyNzI4MzguLjNhMWI3NGUyMTM1MWZhZGE2ZDQxYWNkZjg5ZjI1
NGE4M2FhY2I2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC00NzEsNyArNDcxLDcgQEAgdm9p
ZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxDYWNoZShBZG9wdENGLCBDRlVSTENhY2hlQ29w
eVNoYXJlZFVSTENhY2hlKCkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2Z1cmxDYWNo
ZURpcmVjdG9yeShBZG9wdENGLCB3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoMCkpOwog
ICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9y
eS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAog
ICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNh
c2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5
IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC00NzEyLDggKzQ3MTIsNyBAQCBIUkVTVUxUIFdl
YlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCiAgICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICAgICAgcmV0dXJuIGhyOwog
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIHRvU3Ry
aW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
dXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
cmxTdHJpbmcuZ2V0KCksIDApKTsKKyAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRv
cHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRvU3RyaW5n
KHN0cikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogCiAgICAgICAgIC8vIENoZWNrIGlm
IHRoZSBwYXNzZWQgaW4gc3RyaW5nIGlzIGEgcGF0aCBhbmQgY29udmVydCBpdCB0byBhIFVSTC4K
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBuaWdodGx5IGJ1aWxk
cyB1bnRpbCB3ZSBjYW4gZ2V0IFNhZmFyaSB0byBwYXNzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L21hYy9Nb2R1bGVNYWMubW0KaW5kZXggNGEzNWI2YTJkOGEzMmM1ZGQ4MzQ5NzJjZDJmZGYyYWRj
MzkxZTYxYS4uMzY4NzUzMTUxNzIxOGRhMjllOWNkZGRhNDIzMmEzYjEyODI1MzMxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCkBAIC0zMCwxMiArMzAsMTEgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgbV9wYXRoLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0YsIENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVBhdGguZ2V0
KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9T
SVhQYXRoU3R5bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVVUkwpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENG
QnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAg
IFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZTdkNTgzMWY2MDhjMzgzMGUz
YzliZTE0YjM5NDY1ZWIyYzcxYzNiLi42NzFmMjBkNmRjYWJlMWZjMWJhMzk1NTdkNWU2MjhlZTdl
ZDdlZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVn
aW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KQEAgLTI3OSw4ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmluZyYgc2FuZGJv
eFBybwogICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGx1Z2luUGF0aCA9
IGFkb3B0Q0YocGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgo
MCwgY2ZQbHVnaW5QYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZV
UkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVSTCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0yOTIsOCArMjkxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRi
b3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KICAg
ICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gY2ZTYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGggPSBhZG9wdENGKHNh
bmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENyZWF0
ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5nZXQo
KSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lz
dGVtUGF0aCgwLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKIAogICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAs
IENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlmaWVyKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoUmVs
YXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1lLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5LmdldCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5N
b2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggODFiMzhlMGVjOGZlM2M0MTg4OTc5ZWVm
ZDA2MjI3YjM3MGZkNGEzZS4uM2RjMzc3YzQ0NTBkODhmZTI1ZjcwMmIwZmE1NDNhMzhlMjhmNmMx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFj
L05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQpAQCAtMzUyLDEx
ICszNTIsMTAgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21DYXJib25SZXNvdXJjZXMo
Q0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmYKIAogYm9vbCBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1v
ZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBh
dGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhT
dHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1
Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFs
c2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlhbGl6ZSB0aGUgYnVuZGxlLgotICAgIFJl
dGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRs
ZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIApAQCAtMzk1LDExICszOTQsOSBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxl
OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSQog
CiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJl
bmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0aC5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5k
bGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQ
YXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCi0gICAgLy8gVHJ5IHRvIGluaXRpYWxpemUgdGhlIGJ1
bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShBZG9wdENGLCBDRkJ1bmRs
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYgKCFidW5kbGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
Zi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggY2RmZjM0NDY5YTIzOTNkMzVhZGJhYmM0
Y2IwYTM4YmEwZjU2MjMyNC4uN2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1NGM1OGFiM2E0OGEyYjRi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJk
TGlzdENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0Zvcndh
cmRMaXN0Q0YuY3BwCkBAIC05NCw5ICs5NCw5IEBAIENGRGljdGlvbmFyeVJlZiBXZWJCYWNrRm9y
d2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1cmwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT51cmwoKS5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZShBZG9wdENG
LCBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxVUkwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT5vcmln
aW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHVybCA9IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZSA9IG1fZW50cmllc1tpXS0+dGl0bGUoKS5jcmVh
dGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsVVJM
ID0gbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgQ29yZUlQQyBkYXRhIGVuY29kaW5nIGZvcm1hdCwg
d2hpY2ggbWVhbnMgdGhhdCB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIENvcmVJUEMgZW5jb2Rpbmcg
d2UgbmVlZCB0byBidW1wIHRoZSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNpb24KICAgICAg
ICAgLy8gY29uc3RhbnQgaW4gV2ViUGFnZVByb3h5Q0YuY3BwLiBUaGUgQ29yZUlQQyBkYXRhIGZv
cm1hdCBpcyBtZWFudCB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFuZCBub3Qgc29t
ZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gZGlzay4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCmluZGV4IDc5ZGQ4Y2VkMDJkN2NlMGQ0
ZjNjMjQwNDgxOGI4MDFiZTQwZjFmN2EuLmZhYzAyYzFiNDY5MGYxMjM2ZTlhYTc4ZGFjYTQ5MmIx
YzQyNjNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdl
UHJveHlDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94
eUNGLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYXNzUmVmUHRyPFdlYkRhdGE+IFdlYlBhZ2VQcm94
eTo6c2Vzc2lvblN0YXRlRGF0YShXZWJQYWdlUHJveHlTZXNzaW9uU3RhdGVGaWx0ZQogICAgICAg
ICBpZiAocHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgcHJvdmlzaW9uYWxV
UkwgPSBtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKICAgICAgICAgaWYgKCFwcm92aXNp
b25hbFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHByb3Zpc2lvbmFsVVJMU3RyaW5nLmFk
b3B0Q0YocHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgICAgICBwcm92
aXNpb25hbFVSTFN0cmluZyA9IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAg
ICAgICAgICBrZXlzW251bVZhbHVlc10gPSBQcm92aXNpb25hbFVSTEtleSgpOwogICAgICAgICAg
ICAgdmFsdWVzW251bVZhbHVlc10gPSBwcm92aXNpb25hbFVSTFN0cmluZy5nZXQoKTsKICAgICAg
ICAgICAgICsrbnVtVmFsdWVzOwpAQCAtMTc5LDggKzE3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSogd2ViRGF0YSkKIAogc3RhdGlj
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFt
ZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRl
Q0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hG
aWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzZWFyY2hJdGVtcykKQEAgLTE5MiwxMCArMTkxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JgogCiAgICAgaWYgKHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpKSB7CiAgICAg
ICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0YsIHNl
YXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUp
LmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJl
c291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3Vy
Y2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggNjgxMGYwYWJkYjlkYmVi
YTk5ZmEzZTFlOWIwZjA2Y2U0NWFlMDQ5NC4uMzk1NjQ5YzUwYmY0ZDZkZjA0YmM3NTQwYjU0YmFm
NTlkYjJjMzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJj
ZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCkBAIC0x
MTgsOCArMTE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Y2xlYXJDYWNoZUZv
ck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwKICNpZiBVU0UoQ0ZVUkxDQUNI
RSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9IEluTWVtb3J5UmVzb3VyY2VDYWNo
ZXNPbmx5KSB7IAogICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGhvc3RBcnJh
eShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdChBZG9wdENGLCBvcmln
aW4tPmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVl
KGhvc3RBcnJheS5nZXQoKSwgaG9zdC5nZXQoKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShob3N0QXJyYXkuZ2V0KCksIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogCiAgICAgICAgIGNsZWFyQ0ZVUkxDYWNoZUZvckhvc3ROYW1lcyhob3N0QXJyYXkuZ2V0KCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2luL1dlYlBy
b2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dp
bi5jcHAKaW5kZXggMjVkYmMzNmM0OTliZjM5NDY5MzRiNGUxMmU2NTYyMzBhZDliYjE5Mi4uZGE0
YjU2ZGM4ODZjM2JhYmFkNzczN2Q4N2Q4ZTc0NzQ5MWM5ZWE0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1v
ZGVsKQogICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5LmFkb3B0Q0Yod2tDb3B5Rm91bmRhdGlv
bkNhY2hlRGlyZWN0b3J5KDApKTsKIAogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAg
ICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENh
Y2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAw
MCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291
bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC0xNDgs
MTMgKzE0OCwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nl
c3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogICAgIGlmIChkZWZhdWx0U3Rv
cmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2FjaGVQYXRoKEFkb3B0Q0YsIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIGlmICghY2FjaGVQYXRoKQorICAgIGlmICghcGFyYW1ldGVycy5k
aXNrQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENGSW5kZXggY2FjaGVE
aXNrQ2FwYWNpdHkgPSBwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAgICAgQ0ZJ
bmRleCBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gcGFyYW1ldGVycy5jZlVSTENhY2hlTWVtb3J5Q2Fw
YWNpdHk7Ci0gICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHVpUHJvY2Vzc0NhY2hlKEFkb3B0
Q0YsIENGVVJMQ2FjaGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2FjaGVNZW1vcnlDYXBh
Y2l0eSwgY2FjaGVEaXNrQ2FwYWNpdHksIGNhY2hlUGF0aC5nZXQoKSkpOworICAgIFJldGFpblB0
cjxDRlVSTENhY2hlUmVmPiB1aVByb2Nlc3NDYWNoZShBZG9wdENGLCBDRlVSTENhY2hlQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNhY2hlTWVtb3J5Q2FwYWNpdHksIGNhY2hlRGlza0NhcGFj
aXR5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiAgICAgQ0ZVUkxDYWNoZVNldFNoYXJlZFVSTENhY2hlKHVpUHJvY2Vzc0NhY2hlLmdldCgp
KTsKICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYyOWIxYTdmNmQyNDM5YjBjMzQ4YWFkNjI4NWEx
Yjg4ZTdkNTQwZjkuLjFlYjdmMWNmMjUyY2U2ZWYxNTdlN2Q2ZTg1YjdkMzUyMTBhNjhmYmUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFp
blB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAw
NDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOgorCiAyMDEyLTEwLTI2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBtYWtpbmcgTlBSdW50aW1lIGNh
bGxzIHdpdGggYSBudWxsIE5QUCBwb2ludGVyCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VN
YWMubW0KaW5kZXggNDZjMjczZjFmOGNhNDBhZWUyN2M5NDc2YzgxZmU3Mzk0YzMzYmIyNC4uYjBj
YjRlMDMxY2I3NDQ2MjhjMGJjMzRkNTdkMTc2YjY4N2FmMTM0NSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFj
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVj
dGVkQnVuZGxlUGFnZU1hYy5tbQpAQCAtODUsOCArODUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxl
UGFnZTo6cGxhdGZvcm1EaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJh
bWVSZQogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiQ1JBU0hJTkcgVEVTVDogIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRl
c3RQYXRoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyhBZG9wdENG
LCBidWlsZGVyLnRvU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFdLU2V0Q3Jh
c2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24oY2ZTdHJpbmcuZ2V0KCkpOwor
ICAgICAgICBXS1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGJ1
aWxkZXIudG9TdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9CiAjZW5kaWYK
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171137</attachid>
            <date>2012-10-28 12:16:43 -0700</date>
            <delta_ts>2012-10-29 17:20:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121028121511.patch</filename>
            <type>text/plain</type>
            <size>82878</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU4YjQ5NjdiN2U2MmU2Yzk2MTViMGVm
MjhlYmNjY2Q1MmViMTgwNGMuLjJjYzM4YWQyMjM4YmZmM2RjMDM0MjkzYzQ3N2NmOWY1ZmQxNDZm
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMjUgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgUmVtb3ZlIEF0b21p
Y1N0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgYW5kIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZikgc2lu
Y2UgaW5jbHVkaW5nIFJldGFpblB0ci5oIGZyb20KKyAgICAgICAgV1RGU3RyaW5nLmggY3JlYXRl
cyBhIG5hbWluZyBjb25mbGljdCBiZXR3ZWVuIEpTQzo6RGVidWdnZXIgYW5kIHRoZSBEZWJ1Z2dl
ciBmdW5jdGlvbiBhbmQgdGhlcmUncyBjdXJyZW50bHkKKyAgICAgICAgbm8gQXRvbWljU3RyaW5n
Q0YuY3BwIHdoZXJlIHdlIGNvdWxkIHNhZmVseSBpbmNsdWRlIFJldGFpblB0ci5oLiBGdXJ0aGVy
bW9yZSwgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seSB1c2VkCisgICAgICAgIHR3aWNlIHRocm91
Z2hvdXQgV2ViQ29yZSBzbyBqdXN0IHVzZSB0aGUgU3RyaW5nSW1wbCBhbmQgU3RyaW5nIGZ1bmN0
aW9ucyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6CisgICAg
ICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5oOgorCiAyMDEyLTEwLTI2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWls
LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyNjg5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDY0YWVjNGU2ZWVmOGM0MjUwOTEyMmQ3ZGIwNjk0M2Q3YzYyMDkyMjguLmVmOWE5M2Mw
NjIzZTI4NGVmNDQ2MTE4MjczZTBlMjcyZjE4YjU2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2
MSBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIGJyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbToKKyAgICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFs
bGJhY2tPYmplY3QpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hp
dmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVy
dHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OmltYWdlVGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp1dGlGcm9tTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlU291cmNlQ0dNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZUZvckltYWdl
U291cmNlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFn
ZVNvdXJjZVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29u
dHJvbGxlcjo6Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnMpOgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5
cGVGcm9tSFRNTENsaXBib2FyZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6dXRpVHlwZUZyb21D
b2NvYVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRp
b24pOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJl
cXVlc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkpOgorICAg
ICAgICAqIHBsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjo6OmNyZWF0ZVZhbHVlRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0NGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nOjpjcmVhdGVDRlN0cmluZyk6CisgICAg
ICAgICogcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwOgorICAgICAgICAoV1RGOjpT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMv
U3RyaW5nSW1wbE1hYy5tbToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNT
dHJpbmcgKik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDb2RlY01hYzo6ZW5jb2RlKToKKwogMjAxMi0xMC0yNiAg
Q2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBB
dWRpb0J1ZmZlclNvdXJjZU5vZGUgLmxvb3BTdGFydCBhbmQgLmxvb3BFbmQgYXR0cmlidXRlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nm
L0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJlY2M1
Li42ZTBhZWQ1ZmZhNTZlNzFmMmIwNTYyOTNmZmNmYzBlZTA1OWE1ZjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0
dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAgICAo
Y3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToKKyAg
ICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcuaCwg
cmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxMWQ1MGIxNzdkYWY2
ZTIwZjdhYWFkYjEzYjEyNWVlNWNkOTUwMGUzLi5lOWI2ODMxNDFhYzVjYmM4NTU5YjZjNTZjMzgy
ZTdkODFiZjU0YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMTAt
MjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJp
bmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9mIFN0
cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2VyLmNw
cDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRhYmFz
ZSk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojp2aXNp
dGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcpOgorICAgICAg
ICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9u
YXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHA6
CisgICAgICAgIChjcmVhdGVXZWJLaXRCdW5kbGUpOgorICAgICAgICAoY29weUxvY2FsaXplZFN0
cmluZ0Zyb21CdW5kbGUpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAg
KFdlYlByZWZlcmVuY2VzOjppbml0aWFsaXplRGVmYXVsdFNldHRpbmdzKToKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OnNldENhY2hlTW9kZWwpOgorICAgICAgICAo
V2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKwogMjAxMi0xMC0yNCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgc3RyYXRlZ3kgZm9y
IGxvYWRlciBjdXN0b21pemF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFmODliZmIxNzRlOWYxOTJhZGIx
OWVkYjBiNmE4YjA2YTZjNzIxMDkuLmRmY2JhMDM0ZmYyNmQ0M2VlNmM2MjYzODcwZGUzZjliNmI3
NTQwMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0yNyAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZT
dHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVD
RlN0cmluZy4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW06CisgICAgICAg
IChXZWJLaXQ6Ok1vZHVsZTo6bG9hZCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9tYWMvUGx1
Z2luUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVNhbmRib3gpOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVs
ZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdp
bkluZm8pOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1
Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9jZi9XZWJCYWNr
Rm9yd2FyZExpc3RDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdDo6
Y3JlYXRlQ0ZEaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9j
Zi9XZWJQYWdlUHJveHlDRi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2Vz
c2lvblN0YXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OmF1dG9zYXZlS2V5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlQ2FjaGVNYW5hZ2VyOjpjbGVhckNhY2hlRm9yT3JpZ2lu
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisKIDIwMTIt
MTAtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNo
IGluIFdlYlByb2NlcyBhdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNyb3NzT3Jp
Z2luUmVkaXJlY3RSZWNlaXZlZCArIDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAppbmRl
eCA2YWM2MGU2YWQ1NzI0MzM5NzhmNWZiNGI0ODgwYTlmYjQwMTA1YzY2Li43ZGEwZGQ0ZjNhMDE3
MTliNDZjZWE5YjE4OGRiZGZhNWU2OTNjY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5n
LmgKQEAgLTEzNywxMCArMTM3LDYgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVtb3Zl
KFN0cmluZ0ltcGwqKTsKICAgICAKLSNpZiBVU0UoQ0YpCi0gICAgQXRvbWljU3RyaW5nKENGU3Ry
aW5nUmVmIHMpIDogIG1fc3RyaW5nKGFkZChTdHJpbmcocykuaW1wbCgpKSkgeyB9Ci0gICAgQ0ZT
dHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jcmVhdGVD
RlN0cmluZygpOyB9Ci0jZW5kaWYgICAgCiAjaWZkZWYgX19PQkpDX18KICAgICBBdG9taWNTdHJp
bmcoTlNTdHJpbmcqIHMpIDogbV9zdHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7IH0KICAg
ICBvcGVyYXRvciBOU1N0cmluZyooKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAppbmRleCAwMDY3YmViZWVkOTBmZjc0MzczMmNkYWFmNTYwYWFmNTky
MDk4NGVjLi42NzY3NzkwNmRiMDI1MDNlMjE3OTQxNzQzOTYyNDExZmIyMzI2NTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNjcsNiArNjcsNyBAQCBzdHJ1Y3QgQ2hhckJ1ZmZlckZy
b21MaXRlcmFsRGF0YVRyYW5zbGF0b3I7CiBjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogc3RydWN0
IFN1YnN0cmluZ1RyYW5zbGF0b3I7CiBzdHJ1Y3QgVUNoYXJCdWZmZXJUcmFuc2xhdG9yOwordGVt
cGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJldGFpblB0cjsKIAogZW51bSBUZXh0Q2FzZVNlbnNpdGl2
aXR5IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUgfTsKIApAQCAtNzEz
LDcgKzcxNCw3IEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgV1RGOjpVbmlj
b2RlOjpEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFzU3Ryb25nRGly
ZWN0aW9uYWxpdHkgPSAwKTsKIAogI2lmIFVTRShDRikKLSAgICBDRlN0cmluZ1JlZiBjcmVhdGVD
RlN0cmluZygpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJpbmcoKTsK
ICNlbmRpZgogI2lmZGVmIF9fT0JKQ19fCiAgICAgb3BlcmF0b3IgTlNTdHJpbmcqKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaAppbmRleCA1MGMwNDhkNjNmM2RjZjFjNTM4NjU1NjZlNDcyNGYxYTgy
NDhmZTA3Li5kNjdhZDMyOTkyYzI0MGYxZTU1MmY2ZWMzZWZjMDgwMDhiM2JhODM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKQEAgLTMyLDEwICszMiw2IEBACiAjaW5jbHVkZSA8b2JqYy9vYmpj
Lmg+CiAjZW5kaWYKIAotI2lmIFVTRShDRikKLXR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJp
bmcgKiBDRlN0cmluZ1JlZjsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQpCiBRVF9CRUdJTl9O
QU1FU1BBQ0UKIGNsYXNzIFFTdHJpbmc7CkBAIC0zODYsNyArMzgyLDcgQEAgcHVibGljOgogCiAj
aWYgVVNFKENGKQogICAgIFN0cmluZyhDRlN0cmluZ1JlZik7Ci0gICAgQ0ZTdHJpbmdSZWYgY3Jl
YXRlQ0ZTdHJpbmcoKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNG
U3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmZGVmIF9fT0JKQ19fCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggMmNmMGRiNTYxOGUzODIwY2RmNDQ2
NDU1ODM0MWY2OTRmNTNkMWZhMy4uYmUyNGZkYjNmZGIxMzdjODBiNmYwYTRmYjg4NzQxYWIzNDFh
NGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1l
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpAQCAt
MjQ4LDggKzI0OCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxP
YmpDRmFsbGJhY2tPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBPYmpjQ2xhc3MqIG9i
amNDbGFzcyA9IHN0YXRpY19jYXN0PE9iamNDbGFzcyo+KG9iamNJbnN0YW5jZS0+Z2V0Q2xhc3Mo
KSk7CiAgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZChhZG9wdFB0cihu
ZXcgT2JqY01ldGhvZChvYmpjQ2xhc3MtPmlzYSgpLCBAc2VsZWN0b3IoaW52b2tlVW5kZWZpbmVk
TWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRzOikpKSk7CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgbmFtZUlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxPYmpjRmFsbGJhY2tPYmplY3RJbXAq
PihleGVjLT5jYWxsZWUoKSktPnByb3BlcnR5TmFtZSgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG5hbWUoQWRvcHRDRiwgbmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIGZhbGxiYWNrTWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lLmdldCgpKTsK
KyAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWVJZGVudGlmaWVy
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICByZXN1bHQgPSBvYmpjSW5zdGFuY2Ut
Pmludm9rZU9iamNNZXRob2QoZXhlYywgZmFsbGJhY2tNZXRob2QuZ2V0KCkpOwogICAgIH0KICAg
ICAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
OTdmZTk1YjNhNDRkNDE4NWUyMTI2ZjZiYjZlZGJlY2Y0MzlmZWVlZS4uNzVkZjk5YWYzNmJiNjAw
MjY3YjlhNzJkNWM5MTU4OTBjNGRjNWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC05MTYsOCArOTE2LDcgQEAgc3RhdGljIEtVUkwgY3JlYXRlRmlsZVVS
TEZvckFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZShjb25zdCBTdHJpbmcmIHBhdGgpCiAgICAgLy8g
YXBwIGNhY2hlIG1lZGlhIGZpbGVzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGVuY29kZUZvckZp
bGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkuCiAKICNpZiBVU0UoQ0YpICYmIFBM
QVRGT1JNKFdJTikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGF0aChBZG9wdENGLCBw
YXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZVUkwoQWRv
cHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQYXRoLmdldCgpLCBrQ0ZV
UkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gY2ZV
UkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIEtV
UkwgdXJsKGNmVVJMLmdldCgpKTsKICNlbHNlCiAgICAgS1VSTCB1cmw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCmluZGV4
IDM1NzZkNjRkZmM0ODJhNDFkNTRlMTNlZmQxOTc4MTYyYjc4MDdhN2YuLmQ3N2Y4NzRiMDlkYzIw
MDliYmVkMDM1MjQxODM1YmZlODZmODhlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwCkBAIC05MSw4ICs5MSw3IEBA
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZVByb3Bl
cnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVy
dHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VEYXRhS2V5LCBjZkRhdGEuZ2V0
KCkpOwogICAgIAogICAgIC8vIFJlc291cmNlIFVSTCBjYW5ub3QgYmUgbnVsbAotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwoQWRvcHRDRiwgcmVzb3VyY2UtPnVybCgpLnN0cmluZygp
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmIChjZlVSTCkKKyAgICBpZiAoUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBjZlVSTCA9IHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVVSTEtleSwgY2ZVUkwuZ2V0KCkpOwogICAgIGVsc2Ugewog
ICAgICAgICBMT0coQXJjaGl2ZXMsICJMZWdhY3lXZWJBcmNoaXZlIC0gTlVMTCByZXNvdXJjZSBV
UkwgaXMgaW52YWxpZCAtIHJldHVybmluZyBudWxsIHByb3BlcnR5IGxpc3QiKTsKQEAgLTEwMSwy
MyArMTAwLDE3IEBAIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IExlZ2FjeVdlYkFyY2hpdmU6
OmNyZWF0ZVByb3BlcnR5TGlzdFJlcHJlc2VudGF0aW9uKEFyCiAKICAgICAvLyBGcmFtZU5hbWUg
c2hvdWxkIGJlIGxlZnQgb3V0IGlmIGVtcHR5IGZvciBzdWJyZXNvdXJjZXMsIGJ1dCBhbHdheXMg
aW5jbHVkZWQgZm9yIG1haW4gcmVzb3VyY2VzCiAgICAgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUo
cmVzb3VyY2UtPmZyYW1lTmFtZSgpKTsKLSAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkgfHwg
aXNNYWluUmVzb3VyY2UpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZkZyYW1l
TmFtZShBZG9wdENGLCBmcmFtZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlRnJhbWVOYW1lS2V5LCBjZkZyYW1lTmFtZS5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghZnJh
bWVOYW1lLmlzRW1wdHkoKSB8fCBpc01haW5SZXNvdXJjZSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VGcmFt
ZU5hbWVLZXksIGZyYW1lTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAKICAgICAv
LyBTZXQgTUlNRVR5cGUsIFRleHRFbmNvZGluZ05hbWUsIGFuZCBSZXNvdXJjZVJlc3BvbnNlIG9u
bHkgaWYgdGhleSBhY3R1YWxseSBleGlzdAogICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUocmVz
b3VyY2UtPm1pbWVUeXBlKCkpOwotICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZNSU1FVHlwZShBZG9wdENGLCBtaW1lVHlwZS5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlM
aXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtleSwgY2ZNSU1FVHlw
ZS5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghbWltZVR5cGUuaXNFbXB0eSgpKQorICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZU1JTUVUeXBlS2V5LCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAg
ICAKICAgICBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZyhyZXNvdXJjZS0+dGV4dEVuY29kaW5n
KCkpOwotICAgIGlmICghdGV4dEVuY29kaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNmVGV4dEVuY29kaW5nKEFkb3B0Q0YsIHRleHRFbmNvZGluZy5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0
LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5LCBjZlRl
eHRFbmNvZGluZy5nZXQoKSk7Ci0gICAgfQorICAgIGlmICghdGV4dEVuY29kaW5nLmlzRW1wdHko
KSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdh
Y3lXZWJBcmNoaXZlUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lS2V5LCB0ZXh0RW5jb2RpbmcuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICAvLyBEb24ndCBpbmNsdWRlIHRoZSByZXNvdXJj
ZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVzb3VyY2UKICAgICBpZiAoIWlzTWFpblJlc291cmNl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCmluZGV4
IGFiZjFiY2E1ZTg1NDEwYmE4N2Q1Y2FiODI1MDBkOTY5ZjEwOTI2YTcuLjY5MDg0M2IxMzc3ODM0
ODI4MGVjN2VhNWI0MzczODhlOWRkYzY0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0xvY2FsaXplZFN0cmluZ3MuY3BwCkBAIC01NCwxMyArNTQsMTIgQEAgc3RhdGljIFN0cmluZyBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoU3RyaW5nIGZvcm1hdCwgLi4uKQogI2lmIFVTRShDRikKICAg
ICB2YV9saXN0IGFyZ3VtZW50czsKICAgICB2YV9zdGFydChhcmd1bWVudHMsIGZvcm1hdCk7Ci0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmb3JtYXRDRlN0cmluZyhBZG9wdENGLCBmb3JtYXQu
Y3JlYXRlQ0ZTdHJpbmcoKSk7CiAKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3Jt
YXQtbm9ubGl0ZXJhbCIKICNlbmRpZgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0
KEFkb3B0Q0YsIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cygwLCAwLCBmb3Jt
YXRDRlN0cmluZy5nZXQoKSwgYXJndW1lbnRzKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiByZXN1bHQgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdEFuZEFyZ3VtZW50cygw
LCAwLCBmb3JtYXQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYXJndW1lbnRzKSk7CiAjaWYgQ09N
UElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5kaWYKQEAgLTI2
MCw3ICsyNTksNyBAQCBTdHJpbmcgY29udGV4dE1lbnVJdGVtVGFnTG9va1VwSW5EaWN0aW9uYXJ5
KGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRTdHJpbmcpCiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkco
Ikxvb2sgVXAgaW4gRGljdGlvbmFyeSIsICJMb29rIFVwIGluIERpY3Rpb25hcnkgY29udGV4dCBt
ZW51IGl0ZW0iKTsKICNlbHNlCiAjaWYgVVNFKENGKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gc2VsZWN0ZWRDRlN0cmluZyhBZG9wdENGLCB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51
SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBzZWxlY3RlZENGU3RyaW5nID0gdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVu
dUl0ZW0oc2VsZWN0ZWRTdHJpbmcpLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnCVA4oCdIiwgIkxvb2sg
VXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIiksIHNlbGVjdGVkQ0ZTdHJp
bmcuZ2V0KCkpOwogI2Vsc2UKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBVcCDigJw8
c2VsZWN0aW9uPuKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBpdGVtIHdpdGggc2VsZWN0ZWQg
d29yZCIpLnJlcGxhY2UoIjxzZWxlY3Rpb24+IiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVu
dUl0ZW0oc2VsZWN0ZWRTdHJpbmcpKTsKQEAgLTczOCw4ICs3MzcsNyBAQCBTdHJpbmcga2V5Z2Vu
TWVudUl0ZW0yMDQ4KCkKIAogU3RyaW5nIGtleWdlbktleWNoYWluSXRlbU5hbWUoY29uc3QgU3Ry
aW5nJiBob3N0KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdENGU3RyaW5nKEFk
b3B0Q0YsIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIGZvcm1hdExvY2FsaXpl
ZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtleWNoYWluIGtl
eSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdENGU3RyaW5nLmdldCgpKTsKKyAg
ICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9tICVA
IiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBo
b3N0LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiAjZW5kaWYKQEAgLTc2Miw4ICs3NjAs
NyBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewogI2lmIFVTRShDRikKICNpZiAhUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShJT1MpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA2MAotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBmaWxlbmFtZS5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZShBZG9w
dENGLCBDRkxvY2FsZUNvcHlDdXJyZW50KCkpOworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4g
bG9jYWxlID0gYWRvcHRDRihDRkxvY2FsZUNvcHlDdXJyZW50KCkpOwogICAgIFJldGFpblB0cjxD
Rk51bWJlckZvcm1hdHRlclJlZj4gZm9ybWF0dGVyKEFkb3B0Q0YsIENGTnVtYmVyRm9ybWF0dGVy
Q3JlYXRlKDAsIGxvY2FsZS5nZXQoKSwga0NGTnVtYmVyRm9ybWF0dGVyRGVjaW1hbFN0eWxlKSk7
CiAKICAgICBpbnQgd2lkdGhJbnQgPSBzaXplLndpZHRoKCk7CkBAIC03NzQsNyArNzcxLDcgQEAg
U3RyaW5nIGltYWdlVGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGhlaWdodChBZG9wdENGLCBDRk51bWJl
ckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmaGVpZ2h0SW50KSk7CiAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBoZWlnaHRTdHJpbmcoQWRvcHRDRiwgQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVh
dGVTdHJpbmdXaXRoTnVtYmVyKDAsIGZvcm1hdHRlci5nZXQoKSwgaGVpZ2h0LmdldCgpKSk7CiAK
LSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAICVAw5cl
QCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVs
dGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmluZy5nZXQoKSwgd2lk
dGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRvdyB0
aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJvbCwg
bm90IHgpIiksIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHdpZHRoU3RyaW5nLmdl
dCgpLCBoZWlnaHRTdHJpbmcuZ2V0KCkpOwogI2Vsc2UKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7
CiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlZMOX
JWQgcGl4ZWxzIiwgIndpbmRvdyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11
bHRpcGxpY2F0aW9uIHN5bWJvbCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0KCksIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcAppbmRleCAxYjhkMDA2ZjI1MTlhYThh
OGYzYThjNDUwZWZkMjczNDE4YWY0Mjg0Li43MzBlZGMxNWZlOTFiYzkyNzcwODVjY2MyODg3YjA3
OTA2NzgwYmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVB
cHBsaWNhdGlvbkNoZWNrcy5jcHAKQEAgLTQ2LDggKzQ2LDcgQEAgc3RhdGljIGJvb2wgbWFpbkJ1
bmRsZUlzRXF1YWxUbyhjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpCiAgICAg
aWYgKCFidW5kbGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBhcmUoQWRvcHRDRiwgYnVu
ZGxlSWRlbnRpZmllclN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gQ0ZTdHJp
bmdDb21wYXJlKGJ1bmRsZUlkZW50aWZpZXIsIGJ1bmRsZUlkZW50aWZpZXJUb0NvbXBhcmUuZ2V0
KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRvOworICAgIHJldHVybiBDRlN0cmluZ0NvbXBhcmUo
YnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmllclN0cmluZy5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbzsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcpOwogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCmluZGV4IDhlZjUwZWViMGNiMDg0ZDFi
OWIyM2I4N2MzYmZhODk4MzkyYjhhMmQuLmMxODcwNjYzMzU2NTA1NTc5YWZkN2I2MWFjMTczOTA0
MDY0NGY3MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0
ZW1DRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNw
cApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIENTdHJpbmcgZmlsZVN5
c3RlbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgcGF0aCkKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nKEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Cisg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IHBhdGguY3JlYXRlQ0ZTdHJpbmco
KTsKIAogICAgIGlmICghY2ZTdHJpbmcpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CkBAIC02
Myw4ICs2Myw3IEBAIFJldGFpblB0cjxDRlVSTFJlZj4gcGF0aEFzVVJMKGNvbnN0IFN0cmluZyYg
cGF0aCkKICNlbHNlCiAgICAgcGF0aFN0eWxlID0ga0NGVVJMUE9TSVhQYXRoU3R5bGU7CiAjZW5k
aWYKLSAgICByZXR1cm4gUmV0YWluUHRyPENGVVJMUmVmPihBZG9wdENGLCBDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aCgwLAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0
Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCksIHBhdGhTdHlsZSwgRkFMU0UpKTsKKyAg
ICByZXR1cm4gUmV0YWluUHRyPENGVVJMUmVmPihBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhdGhTdHlsZSwgRkFM
U0UpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmlt
YXRpb25XaW4uY3BwCmluZGV4IDk3ZmIwYjYwOTQ2OGY0ZWQzNWIxZTE5MzhkOThiYmQ4OTQyMjI1
ODYuLjg1NmE0ZmNhZGVkMmYwYjYyNjBmNWU5MmJlMTE0NWRjMTJhNWM4NDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0
aW9uV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKQEAgLTE1MSw4ICsxNTEsNyBAQCBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKEFuaW1hdGlvblR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBrZXlQYQogICAgIGVsc2UKICAgICAgICAgbV9hbmltYXRpb24uYWRvcHRDRihDQUNG
QW5pbWF0aW9uQ3JlYXRlKGtDQUNGS2V5ZnJhbWVBbmltYXRpb24pKTsKICAgICAKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwga2V5UGF0aC5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICBDQUNGQW5pbWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQoKSwgcy5nZXQoKSk7
CisgICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRpb24uZ2V0KCksIGtleVBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIFBsYXRmb3JtQ0FBbmltYXRpb246OlBsYXRm
b3JtQ0FBbmltYXRpb24oUGxhdGZvcm1BbmltYXRpb25SZWYgYW5pbWF0aW9uKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXll
cldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZv
cm1DQUxheWVyV2luLmNwcAppbmRleCA3MDE2OGIyMTA0ZGIzNjlkYTA3NTdhMTE0NDYyMjExMWJj
MzA2MWYwLi5kZDYxNjMzN2U5MzY2ZWI3OWM5NmM2NzJiNzM5M2I2OTI0MzZmYzYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUxheWVyV2luLmNwcApAQCAtMTc2LDEwICsxNzYsOCBAQCB2b2lkIFBsYXRmb3Jt
Q0FMYXllcjo6YW5pbWF0aW9uU3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpCiBzdGF0
aWMgdm9pZCByZXN1Ym1pdEFsbEFuaW1hdGlvbnMoUGxhdGZvcm1DQUxheWVyKiBsYXllcikKIHsK
ICAgICBIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGxheWVyLT5hbmltYXRpb25zKCkuZW5kKCk7Ci0gICAgZm9yIChIYXNo
TWFwPFN0cmluZywgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGl0LT5rZXkuY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihsYXllci0+cGxhdGZvcm1M
YXllcigpLCBzLmdldCgpLCBpdC0+dmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpOwotICAgIH0K
KyAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKKyAgICAgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCksIGl0LT5rZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgaXQtPnZhbHVlLT5wbGF0Zm9y
bUFuaW1hdGlvbigpKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmVuc3VyZUFuaW1hdGlv
bnNTdWJtaXR0ZWQoKQpAQCAtMjk3LDggKzI5NSw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjph
ZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24q
CiAgICAgLy8gQWRkIGl0IHRvIHRoZSBhbmltYXRpb24gbGlzdAogICAgIG1fYW5pbWF0aW9ucy5h
ZGQoa2V5LCBhbmltYXRpb24pOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0
Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obV9s
YXllci5nZXQoKSwgcy5nZXQoKSwgYW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKKyAg
ICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obV9sYXllci5nZXQoKSwga2V5LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGFuaW1hdGlvbi0+cGxhdGZvcm1BbmltYXRpb24oKSk7CiAgICAgc2V0TmVlZHND
b21taXQoKTsKIAogICAgIC8vIFRlbGwgdGhlIGhvc3QgYWJvdXQgaXQgc28gd2UgY2FuIGZpcmUg
dGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVudApAQCAtMzEyLDggKzMwOSw3IEBAIHZvaWQgUGxhdGZv
cm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiAgICAg
Ly8gUmVtb3ZlIGl0IGZyb20gdGhlIGFuaW1hdGlvbiBsaXN0CiAgICAgbV9hbmltYXRpb25zLnJl
bW92ZShrZXkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGtleS5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJSZW1vdmVBbmltYXRpb24obV9sYXllci5n
ZXQoKSwgcy5nZXQoKSk7CisgICAgQ0FDRkxheWVyUmVtb3ZlQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0
KCksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIC8vIFdlIGRvbid0ICJyZW1v
dmUiIGEgbGF5ZXIgZnJvbSBBYnN0cmFjdENBQ0ZMYXllclRyZWVIb3N0IHdoZW4gaXQgbG9zZXMg
YW4gYW5pbWF0aW9uLgogICAgIC8vIFRoZXJlIG1heSBiZSBvdGhlciBhY3RpdmUgYW5pbWF0aW9u
cyBvbiB0aGUgbGF5ZXIgYW5kIGlmIGFuIGFuaW1hdGlvbgpAQCAtNTg2LDggKzU4Miw3IEBAIFN0
cmluZyBQbGF0Zm9ybUNBTGF5ZXI6Om5hbWUoKSBjb25zdAogCiB2b2lkIFBsYXRmb3JtQ0FMYXll
cjo6c2V0TmFtZShjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gcyhBZG9wdENGLCB2YWx1ZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDQUNGTGF5ZXJT
ZXROYW1lKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZMYXllclNldE5hbWUobV9s
YXllci5nZXQoKSwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgc2V0TmVlZHND
b21taXQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAK
aW5kZXggYzQzMGNmMjg0NjE0NjY0N2JmNjFmYzdhNzE2MjlmNTJmMDIxZmE2YS4uMTUyNzViM2Fl
NWZlNWMxYzZhNGY4Zjg0ZmQ2NjkwZDIxZmNmNThkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luSW50ZXJuYWwuY3BwCkBAIC00NTksNyArNDU5LDcgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbDo6dXBkYXRlVGlsZXMoKQogCiAjaWZuZGVmIE5ERUJVRwogICAgICAg
ICAgICAgU3RyaW5nIG5hbWUgPSAiVGlsZSAoIiArIFN0cmluZzo6bnVtYmVyKGkpICsgIiwiICsg
U3RyaW5nOjpudW1iZXIoaikgKyAiKSI7Ci0gICAgICAgICAgICBDQUNGTGF5ZXJTZXROYW1lKHRp
bGUsIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgbmFtZS5jcmVhdGVDRlN0cmluZygp
KS5nZXQoKSk7CisgICAgICAgICAgICBDQUNGTGF5ZXJTZXROYW1lKHRpbGUsIG5hbWUuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAjZW5kaWYKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKaW5k
ZXggMjFlOWRiNGMyOGQ5YTI1NTEzNTIwYWNlNzA4NDAzYWM1ZTc3YWI5My4uZGQzNzgxNTk3Zjg1
ZWI2MTBkY2M0NzFlYzgzMTUzZTBhYmQyY2ViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAKQEAgLTM3Nyw4ICszNzcs
NyBAQCBzdGF0aWMgaW5saW5lIENGU3RyaW5nUmVmIGpwZWdVVEkoKQogc3RhdGljIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXRpRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVD
RlN0cmluZyhBZG9wdENGLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4g
UmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVu
dGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlQ0ZTdHJpbmcuZ2V0KCks
IDApKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVy
Rm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDApKTsKICNlbHNlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgLy8gSXQgaXMgdW5j
bGVhciBpZiBDRlNUUiBpcyB0aHJlYWRzYWZlLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQppbmRleCBiZDUwYTMx
NzVmM2I0MjVhODgyNmNkMmE1NmE2MmUyMTkzNjk2MzM3Li45NTNiY2I5ZDI4YWQwZWI3NWFiMzg4
MTNjMzQzOTQ1NWYxMjYyYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KQEAgLTMzLDE2ICszMywxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0cmluZyBNSU1FVHlwZUZvckltYWdlU291cmNlVHlwZShj
b25zdCBTdHJpbmcmIHV0aSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aXJlZihB
ZG9wdENGLCB1dGkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBtaW1lKEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpcmVmLmdl
dCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgcmV0dXJuIG1pbWUuZ2V0KCk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpLmdldCgpOwogfQogCiBTdHJp
bmcgcHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRp
KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdHlwZShBZG9wdENGLCB1dGkuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24oQWRvcHRD
RiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh0eXBlLmdldCgpLCBrVVRUYWdDbGFz
c0ZpbGVuYW1lRXh0ZW5zaW9uKSk7Ci0gICAgcmV0dXJuIGV4dGVuc2lvbi5nZXQoKTsKKyAgICBy
ZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uKSkuZ2V0KCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJDb3JlVGV4dC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXJD
b3JlVGV4dC5tbQppbmRleCA0Y2I4NzZjMzY1ZWM5ZGQ3MTYwYTFkMmZkZTA5ZTdmMzJmMDBiYWM5
Li41N2Y3MGZmZjI4ZTc0ZjZmZTE1Nzc4NzM1Y2IwMzIwNDdhYTMxNjI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVy
Q29yZVRleHQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bXBsZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCkBAIC0yODIsNyArMjgyLDcgQEAgdm9pZCBD
b21wbGV4VGV4dENvbnRyb2xsZXI6OmNvbGxlY3RDb21wbGV4VGV4dFJ1bnNGb3JDaGFyYWN0ZXJz
KGNvbnN0IFVDaGFyKiBjcCwKICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29tcGxleFRleHRS
dW5zLmFwcGVuZChDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKG1fZm9udC5wcmltYXJ5Rm9udCgpLCBj
cCwgc3RyaW5nTG9jYXRpb24gKyBydW5SYW5nZS5sb2NhdGlvbiwgcnVuUmFuZ2UubGVuZ3RoLCBt
X3J1bi5sdHIoKSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcnVuRm9udERhdGEgPSBmb250Q2Fj
aGUoKS0+Z2V0Q2FjaGVkRm9udERhdGEobV9mb250LmZvbnREZXNjcmlwdGlvbigpLCBmb250TmFt
ZS5nZXQoKSwgZmFsc2UsIEZvbnRDYWNoZTo6RG9Ob3RSZXRhaW4pLmdldCgpOworICAgICAgICAg
ICAgICAgICAgICBydW5Gb250RGF0YSA9IGZvbnRDYWNoZSgpLT5nZXRDYWNoZWRGb250RGF0YSht
X2ZvbnQuZm9udERlc2NyaXB0aW9uKCksIFN0cmluZyhmb250TmFtZS5nZXQoKSksIGZhbHNlLCBG
b250Q2FjaGU6OkRvTm90UmV0YWluKS5nZXQoKTsKICNpZiAhUExBVEZPUk0oV1gpCiAgICAgICAg
ICAgICAgICAgICAgIC8vIENvcmUgVGV4dCBtYXkgaGF2ZSB1c2VkIGEgZm9udCB0aGF0IGlzIG5v
dCBrbm93biB0byBOU0ZvbnRNYW5hZ2VyLiBJbiB0aGF0IGNhc2UsIGZhbGwgYmFjayBvbgogICAg
ICAgICAgICAgICAgICAgICAvLyB1c2luZyB0aGUgZm9udCBhcyByZXR1cm5lZCwgZXZlbiB0aG91
Z2ggaXQgbWF5IG5vdCBoYXZlIHRoZSBiZXN0IE5TRm9udFJlbmRlcmluZ01vZGUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBiZDg4MDIwNDQxYjBl
OWFlMDBiYWRhZjM2YjJmNGY1YTZhNmJlYWU3Li5mZDRhYjk5YjE3NDc1ZDQxNGIyMWFhM2VjZDU3
ZTYxODBhMjhmY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xp
cGJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRN
YWMubW0KQEAgLTk5LDExICs5OSwxMCBAQCBzdGF0aWMgU3RyaW5nIGNvY29hVHlwZUZyb21IVE1M
Q2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKICAgICAvLyBUcnkgVVRJIG5vdwog
ICAgIFN0cmluZyBtaW1lVHlwZSA9IHFUeXBlOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dXRpVHlwZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtV
VFRhZ0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCksIE5VTEwpKTsKLSAg
ICBpZiAodXRpVHlwZSkgewotICAgICAgICBDRlN0cmluZ1JlZiBwYlR5cGUgPSBVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRU
eXBlKTsKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlID0gYWRvcHRDRihV
VFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUs
IG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwpKSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRh
Z1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpOwogICAg
ICAgICBpZiAocGJUeXBlKQotICAgICAgICAgICAgcmV0dXJuIHBiVHlwZTsKKyAgICAgICAgICAg
IHJldHVybiBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gTm8gbWFwcGluZywganVzdCBw
YXNzIHRoZSB3aG9sZSBzdHJpbmcgdGhvdWdoCkBAIC0xMTIsMTEgKzExMSw4IEBAIHN0YXRpYyBT
dHJpbmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkK
IAogc3RhdGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShjb25zdCBTdHJpbmcmIHR5cGUp
CiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlQ0YgPSBhZG9wdENGKHR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0
Q0YsIFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bi
b2FyZFR5cGUsIHR5cGVDRi5nZXQoKSwgMCkpOwotICAgIGlmICh1dGlUeXBlKSB7Ci0gICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZl
cnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0g
ICAgICAgIGlmIChtaW1lVHlwZSkKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlU
eXBlID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTlNQYm9hcmRUeXBlLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKSkgewor
ICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01J
TUVUeXBlKSkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKG1pbWVUeXBlLmdldCgpKTsKICAg
ICB9CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcAppbmRleCAwYTFhNGQ4Yzc1MTRkYTkxMzczOWJl
NWUzNDQ2ZDQ5N2Q5NWE0NzhiLi5lNThkOWE5NDk5NjkyN2I5YmI1YjliMzQ2MTQ5NzhmNWFiZjRm
M2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJh
dG9yTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJh
dG9yTWFjLmNwcApAQCAtNjAsMTEgKzYwLDcgQEAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2gKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2hhbGxlbmdlU3RyaW5nQ0YoQWRvcHRDRiwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5RGVzY3JpcHRpb24oQWRvcHRD
Riwga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCB3a1NpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmdDRi5nZXQoKSwg
a2V5RGVzY3JpcHRpb24uZ2V0KCkpKTsKLQotICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CisgICAg
cmV0dXJuIGFkb3B0Q0Yod2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6
ZSwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtleWdlbktleWNoYWlu
SXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpLmdldCgpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhl
bnRpY2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRo
ZW50aWNhdGlvbkNGLmNwcAppbmRleCA4N2EzZmFiOGE3NDM3YWUxMGFmNDM5YTRlNGUwMmNkMmUx
YTMwZGViLi43YjFkNGZhNDc4N2YxZDFlMGQ5ZTNhNGRlODFmM2ViNTQ2ZDBjZWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHAKQEAgLTExOSwxMyArMTE5LDcgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNG
KGNvbnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gQ0ZVUkxD
cmVkZW50aWFsQ3JlYXRlV2l0aElkZW50aXR5QW5kQ2VydGlmaWNhdGVBcnJheShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBjb3JlQ3JlZGVudGlhbC5pZGVudGl0eSgpLCBjb3JlQ3JlZGVudGlhbC5jZXJ0
aWZpY2F0ZXMoKSwgcGVyc2lzdGVuY2UpOwogI2VuZGlmCiAKLSAgICBDRlN0cmluZ1JlZiB1c2Vy
ID0gY29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZTdHJpbmdS
ZWYgcGFzc3dvcmQgPSBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCk7
Ci0gICAgQ0ZVUkxDcmVkZW50aWFsUmVmIHJlc3VsdCA9IENGVVJMQ3JlZGVudGlhbENyZWF0ZSgw
LCB1c2VyLCBwYXNzd29yZCwgMCwgcGVyc2lzdGVuY2UpOwotICAgIENGUmVsZWFzZSh1c2VyKTsK
LSAgICBDRlJlbGVhc2UocGFzc3dvcmQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1
cm4gQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKIH0KIAogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYg
Y3JlYXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCkBAIC0xOTIsMTMgKzE4
Niw3IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgY29yZVNwYWNlKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAK
LSAgICBDRlN0cmluZ1JlZiBob3N0ID0gY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygp
OwotICAgIENGU3RyaW5nUmVmIHJlYWxtID0gY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiByZXN1bHQgPSBDRlVSTFByb3RlY3Rp
b25TcGFjZUNyZWF0ZSgwLCBob3N0LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCByZWFs
bSwgc2NoZW1lKTsKLSAgICBDRlJlbGVhc2UoaG9zdCk7Ci0gICAgQ0ZSZWxlYXNlKHJlYWxtKTsK
LSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25TcGFj
ZUNyZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVT
cGFjZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIHNjaGVtZSk7CiB9CiAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxS
ZWYgY2ZDcmVkZW50aWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1ZDZkNzM5MjZjNDRlZTQ4ODAxODJmZmZl
ODk4MWFjZjM4YTc2YjBhLi41MDE3OTcxZGUxNGE0NTRhODRmOWEzODhiYjQ3ZjY0ODQ4OTFkYTcy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tp
ZUphckNGTmV0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgc2V0Q29va2llcyhEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAv
LyBjb29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRvZXNuJ3QgcGFyc2UgY29va2llcyB3
aXRob3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gdmFsdWUuY29udGFpbnMo
Jz0nKSA/IHZhbHVlIDogdmFsdWUgKyAiPSI7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNvb2tpZVN0cmluZ0NGKEFkb3B0Q0YsIGNvb2tpZVN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGID0gY29va2llU3RyaW5n
LmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVy
RmllbGRzQ0YoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
CiAgICAgICAgIChjb25zdCB2b2lkKiopJnNfc2V0Q29va2llS2V5Q0YsIChjb25zdCB2b2lkKiop
JmNvb2tpZVN0cmluZ0NGLCAxLAogICAgICAgICAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFj
a3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDNmOTAxYTU0MWRlMDBl
ZWJlYzI0MzIyZDA0Mzk2ZWU0YTIyMDVmYjYuLmNlMTQ1MTkwOWFlZDdlMmI0ZGVmOWNlMGQ5YmI0
MjkzNDE4ZGFjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvRE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TQ0ZOZXQuY3BwCkBAIC05MCwxMiArOTAsMTIgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBs
YXRmb3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RuYW1lQ0YoQWRv
cHRDRiwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJl
Zj4gaG9zdChBZG9wdENGLCBDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZUNGLmdldCgp
KSk7CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRl
V2l0aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgIGlmICgh
aG9zdCkgewogICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KKwogICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwg
MCwgMCB9OwogICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRo
ZSBob3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgogICAgIEJvb2xl
YW4gcmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAm
Y29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggMzU0ZmQyNzU4NjQyMDdiNzllZmMyMWFmN2QxOTlk
YjBiMzAxMjBiNC4uNTg5NWVkOTkzNDY2NWVmNjMwYmUzNjUxNzE2MTUxNTJlNDBmODNmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9y
Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvckNGLmNwcApAQCAtMTQ1LDEzICsxNDUsMTEgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9y
OjpjZkVycm9yKCkgY29uc3QKICAgICBpZiAoIW1fcGxhdGZvcm1FcnJvcikgewogICAgICAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwgQ0ZEaWN0
aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICAgICAgaWYgKCFtX2xv
Y2FsaXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZyhBZG9wdENGLCBtX2xvY2FsaXpl
ZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXks
IGxvY2FsaXplZERlc2NyaXB0aW9uU3RyaW5nLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBp
ZiAoIW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRp
b25LZXksIG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAK
ICAgICAgICAgaWYgKCFtX2ZhaWxpbmdVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcoQWRvcHRDRiwgbV9mYWlsaW5nVVJM
LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBm
YWlsaW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmlu
Z0tleSwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgZmFpbGluZ1VSTFN0
cmluZy5nZXQoKSwgMCkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlcklu
Zm8uZ2V0KCksIGZhaWxpbmdVUkxLZXksIHVybC5nZXQoKSk7CkBAIC0xNjIsOCArMTYwLDcgQEAg
Q0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICAgICAgICAgIHdr
U2V0U1NMUGVlckNlcnRpZmljYXRlRGF0YSh1c2VySW5mby5nZXQoKSwgbV9jZXJ0aWZpY2F0ZS5n
ZXQoKSk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
ZG9tYWluU3RyaW5nKEFkb3B0Q0YsIG1fZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICBtX3BsYXRmb3JtRXJyb3IuYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIGRvbWFpblN0cmluZy5n
ZXQoKSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CisgICAgICAgIG1fcGxhdGZvcm1F
cnJvciA9IGFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKICAgICB9CiAKICAgICByZXR1
cm4gbV9wbGF0Zm9ybUVycm9yLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggMDFlOGI4
YWU1YzBkMWM2YTZhOGYwMzMwODVlOTBmMDEwYmMxZjdjNi4uODA3MGMyNTgyYjdjYWEwZGU2ZmUz
NWYzMDc0M2Y3OGIyMGI3N2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0xMzEsNyArMTMx
LDcgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiA+JiBjbGll
bnRDZXJ0cygpCiAKIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNl
UmVmIHJlc3BvbnNlKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVT
dHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBD
RlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVh
dGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAKICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5
cGUocmVzcG9uc2UsIGRlZmF1bHRNSU1FVHlwZVN0cmluZyk7CiB9CkBAIC0xNjEsOCArMTYxLDgg
QEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9u
UmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpIHsK
ICAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRI
VFRQUmVzcG9uc2UoY2ZSZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgaWYgKGh0dHBNZXNzYWdl
ICYmIENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09IDMw
NykgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZChB
ZG9wdENGLCBoYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAg
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZChBZG9wdENGLCBDRlVSTFJl
cXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7CisgICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gaGFuZGxlLT5sYXN0SFRUUE1ldGhv
ZCgpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IG5ld01ldGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNm
UmVxdWVzdCkpOwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25zKGxh
c3RIVFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENGU3Ry
aW5nR2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNlSW5zZW5z
aXRpdmUpKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RS
ZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5
KDAsIGNmUmVxdWVzdCkpOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKQEAgLTE3NSw5
ICsxNzUsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTENv
bm5lY3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgICAgICAgICAgICAgICAgIFdl
YkNvcmU6OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5KTsKIAogICAgICAg
ICAgICAgICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gaGFuZGxlLT5maXJzdFJlcXVl
c3QoKS5odHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG9yaWdpbmFsQ29udGVudFR5cGVDRihBZG9wdENGLCBvcmlnaW5hbENvbnRlbnRUeXBl
LmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGlmICghb3JpZ2luYWxDb250ZW50
VHlwZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBI
ZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNUUigiQ29udGVudC1UeXBl
IiksIG9yaWdpbmFsQ29udGVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENG
VVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBD
RlNUUigiQ29udGVudC1UeXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3QuZ2V0
KCk7CiAgICAgICAgICAgICB9CkBAIC02MDcsMTAgKzYwNiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5k
bGU6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlv
bkNoYWxsCiAjZW5kaWYKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bh
c3MuaXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1c2VyKEFkb3B0
Q0YsIGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBwYXNzKEFkb3B0Q0YsIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAg
ICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbChBZG9wdENGLAotICAg
ICAgICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVzZXIu
Z2V0KCksIHBhc3MuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsK
KyAgICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
MCwga0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogICAgICAgICAKICAgICAgICAg
S1VSTCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtMTAwNSw3ICsxMDAxLDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb25JZGVudGlmaWVyRGVmYXVsdEJhc2UoKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uSWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRp
ZmllcihBZG9wdENGLCBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZT
dHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJp
bmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIHBy
aXZhdGVTdG9yYWdlU2Vzc2lvbigpID0gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oY2ZJZGVudGlmaWVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggOGNm
Zjg3Y2EwZDU4ZWEyZTUyM2YzNzMwZDZiNGE3NzMwYjA2YmU0Yi4uMGUzZGVjZTAxODI3ZWM1YWQx
YjZiNTgxZTExNjI4MjliNDEzMGFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTExOSwx
MyArMTE5LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEhlYWRlckZpZWxkcyhDRk11dGFibGVV
UkxSZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWEKICAgICB9CiAKICAgICBIVFRQSGVh
ZGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSByZXF1ZXN0SGVhZGVycy5lbmQoKTsKLSAgICBm
b3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVxdWVzdEhlYWRlcnMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIENGU3RyaW5nUmVmIGtleSA9IGl0LT5r
ZXkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWUgPSBpdC0+dmFs
dWUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZp
ZWxkVmFsdWUocmVxdWVzdCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIENGUmVsZWFzZShrZXkpOwot
ICAgICAgICBDRlJlbGVhc2UodmFsdWUpOwotICAgIH0KKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVxdWVzdEhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0
LCBpdC0+a2V5LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGl0LT52YWx1ZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRl
UGxhdGZvcm1SZXF1ZXN0KCkKQEAgLTE0Niw4ICsxNDEsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIHdrU2V0UmVxdWVzdFN0b3JhZ2VTZXNz
aW9uKFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RvcmFnZVNlc3Npb24oKSwgY2ZSZXF1ZXN0KTsK
ICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXF1ZXN0TWV0aG9kKEFkb3B0
Q0YsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIHJlcXVlc3RNZXRob2QuZ2V0KCkpOworICAgIENG
VVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhvZCgpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5nRW5hYmxlZCgp
KQogICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoY2ZSZXF1ZXN0LCB0b0hUVFBQ
aXBlbGluaW5nUHJpb3JpdHkobV9wcmlvcml0eSkpOwpAQCAtMTY0LDcgKzE1OCw3IEBAIHZvaWQg
UmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgdW5zaWduZWQg
ZmFsbGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxi
YWNrQXJyYXkuc2l6ZSgpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gZW5jb2Rp
bmdGYWxsYmFja3MoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZmFsbGJhY2tDb3VudCwgMCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0g
ZmFsbGJhY2tDb3VudDsgKytpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZW5j
b2RpbmdOYW1lKEFkb3B0Q0YsIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0Zh
bGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gZW5jb2RpbmdOYW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICBDRlN0cmluZ0Vu
Y29kaW5nIGVuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGlu
ZyhlbmNvZGluZ05hbWUuZ2V0KCkpOwogICAgICAgICBpZiAoZW5jb2RpbmcgIT0ga0NGU3RyaW5n
RW5jb2RpbmdJbnZhbGlkSWQpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoZW5jb2Rp
bmdGYWxsYmFja3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGVuY29kaW5n
KSk7CkBAIC0yMTMsNyArMjA3LDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUmVz
b3VyY2VSZXF1ZXN0KCkKICAgICAgICAgVmVjdG9yPGNvbnN0IHZvaWQqLCAxMjg+IHZhbHVlcyho
ZWFkZXJDb3VudCk7CiAgICAgICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMoaGVhZGVy
cywga2V5cy5kYXRhKCksIHZhbHVlcy5kYXRhKCkpOwogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGhlYWRlckNvdW50OyArK2kpCi0gICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0
KChDRlN0cmluZ1JlZilrZXlzW2ldLCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKKyAgICAgICAg
ICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoU3RyaW5nKChDRlN0cmluZ1JlZilrZXlzW2ldKSwg
U3RyaW5nKChDRlN0cmluZ1JlZil2YWx1ZXNbaV0pKTsKICAgICAgICAgQ0ZSZWxlYXNlKGhlYWRl
cnMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCmluZGV4IGE0NWJlZWRjNDMzMDA3
NzJiMzljYWVlMmIzOTQ2Y2FjM2RmMGJmMzEuLjM4MjE2ZDRkMjBiZjk4MTEzZjNhZWQyMzZjYTUx
NmZlZGMwNDkwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKQEAgLTUxLDkgKzUxLDcgQEAg
Q0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29uc3QK
IHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKICAgICAgICAgUmV0YWlu
UHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgbV91cmwuY3JlYXRlQ0ZVUkwoKSk7Ci0gICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgbV9taW1lVHlwZS5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0ZXh0RW5jb2Rp
bmdOYW1lKEFkb3B0Q0YsIG1fdGV4dEVuY29kaW5nTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICAgICAgbV9jZlJlc3BvbnNlLmFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwuZ2V0
KCksIG1pbWVUeXBlLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgdGV4dEVuY29kaW5n
TmFtZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOworICAgICAgICBtX2NmUmVz
cG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwgbV9taW1lVHlw
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgbV90ZXh0
RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFs
bG93ZWQpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpAQCAtMTA1
LDcgKzEwMyw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0
TGV2ZWwgaW5pdExldmVsKQogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db21t
b25IZWFkZXJGaWVsZHM7IGkrKykgewogICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVl
OwogICAgICAgICAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2VudChoZWFk
ZXJzLmdldCgpLCBjb21tb25IZWFkZXJGaWVsZHNbaV0sIChjb25zdCB2b2lkICoqKSZ2YWx1ZSkp
Ci0gICAgICAgICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoY29tbW9uSGVhZGVy
RmllbGRzW2ldLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxk
cy5zZXQoU3RyaW5nKGNvbW1vbkhlYWRlckZpZWxkc1tpXSksIFN0cmluZyh2YWx1ZSkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1faHR0cFN0YXR1c0NvZGUg
PSAwOwpAQCAtMTIzLDcgKzEyMSw3IEBAIHZvaWQgUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1M
YXp5SW5pdChJbml0TGV2ZWwgaW5pdExldmVsKQogICAgICAgICAgICAgVmVjdG9yPGNvbnN0IHZv
aWQqLCAxMjg+IHZhbHVlcyhoZWFkZXJDb3VudCk7CiAgICAgICAgICAgICBDRkRpY3Rpb25hcnlH
ZXRLZXlzQW5kVmFsdWVzKGhlYWRlcnMuZ2V0KCksIGtleXMuZGF0YSgpLCB2YWx1ZXMuZGF0YSgp
KTsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVyQ291bnQ7ICsraSkKLSAg
ICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KChDRlN0cmluZ1JlZilrZXlzW2ld
LCAoQ0ZTdHJpbmdSZWYpdmFsdWVzW2ldKTsKKyAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJG
aWVsZHMuc2V0KFN0cmluZygoQ0ZTdHJpbmdSZWYpa2V5c1tpXSksIFN0cmluZygoQ0ZTdHJpbmdS
ZWYpdmFsdWVzW2ldKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
Q0ZOZXQuY3BwCmluZGV4IGQ4NmM3NmJjNmY0NWMxODE2NDhlMGE3NzZjZDM5YmFlODkwODQwZDYu
LjRhN2NkOTAyYWU5ZjAyODdkODk4ZDkyYmQ5ODVkZDc2NmQ0MmExNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlQ0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGU6OmNyZWF0ZVN0cmVhbXMoKQogICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBlID09IFVua25vd24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdChBZG9w
dENGLCBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBob3N0ID0gbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICAvLyBD
cmVhdGluZyBzdHJlYW1zIHRvIGZpbmFsIGRlc3RpbmF0aW9uLCBub3QgdG8gcHJveHkuCiAgICAg
Q0ZSZWFkU3RyZWFtUmVmIHJlYWRTdHJlYW0gPSAwOwpAQCAtMzU5LDEyICszNTksMTAgQEAgdm9p
ZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdl
UmVmIHByb3h5UmVzcG9uc2UpCiAgICAgU3RyaW5nIHBhc3N3b3JkOwogICAgIGlmICghbV9zZW50
U3RvcmVkQ3JlZGVudGlhbHMgJiYgZ2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlhbHMocHJv
dGVjdGlvblNwYWNlLCBsb2dpbiwgcGFzc3dvcmQpKSB7CiAgICAgICAgIC8vIFRyeSB0byBhcHBs
eSBzdG9yZWQgY3JlZGVudGlhbHMsIGlmIHdlIGhhdmVuJ3QgdHJpZWQgdGhvc2UgYWxyZWFkeS4K
LSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2dpbkNGKEFkb3B0Q0YsIGxvZ2luLmNy
ZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhc3N3b3Jk
Q0YoQWRvcHRDRiwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIC8vIENyZWF0
aW5nIGEgdGVtcG9yYXJ5IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkgY3JlZGVudGlh
bHMgdG8gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0aCBOVExNIGF1dGhl
bnRpY2F0aW9uLgorICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgcmVxdWVzdCB0byBtYWtl
IENGTmV0d29yayBhcHBseSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5hdGVseSwgdGhpcyBj
YW5ub3Qgd29yayB3aXRoIE5UTE0gYXV0aGVudGljYXRpb24uCiAgICAgICAgIFJldGFpblB0cjxD
RkhUVFBNZXNzYWdlUmVmPiBkdW1teVJlcXVlc3QoQWRvcHRDRiwgQ0ZIVFRQTWVzc2FnZUNyZWF0
ZVJlcXVlc3QoMCwgQ0ZTVFIoIkdFVCIpLCBtX2h0dHBzVVJMLmdldCgpLCBrQ0ZIVFRQVmVyc2lv
bjFfMSkpOwogCi0gICAgICAgIEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZIVFRQTWVz
c2FnZUFwcGx5Q3JlZGVudGlhbHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNhdGlvbi5n
ZXQoKSwgbG9naW5DRi5nZXQoKSwgcGFzc3dvcmRDRi5nZXQoKSwgMCk7CisgICAgICAgIEJvb2xl
YW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZIVFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlhbHMoZHVt
bXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNhdGlvbi5nZXQoKSwgbG9naW4uY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYXBwbGllZENyZWRlbnRpYWxzLCBhcHBsaWVkQ3JlZGVudGlhbHMpOwog
CiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJveHlBdXRob3JpemF0aW9uU3RyaW5n
KEFkb3B0Q0YsIENGSFRUUE1lc3NhZ2VDb3B5SGVhZGVyRmllbGRWYWx1ZShkdW1teVJlcXVlc3Qu
Z2V0KCksIENGU1RSKCJQcm94eS1BdXRob3JpemF0aW9uIikpKTsKQEAgLTM4OSw3ICszODcsNyBA
QCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENGSFRUUE1l
c3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIENGU3RyaW5nUmVmIFNvY2tldFN0cmVhbUhhbmRsZTo6
Y29weUNGU3RyZWFtRGVzY3JpcHRpb24odm9pZCogaW5mbykKIHsKICAgICBTb2NrZXRTdHJlYW1I
YW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRsZSo+KGluZm8pOwot
ICAgIHJldHVybiBTdHJpbmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxlLT5tX3Vy
bC5zdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJXZWJLaXQg
c29ja2V0IHN0cmVhbSwgIiArIGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5n
KCkubGVha1JlZigpOwogfQogCiBzdHJ1Y3QgTWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJbmZvIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNl
UmVxdWVzdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlUmVxdWVzdE1hYy5tbQppbmRleCA5MzIxNmNiNTVlODU3NzMxMzZmM2U4YzNhMDdjZTZmYjU1
NmUwNmQyLi5lNjkzNDg0ODFhYjBhMDIxMzc5NGRhMjRlZmJjYzRmNTZkYzAwOGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VS
ZXF1ZXN0TWFjLm1tCkBAIC0xNjMsOSArMTYzLDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmVuY29kaW5n
RmFsbGJhY2tzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICAgICAgdW5zaWduZWQgY291
bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNp
emUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBjb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICBDRlN0cmluZ1JlZiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERp
c3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAg
ICAgICAgICB1bnNpZ25lZCBsb25nIG5zRW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRFbmNvZGlu
Z1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29k
aW5nKGVuY29kaW5nTmFtZSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKGVuY29kaW5nTmFtZSk7
CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZSA9IG1fcmVz
cG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZT
dHJpbmcoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENGU3RyaW5n
Q29udmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElBTkFDaGFy
U2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKSk7CisKICAgICAgICAgICAgIGlm
IChuc0VuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQogICAgICAgICAgICAg
ICAgIFtlbmNvZGluZ0ZhbGxiYWNrcyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhVbnNp
Z25lZExvbmc6bnNFbmNvZGluZ11dOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KaW5kZXgg
NmFhNzZmNmRkNzg0ZGEwOWQ3YmZmN2UxZTY4NTVlNzVjYWRhZTk5Yy4uZjk3MTBiMmRkMjUxODQ2
MjAxNTEzMjQyZjQwZjNhNDEyNjRmMjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAtNDc4LDcg
KzQ3OCw3IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVm
IGNmUmVzcG9uc2UpCiAgICAgfQogICAgIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpkZWZhdWx0
TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYg
ZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRNSU1FVHlwZVN0
cmluZzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5
cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDRlM2ZjZWQ0NDQ2NDlhOWM1Y2VmMzY0ZWMwNjJmZThkYjE4
ODRmMDkuLjBmNjY4ZDEwZjhlNDE3ZjU2ZWE5M2EwODU4MTI0Y2RmMmJhNDE3YmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApAQCAt
NDYsOCArNDYsNyBAQCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tleWVkTVJV
Q2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdAogdGVtcGxhdGU8PgogUmV0YWlu
UHRyPENGTG9jYWxlUmVmPiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxv
Y2FsZVJlZj4gPjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbGVJ
ZGVudGlmaWVyKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZMb2NhbGVJZGVudGlm
aWVyKEFkb3B0Q0YsIGxvY2FsZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0
YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2NhbGVDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgY2ZMb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7CisgICAgUmV0YWluUHRy
PENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGxvY2FsZUlkZW50aWZpZXIuaW1wbCgpLT5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiAKICAgICByZXR1cm4gQ0ZTdHJpbmdJc0h5cGhlbmF0aW9uQXZhaWxhYmxlRm9yTG9jYWxl
KGxvY2FsZS5nZXQoKSkgPyBsb2NhbGUgOiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L2NmL1N0cmluZ0NGLmNwcAppbmRleCBkN2NkYTc5NjI5ODYyNTczYTM1YzZhOTI2ODU3
NTIzMDVhYjZjMjdlLi4yNjk3ZTc2ZjBiZjU5MjNiMTUyZmVkZDcxMDM3ZTk3MTE0OTI2ZDQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcApAQCAtMjMs
OCArMjMsOCBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgVVNFKENG
KQotCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCkBAIC01MSw3ICs1MSw3IEBA
IFN0cmluZzo6U3RyaW5nKENGU3RyaW5nUmVmIHN0cikKICAgICB9CiB9CiAKLUNGU3RyaW5nUmVm
IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBT
dHJpbmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1faW1wbCkKICAgICAg
ICAgcmV0dXJuIENGU1RSKCIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y2YvU3RyaW5nSW1wbENGLmNwcAppbmRleCA3YTJkODJlNDAyZDI0YjM3YmJjMDcxZjQ3Zjk4ZTBh
ODY1MTg0OTIxLi4xZGE1NjFiNjA2MmJjYWI0OWUwOWJmZTc5NzgyYjI3M2YwZGEwOTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcu
aD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEzMiw3ICsxMzMsNyBAQCBuYW1lc3BhY2UgU3Ry
aW5nV3JhcHBlckNGQWxsb2NhdG9yIHsKIAogfQogCi1DRlN0cmluZ1JlZiBTdHJpbmdJbXBsOjpj
cmVhdGVDRlN0cmluZygpCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IFN0cmluZ0ltcGw6OmNyZWF0
ZUNGU3RyaW5nKCkKIHsKICAgICBpZiAoIW1fbGVuZ3RoIHx8ICFpc01haW5UaHJlYWQoKSkgewog
ICAgICAgICBpZiAoaXM4Qml0KCkpCkBAIC0xNTMsNyArMTU0LDcgQEAgQ0ZTdHJpbmdSZWYgU3Ry
aW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogICAgIC8vIENvcmVGb3VuZGF0aW9uIG1pZ2h0IG5v
dCBoYXZlIHRvIGFsbG9jYXRlIGFueXRoaW5nLCB3ZSBjbGVhciBjdXJyZW50U3RyaW5nIGluIGNh
c2Ugd2UgZGlkIG5vdCBleGVjdXRlIGFsbG9jYXRlKCkuCiAgICAgU3RyaW5nV3JhcHBlckNGQWxs
b2NhdG9yOjpjdXJyZW50U3RyaW5nID0gMDsKIAotICAgIHJldHVybiBzdHJpbmc7CisgICAgcmV0
dXJuIGFkb3B0Q0Yoc3RyaW5nKTsKIH0KIAogLy8gT24gU3RyaW5nSW1wbCBjcmVhdGlvbiB3ZSBj
b3VsZCBjaGVjayBpZiB0aGUgYWxsb2NhdG9yIGlzIHRoZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0
b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJ
bXBsTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1h
Yy5tbQppbmRleCA2ZjVlOTUzYmExOTI1ZTU0NWJiYjVhYzUzZTIxNDc2YmI4ZjAzYTU3Li4yZjA4
OGE3ZWIzNjNjNWFjZDAxNDJmMzg3MDk1Yjk2MmMxODE2YTYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KQEAgLTIyLDEyICsyMiwx
MyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2luY2x1ZGUgIkZvdW5k
YXRpb25FeHRyYXMuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBX
VEYgewogCiBTdHJpbmdJbXBsOjpvcGVyYXRvciBOU1N0cmluZyAqKCkKIHsKLSAgICByZXR1cm4g
SGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiBIYXJkQXV0b3Jl
bGVhc2UoY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAppbmRleCAzMTI0MTJm
YWFiOGFjMjM2Mjg2NTAzZGFjYTVhOTI4YmViZDQzOTY2Li5hNzA0NzQ5NTIwZmRkMzJkNGUxZTAw
ZmNmYzBkZWFmMzg3Y2JhOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvbWFjL1RleHRDb2RlY01hYy5jcHAKQEAgLTI4NCw3ICsyODQsNyBAQCBDU3RyaW5nIFRleHRD
b2RlY01hYzo6ZW5jb2RlKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoLCBV
bmVuY29kYWJsZQogICAgIC8vIEVuY29kaW5nIHdpbGwgY2hhbmdlIHRoZSB5ZW4gc2lnbiBiYWNr
IGludG8gYSBiYWNrc2xhc2guCiAgICAgU3RyaW5nIGNvcHkoY2hhcmFjdGVycywgbGVuZ3RoKTsK
ICAgICBjb3B5LnJlcGxhY2UoJ1xcJywgbV9iYWNrc2xhc2hBc0N1cnJlbmN5U3ltYm9sKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmcyhBZG9wdENGLCBjb3B5LmNyZWF0ZUNGU3RyaW5n
KCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZzID0gY29weS5jcmVhdGVDRlN0cmlu
ZygpOwogCiAgICAgQ0ZJbmRleCBzdGFydFBvcyA9IDA7CiAgICAgQ0ZJbmRleCBjaGFyYWN0ZXJz
TGVmdCA9IENGU3RyaW5nR2V0TGVuZ3RoKGNmcy5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4uY3BwCmluZGV4IGE1Y2E5Yjc0NDY5
MmYyODdmMjNmMzQ4MTUwYjA4ZjY1ZTFmZjk1ZmUuLmJmYzA4N2JlOWYxOTJjYmUxNDNkN2E2ZDE5
NjQyNGEzZGUyNTg4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
ZWFyY2hQb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
ZWFyY2hQb3B1cE1lbnVXaW4uY3BwCkBAIC01Miw3ICs1Miw3IEBAIGJvb2wgU2VhcmNoUG9wdXBN
ZW51V2luOjplbmFibGVkKCkKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZl
S2V5KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBTdHJpbmcga2V5ID0gImNvbS5hcHBsZS5X
ZWJLaXQuc2VhcmNoRmllbGQ6IiArIG5hbWU7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4oQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiBrZXkuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIH0KICNlbmRpZgogCkBAIC02NywxMCArNjcsOCBAQCB2b2lkIFNlYXJj
aFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdAogICAgIHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpOwogICAg
IGlmIChzaXplKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
MCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBpdGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAg
ICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
ICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVl
KGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJy
ZW50QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCA4Mzc0N2YyMjM1NTZhNmFjMmFh
MTY4OWRmZGZhYzFmMWVmMTdjNDc3Li4zMzdkYWNhYjJmNzEyYzk4NmYwZjU3MjI5NmE3ODA1NjJj
MzE0YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNjMsMTUgKzYzLDE0IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yU3RhcnRzQXR0YWNo
ZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIjsKIAotc3RhdGljIGlubGluZSBD
RlN0cmluZ1JlZiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKK3N0
YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNl
cyhjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleUNG
U3RyaW5nKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gQ0ZTdHJp
bmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQgV2ViIEluc3BlY3RvciBTZXR0
aW5nIC0gJUAiKSwga2V5Q0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdlYiBJbnNwZWN0b3IgU2V0
dGluZyAtICVAIiksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBzZXR0aW5nKQog
ewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3Jl
YXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBw
cmVmZXJlbmNlc0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSk7CiAgICAgUmV0YWlu
UHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZShBZG9wdENGLCBDRlByZWZlcmVuY2VzQ29weUFw
cFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNh
dGlvbikpOwogCiAgICAgaWYgKCF2YWx1ZSkKQEAgLTg4LDEyICs4Nyw3IEBAIHN0YXRpYyB2b2lk
IHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBzZXR0aW5nKQogCiBz
dGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
c2V0dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IG9iamVjdFRvU3Rv
cmU7Ci0gICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKHNldHRpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgQVNTRVJUKG9iamVjdFRvU3RvcmUpOwotCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsK
LSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIG9iamVj
dFRvU3RvcmUuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKKyAgICBD
RlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KS5nZXQo
KSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRB
cHBsaWNhdGlvbik7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRv
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDBl
NGIxMDY1Njk4MjVkZDc0ZDc0ZGIyNzc2ZWNjNmQ5MjFlYThkYWEuLjVmMjgzNTA0YzVkNjY4MjE4
NjQ4OTBjZTQ0NWM4MmNmMDBmMTI2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTc5MiwyNCAr
NzkyLDIwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3Rh
cnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgICAgIEtVUkwgcGx1Z2luUGFn
ZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkpOwogICAgICAgICBpZiAo
cGx1Z2luUGFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgICAgIHN0
YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZT
dHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5KTsKLSAgICAgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIHBsdWdpblBhZ2VVUkwuc3RyaW5n
KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwga2V5LCBzdHIuZ2V0KCkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghcGx1Z2lu
Vmlldy0+bWltZVR5cGUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYg
a2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVy
cm9yTUlNRVR5cGVLZXkpOwotCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFk
b3B0Q0YsIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHN0ci5nZXQoKSk7Cisg
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblZp
ZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYg
KHBsdWdpblZpZXctPnBsdWdpbigpKSB7CiAgICAgICAgIFN0cmluZyBwbHVnaW5OYW1lID0gcGx1
Z2luVmlldy0+cGx1Z2luKCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzTnVs
bCgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdI
ZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7
Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cihBZG9wdENGLCBwbHVnaW5O
YW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
dXNlckluZm8uZ2V0KCksIGtleSwgc3RyLmdldCgpKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFz
ZU1hbmFnZXIuY3BwCmluZGV4IDZlNjg3ZjE5MzRhZjgwNGJkZjk0OTlkZWZmNjFlNzdmNTM1Y2Ni
MjAuLjE1ODcyZTM0ZjlhNTQ0NTBhZjNiNDQ5ZjgyY2RmMGIyYWZiZWI0NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtNDAxLDggKzQwMSw3IEBAIHZvaWQg
V2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4sIGNvbnN0CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+
IHVzZXJJbmZvKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5
cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNr
cykpOwogCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRhdGFiYXNlTmFtZUtleSA9IE1hcnNoYWxs
aW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJEYXRhYmFzZU5hbWVLZXkpOwot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIGRhdGFiYXNlTmFtZS5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwg
ZGF0YWJhc2VOYW1lS2V5LCBzdHIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVz
ZXJJbmZvLmdldCgpLCBkYXRhYmFzZU5hbWVLZXksIGRhdGFiYXNlTmFtZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlcklu
Zm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsKICAgICB1
c2VySW5mb0JhZy0+c2V0RGljdGlvbmFyeSh1c2VySW5mby5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhp
c3RvcnkuY3BwCmluZGV4IDFmN2E1NzJjMzQ0NWQ3Y2JjNTc2M2FmOWQ5MWI5ZWRkNzg5NTEwOWYu
LmE3MzEwYjgwYjBkNDM0NDA0Zjk4NThkYzhkYjU1YzkzZjFhNTg5NGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykhpc3RvcnkuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjphZGRJ
dGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnksIGJvb2wgZGlzY2FyZER1cGxpY2F0ZSwgYm9vbCoK
IAogdm9pZCBXZWJIaXN0b3J5Ojp2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJv
b2wgaW5jcmVhc2VWaXNpdENvdW50KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJs
U3RyaW5nKEFkb3B0Q0YsIHVybC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyA9IHVybC5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpOwogCi0gICAgSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSA9IChJV2ViSGlzdG9yeUl0ZW0qKSBD
RkRpY3Rpb25hcnlHZXRWYWx1ZShtX2VudHJpZXNCeVVSTC5nZXQoKSwgdXJsU3RyaW5nLmdldCgp
KTsKKyAgICBJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5ID0gKElXZWJIaXN0b3J5SXRlbSopQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUobV9lbnRyaWVzQnlVUkwuZ2V0KCksIHVybFN0cmluZy5nZXQoKSk7CiAg
ICAgaWYgKGVudHJ5KSB7CiAgICAgICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW1Qcml2YXRlPiBl
bnRyeVByaXZhdGUoUXVlcnksIGVudHJ5KTsKICAgICAgICAgaWYgKCFlbnRyeVByaXZhdGUpCkBA
IC03ODYsMTEgKzc4NiwxMCBAQCBIUkVTVUxUIFdlYkhpc3Rvcnk6OnJlbW92ZUl0ZW1Gb3JVUkxT
dHJpbmcoQ0ZTdHJpbmdSZWYgdXJsU3RyaW5nKQogCiBDT01QdHI8SVdlYkhpc3RvcnlJdGVtPiBX
ZWJIaXN0b3J5OjppdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25z
dAogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0ZTdHJpbmcoQWRvcHRDRiwgdXJs
U3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghdXJsQ0ZTdHJpbmcpCisgICAgaWYg
KCF1cmxTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0
ZW0+IGl0ZW07Ci0gICAgaWYgKEZBSUxFRChpdGVtRm9yVVJMU3RyaW5nKHVybENGU3RyaW5nLmdl
dCgpLCAmaXRlbSkpKQorICAgIGlmIChGQUlMRUQoaXRlbUZvclVSTFN0cmluZyh1cmxTdHJpbmcu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgJml0ZW0pKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
cmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5
SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggYTI2
NDMwODlkY2Q3OWQ4MjQyNTIwMTk2MjEzMjdmY2E5ZjgyZDk4Mi4uOGJmZTliZDdjMDc3Y2NmYmU4
YjA3YWI1OTFhYzM5NzA2NTI0MzIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
SGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNw
cApAQCAtMjE0LDcgKzIxNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9y
eUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiogZGljdGlvCiAKICAgICBpZiAo
IW1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmlzRW1wdHkoKSkgewogICAgICAgICBrZXlzW2tl
eUNvdW50XSA9IHVybEtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5
SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgdmFsdWVzW2tleUNv
dW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFr
UmVmKCk7CiAgICAgfQogCiAgICAga2V5c1trZXlDb3VudF0gPSBsYXN0VmlzaXRlZERhdGVLZXk7
CkBAIC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5
SXRlbTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0aW8KIAogICAgIGlmICgh
bV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAga2V5c1trZXlDb3Vu
dF0gPSB0aXRsZUtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRl
bS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICB2YWx1ZXNba2V5Q291bnQrK10g
PSBtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAg
IH0KIAogICAgIGtleXNba2V5Q291bnRdID0gdmlzaXRDb3VudEtleTsKQEAgLTI0NSw3ICsyNDUs
NyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9uYXJ5
UmVwcmVzZW50YXRpb24odm9pZCoqIGRpY3RpbwogICAgICAgICBBU1NFUlQoc2l6ZSk7CiAgICAg
ICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IG5ldyBDRlN0cmluZ1JlZltzaXplXTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBpdGVtc1tpXSA9
IHJlZGlyZWN0VVJMcy0+YXQoaSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIGl0ZW1z
W2ldID0gcmVkaXJlY3RVUkxzLT5hdChpKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAg
ICAgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiop
aXRlbXMsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgIENGUmVsZWFzZShpdGVtc1tpXSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRleCAyNWQ3ZWMwOWI5ODYxZTQ0
MzQ5MWUzNDZkNTBkNGUyMmM3NzFiODQ1Li4wNWE5NDkwOGE4ODg0MTJiMTVkMzk0NjNkMTM5Mjlh
OTE2NzQ5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFzZS5jcHAKQEAgLTM2Niw3
ICszNjYsNyBAQCBCU1RSIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkQWRkSWNvbk5v
dGlmaWNhdGlvbigpCiAKIENGU3RyaW5nUmVmIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNl
Tm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBp
Y29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJbmZvVVJM
S2V5KS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBpY29uVXNlcklu
Zm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KS5jcmVh
dGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gaWNvblVzZXJJbmZvVVJMS2V5Owog
fQogCkBAIC0zODcsOCArMzg3LDcgQEAgc3RhdGljIHZvaWQgcG9zdERpZEFkZEljb25Ob3RpZmlj
YXRpb24oY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBXZWJJY29uRGF0YWJhc2UqIGkKICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENGLCAKICAgICBD
RkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxC
YWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXJsKEFkb3B0Q0YsIHBhZ2VVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgV2ViSWNvbkRhdGFiYXNl
OjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgpLCB1cmwuZ2V0KCkpOwor
ICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIFdlYkljb25EYXRhYmFz
ZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKSwgcGFnZVVSTC5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zz4gdXNlckluZm8gPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsK
ICAgICB1c2VySW5mby0+c2V0RGljdGlvbmFyeShkaWN0aW9uYXJ5LmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGZkNjFhMDFmYmFmMGVj
YTcxNDQ2M2JiMWQ1NzBjZmZhNDFiNzY1OGQuLmRmYjcxNGI0NjUwNjFhYjIwMzUyYmEzZDc1Nzc0
ZmJlZmFmMjdkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxl
U3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdz
LmNwcApAQCAtMTMyLDEyICsxMzIsMTAgQEAgc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktp
dEJ1bmRsZSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3RyaW5nIGJ1bmRsZVBhdGhTdHJp
bmcocGF0aFN0cik7Ci0gICAgQ0ZTdHJpbmdSZWYgYnVuZGxlUGF0aENGU3RyaW5nID0gYnVuZGxl
UGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpOwotICAgIGlmICghYnVuZGxlUGF0aENGU3RyaW5n
KQorICAgIGlmICghYnVuZGxlUGF0aFN0cmluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBD
RlVSTFJlZiBidW5kbGVVUkxSZWYgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBi
dW5kbGVQYXRoQ0ZTdHJpbmcsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIHRydWUpOwotICAgIENG
UmVsZWFzZShidW5kbGVQYXRoQ0ZTdHJpbmcpOworICAgIENGVVJMUmVmIGJ1bmRsZVVSTFJlZiA9
IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSk7CiAgICAgaWYg
KCFidW5kbGVVUkxSZWYpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjgsOCArMTY2LDcgQEAg
c3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxlKFdlYkxvY2Fs
aXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJu
IG5vdEZvdW5kOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJpbmcoQWRvcHRD
Riwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGU3RyaW5nUmVmIHJlc3VsdCA9IENGQ29w
eUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5nLmdldCgpLCAwLCBidW5k
bGUsIG5vdEZvdW5kLCAwKTsKKyAgICBDRlN0cmluZ1JlZiByZXN1bHQgPSBDRkNvcHlMb2NhbGl6
ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBi
dW5kbGUsIG5vdEZvdW5kLCAwKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9
IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRs
ZSIsIGtleSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcAppbmRleCA1NjM0YTE1YjNlZDNlMDFjMjYwNGE1YmUyNjAxMzcxMWZkY2NkYzMzLi44OTY3
YjBiMzBhZTRkNDIzMzU4YjlmY2U2ZjU4MzE5MWM5NmMwYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
UHJlZmVyZW5jZXMuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6
aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENG
U1RSKCIxMyIpKTsKIAogICAgIFN0cmluZyBkZWZhdWx0RGVmYXVsdEVuY29kaW5nKFdFQl9VSV9T
VFJJTkcoIklTTy04ODU5LTEiLCAiVGhlIGRlZmF1bHQsIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29k
aW5nIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRE
ZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29k
aW5nLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZh
dWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxl
ZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGljdGlvbmFyeUFkZFZh
bHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9uUHJlZmVyZW5j
ZUtleSksIENGU1RSKCIiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDZiMWJhZGU0YWFmMmU5
NWEyMDRmOTJhMjZkNGFiMDI0MGEyNzI4MzguLjNhMWI3NGUyMTM1MWZhZGE2ZDQxYWNkZjg5ZjI1
NGE4M2FhY2I2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC00NzEsNyArNDcxLDcgQEAgdm9p
ZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxDYWNoZShBZG9wdENGLCBDRlVSTENhY2hlQ29w
eVNoYXJlZFVSTENhY2hlKCkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2Z1cmxDYWNo
ZURpcmVjdG9yeShBZG9wdENGLCB3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoMCkpOwog
ICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9y
eS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6
bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAog
ICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNh
c2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5
IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC00NzEyLDggKzQ3MTIsNyBAQCBIUkVTVUxUIFdl
YlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24pCiAgICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICAgICAgcmV0dXJuIGhyOwog
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIHRvU3Ry
aW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4g
dXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
cmxTdHJpbmcuZ2V0KCksIDApKTsKKyAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRv
cHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRvU3RyaW5n
KHN0cikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogCiAgICAgICAgIC8vIENoZWNrIGlm
IHRoZSBwYXNzZWQgaW4gc3RyaW5nIGlzIGEgcGF0aCBhbmQgY29udmVydCBpdCB0byBhIFVSTC4K
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBuaWdodGx5IGJ1aWxk
cyB1bnRpbCB3ZSBjYW4gZ2V0IFNhZmFyaSB0byBwYXNzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L21hYy9Nb2R1bGVNYWMubW0KaW5kZXggNGEzNWI2YTJkOGEzMmM1ZGQ4MzQ5NzJjZDJmZGYyYWRj
MzkxZTYxYS4uMzY4NzUzMTUxNzIxOGRhMjllOWNkZGRhNDIzMmEzYjEyODI1MzMxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCkBAIC0zMCwxMiArMzAsMTEgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgbV9wYXRoLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0YsIENGVVJMQ3Jl
YXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVBhdGguZ2V0
KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9T
SVhQYXRoU3R5bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVVUkwpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENG
QnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAg
IFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZTdkNTgzMWY2MDhjMzgzMGUz
YzliZTE0YjM5NDY1ZWIyYzcxYzNiLi42NzFmMjBkNmRjYWJlMWZjMWJhMzk1NTdkNWU2MjhlZTdl
ZDdlZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVn
aW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1Bs
dWdpblByb2Nlc3NNYWMubW0KQEAgLTI3OSw4ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFs
aXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmluZyYgc2FuZGJv
eFBybwogICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGx1Z2luUGF0aCA9
IGFkb3B0Q0YocGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgo
MCwgY2ZQbHVnaW5QYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZV
UkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVSTCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0yOTIsOCArMjkxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRi
b3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KICAg
ICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gY2ZTYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGggPSBhZG9wdENGKHNh
bmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENyZWF0
ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5nZXQo
KSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lz
dGVtUGF0aCgwLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKIAogICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAs
IENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlmaWVyKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoUmVs
YXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1lLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5LmdldCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5N
b2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggODFiMzhlMGVjOGZlM2M0MTg4OTc5ZWVm
ZDA2MjI3YjM3MGZkNGEzZS4uM2RjMzc3YzQ0NTBkODhmZTI1ZjcwMmIwZmE1NDNhMzhlMjhmNmMx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFj
L05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQpAQCAtMzUyLDEx
ICszNTIsMTAgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21DYXJib25SZXNvdXJjZXMo
Q0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmYKIAogYm9vbCBOZXRzY2FwZVBsdWdp
bk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1v
ZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBh
dGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhT
dHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTCA9IGFkb3B0
Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1
Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFs
c2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlhbGl6ZSB0aGUgYnVuZGxlLgotICAgIFJl
dGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRs
ZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIApAQCAtMzk1LDExICszOTQsOSBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxl
OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSQog
CiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJl
bmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0aC5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5k
bGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQ
YXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCi0gICAgLy8gVHJ5IHRvIGluaXRpYWxpemUgdGhlIGJ1
bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShBZG9wdENGLCBDRkJ1bmRs
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYgKCFidW5kbGUpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
Zi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggY2RmZjM0NDY5YTIzOTNkMzVhZGJhYmM0
Y2IwYTM4YmEwZjU2MjMyNC4uN2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1NGM1OGFiM2E0OGEyYjRi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJk
TGlzdENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0Zvcndh
cmRMaXN0Q0YuY3BwCkBAIC05NCw5ICs5NCw5IEBAIENGRGljdGlvbmFyeVJlZiBXZWJCYWNrRm9y
d2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1cmwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT51cmwoKS5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZShBZG9wdENG
LCBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxVUkwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT5vcmln
aW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHVybCA9IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZSA9IG1fZW50cmllc1tpXS0+dGl0bGUoKS5jcmVh
dGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsVVJM
ID0gbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICAg
ICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgQ29yZUlQQyBkYXRhIGVuY29kaW5nIGZvcm1hdCwg
d2hpY2ggbWVhbnMgdGhhdCB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIENvcmVJUEMgZW5jb2Rpbmcg
d2UgbmVlZCB0byBidW1wIHRoZSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNpb24KICAgICAg
ICAgLy8gY29uc3RhbnQgaW4gV2ViUGFnZVByb3h5Q0YuY3BwLiBUaGUgQ29yZUlQQyBkYXRhIGZv
cm1hdCBpcyBtZWFudCB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFuZCBub3Qgc29t
ZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gZGlzay4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCmluZGV4IDc5ZGQ4Y2VkMDJkN2NlMGQ0
ZjNjMjQwNDgxOGI4MDFiZTQwZjFmN2EuLmZhYzAyYzFiNDY5MGYxMjM2ZTlhYTc4ZGFjYTQ5MmIx
YzQyNjNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdl
UHJveHlDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94
eUNGLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYXNzUmVmUHRyPFdlYkRhdGE+IFdlYlBhZ2VQcm94
eTo6c2Vzc2lvblN0YXRlRGF0YShXZWJQYWdlUHJveHlTZXNzaW9uU3RhdGVGaWx0ZQogICAgICAg
ICBpZiAocHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgcHJvdmlzaW9uYWxV
UkwgPSBtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKICAgICAgICAgaWYgKCFwcm92aXNp
b25hbFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHByb3Zpc2lvbmFsVVJMU3RyaW5nLmFk
b3B0Q0YocHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgICAgICBwcm92
aXNpb25hbFVSTFN0cmluZyA9IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAg
ICAgICAgICBrZXlzW251bVZhbHVlc10gPSBQcm92aXNpb25hbFVSTEtleSgpOwogICAgICAgICAg
ICAgdmFsdWVzW251bVZhbHVlc10gPSBwcm92aXNpb25hbFVSTFN0cmluZy5nZXQoKTsKICAgICAg
ICAgICAgICsrbnVtVmFsdWVzOwpAQCAtMTc5LDggKzE3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSogd2ViRGF0YSkKIAogc3RhdGlj
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFt
ZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRl
Q0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hG
aWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBzZWFyY2hJdGVtcykKQEAgLTE5MiwxMCArMTkxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JgogCiAgICAgaWYgKHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpKSB7CiAgICAg
ICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0YsIHNl
YXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUp
LmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJl
c291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3Vy
Y2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggNjgxMGYwYWJkYjlkYmVi
YTk5ZmEzZTFlOWIwZjA2Y2U0NWFlMDQ5NC4uMzk1NjQ5YzUwYmY0ZDZkZjA0YmM3NTQwYjU0YmFm
NTlkYjJjMzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJj
ZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCkBAIC0x
MTgsOCArMTE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Y2xlYXJDYWNoZUZv
ck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwKICNpZiBVU0UoQ0ZVUkxDQUNI
RSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9IEluTWVtb3J5UmVzb3VyY2VDYWNo
ZXNPbmx5KSB7IAogICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGhvc3RBcnJh
eShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJh
Y2tzKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdChBZG9wdENGLCBvcmln
aW4tPmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVl
KGhvc3RBcnJheS5nZXQoKSwgaG9zdC5nZXQoKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1
ZShob3N0QXJyYXkuZ2V0KCksIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogCiAgICAgICAgIGNsZWFyQ0ZVUkxDYWNoZUZvckhvc3ROYW1lcyhob3N0QXJyYXkuZ2V0KCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93
aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2lu
L1dlYlBhZ2VXaW4uY3BwCmluZGV4IDYyOTRmMDBkODhkZGEwNGJlNTI0MTA3YzZiZjY1OWJjOWU3
MzBiYzQuLmM2ZjViNjc4MTJjMzMwZTQxNzE2ZTE1OGIxNGZhMTg1Y2E0ODUyYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNw
cApAQCAtMjcwLDggKzI3MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZj4gY2FjaGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFnZSwKICAgICB3a1NldFJl
cXVlc3RTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFN0b3JhZ2VTZXNzaW9u
KCksIHJlcXVlc3QuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHVzZXJBZ2VudChBZG9wdENGLCB3ZWJQYWdlLT51c2VyQWdlbnQoKS5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmdldCgp
LCBDRlNUUigiVXNlci1BZ2VudCIpLCB1c2VyQWdlbnQuZ2V0KCkpOworICAgIENGVVJMUmVxdWVz
dFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZ2V0KCksIENGU1RSKCJVc2VyLUFnZW50
IiksIHdlYlBhZ2UtPnVzZXJBZ2VudCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAg
UmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNhY2hlOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNT
SU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nl
c3NXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5j
cHAKaW5kZXggMjVkYmMzNmM0OTliZjM5NDY5MzRiNGUxMmU2NTYyMzBhZDliYjE5Mi4uZGE0YjU2
ZGM4ODZjM2JhYmFkNzczN2Q4N2Q4ZTc0NzQ5MWM5ZWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVs
KQogICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5LmFkb3B0Q0Yod2tDb3B5Rm91bmRhdGlvbkNh
Y2hlRGlyZWN0b3J5KDApKTsKIAogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAgICAg
ICAgY2Z1cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmlj
U3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENhY2hl
RGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCku
Y3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBp
bnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291bnQg
ZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC0xNDgsMTMg
KzE0OCwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3Mo
Y29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogICAgIGlmIChkZWZhdWx0U3RvcmFn
ZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2FjaGVQYXRoKEFkb3B0Q0YsIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIGlmICghY2FjaGVQYXRoKQorICAgIGlmICghcGFyYW1ldGVycy5kaXNr
Q2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENGSW5kZXggY2FjaGVEaXNr
Q2FwYWNpdHkgPSBwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAgICAgQ0ZJbmRl
eCBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gcGFyYW1ldGVycy5jZlVSTENhY2hlTWVtb3J5Q2FwYWNp
dHk7Ci0gICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHVpUHJvY2Vzc0NhY2hlKEFkb3B0Q0Ys
IENGVVJMQ2FjaGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2FjaGVNZW1vcnlDYXBhY2l0
eSwgY2FjaGVEaXNrQ2FwYWNpdHksIGNhY2hlUGF0aC5nZXQoKSkpOworICAgIFJldGFpblB0cjxD
RlVSTENhY2hlUmVmPiB1aVByb2Nlc3NDYWNoZShBZG9wdENGLCBDRlVSTENhY2hlQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGNhY2hlTWVtb3J5Q2FwYWNpdHksIGNhY2hlRGlza0NhcGFjaXR5
LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7
CiAgICAgQ0ZVUkxDYWNoZVNldFNoYXJlZFVSTENhY2hlKHVpUHJvY2Vzc0NhY2hlLmdldCgpKTsK
ICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYyOWIxYTdmNmQyNDM5YjBjMzQ4YWFkNjI4NWExYjg4
ZTdkNTQwZjkuLjFlYjdmMWNmMjUyY2U2ZWYxNTdlN2Q2ZTg1YjdkMzUyMTBhNjhmYmUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0xMC0yNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRl
IGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbToKKyAg
ICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUpOgorCiAyMDEyLTEwLTI2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggd2hlbiBtYWtpbmcgTlBSdW50aW1lIGNhbGxz
IHdpdGggYSBudWxsIE5QUCBwb2ludGVyCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0gYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMu
bW0KaW5kZXggNDZjMjczZjFmOGNhNDBhZWUyN2M5NDc2YzgxZmU3Mzk0YzMzYmIyNC4uYjBjYjRl
MDMxY2I3NDQ2MjhjMGJjMzRkNTdkMTc2YjY4N2FmMTM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVk
QnVuZGxlUGFnZU1hYy5tbQpAQCAtODUsOCArODUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFn
ZTo6cGxhdGZvcm1EaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVS
ZQogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
TGl0ZXJhbCgiQ1JBU0hJTkcgVEVTVDogIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3RQ
YXRoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyhBZG9wdENGLCBi
dWlsZGVyLnRvU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFdLU2V0Q3Jhc2hS
ZXBvcnRBcHBsaWNhdGlvblNwZWNpZmljSW5mb3JtYXRpb24oY2ZTdHJpbmcuZ2V0KCkpOworICAg
ICAgICBXS1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGJ1aWxk
ZXIudG9TdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171344</attachid>
            <date>2012-10-29 17:20:40 -0700</date>
            <delta_ts>2012-10-29 17:33:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121029171907.patch</filename>
            <type>text/plain</type>
            <size>81087</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGU4YjQ5NjdiN2U2MmU2Yzk2MTViMGVm
MjhlYmNjY2Q1MmViMTgwNGMuLjdhYzJjOGYxMmQ5Y2ZjMzEwMWRkODM4M2U1MWM2OTNiMzkyYjY0
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMTItMTAtMjYgIFNoZXJpZmYgQm90ICA8d2Vi
a2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMzI2ODkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjRhZWM0ZTZlZWY4YzQyNTA5MTIyZDdkYjA2OTQz
ZDdjNjIwOTIyOC4uMDliMTc4YzUzODVhMDFkZDQ4ZWJiYTdjYThhYjI4ZGY3MDdhMDQ3NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisyMDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxh
bmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91
bGQgcmV0dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgor
CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpC
aW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09iamVjdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZpbGVVUkxGb3JBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdl
YkFyY2hpdmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRl
UHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6
CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5LZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAgICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlv
bkNoZWNrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25X
aW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldp
bi5jcHA6CisgICAgICAgIChyZXN1Ym1pdEFsbEFuaW1hdGlvbnMpOgorICAgICAgICAoUGxhdGZv
cm1DQUxheWVyOjphZGRBbmltYXRpb25Gb3JLZXkpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVy
OjpyZW1vdmVBbmltYXRpb25Gb3JLZXkpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXRO
YW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVy
V2luSW50ZXJuYWwuY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVw
ZGF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0aUZyb21NSU1FVHlwZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
Ok1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJl
ZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0Ns
aXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJv
YXJkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp1dGlUeXBlRnJvbUNvY29hVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVDRik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRDb29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1
ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlRXJyb3JDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpjZkVycm9y
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0RGVmYXVsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
c291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNldEhlYWRlckZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6
OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlOjpjZlVSTFJlc3BvbnNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZTo6Y3JlYXRlU3RyZWFtcyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRT
dHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3Jl
OjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2Nm
L0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6OjpjcmVhdGVWYWx1ZUZvcktl
eSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHA6CisgICAgICAgIChX
VEY6OlN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2Yv
U3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJp
bmcpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW06CisgICAg
ICAgIChXVEY6OlN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICopOgorICAgICAgICAqIHBs
YXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q29kZWNNYWM6OmVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVu
dVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjphdXRvc2F2ZUtleSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyk6CisKIDIwMTItMTAt
MjYgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJbXBsZW1l
bnQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlIC5sb29wU3RhcnQgYW5kIC5sb29wRW5kIGF0dHJpYnV0
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jZi9DaGFuZ2VMb2cKaW5kZXggNTg2M2U5MmY0ZmZiZWU0MGYyNGVlZjk1MmIzYTA3NTA3ZDQy
ZWNjNS4uMWIxNzdkNzk2ZTc4ZTg1Yzc4ZWJhMzRkNDI4ZjYzOTYzYzMwYjM3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jZi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxk
IHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKyAgICAg
ICAgKGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKToKKyAgICAgICAgKHBvcHVsYXRlU2V0dGluZyk6
CisgICAgICAgIChzdG9yZVNldHRpbmcpOgorCiAyMDEyLTA5LTA1ICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFydCAyIG9mIHJlbW92aW5nIFBsYXRmb3JtU3RyaW5n
LmgsIHJlbW92ZSBQbGF0Zm9ybVN0cmluZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggMTFkNTBiMTc3
ZGFmNmUyMGY3YWFhZGIxM2IxMjVlZTVjZDk1MDBlMy4uZWVmZWM1MWZmZTQzYTJlNzE1YmFmODJk
OWEwN2FkZTIyNmM4YjhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEy
LTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAg
U3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEgUmV0YWluUHRyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0MTkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbGVycyBv
ZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4pOgorICAgICAgICAqIFdlYkRhdGFiYXNlTWFuYWdl
ci5jcHA6CisgICAgICAgIChXZWJEYXRhYmFzZU1hbmFnZXI6OmRpc3BhdGNoRGlkTW9kaWZ5RGF0
YWJhc2UpOgorICAgICAgICAqIFdlYkhpc3RvcnkuY3BwOgorICAgICAgICAoV2ViSGlzdG9yeTo6
dmlzaXRlZFVSTCk6CisgICAgICAgIChXZWJIaXN0b3J5OjppdGVtRm9yVVJMU3RyaW5nKToKKyAg
ICAgICAgKiBXZWJIaXN0b3J5SXRlbS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5SXRlbTo6ZGlj
dGlvbmFyeVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBXZWJJY29uRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5m
b1VSTEtleSk6CisgICAgICAgIChwb3N0RGlkQWRkSWNvbk5vdGlmaWNhdGlvbik6CisgICAgICAg
ICogV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcDoKKyAgICAgICAgKGNyZWF0ZVdlYktpdEJ1bmRs
ZSk6CisgICAgICAgIChjb3B5TG9jYWxpemVkU3RyaW5nRnJvbUJ1bmRsZSk6CisgICAgICAgICog
V2ViUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVE
ZWZhdWx0U2V0dGluZ3MpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6c2V0Q2FjaGVNb2RlbCk6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0No
YW5nZWQpOgorCiAyMDEyLTEwLTI0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBBZGQgYSBzdHJhdGVneSBmb3IgbG9hZGVyIGN1c3RvbWl6YXRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMWY4OWJmYjE3NGU5ZjE5MmFkYjE5ZWRiMGI2YThiMDZhNmM3MjEwOS4uYzI0ZTFj
MzZjMTNjNWNkY2QyMTljNGM2OTZkNmZiMjQyZTNlNjMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMzIEBACisyMDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEgUmV0YWlu
UHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0
MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRh
dGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICogUGxhdGZv
cm0vbWFjL01vZHVsZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TW9kdWxlOjpsb2FkKToKKyAg
ICAgICAgKiBQbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tOgorICAgICAgICAo
V2ViS2l0Ojppbml0aWFsaXplU2FuZGJveCk6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJlbmNlcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVDRkRpY3Rpb25hcnlSZXByZXNlbnRh
dGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6YXV0b3NhdmVLZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVS
ZWNlbnRTZWFyY2hlcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJl
c291cmNlQ2FjaGVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VDYWNo
ZU1hbmFnZXI6OmNsZWFyQ2FjaGVGb3JPcmlnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS93aW4vV2ViUGFnZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNhY2hlZFJlc3BvbnNl
Rm9yVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3dpbi9XZWJQcm9jZXNzV2luLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisK
IDIwMTItMTAtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IENyYXNoIGluIFdlYlByb2NlcyBhdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmNy
b3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZCArIDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJpbmcu
aAppbmRleCA2YWM2MGU2YWQ1NzI0MzM5NzhmNWZiNGI0ODgwYTlmYjQwMTA1YzY2Li42NDEwOTIx
ZDhkNzAzNGIxZmEwMGJlMzkyYTI0OTVlYzRkMzk3MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWlj
U3RyaW5nLmgKQEAgLTEzOSw3ICsxMzksNiBAQCBwdWJsaWM6CiAgICAgCiAjaWYgVVNFKENGKQog
ICAgIEF0b21pY1N0cmluZyhDRlN0cmluZ1JlZiBzKSA6ICBtX3N0cmluZyhhZGQoU3RyaW5nKHMp
LmltcGwoKSkpIHsgfQotICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKTsgfQogI2VuZGlmICAgIAogI2lmZGVmIF9f
T0JKQ19fCiAgICAgQXRvbWljU3RyaW5nKE5TU3RyaW5nKiBzKSA6IG1fc3RyaW5nKGFkZChTdHJp
bmcocykuaW1wbCgpKSkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDAwNjdiZWJl
ZWQ5MGZmNzQzNzMyY2RhYWY1NjBhYWY1OTIwOTg0ZWMuLjY3Njc3OTA2ZGIwMjUwM2UyMTc5NDE3
NDM5NjI0MTFmYjIzMjY1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC02Nyw2ICs2
Nyw3IEBAIHN0cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxEYXRhVHJhbnNsYXRvcjsKIGNsYXNz
IE1lbW9yeU9iamVjdEluZm87CiBzdHJ1Y3QgU3Vic3RyaW5nVHJhbnNsYXRvcjsKIHN0cnVjdCBV
Q2hhckJ1ZmZlclRyYW5zbGF0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZT4gY2xhc3MgUmV0YWluUHRy
OwogCiBlbnVtIFRleHRDYXNlU2Vuc2l0aXZpdHkgeyBUZXh0Q2FzZVNlbnNpdGl2ZSwgVGV4dENh
c2VJbnNlbnNpdGl2ZSB9OwogCkBAIC03MTMsNyArNzE0LDcgQEAgcHVibGljOgogICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBXVEY6OlVuaWNvZGU6OkRpcmVjdGlvbiBkZWZhdWx0V3JpdGluZ0Rp
cmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA9IDApOwogCiAjaWYgVVNFKENG
KQotICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjcmVhdGVDRlN0cmluZygpOwogI2VuZGlmCiAjaWZkZWYgX19PQkpDX18KICAgICBv
cGVyYXRvciBOU1N0cmluZyooKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUwYzA0OGQ2
M2YzZGNmMWM1Mzg2NTU2NmU0NzI0ZjFhODI0OGZlMDcuLmQ2N2FkMzI5OTJjMjQwZjFlNTUyZjZl
YzNlZmMwODAwOGIzYmE4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMzIsMTAgKzMy
LDYgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNlbmRpZgogCi0jaWYgVVNFKENGKQotdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaW5nUmVmOwotI2VuZGlmCi0KICNp
ZiBQTEFURk9STShRVCkKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVN0cmluZzsKQEAgLTM4
Niw3ICszODIsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0YpCiAgICAgU3RyaW5nKENGU3RyaW5n
UmVmKTsKLSAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmluZygpIGNvbnN0OworICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJpbmcoKSBjb25zdDsKICNlbmRpZgogCiAjaWZk
ZWYgX19PQkpDX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNf
cnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpp
bmRleCAyY2YwZGI1NjE4ZTM4MjBjZGY0NDY0NTU4MzQxZjY5NGY1M2QxZmEzLi5iZTI0ZmRiM2Zk
YjEzN2M4MGI2ZjBhNGZiODg3NDFhYjM0MWE0ZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdl
L29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yNDgsOCArMjQ4LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIE9iamNDbGFzcyogb2JqY0NsYXNzID0gc3RhdGljX2Nhc3Q8T2JqY0NsYXNz
Kj4ob2JqY0luc3RhbmNlLT5nZXRDbGFzcygpKTsKICAgICAgICAgT3duUHRyPE9iamNNZXRob2Q+
IGZhbGxiYWNrTWV0aG9kKGFkb3B0UHRyKG5ldyBPYmpjTWV0aG9kKG9iamNDbGFzcy0+aXNhKCks
IEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVu
dHM6KSkpKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19j
YXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1l
KCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBuYW1lSWRl
bnRpZmllci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEph
dmFTY3JpcHROYW1lKG5hbWUuZ2V0KCkpOworICAgICAgICBmYWxsYmFja01ldGhvZC0+c2V0SmF2
YVNjcmlwdE5hbWUobmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAg
ICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+aW52b2tlT2JqY01ldGhvZChleGVjLCBmYWxsYmFj
a01ldGhvZC5nZXQoKSk7CiAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA5N2ZlOTViM2E0NGQ0MTg1ZTIxMjZmNmJiNmVkYmVj
ZjQzOWZlZWVlLi43NWRmOTlhZjM2YmI2MDAyNjdiOWE3MmQ1YzkxNTg5MGM0ZGM1Y2RjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTkxNiw4ICs5MTYsNyBA
QCBzdGF0aWMgS1VSTCBjcmVhdGVGaWxlVVJMRm9yQXBwbGljYXRpb25DYWNoZVJlc291cmNlKGNv
bnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyBhcHAgY2FjaGUgbWVkaWEgZmlsZXMgYXJlIGFsd2F5
cyBjcmVhdGVkIHdpdGggZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpKS4KIAogI2lmIFVTRShDRikgJiYgUExBVEZPUk0oV0lOKQotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZQYXRoKEFkb3B0Q0YsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0
YWluUHRyPENGVVJMUmVmPiBjZlVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aCgwLCBjZlBhdGguZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7Cisg
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQ
YXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgS1VSTCB1cmwoY2ZVUkwuZ2V0KCkpOwogI2Vsc2UKICAg
ICBLVVJMIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2Nm
L0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2Yv
TGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggMzU3NmQ2NGRmYzQ4MmE0MWQ1NGUxM2VmZDE5Nzgx
NjJiNzgwN2E3Zi4uZDc3Zjg3NGIwOWRjMjAwOWJiZWQwMzUyNDE4MzViZmU4NmY4OGUzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJj
aGl2ZS5jcHAKQEAgLTkxLDggKzkxLDcgQEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVn
YWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVS
ZXNvdXJjZURhdGFLZXksIGNmRGF0YS5nZXQoKSk7CiAgICAgCiAgICAgLy8gUmVzb3VyY2UgVVJM
IGNhbm5vdCBiZSBudWxsCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlVSTChBZG9wdENG
LCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgaWYgKGNm
VVJMKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmVVJMID0gcmVzb3VyY2UtPnVy
bCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCiAgICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlVVJMS2V5LCBj
ZlVSTC5nZXQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIExPRyhBcmNoaXZlcywgIkxlZ2FjeVdl
YkFyY2hpdmUgLSBOVUxMIHJlc291cmNlIFVSTCBpcyBpbnZhbGlkIC0gcmV0dXJuaW5nIG51bGwg
cHJvcGVydHkgbGlzdCIpOwpAQCAtMTAxLDIzICsxMDAsMTcgQEAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRp
b24oQXIKIAogICAgIC8vIEZyYW1lTmFtZSBzaG91bGQgYmUgbGVmdCBvdXQgaWYgZW1wdHkgZm9y
IHN1YnJlc291cmNlcywgYnV0IGFsd2F5cyBpbmNsdWRlZCBmb3IgbWFpbiByZXNvdXJjZXMKICAg
ICBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZShyZXNvdXJjZS0+ZnJhbWVOYW1lKCkpOwotICAgIGlm
ICghZnJhbWVOYW1lLmlzRW1wdHkoKSB8fCBpc01haW5SZXNvdXJjZSkgewotICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGNmRnJhbWVOYW1lKEFkb3B0Q0YsIGZyYW1lTmFtZS5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0Lmdl
dCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VGcmFtZU5hbWVLZXksIGNmRnJhbWVOYW1lLmdl
dCgpKTsKLSAgICB9CisgICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpIHx8IGlzTWFpblJlc291
cmNlKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZUZyYW1lTmFtZUtleSwgZnJhbWVOYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogICAgIAogICAgIC8vIFNldCBNSU1FVHlwZSwgVGV4dEVuY29kaW5nTmFt
ZSwgYW5kIFJlc291cmNlUmVzcG9uc2Ugb25seSBpZiB0aGV5IGFjdHVhbGx5IGV4aXN0CiAgICAg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZShyZXNvdXJjZS0+bWltZVR5cGUoKSk7Ci0gICAgaWYgKCFt
aW1lVHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZk1J
TUVUeXBlKEFkb3B0Q0YsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNv
dXJjZU1JTUVUeXBlS2V5LCBjZk1JTUVUeXBlLmdldCgpKTsKLSAgICB9CisgICAgaWYgKCFtaW1l
VHlwZS5pc0VtcHR5KCkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlz
dC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXksIG1pbWVUeXBlLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIAogICAgIGNvbnN0IFN0cmluZyYgdGV4dEVuY29k
aW5nKHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKSk7Ci0gICAgaWYgKCF0ZXh0RW5jb2RpbmcuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZUZXh0RW5jb2Rpbmco
QWRvcHRDRiwgdGV4dEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJj
ZVRleHRFbmNvZGluZ05hbWVLZXksIGNmVGV4dEVuY29kaW5nLmdldCgpKTsKLSAgICB9CisgICAg
aWYgKCF0ZXh0RW5jb2RpbmcuaXNFbXB0eSgpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZVRleHRFbmNvZGlu
Z05hbWVLZXksIHRleHRFbmNvZGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIC8v
IERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiByZXNvdXJj
ZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggYWJmMWJjYTVlODU0MTBiYTg3ZDVjYWI4MjUwMGQ5
NjlmMTA5MjZhNy4uNjkwODQzYjEzNzc4MzQ4MjgwZWM3ZWE1YjQzNzM4OGU5ZGRjNjQxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKQEAgLTU0LDEz
ICs1NCwxMiBAQCBzdGF0aWMgU3RyaW5nIGZvcm1hdExvY2FsaXplZFN0cmluZyhTdHJpbmcgZm9y
bWF0LCAuLi4pCiAjaWYgVVNFKENGKQogICAgIHZhX2xpc3QgYXJndW1lbnRzOwogICAgIHZhX3N0
YXJ0KGFyZ3VtZW50cywgZm9ybWF0KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZvcm1h
dENGU3RyaW5nKEFkb3B0Q0YsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpKTsKIAogI2lmIENPTVBJ
TEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgogI2VuZGlmCi0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwgQ0ZTdHJpbmdDcmVhdGVXaXRoRm9y
bWF0QW5kQXJndW1lbnRzKDAsIDAsIGZvcm1hdENGU3RyaW5nLmdldCgpLCBhcmd1bWVudHMpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKDAsIDAsIGZvcm1hdC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBhcmd1bWVudHMpKTsKICNpZiBDT01QSUxFUihDTEFORykKICNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKICNlbmRpZgpAQCAtMjYwLDcgKzI1OSw3IEBAIFN0cmluZyBjb250ZXh0TWVu
dUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBzZWxlY3RlZFN0cmluZykK
ICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IiwgIkxvb2sg
VXAgaW4gRGljdGlvbmFyeSBjb250ZXh0IG1lbnUgaXRlbSIpOwogI2Vsc2UKICNpZiBVU0UoQ0Yp
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzZWxlY3RlZENGU3RyaW5nKEFkb3B0Q0YsIHRy
dW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3RyaW5nKS5jcmVhdGVDRlN0
cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0
cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykuY3JlYXRlQ0ZT
dHJpbmcoKTsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkco
Ikxvb2sgVXAg4oCcJUDigJ0iLCAiTG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVj
dGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7CiAjZWxzZQogICAgIHJldHVybiBX
RUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnDxzZWxlY3Rpb24+4oCdIiwgIkxvb2sgVXAgY29udGV4
dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIikucmVwbGFjZSgiPHNlbGVjdGlvbj4iLCB0
cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShzZWxlY3RlZFN0cmluZykpOwpAQCAtNzM4
LDggKzczNyw3IEBAIFN0cmluZyBrZXlnZW5NZW51SXRlbTIwNDgoKQogCiBTdHJpbmcga2V5Z2Vu
S2V5Y2hhaW5JdGVtTmFtZShjb25zdCBTdHJpbmcmIGhvc3QpCiB7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBob3N0Q0ZTdHJpbmcoQWRvcHRDRiwgaG9zdC5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIktleSBmcm9t
ICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRlZCBieSB0aGUgS0VZR0VOIHRhZyIp
LCBob3N0Q0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX1NUUklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJh
dGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3QuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9
CiAKICNlbmRpZgpAQCAtNzYyLDggKzc2MCw3IEBAIFN0cmluZyBpbWFnZVRpdGxlKGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAjaWYgVVNFKENGKQogI2lm
ICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDYwCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNG
U3RyaW5nKEFkb3B0Q0YsIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0
cjxDRkxvY2FsZVJlZj4gbG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ29weUN1cnJlbnQoKSk7Cisg
ICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ29weUN1
cnJlbnQoKSk7CiAgICAgUmV0YWluUHRyPENGTnVtYmVyRm9ybWF0dGVyUmVmPiBmb3JtYXR0ZXIo
QWRvcHRDRiwgQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGUoMCwgbG9jYWxlLmdldCgpLCBrQ0ZOdW1i
ZXJGb3JtYXR0ZXJEZWNpbWFsU3R5bGUpKTsKIAogICAgIGludCB3aWR0aEludCA9IHNpemUud2lk
dGgoKTsKQEAgLTc3NCw3ICs3NzEsNyBAQCBTdHJpbmcgaW1hZ2VUaXRsZShjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgIFJldGFpblB0cjxDRk51bWJlclJl
Zj4gaGVpZ2h0KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZo
ZWlnaHRJbnQpKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhlaWdodFN0cmluZyhBZG9w
dENGLCBDRk51bWJlckZvcm1hdHRlckNyZWF0ZVN0cmluZ1dpdGhOdW1iZXIoMCwgZm9ybWF0dGVy
LmdldCgpLCBoZWlnaHQuZ2V0KCkpKTsKIAotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJp
bmcoV0VCX1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEg
c3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBm
aWxlbmFtZUNGU3RyaW5nLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5nLmdl
dCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVA
ICVAw5clQCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVz
ZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgd2lkdGhTdHJpbmcuZ2V0KCksIGhlaWdodFN0cmluZy5nZXQoKSk7CiAjZWxz
ZQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZW5hbWVDRlN0cmluZyhBZG9wdENGLCBm
aWxlbmFtZS5jcmVhdGVDRlN0cmluZygpKTsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9TVFJJTkcoIiVAICVkw5clZCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBh
IHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwg
ZmlsZW5hbWVDRlN0cmluZy5nZXQoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
Y3BwCmluZGV4IDFiOGQwMDZmMjUxOWFhOGE4ZjNhOGM0NTBlZmQyNzM0MThhZjQyODQuLjczMGVk
YzE1ZmU5MWJjOTI3NzA4NWNjYzI4ODdiMDc5MDY3ODBiZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNwcApAQCAtNDYsOCAr
NDYsNyBAQCBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNFcXVhbFRvKGNvbnN0IFN0cmluZyYgYnVu
ZGxlSWRlbnRpZmllclN0cmluZykKICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlSWRlbnRp
ZmllclRvQ29tcGFyZShBZG9wdENGLCBidW5kbGVJZGVudGlmaWVyU3RyaW5nLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgIHJldHVybiBDRlN0cmluZ0NvbXBhcmUoYnVuZGxlSWRlbnRpZmllciwgYnVu
ZGxlSWRlbnRpZmllclRvQ29tcGFyZS5nZXQoKSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG87Cisg
ICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZShidW5kbGVJZGVudGlmaWVyLCBidW5kbGVJZGVudGlm
aWVyU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApID09IGtDRkNvbXBhcmVFcXVhbFRv
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYnVuZGxlSWRlbnRpZmllclN0cmluZyk7CiAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmls
ZVN5c3RlbUNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5j
cHAKaW5kZXggOGVmNTBlZWIwY2IwODRkMWI5YjIzYjg3YzNiZmE4OTgzOTJiOGEyZC4uZmZlYTkw
NThiN2EzYjJkMDJjYjgyMTA2YTgwMGQ1MjlmODkwNDU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiBwYXRoKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwg
cGF0aC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3Ry
aW5nID0gcGF0aC5jcmVhdGVDRlN0cmluZygpOwogCiAgICAgaWYgKCFjZlN0cmluZykKICAgICAg
ICAgcmV0dXJuIENTdHJpbmcoKTsKQEAgLTYzLDggKzYzLDcgQEAgUmV0YWluUHRyPENGVVJMUmVm
PiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2Vsc2UKICAgICBwYXRoU3R5bGUgPSBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZTsKICNlbmRpZgotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+KEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsCi0gICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmluZygpKS5nZXQo
KSwgcGF0aFN0eWxlLCBGQUxTRSkpOworICAgIHJldHVybiBhZG9wdENGKENGVVJMQ3JlYXRlV2l0
aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0aFN0eWxl
LCBGQUxTRSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUFuaW1hdGlvbldpbi5jcHAKaW5kZXggOTdmYjBiNjA5NDY4ZjRlZDM1YjFlMTkzOGQ5OGJiZDg5
NDIyMjU4Ni4uODU2YTRmY2FkZWQyZjBiNjI2MGY1ZTkyYmUxMTQ1ZGMxMmE1Yzg0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcApAQCAtMTUxLDggKzE1MSw3IEBAIFBsYXRm
b3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24oQW5pbWF0aW9uVHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIGtleVBhCiAgICAgZWxzZQogICAgICAgICBtX2FuaW1hdGlvbi5hZG9wdENG
KENBQ0ZBbmltYXRpb25DcmVhdGUoa0NBQ0ZLZXlmcmFtZUFuaW1hdGlvbikpOwogICAgIAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXlQYXRoLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0aW9uLmdldCgpLCBzLmdl
dCgpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0S2V5UGF0aChtX2FuaW1hdGlvbi5nZXQoKSwga2V5
UGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogUGxhdGZvcm1DQUFuaW1hdGlvbjo6
UGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1hdGlvblJlZiBhbmltYXRpb24pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1D
QUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9Q
bGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDcwMTY4YjIxMDRkYjM2OWRhMDc1N2ExMTQ0NjIy
MTExYmMzMDYxZjAuLmRkNjE2MzM3ZTkzNjZlYjc5Yzk2YzY3MmI3MzkzYjY5MjQzNmZjNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNzYsMTAgKzE3Niw4IEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyOjphbmltYXRpb25TdGFydGVkKENGVGltZUludGVydmFsIGJlZ2luVGltZSkK
IHN0YXRpYyB2b2lkIHJlc3VibWl0QWxsQW5pbWF0aW9ucyhQbGF0Zm9ybUNBTGF5ZXIqIGxheWVy
KQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXItPmFuaW1hdGlvbnMoKS5lbmQoKTsKLSAgICBmb3Ig
KEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgaXQtPmtleS5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKGxheWVyLT5wbGF0
Zm9ybUxheWVyKCksIHMuZ2V0KCksIGl0LT52YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSk7Ci0g
ICAgfQorICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRpb25zKCkuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQorICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKSwgaXQtPmtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBpdC0+dmFsdWUtPnBs
YXRmb3JtQW5pbWF0aW9uKCkpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6ZW5zdXJlQW5p
bWF0aW9uc1N1Ym1pdHRlZCgpCkBAIC0yOTcsOCArMjk1LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5
ZXI6OmFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1h
dGlvbioKICAgICAvLyBBZGQgaXQgdG8gdGhlIGFuaW1hdGlvbiBsaXN0CiAgICAgbV9hbmltYXRp
b25zLmFkZChrZXksIGFuaW1hdGlvbik7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMo
QWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZMYXllckFkZEFuaW1hdGlv
bihtX2xheWVyLmdldCgpLCBzLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9uKCkp
OworICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBrZXkuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgYW5pbWF0aW9uLT5wbGF0Zm9ybUFuaW1hdGlvbigpKTsKICAgICBzZXRO
ZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gVGVsbCB0aGUgaG9zdCBhYm91dCBpdCBzbyB3ZSBjYW4g
ZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CkBAIC0zMTIsOCArMzA5LDcgQEAgdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkK
ICAgICAvLyBSZW1vdmUgaXQgZnJvbSB0aGUgYW5pbWF0aW9uIGxpc3QKICAgICBtX2FuaW1hdGlv
bnMucmVtb3ZlKGtleSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwg
a2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZMYXllclJlbW92ZUFuaW1hdGlvbihtX2xh
eWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBDQUNGTGF5ZXJSZW1vdmVBbmltYXRpb24obV9sYXll
ci5nZXQoKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgLy8gV2UgZG9uJ3Qg
InJlbW92ZSIgYSBsYXllciBmcm9tIEFic3RyYWN0Q0FDRkxheWVyVHJlZUhvc3Qgd2hlbiBpdCBs
b3NlcyBhbiBhbmltYXRpb24uCiAgICAgLy8gVGhlcmUgbWF5IGJlIG90aGVyIGFjdGl2ZSBhbmlt
YXRpb25zIG9uIHRoZSBsYXllciBhbmQgaWYgYW4gYW5pbWF0aW9uCkBAIC01ODYsOCArNTgyLDcg
QEAgU3RyaW5nIFBsYXRmb3JtQ0FMYXllcjo6bmFtZSgpIGNvbnN0CiAKIHZvaWQgUGxhdGZvcm1D
QUxheWVyOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBzKEFkb3B0Q0YsIHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZM
YXllclNldE5hbWUobV9sYXllci5nZXQoKSwgcy5nZXQoKSk7CisgICAgQ0FDRkxheWVyU2V0TmFt
ZShtX2xheWVyLmdldCgpLCB2YWx1ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICBzZXRO
ZWVkc0NvbW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFs
LmNwcAppbmRleCBjNDMwY2YyODQ2MTQ2NjQ3YmY2MWZjN2E3MTYyOWY1MmYwMjFmYTZhLi4xNTI3
NWIzYWU1ZmU1YzFjNmE0ZjhmODRmZDY2OTBkMjFmY2Y1OGRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJu
YWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0
Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAgLTQ1OSw3ICs0NTksNyBAQCB2b2lkIFBsYXRm
b3JtQ0FMYXllcldpbkludGVybmFsOjp1cGRhdGVUaWxlcygpCiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgICAgICBTdHJpbmcgbmFtZSA9ICJUaWxlICgiICsgU3RyaW5nOjpudW1iZXIoaSkgKyAi
LCIgKyBTdHJpbmc6Om51bWJlcihqKSArICIpIjsKLSAgICAgICAgICAgIENBQ0ZMYXllclNldE5h
bWUodGlsZSwgUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBuYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpLmdldCgpKTsKKyAgICAgICAgICAgIENBQ0ZMYXllclNldE5hbWUodGlsZSwgbmFtZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbmRpZgogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJDRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cAppbmRleCAyMWU5ZGI0YzI4ZDlhMjU1MTM1MjBhY2U3MDg0MDNhYzVlNzdhYjkzLi5kZDM3ODE1
OTdmODVlYjYxMGRjYzQ3MWVjODMxNTNlMGFiZDJjZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcApAQCAtMzc3LDgg
KzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYganBlZ1VUSSgpCiBzdGF0aWMgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1l
VHlwZUNGU3RyaW5nKEFkb3B0Q0YsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJl
dHVybiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIFVUVHlwZUNyZWF0ZVByZWZlcnJl
ZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGVDRlN0cmluZy5n
ZXQoKSwgMCkpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSwgMCkpOwogI2Vsc2UKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAvLyBJdCBp
cyB1bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCmluZGV4IGJk
NTBhMzE3NWYzYjQyNWE4ODI2Y2QyYTU2YTYyZTIxOTM2OTYzMzcuLjk1M2JjYjlkMjhhZDBlYjc1
YWIzODgxM2MzNDM5NDU1ZjEyNjJjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQpAQCAtMzMsMTYgKzMzLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIE1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VU
eXBlKGNvbnN0IFN0cmluZyYgdXRpKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRp
cmVmKEFkb3B0Q0YsIHV0aS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG1pbWUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGly
ZWYuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAgICByZXR1cm4gbWltZS5nZXQoKTsK
KyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSkuZ2V0KCk7CiB9CiAK
IFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5n
JiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlKEFkb3B0Q0YsIHV0aS5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbihB
ZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHR5cGUuZ2V0KCksIGtVVFRh
Z0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKLSAgICByZXR1cm4gZXh0ZW5zaW9uLmdldCgpOwor
ICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKS5nZXQo
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9DbGlwYm9hcmRNYWMubW0KaW5kZXggYmQ4ODAyMDQ0MWIwZTlhZTAwYmFkYWYzNmIyZjRm
NWE2YTZiZWFlNy4uZmQ0YWI5OWIxNzQ3NWQ0MTRiMjFhYTNlY2Q1N2U2MTgwYTI4ZmNhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tCkBAIC05OSwxMSAr
OTksMTAgQEAgc3RhdGljIFN0cmluZyBjb2NvYVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKQogCiAgICAgLy8gVHJ5IFVUSSBub3cKICAgICBTdHJpbmcgbWltZVR5
cGUgPSBxVHlwZTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aVR5cGUoQWRvcHRDRiwg
VVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBl
LCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLCBOVUxMKSk7Ci0gICAgaWYgKHV0aVR5cGUpIHsK
LSAgICAgICAgQ0ZTdHJpbmdSZWYgcGJUeXBlID0gVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhD
bGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSk7CisgICAgaWYgKFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVy
cmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBOVUxMKSkpIHsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlw
ZS5nZXQoKSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUpKTsKICAgICAgICAgaWYgKHBiVHlwZSkK
LSAgICAgICAgICAgIHJldHVybiBwYlR5cGU7CisgICAgICAgICAgICByZXR1cm4gcGJUeXBlLmdl
dCgpOwogICAgIH0KIAogICAgIC8vIE5vIG1hcHBpbmcsIGp1c3QgcGFzcyB0aGUgd2hvbGUgc3Ry
aW5nIHRob3VnaApAQCAtMTEyLDExICsxMTEsOCBAQCBzdGF0aWMgU3RyaW5nIGNvY29hVHlwZUZy
b21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKIHN0YXRpYyBTdHJpbmcg
dXRpVHlwZUZyb21Db2NvYVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdHlwZUNGID0gYWRvcHRDRih0eXBlLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlwZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQ
cmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBlLCB0eXBlQ0Yu
Z2V0KCksIDApKTsKLSAgICBpZiAodXRpVHlwZSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IG1pbWVUeXBlKEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3Mo
dXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwotICAgICAgICBpZiAobWltZVR5
cGUpCisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlwZSA9IGFkb3B0Q0YoVVRU
eXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc05TUGJvYXJkVHlw
ZSwgdHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSkpIHsKKyAgICAgICAgaWYgKFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRU
YWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpKQogICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZyhtaW1lVHlwZS5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBT
dHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlH
ZW5lcmF0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVy
YXRvck1hYy5jcHAKaW5kZXggMGExYTRkOGM3NTE0ZGE5MTM3MzliZTVlMzQ0NmQ0OTdkOTVhNDc4
Yi4uZTU4ZDlhOTQ5OTY5MjdiOWJiNWI5YjM0NjE0OTc4ZjVhYmY0ZjNkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKQEAgLTYw
LDExICs2MCw3IEBAIFN0cmluZyBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5z
aWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNoCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNoYWxsZW5nZVN0cmlu
Z0NGKEFkb3B0Q0YsIGNoYWxsZW5nZVN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGtleURlc2NyaXB0aW9uKEFkb3B0Q0YsIGtleWdlbktleWNoYWlu
SXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwgd2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlU3RyaW5nQ0YuZ2V0KCksIGtleURlc2NyaXB0aW9uLmdl
dCgpKSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LmdldCgpOworICAgIHJldHVybiBhZG9wdENGKHdr
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemUsIGNoYWxsZW5nZVN0cmlu
Zy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0
KCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKS5nZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25DRi5jcHAK
aW5kZXggODdhM2ZhYjhhNzQzN2FlMTBhZjQzOWE0ZTRlMDJjZDJlMWEzMGRlYi4uN2IxZDRmYTQ3
ODdmMWQxZTBkOWUzYTRkZTgxZjNlYjU0NmQwY2VlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlvbkNGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3BwCkBAIC0xMTks
MTMgKzExOSw3IEBAIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVhdGVDRihjb25zdCBDcmVkZW50aWFs
JiBjb3JlQ3JlZGVudGlhbCkKICAgICAgICAgcmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZVdp
dGhJZGVudGl0eUFuZENlcnRpZmljYXRlQXJyYXkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29yZUNy
ZWRlbnRpYWwuaWRlbnRpdHkoKSwgY29yZUNyZWRlbnRpYWwuY2VydGlmaWNhdGVzKCksIHBlcnNp
c3RlbmNlKTsKICNlbmRpZgogCi0gICAgQ0ZTdHJpbmdSZWYgdXNlciA9IGNvcmVDcmVkZW50aWFs
LnVzZXIoKS5jcmVhdGVDRlN0cmluZygpOwotICAgIENGU3RyaW5nUmVmIHBhc3N3b3JkID0gY29y
ZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVDRlN0cmluZygpOwotICAgIENGVVJMQ3JlZGVu
dGlhbFJlZiByZXN1bHQgPSBDRlVSTENyZWRlbnRpYWxDcmVhdGUoMCwgdXNlciwgcGFzc3dvcmQs
IDAsIHBlcnNpc3RlbmNlKTsKLSAgICBDRlJlbGVhc2UodXNlcik7Ci0gICAgQ0ZSZWxlYXNlKHBh
c3N3b3JkKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIENGVVJMQ3JlZGVudGlh
bENyZWF0ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2VyKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
Y29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBwZXJz
aXN0ZW5jZSk7CiB9CiAKIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFBy
b3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQpAQCAtMTkyLDEzICsxODYsNyBAQCBDRlVSTFByb3Rl
Y3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0aW9uU3BhY2UmIGNvcmVTcGFjZSkK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgQ0ZTdHJpbmdSZWYg
aG9zdCA9IGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICBDRlN0cmluZ1Jl
ZiByZWFsbSA9IGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZVUkxQ
cm90ZWN0aW9uU3BhY2VSZWYgcmVzdWx0ID0gQ0ZVUkxQcm90ZWN0aW9uU3BhY2VDcmVhdGUoMCwg
aG9zdCwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVyVHlwZSwgcmVhbG0sIHNjaGVtZSk7Ci0gICAg
Q0ZSZWxlYXNlKGhvc3QpOwotICAgIENGUmVsZWFzZShyZWFsbSk7Ci0gICAgCi0gICAgcmV0dXJu
IHJlc3VsdDsKKyAgICByZXR1cm4gQ0ZVUkxQcm90ZWN0aW9uU3BhY2VDcmVhdGUoMCwgY29yZVNw
YWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2
ZXJUeXBlLCBjb3JlU3BhY2UucmVhbG0oKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBzY2hlbWUp
OwogfQogCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50aWFsUmVmIGNmQ3JlZGVudGlhbCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFy
Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJD
Rk5ldC5jcHAKaW5kZXggNWQ2ZDczOTI2YzQ0ZWU0ODgwMTgyZmZmZTg5ODFhY2YzOGE3NmIwYS4u
NTAxNzk3MWRlMTRhNDU0YTg0ZjlhMzg4YmI0N2Y2NDg0ODkxZGE3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKQEAg
LTExMiw3ICsxMTIsNyBAQCB2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgLy8gY29va2llc1dpdGhSZXNw
b25zZUhlYWRlckZpZWxkcyBkb2Vzbid0IHBhcnNlIGNvb2tpZXMgd2l0aG91dCBhIHZhbHVlCiAg
ICAgU3RyaW5nIGNvb2tpZVN0cmluZyA9IHZhbHVlLmNvbnRhaW5zKCc9JykgPyB2YWx1ZSA6IHZh
bHVlICsgIj0iOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb29raWVTdHJpbmdDRihB
ZG9wdENGLCBjb29raWVTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBjb29raWVTdHJpbmdDRiA9IGNvb2tpZVN0cmluZy5jcmVhdGVDRlN0cmluZygp
OwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckZpZWxkc0NGKEFkb3B0Q0Ys
IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LAogICAgICAgICAoY29uc3Qg
dm9pZCoqKSZzX3NldENvb2tpZUtleUNGLCAoY29uc3Qgdm9pZCoqKSZjb29raWVTdHJpbmdDRiwg
MSwKICAgICAgICAgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU0NGTmV0LmNwcAppbmRleCAzZjkwMWE1NDFkZTAwZWViZWMyNDMyMmQwNDM5NmVl
NGEyMjA1ZmI2Li5jZTE0NTE5MDlhZWQ3ZTJiNGRlZjljZTBkOWJiNDI5MzQxOGRhY2MzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcApAQCAt
OTAsMTIgKzkwLDEyIEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVlOjpwbGF0Zm9ybVJlc29sdmUoY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0g
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0bmFtZUNGKEFkb3B0Q0YsIGhvc3RuYW1lLmNy
ZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QoQWRvcHRDRiwg
Q0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWVDRi5nZXQoKSkpOworICAgIFJldGFpblB0
cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9zdENyZWF0ZVdpdGhOYW1lKDAsIGhvc3Ru
YW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICBpZiAoIWhvc3QpIHsKICAgICAgICAg
ZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBD
Rkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIDAsIDAsIDAsIDAgfTsKICAgICBDRkhv
c3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAvLyBUaGUgaG9zdCB3aWxsIGJlIHJl
bGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KICAgICBCb29sZWFuIHJlc3VsdCA9IENGSG9z
dFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFjaywgJmNvbnRleHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCmluZGV4IDM1NGZkMjc1ODY0MjA3Yjc5ZWZjMjFhZjdkMTk5ZGIwYjMwMTIwYjQuLjU4OTVl
ZDk5MzQ2NjVlZjYzMGJlMzY1MTcxNjE1MTUyZTQwZjgzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKQEAgLTE0
NSwxMyArMTQ1LDExIEBAIENGRXJyb3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0
CiAgICAgaWYgKCFtX3BsYXRmb3JtRXJyb3IpIHsKICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZU11dGFi
bGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgICAgIGlmICghbV9sb2NhbGl6ZWREZXNjcmlwdGlv
bi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9jYWxp
emVkRGVzY3JpcHRpb25TdHJpbmcoQWRvcHRDRiwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5jcmVh
dGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZv
LmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5LCBsb2NhbGl6ZWREZXNjcmlw
dGlvblN0cmluZy5nZXQoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFtX2xvY2FsaXplZERl
c2NyaXB0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVz
ZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9uS2V5LCBtX2xvY2FsaXpl
ZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgIGlmICghbV9m
YWlsaW5nVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBmYWlsaW5nVVJMU3RyaW5nKEFkb3B0Q0YsIG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmluZygp
KTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmFpbGluZ1VSTFN0cmluZyA9
IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxTdHJpbmdLZXksIGZhaWxpbmdVUkxT
dHJpbmcuZ2V0KCkpOwogICAgICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRD
RiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIGZhaWxpbmdVUkxTdHJpbmcuZ2V0KCksIDApKTsK
ICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBmYWlsaW5n
VVJMS2V5LCB1cmwuZ2V0KCkpOwpAQCAtMTYyLDggKzE2MCw3IEBAIENGRXJyb3JSZWYgUmVzb3Vy
Y2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgICAgICAgICB3a1NldFNTTFBlZXJDZXJ0aWZp
Y2F0ZURhdGEodXNlckluZm8uZ2V0KCksIG1fY2VydGlmaWNhdGUuZ2V0KCkpOwogI2VuZGlmCiAg
ICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRvbWFpblN0cmluZyhBZG9w
dENGLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgbV9wbGF0Zm9ybUVycm9y
LmFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBkb21haW5TdHJpbmcuZ2V0KCksIG1fZXJyb3JDb2Rl
LCB1c2VySW5mby5nZXQoKSkpOworICAgICAgICBtX3BsYXRmb3JtRXJyb3IgPSBhZG9wdENGKENG
RXJyb3JDcmVhdGUoMCwgbV9kb21haW4uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgbV9lcnJvckNv
ZGUsIHVzZXJJbmZvLmdldCgpKSk7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fcGxhdGZvcm1FcnJv
ci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDAxZThiOGFlNWMwZDFjNmE2YThmMDMz
MDg1ZTkwZjAxMGJjMWY3YzYuLjgwNzBjMjU4MmI3Y2FhMGRlNmZlMzVmMzA3NDNmNzhiMjBiNzdh
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyBIYXNo
TWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4gPiYgY2xpZW50Q2VydHMoKQogCiBzdGF0
aWMgdm9pZCBzZXREZWZhdWx0TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSkKIHsK
LSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gZGVmYXVsdE1J
TUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVs
dE1JTUVUeXBlU3RyaW5nID0gZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFr
UmVmKCk7CiAgICAgCiAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKHJlc3BvbnNlLCBkZWZh
dWx0TUlNRVR5cGVTdHJpbmcpOwogfQpAQCAtMTYxLDggKzE2MSw4IEBAIHN0YXRpYyBDRlVSTFJl
cXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJl
cXVlc3RSZWYKICAgICBpZiAoY2ZSZWRpcmVjdFJlc3BvbnNlKSB7CiAgICAgICAgIENGSFRUUE1l
c3NhZ2VSZWYgaHR0cE1lc3NhZ2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKGNmUmVk
aXJlY3RSZXNwb25zZSk7CiAgICAgICAgIGlmIChodHRwTWVzc2FnZSAmJiBDRkhUVFBNZXNzYWdl
R2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKSA9PSAzMDcpIHsKLSAgICAgICAgICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBNZXRob2QoQWRvcHRDRiwgaGFuZGxlLT5s
YXN0SFRUUE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBuZXdNZXRob2QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1
ZXN0TWV0aG9kKGNmUmVxdWVzdCkpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBsYXN0SFRUUE1ldGhvZCA9IGhhbmRsZS0+bGFzdEhUVFBNZXRob2QoKS5jcmVhdGVDRlN0cmlu
ZygpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2QgPSBhZG9w
dENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QpKTsKICAgICAg
ICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9ucyhsYXN0SFRUUE1ldGhvZC5nZXQo
KSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChsYXN0
SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSkgewogICAgICAg
ICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBtdXRhYmxlUmVxdWVz
dChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBjZlJlcXVlc3QpKTsK
ICNpZiBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCkBAIC0xNzUsOSArMTc1LDggQEAgc3RhdGlj
IENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4s
IENGVVJMUmVxdWVzdFJlZgogICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpzZXRIVFRQQm9k
eShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgYm9keSk7CiAKICAgICAgICAgICAgICAgICBTdHJpbmcg
b3JpZ2luYWxDb250ZW50VHlwZSA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cENvbnRlbnRU
eXBlKCk7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBvcmlnaW5hbENv
bnRlbnRUeXBlQ0YoQWRvcHRDRiwgb3JpZ2luYWxDb250ZW50VHlwZS5jcmVhdGVDRlN0cmluZygp
KTsKICAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFsQ29udGVudFR5cGUuaXNFbXB0eSgpKQot
ICAgICAgICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZSht
dXRhYmxlUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIpLCBvcmlnaW5hbENvbnRl
bnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQ
SGVhZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRlbnQtVHlw
ZSIpLCBvcmlnaW5hbENvbnRlbnRUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAg
ICAgICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0LmdldCgpOwogICAgICAgICAgICAg
fQpAQCAtNjA3LDEwICs2MDYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbAogI2VuZGlmCiAK
ICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+bV9wYXNzLmlzTnVsbCgpKSB7Ci0g
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXNlcihBZG9wdENGLCBkLT5tX3VzZXIuY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGFzcyhBZG9w
dENGLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlVS
TENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwoQWRvcHRDRiwKLSAgICAgICAgICAgIENGVVJMQ3Jl
ZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1c2VyLmdldCgpLCBwYXNzLmdldCgp
LCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25lKSk7CisgICAgICAgIFJldGFpblB0
cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBhZG9wdENGKENGVVJMQ3JlZGVudGlh
bENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRp
YWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAgCiAgICAgICAgIEtVUkwgdXJsVG9TdG9yZTsK
ICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgp
ID09IDQwMSkKQEAgLTEwMDUsNyArMTAwMSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OnNldFBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgICAgICByZXR1cm47CiAKICAg
ICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKS5pc051bGwoKSA/IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckRl
ZmF1bHRCYXNlKCkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIoQWRvcHRDRiwgU3Ry
aW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2UgKyAiLlByaXZh
dGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBwcml2YXRlU3RvcmFnZVNlc3Np
b24oKSA9IGNyZWF0ZVByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5n
ZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4IDhjZmY4N2NhMGQ1OGVhMmU1MjNm
MzczMGQ2YjRhNzczMGIwNmJlNGIuLjI3Njc4YmVhNjJlMTliOTZkNTNkYjMxNjQ5NWQ3MThmZGY2
ZjQ5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVz
b3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC0xMTksMTMgKzExOSw4IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRIZWFkZXJGaWVsZHMoQ0ZNdXRhYmxlVVJMUmVxdWVzdFJlZiByZXF1
ZXN0LCBjb25zdCBIVFRQSGVhCiAgICAgfQogCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gcmVxdWVzdEhlYWRlcnMuZW5kKCk7Ci0gICAgZm9yIChIVFRQSGVhZGVyTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IHJlcXVlc3RIZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICBDRlN0cmluZ1JlZiBrZXkgPSBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5n
KCk7Ci0gICAgICAgIENGU3RyaW5nUmVmIHZhbHVlID0gaXQtPnZhbHVlLmNyZWF0ZUNGU3RyaW5n
KCk7Ci0gICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3Qs
IGtleSwgdmFsdWUpOwotICAgICAgICBDRlJlbGVhc2Uoa2V5KTsKLSAgICAgICAgQ0ZSZWxlYXNl
KHZhbHVlKTsKLSAgICB9CisgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBp
dCA9IHJlcXVlc3RIZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgQ0ZV
UkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdCwgaXQtPmtleS5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBpdC0+dmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgp
CkBAIC0xNDYsOCArMTQxLDcgQEAgdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZv
cm1SZXF1ZXN0KCkKICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRs
ZTo6Y3VycmVudFN0b3JhZ2VTZXNzaW9uKCksIGNmUmVxdWVzdCk7CiAjZW5kaWYKIAotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gcmVxdWVzdE1ldGhvZChBZG9wdENGLCBodHRwTWV0aG9kKCku
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2Qo
Y2ZSZXF1ZXN0LCByZXF1ZXN0TWV0aG9kLmdldCgpKTsKKyAgICBDRlVSTFJlcXVlc3RTZXRIVFRQ
UmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKTsKIAogICAgIGlmIChodHRwUGlwZWxpbmluZ0VuYWJsZWQoKSkKICAgICAgICAgd2tTZXRI
VFRQUGlwZWxpbmluZ1ByaW9yaXR5KGNmUmVxdWVzdCwgdG9IVFRQUGlwZWxpbmluZ1ByaW9yaXR5
KG1fcHJpb3JpdHkpKTsKQEAgLTE2NCw3ICsxNTgsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQgPSBt
X3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsK
ICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGVuY29kaW5nRmFsbGJhY2tzKEFkb3B0
Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZhbGxiYWNrQ291
bnQsIDApKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGZhbGxiYWNrQ291bnQ7ICsr
aSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZShBZG9wdENG
LCBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5n
TmFtZSA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlb
aV0uY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9
IENGU3RyaW5nQ29udmVydElBTkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdl
dCgpKTsKICAgICAgICAgaWYgKGVuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElk
KQogICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGVuY29kaW5nRmFsbGJhY2tzLmdldCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPihlbmNvZGluZykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNl
Q0ZOZXQuY3BwCmluZGV4IGE0NWJlZWRjNDMzMDA3NzJiMzljYWVlMmIzOTQ2Y2FjM2RmMGJmMzEu
Ljk1NTA4MzYzYWFlNDI1ZWM4ODRhNDg0N2E1MTU5ODM3ZDA4ZDM5N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9u
c2VDRk5ldC5jcHAKQEAgLTUxLDkgKzUxLDcgQEAgQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJl
c3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29uc3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAm
JiAhbV9pc051bGwpIHsKICAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwg
bV91cmwuY3JlYXRlQ0ZVUkwoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWlt
ZVR5cGUoQWRvcHRDRiwgbV9taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiB0ZXh0RW5jb2RpbmdOYW1lKEFkb3B0Q0YsIG1fdGV4dEVuY29k
aW5nTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgbV9jZlJlc3BvbnNlLmFkb3B0Q0Yo
Q0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwuZ2V0KCksIG1pbWVUeXBlLmdldCgpLCBtX2V4cGVj
dGVkQ29udGVudExlbmd0aCwgdGV4dEVuY29kaW5nTmFtZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9y
YWdlQWxsb3dlZCkpOworICAgICAgICBtX2NmUmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNl
Q3JlYXRlKDAsIHVybC5nZXQoKSwgbV9taW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBt
X2V4cGVjdGVkQ29udGVudExlbmd0aCwgbV90ZXh0RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpKTsKICAgICB9CiAKICAgICByZXR1
cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAppbmRleCBk
ODZjNzZiYzZmNDVjMTgxNjQ4ZTBhNzc2Y2QzOWJhZTg5MDg0MGQ2Li40YTdjZDkwMmFlOWYwMjg3
ZDg5OGQ5MmJkOTg1ZGQ3NjZkNDJhMTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcApA
QCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1z
KCkKICAgICBpZiAobV9jb25uZWN0aW9uVHlwZSA9PSBVbmtub3duKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3QoQWRvcHRDRiwgbV91cmwuaG9zdCgp
LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdCA9IG1f
dXJsLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpOwogCiAgICAgLy8gQ3JlYXRpbmcgc3RyZWFtcyB0
byBmaW5hbCBkZXN0aW5hdGlvbiwgbm90IHRvIHByb3h5LgogICAgIENGUmVhZFN0cmVhbVJlZiBy
ZWFkU3RyZWFtID0gMDsKQEAgLTM1OSwxMiArMzU5LDEwIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlOjphZGRDT05ORUNUQ3JlZGVudGlhbHMoQ0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNl
KQogICAgIFN0cmluZyBwYXNzd29yZDsKICAgICBpZiAoIW1fc2VudFN0b3JlZENyZWRlbnRpYWxz
ICYmIGdldFN0b3JlZENPTk5FQ1RQcm94eUNyZWRlbnRpYWxzKHByb3RlY3Rpb25TcGFjZSwgbG9n
aW4sIHBhc3N3b3JkKSkgewogICAgICAgICAvLyBUcnkgdG8gYXBwbHkgc3RvcmVkIGNyZWRlbnRp
YWxzLCBpZiB3ZSBoYXZlbid0IHRyaWVkIHRob3NlIGFscmVhZHkuCi0gICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gbG9naW5DRihBZG9wdENGLCBsb2dpbi5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYXNzd29yZENGKEFkb3B0Q0YsIHBhc3N3
b3JkLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAvLyBDcmVhdGluZyBhIHRlbXBvcmFyeSBy
ZXF1ZXN0IHRvIG1ha2UgQ0ZOZXR3b3JrIGFwcGx5IGNyZWRlbnRpYWxzIHRvIGl0LiBVbmZvcnR1
bmF0ZWx5LCB0aGlzIGNhbm5vdCB3b3JrIHdpdGggTlRMTSBhdXRoZW50aWNhdGlvbi4KKyAgICAg
ICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkg
Y3JlZGVudGlhbHMgdG8gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0aCBO
VExNIGF1dGhlbnRpY2F0aW9uLgogICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4g
ZHVtbXlSZXF1ZXN0KEFkb3B0Q0YsIENGSFRUUE1lc3NhZ2VDcmVhdGVSZXF1ZXN0KDAsIENGU1RS
KCJHRVQiKSwgbV9odHRwc1VSTC5nZXQoKSwga0NGSFRUUFZlcnNpb24xXzEpKTsKIAotICAgICAg
ICBCb29sZWFuIGFwcGxpZWRDcmVkZW50aWFscyA9IENGSFRUUE1lc3NhZ2VBcHBseUNyZWRlbnRp
YWxzKGR1bW15UmVxdWVzdC5nZXQoKSwgYXV0aGVudGljYXRpb24uZ2V0KCksIGxvZ2luQ0YuZ2V0
KCksIHBhc3N3b3JkQ0YuZ2V0KCksIDApOworICAgICAgICBCb29sZWFuIGFwcGxpZWRDcmVkZW50
aWFscyA9IENGSFRUUE1lc3NhZ2VBcHBseUNyZWRlbnRpYWxzKGR1bW15UmVxdWVzdC5nZXQoKSwg
YXV0aGVudGljYXRpb24uZ2V0KCksIGxvZ2luLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhc3N3
b3JkLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFw
cGxpZWRDcmVkZW50aWFscywgYXBwbGllZENyZWRlbnRpYWxzKTsKIAogICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHByb3h5QXV0aG9yaXphdGlvblN0cmluZyhBZG9wdENGLCBDRkhUVFBN
ZXNzYWdlQ29weUhlYWRlckZpZWxkVmFsdWUoZHVtbXlSZXF1ZXN0LmdldCgpLCBDRlNUUigiUHJv
eHktQXV0aG9yaXphdGlvbiIpKSk7CkBAIC0zODksNyArMzg3LDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVz
cG9uc2UpCiBDRlN0cmluZ1JlZiBTb2NrZXRTdHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURlc2Ny
aXB0aW9uKHZvaWQqIGluZm8pCiB7CiAgICAgU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUgPSBz
dGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5kbGUqPihpbmZvKTsKLSAgICByZXR1cm4gU3RyaW5n
KCJXZWJLaXQgc29ja2V0IHN0cmVhbSwgIiArIGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0
ZUNGU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0cmluZygiV2ViS2l0IHNvY2tldCBzdHJlYW0sICIg
KyBoYW5kbGUtPm1fdXJsLnN0cmluZygpKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKIH0K
IAogc3RydWN0IE1haW5UaHJlYWRFdmVudENhbGxiYWNrSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0K
aW5kZXggOTMyMTZjYjU1ZTg1NzczMTM2ZjNlOGMzYTA3Y2U2ZmI1NTZlMDZkMi4uZTY5MzQ4NDgx
YWIwYTAyMTM3OTRkYTI0ZWZiY2M0ZjU2ZGMwMDhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VSZXF1ZXN0TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpAQCAt
MTYzLDkgKzE2Myw5IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVx
dWVzdCgpCiAgICAgICAgIE5TTXV0YWJsZUFycmF5ICplbmNvZGluZ0ZhbGxiYWNrcyA9IFtOU011
dGFibGVBcnJheSBhcnJheV07CiAgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gbV9yZXNwb25zZUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgIT0gY291bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJp
bmdSZWYgZW5jb2RpbmdOYW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICAgICAgdW5zaWduZWQg
bG9uZyBuc0VuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0RW5jb2RpbmdUb05TU3RyaW5nRW5jb2Rp
bmcoQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUp
KTsKLSAgICAgICAgICAgIENGUmVsZWFzZShlbmNvZGluZ05hbWUpOworICAgICAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAg
ICAgICB1bnNpZ25lZCBsb25nIG5zRW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRFbmNvZGluZ1Rv
TlNTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29kaW5n
KGVuY29kaW5nTmFtZS5nZXQoKSkpOworCiAgICAgICAgICAgICBpZiAobnNFbmNvZGluZyAhPSBr
Q0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkKICAgICAgICAgICAgICAgICBbZW5jb2RpbmdGYWxs
YmFja3MgYWRkT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRMb25nOm5zRW5jb2Rp
bmddXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCmluZGV4IDZhYTc2ZjZkZDc4NGRhMDlk
N2JmZjdlMWU2ODU1ZTc1Y2FkYWU5OWMuLmY5NzEwYjJkZDI1MTg0NjIwMTUxMzI0MmY0MGYzYTQx
MjY0ZjIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIGFk
anVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogICAg
IH0KICAgICAKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYg
ZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRl
Q0ZTdHJpbmcoKTsKKyAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0
cmluZyA9IFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1Jl
ZigpOwogICAgICAgICByZXN1bHQgPSBkZWZhdWx0TUlNRVR5cGVTdHJpbmc7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0Yu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcApp
bmRleCA0ZTNmY2VkNDQ0NjQ5YTljNWNlZjM2NGVjMDYyZmU4ZGIxODg0ZjA5Li4wZjY2OGQxMGY4
ZTQxN2Y1NmVhOTNhMDg1ODEyNGNkZjJiYTQxN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAKQEAgLTQ2LDggKzQ2LDcgQEAgUmV0
YWluUHRyPENGTG9jYWxlUmVmPiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxD
RkxvY2FsZVJlZj4gPjo6Y3JlYXQKIHRlbXBsYXRlPD4KIFJldGFpblB0cjxDRkxvY2FsZVJlZj4g
QXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0
ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlSWRlbnRpZmllcikKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmTG9jYWxlSWRlbnRpZmllcihBZG9wdENGLCBsb2Nh
bGVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkxvY2FsZVJl
Zj4gbG9jYWxlKEFkb3B0Q0YsIENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNm
TG9jYWxlSWRlbnRpZmllci5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9j
YWxlID0gYWRvcHRDRihDRkxvY2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsb2NhbGVJ
ZGVudGlmaWVyLmltcGwoKS0+Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogCiAgICAgcmV0dXJu
IENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJsZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8g
bG9jYWxlIDogMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y2YvU3RyaW5nQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdD
Ri5jcHAKaW5kZXggZDdjZGE3OTYyOTg2MjU3M2EzNWM2YTkyNjg1NzUyMzA1YWI2YzI3ZS4uMjY5
N2U3NmYwYmY1OTIzYjE1MmZlZGQ3MTAzN2U5NzExNDkyNmQ0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKQEAgLTIzLDggKzIzLDggQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFVTRShDRikKLQogI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNTEsNyArNTEsNyBAQCBTdHJpbmc6OlN0cmluZyhD
RlN0cmluZ1JlZiBzdHIpCiAgICAgfQogfQogCi1DRlN0cmluZ1JlZiBTdHJpbmc6OmNyZWF0ZUNG
U3RyaW5nKCkgY29uc3QKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gU3RyaW5nOjpjcmVhdGVDRlN0
cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ltcGwpCiAgICAgICAgIHJldHVybiBDRlNUUigi
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0lt
cGxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5j
cHAKaW5kZXggN2EyZDgyZTQwMmQyNGIzN2JiYzA3MWY0N2Y5OGUwYTg2NTE4NDkyMS4uMWRhNTYx
YjYwNjJiY2FiNDllMDliZmU3OTc4MmIyNzNmMGRhMDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0xMzIsNyArMTMzLDcgQEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9j
YXRvciB7CiAKIH0KIAotQ0ZTdHJpbmdSZWYgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQor
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiB7CiAg
ICAgaWYgKCFtX2xlbmd0aCB8fCAhaXNNYWluVGhyZWFkKCkpIHsKICAgICAgICAgaWYgKGlzOEJp
dCgpKQpAQCAtMTUzLDcgKzE1NCw3IEBAIENGU3RyaW5nUmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNG
U3RyaW5nKCkKICAgICAvLyBDb3JlRm91bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0
ZSBhbnl0aGluZywgd2UgY2xlYXIgY3VycmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhl
Y3V0ZSBhbGxvY2F0ZSgpLgogICAgIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0
cmluZyA9IDA7CiAKLSAgICByZXR1cm4gc3RyaW5nOworICAgIHJldHVybiBhZG9wdENGKHN0cmlu
Zyk7CiB9CiAKIC8vIE9uIFN0cmluZ0ltcGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhl
IGFsbG9jYXRvciBpcyB0aGUgU3RyaW5nV3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0KaW5kZXggNmY1ZTk1
M2JhMTkyNWU1NDViYmI1YWM1M2UyMTQ3NmJiOGYwM2E1Ny4uMmYwODhhN2ViMzYzYzVhY2QwMTQy
ZjM4NzA5NWI5NjJjMTgxNmE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKICNpbmNsdWRlICJGb3VuZGF0aW9uRXh0cmFzLmgiCisj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1w
bDo6b3BlcmF0b3IgTlNTdHJpbmcgKigpCiB7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShj
cmVhdGVDRlN0cmluZygpKTsKKyAgICByZXR1cm4gSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3Ry
aW5nKCkubGVha1JlZigpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKaW5kZXggMzEyNDEyZmFhYjhhYzIzNjI4NjUwM2Rh
Y2E1YTkyOGJlYmQ0Mzk2Ni4uYTcwNDc0OTUyMGZkZDMyZDRlMWUwMGZjZmMwZGVhZjM4N2NiYTlk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVj
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNN
YWMuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgQ1N0cmluZyBUZXh0Q29kZWNNYWM6OmVuY29kZShj
b25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGUKICAgICAv
LyBFbmNvZGluZyB3aWxsIGNoYW5nZSB0aGUgeWVuIHNpZ24gYmFjayBpbnRvIGEgYmFja3NsYXNo
LgogICAgIFN0cmluZyBjb3B5KGNoYXJhY3RlcnMsIGxlbmd0aCk7CiAgICAgY29weS5yZXBsYWNl
KCdcXCcsIG1fYmFja3NsYXNoQXNDdXJyZW5jeVN5bWJvbCk7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjZnMoQWRvcHRDRiwgY29weS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNmcyA9IGNvcHkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIENGSW5k
ZXggc3RhcnRQb3MgPSAwOwogICAgIENGSW5kZXggY2hhcmFjdGVyc0xlZnQgPSBDRlN0cmluZ0dl
dExlbmd0aChjZnMuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2VhcmNoUG9wdXBNZW51V2luLmNwcAppbmRleCBhNWNhOWI3NDQ2OTJmMjg3ZjIzZjM0ODE1MGIw
OGY2NWUxZmY5NWZlLi4wZDI1MWRmMTgzYzdlY2MxOTZiMGRhNzI3ZWFjNTRkNDliMTllNjdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2lu
LmNwcApAQCAtNTEsOCArNTEsNyBAQCBib29sIFNlYXJjaFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgp
CiAjaWYgVVNFKENGKQogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXko
Y29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktp
dC5zZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVm
PihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuIFN0cmluZygiY29t
LmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0K
ICNlbmRpZgogCkBAIC02NywxMCArNjYsOCBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2
ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAg
IHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpOwogICAgIGlmIChzaXplKSB7CiAgICAg
ICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0YsIHNl
YXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUp
LmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudENGLmNwcAppbmRleCA4Mzc0N2YyMjM1NTZhNmFjMmFhMTY4OWRmZGZhYzFmMWVmMTdj
NDc3Li4zMzdkYWNhYjJmNzEyYzk4NmYwZjU3MjI5NmE3ODA1NjJjMzE0YjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dENGLmNwcApAQCAtNjMsMTUgKzYzLDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBz
dGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkIjsKIAotc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBjcmVhdGVL
ZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKK3N0YXRpYyBpbmxpbmUgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtl
eSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleUNGU3RyaW5nKEFkb3B0Q0YsIGtl
eS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0
KDAsIDAsIENGU1RSKCJXZWJLaXQgV2ViIEluc3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5Q0ZT
dHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1h
dCgwLCAwLCBDRlNUUigiV2ViS2l0IFdlYiBJbnNwZWN0b3IgU2V0dGluZyAtICVAIiksIGtleS5j
cmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGlu
Zyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5j
ZXMoa2V5KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleSA9IGNy
ZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSk7CiAgICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0
UmVmPiB2YWx1ZShBZG9wdENGLCBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKHByZWZlcmVuY2Vz
S2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbikpOwogCiAgICAgaWYg
KCF2YWx1ZSkKQEAgLTg4LDEyICs4Nyw3IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhj
b25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBzZXR0aW5nKQogCiBzdGF0aWMgdm9pZCBzdG9yZVNl
dHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IG9iamVjdFRvU3RvcmU7Ci0gICAgb2JqZWN0VG9T
dG9yZS5hZG9wdENGKHNldHRpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQVNTRVJUKG9iamVj
dFRvU3RvcmUpOwotCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShB
ZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpKTsKLSAgICBDRlByZWZlcmVuY2Vz
U2V0QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0KCksIG9iamVjdFRvU3RvcmUuZ2V0KCksIGtD
RlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBw
VmFsdWUoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KS5nZXQoKSwgc2V0dGluZy5jcmVhdGVD
RlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CiB9CiAK
IGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDBlNGIxMDY1Njk4MjVkZDc0ZDc0
ZGIyNzc2ZWNjNmQ5MjFlYThkYWEuLjVmMjgzNTA0YzVkNjY4MjE4NjQ4OTBjZTQ0NWM4MmNmMDBm
MTI2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTc5MiwyNCArNzkyLDIwIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1
Z2luVmlldyogcGx1Z2luCiAgICAgICAgIEtVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1
bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1
Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkpOwogICAgICAgICBpZiAocGx1Z2luUGFnZVVSTC5wcm90
b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAgICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBr
ZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJy
b3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5KTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gc3RyKEFkb3B0Q0YsIHBsdWdpblBhZ2VVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5
LCBzdHIuZ2V0KCkpOworICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8u
Z2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghcGx1Z2luVmlldy0+bWltZVR5cGUoKS5p
c051bGwoKSkgewogICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdI
ZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yTUlNRVR5cGVLZXkpOwot
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIHBsdWdpblZpZXct
Pm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHN0ci5nZXQoKSk7CisgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgaWYgKHBsdWdpblZpZXctPnBsdWdp
bigpKSB7CiAgICAgICAgIFN0cmluZyBwbHVnaW5OYW1lID0gcGx1Z2luVmlldy0+cGx1Z2luKCkt
Pm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5OYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgICAg
ICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJU
b0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luTmFtZUtleSk7Ci0gICAgICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cihBZG9wdENGLCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtl
eSwgc3RyLmdldCgpKTsKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZv
LmdldCgpLCBrZXksIHBsdWdpbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAg
IH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4
IDZlNjg3ZjE5MzRhZjgwNGJkZjk0OTlkZWZmNjFlNzdmNTM1Y2NiMjAuLjE1ODcyZTM0ZjlhNTQ0
NTBhZjNiNDQ5ZjgyY2RmMGIyYWZiZWI0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJh
c2VNYW5hZ2VyLmNwcApAQCAtNDAxLDggKzQwMSw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2Vy
OjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0
CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvKEFkb3B0Q0Ys
IENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgc3RhdGlj
IENGU3RyaW5nUmVmIGRhdGFiYXNlTmFtZUtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xF
U1RSVG9DRlN0cmluZ1JlZihXZWJEYXRhYmFzZU5hbWVLZXkpOwotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIGRhdGFiYXNlTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZGF0YWJhc2VOYW1lS2V5LCBz
dHIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBkYXRh
YmFzZU5hbWVLZXksIGRhdGFiYXNlTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAg
IENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm9CYWcgPSBDRkRpY3Rpb25h
cnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsKICAgICB1c2VySW5mb0JhZy0+c2V0RGlj
dGlvbmFyeSh1c2VySW5mby5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDFm
N2E1NzJjMzQ0NWQ3Y2JjNTc2M2FmOWQ5MWI5ZWRkNzg5NTEwOWYuLmE3MzEwYjgwYjBkNDM0NDA0
Zjk4NThkYzhkYjU1YzkzZjFhNTg5NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC02
OTMsOSArNjkzLDkgQEAgSFJFU1VMVCBXZWJIaXN0b3J5OjphZGRJdGVtKElXZWJIaXN0b3J5SXRl
bSogZW50cnksIGJvb2wgZGlzY2FyZER1cGxpY2F0ZSwgYm9vbCoKIAogdm9pZCBXZWJIaXN0b3J5
Ojp2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENv
dW50KQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIHVy
bC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHVybFN0cmluZyA9IHVybC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOwogCi0gICAgSVdlYkhp
c3RvcnlJdGVtKiBlbnRyeSA9IChJV2ViSGlzdG9yeUl0ZW0qKSBDRkRpY3Rpb25hcnlHZXRWYWx1
ZShtX2VudHJpZXNCeVVSTC5nZXQoKSwgdXJsU3RyaW5nLmdldCgpKTsKKyAgICBJV2ViSGlzdG9y
eUl0ZW0qIGVudHJ5ID0gKElXZWJIaXN0b3J5SXRlbSopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobV9l
bnRyaWVzQnlVUkwuZ2V0KCksIHVybFN0cmluZy5nZXQoKSk7CiAgICAgaWYgKGVudHJ5KSB7CiAg
ICAgICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW1Qcml2YXRlPiBlbnRyeVByaXZhdGUoUXVlcnks
IGVudHJ5KTsKICAgICAgICAgaWYgKCFlbnRyeVByaXZhdGUpCkBAIC03ODYsMTEgKzc4NiwxMCBA
QCBIUkVTVUxUIFdlYkhpc3Rvcnk6OnJlbW92ZUl0ZW1Gb3JVUkxTdHJpbmcoQ0ZTdHJpbmdSZWYg
dXJsU3RyaW5nKQogCiBDT01QdHI8SVdlYkhpc3RvcnlJdGVtPiBXZWJIaXN0b3J5OjppdGVtRm9y
VVJMU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKSBjb25zdAogewotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXJsQ0ZTdHJpbmcoQWRvcHRDRiwgdXJsU3RyaW5nLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgIGlmICghdXJsQ0ZTdHJpbmcpCisgICAgaWYgKCF1cmxTdHJpbmcpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW07Ci0gICAgaWYg
KEZBSUxFRChpdGVtRm9yVVJMU3RyaW5nKHVybENGU3RyaW5nLmdldCgpLCAmaXRlbSkpKQorICAg
IGlmIChGQUlMRUQoaXRlbUZvclVSTFN0cmluZyh1cmxTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgJml0ZW0pKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGl0ZW07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAKaW5kZXggYTI2NDMwODlkY2Q3OWQ4MjQyNTIw
MTk2MjEzMjdmY2E5ZjgyZDk4Mi4uOGJmZTliZDdjMDc3Y2NmYmU4YjA3YWI1OTFhYzM5NzA2NTI0
MzIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcApAQCAtMjE0LDcgKzIxNCw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViSGlzdG9yeUl0ZW06OmRpY3Rpb25hcnlS
ZXByZXNlbnRhdGlvbih2b2lkKiogZGljdGlvCiAKICAgICBpZiAoIW1faGlzdG9yeUl0ZW0tPnVy
bFN0cmluZygpLmlzRW1wdHkoKSkgewogICAgICAgICBrZXlzW2tleUNvdW50XSA9IHVybEtleTsK
LSAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCku
Y3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5
SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgfQogCiAg
ICAga2V5c1trZXlDb3VudF0gPSBsYXN0VmlzaXRlZERhdGVLZXk7CkBAIC0yMjIsNyArMjIyLDcg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5SXRlbTo6ZGljdGlvbmFyeVJl
cHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0aW8KIAogICAgIGlmICghbV9oaXN0b3J5SXRlbS0+dGl0
bGUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAga2V5c1trZXlDb3VudF0gPSB0aXRsZUtleTsKLSAg
ICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5jcmVhdGVD
RlN0cmluZygpOworICAgICAgICB2YWx1ZXNba2V5Q291bnQrK10gPSBtX2hpc3RvcnlJdGVtLT50
aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgIH0KIAogICAgIGtleXNba2V5
Q291bnRdID0gdmlzaXRDb3VudEtleTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24odm9p
ZCoqIGRpY3RpbwogICAgICAgICBBU1NFUlQoc2l6ZSk7CiAgICAgICAgIENGU3RyaW5nUmVmKiBp
dGVtcyA9IG5ldyBDRlN0cmluZ1JlZltzaXplXTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBpdGVtc1tpXSA9IHJlZGlyZWN0VVJMcy0+YXQo
aSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIGl0ZW1zW2ldID0gcmVkaXJlY3RVUkxz
LT5hdChpKS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAgICAgQ0ZBcnJheVJlZiBy
ZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25zdCB2b2lkKiopaXRlbXMsIHNpemUsICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKICAgICAgICAgICAgIENGUmVsZWFzZShpdGVtc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
SWNvbkRhdGFiYXNlLmNwcAppbmRleCAyNWQ3ZWMwOWI5ODYxZTQ0MzQ5MWUzNDZkNTBkNGUyMmM3
NzFiODQ1Li4wNWE5NDkwOGE4ODg0MTJiMTVkMzk0NjNkMTM5MjlhOTE2NzQ5NDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkljb25EYXRhYmFzZS5jcHAKQEAgLTM2Niw3ICszNjYsNyBAQCBCU1RSIFdl
Ykljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlkQWRkSWNvbk5vdGlmaWNhdGlvbigpCiAKIENG
U3RyaW5nUmVmIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlcklu
Zm9VUkxLZXkoKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBpY29uVXNlckluZm9VUkxLZXkg
PSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KS5jcmVhdGVDRlN0cmlu
ZygpOworICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBpY29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmco
V2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KS5jcmVhdGVDRlN0cmluZygpLmxlYWtS
ZWYoKTsKICAgICByZXR1cm4gaWNvblVzZXJJbmZvVVJMS2V5OwogfQogCkBAIC0zODcsOCArMzg3
LDcgQEAgc3RhdGljIHZvaWQgcG9zdERpZEFkZEljb25Ob3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JiBwYWdlVVJMLCBXZWJJY29uRGF0YWJhc2UqIGkKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENGLCAKICAgICBDRkRpY3Rpb25hcnlDcmVhdGVN
dXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0
aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJs
KEFkb3B0Q0YsIHBhZ2VVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgV2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3Rp
ZmljYXRpb25Vc2VySW5mb1VSTEtleSgpLCB1cmwuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90
aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKSwgcGFnZVVSTC5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm8gPSBDRkRp
Y3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2UoKTsKICAgICB1c2VySW5mby0+c2V0
RGljdGlvbmFyeShkaWN0aW9uYXJ5LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2Nh
bGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGZkNjFhMDFmYmFmMGVjYTcxNDQ2M2JiMWQ1NzBjZmZh
NDFiNzY1OGQuLmRmYjcxNGI0NjUwNjFhYjIwMzUyYmEzZDc1Nzc0ZmJlZmFmMjdkN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcApAQCAtMTMyLDEyICsx
MzIsMTAgQEAgc3RhdGljIENGQnVuZGxlUmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgU3RyaW5nIGJ1bmRsZVBhdGhTdHJpbmcocGF0aFN0cik7Ci0gICAg
Q0ZTdHJpbmdSZWYgYnVuZGxlUGF0aENGU3RyaW5nID0gYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVD
RlN0cmluZygpOwotICAgIGlmICghYnVuZGxlUGF0aENGU3RyaW5nKQorICAgIGlmICghYnVuZGxl
UGF0aFN0cmluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBDRlVSTFJlZiBidW5kbGVVUkxS
ZWYgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBidW5kbGVQYXRoQ0ZTdHJpbmcs
IGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIHRydWUpOwotICAgIENGUmVsZWFzZShidW5kbGVQYXRo
Q0ZTdHJpbmcpOworICAgIENGVVJMUmVmIGJ1bmRsZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0aEZp
bGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSk7CiAgICAgaWYgKCFidW5kbGVVUkxSZWYpCiAg
ICAgICAgIHJldHVybiAwOwogCkBAIC0xNjgsOCArMTY2LDcgQEAgc3RhdGljIENGU3RyaW5nUmVm
IGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRs
ZSogc3QKICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJpbmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgIENGU3RyaW5nUmVmIHJlc3VsdCA9IENGQ29weUxvY2FsaXplZFN0cmluZ1dp
dGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5nLmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKTsK
KyAgICBDRlN0cmluZ1JlZiByZXN1bHQgPSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVs
dFZhbHVlKGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAw
KTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQg
bm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2Vz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1NjM0YTE1
YjNlZDNlMDFjMjYwNGE1YmUyNjAxMzcxMWZkY2NkYzMzLi44OTY3YjBiMzBhZTRkNDIzMzU4Yjlm
Y2U2ZjU4MzE5MWM5NmMwYzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVm
ZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBA
IC0xOTYsNyArMTk2LDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRT
ZXR0aW5ncygpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktp
dERlZmF1bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAg
IFN0cmluZyBkZWZhdWx0RGVmYXVsdEVuY29kaW5nKFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEi
LCAiVGhlIGRlZmF1bHQsIGRlZmF1bHQgY2hhcmFjdGVyIGVuY29kaW5nIikpOwotICAgIENGRGlj
dGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5n
TmFtZVByZWZlcmVuY2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5n
KCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZh
dWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5n
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBr
Q0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9uUHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDZiMWJhZGU0YWFmMmU5NWEyMDRmOTJhMjZkNGFiMDI0
MGEyNzI4MzguLjNhMWI3NGUyMTM1MWZhZGE2ZDQxYWNkZjg5ZjI1NGE4M2FhY2I2ODcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYlZpZXcuY3BwCkBAIC00NzEsNyArNDcxLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNo
ZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2RlbCkKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNo
ZVJlZj4gY2Z1cmxDYWNoZShBZG9wdENGLCBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkp
OwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2Z1cmxDYWNoZURpcmVjdG9yeShBZG9wdENG
LCB3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3RvcnkoMCkpOwogICAgIGlmICghY2Z1cmxDYWNo
ZURpcmVjdG9yeSkKLSAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6
OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOwor
ICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNT
dG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2Ug
ZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5
dGUgCiAgICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91
bmRhcnkuCkBAIC00NzEyLDggKzQ3MTIsNyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZl
cmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgICAgIGlm
IChGQUlMRUQoaHIpKQogICAgICAgICAgICAgcmV0dXJuIGhyOwogCi0gICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJM
Q3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmxTdHJpbmcuZ2V0KCksIDAp
KTsKKyAgICAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVX
aXRoU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgMCkpOwogCiAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBwYXNzZWQgaW4gc3Ry
aW5nIGlzIGEgcGF0aCBhbmQgY29udmVydCBpdCB0byBhIFVSTC4KICAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBuaWdodGx5IGJ1aWxkcyB1bnRpbCB3ZSBjYW4gZ2V0
IFNhZmFyaSB0byBwYXNzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFj
L01vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0K
aW5kZXggNGEzNWI2YTJkOGEzMmM1ZGQ4MzQ5NzJjZDJmZGYyYWRjMzkxZTYxYS4uMzY4NzUzMTUx
NzIxOGRhMjllOWNkZGRhNDIzMmEzYjEyODI1MzMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9y
bS9tYWMvTW9kdWxlTWFjLm1tCkBAIC0zMCwxMiArMzAsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1
bmRsZVBhdGgoQWRvcHRDRiwgbV9wYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0
aFN0eWxlLCBGQUxTRSkpOworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBt
X3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNF
KSk7CiAgICAgaWYgKCFidW5kbGVVUkwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJl
dGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRs
ZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVn
aW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2lu
UHJvY2Vzc01hYy5tbQppbmRleCBkZTdkNTgzMWY2MDhjMzgzMGUzYzliZTE0YjM5NDY1ZWIyYzcx
YzNiLi42NzFmMjBkNmRjYWJlMWZjMWJhMzk1NTdkNWU2MjhlZTdlZDdlZDJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0K
QEAgLTI3OSw4ICsyNzksNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBT
dHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmluZyYgc2FuZGJveFBybwogICAgIGlmIChzYW5k
Ym94UHJvZmlsZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGx1Z2luUGF0aCA9IGFkb3B0Q0YocGx1Z2luUGF0
aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9
IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZQbHVnaW5QYXRoLmdl
dCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwg
cGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwg
ZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVSTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTIs
OCArMjkxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIHNhbmRib3hQcm8KICAgICBpZiAoIWJ1bmRsZUlkZW50
aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZT
YW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGggPSBhZG9wdENGKHNhbmRib3hQcm9maWxlRGlyZWN0
b3J5UGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRi
b3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aCgwLCBjZlNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRo
U3R5bGUsIFRSVUUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGly
ZWN0b3J5ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzYW5kYm94
UHJvZmlsZURpcmVjdG9yeVBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQ
YXRoU3R5bGUsIFRSVUUpKTsKIAogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2FuZGJveEZp
bGVOYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlQC5zYiIpLCBi
dW5kbGVJZGVudGlmaWVyKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hVUkwgPSBh
ZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoUmVsYXRpdmVUb0Jhc2UoMCwgc2Fu
ZGJveEZpbGVOYW1lLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UsIHNhbmRib3hQ
cm9maWxlRGlyZWN0b3J5LmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1
bGVNYWMubW0KaW5kZXggODFiMzhlMGVjOGZlM2M0MTg4OTc5ZWVmZDA2MjI3YjM3MGZkNGEzZS4u
M2RjMzc3YzQ0NTBkODhmZTI1ZjcwMmIwZmE1NDNhMzhlMjhmNmMxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9k
dWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21h
Yy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQpAQCAtMzUyLDExICszNTIsMTAgQEAgc3RhdGlj
IGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21DYXJib25SZXNvdXJjZXMoQ0ZCdW5kbGVSZWYgYnVuZGxl
LCBQbHVnaW5Nb2R1bGVJbmYKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2lu
SW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikK
IHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2lu
UGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVS
TChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBidW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAv
LyBUcnkgdG8gaW5pdGlhbGl6ZSB0aGUgYnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJl
Zj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1
bmRsZVVSTC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRv
cHRDRihDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkp
KTsKICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMzk1
LDExICszOTQsOSBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSQogCiBib29sIE5ldHNjYXBlUGx1
Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5NSU1FVHlwZXNQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcm
IHBsdWdpblBhdGgpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFk
b3B0Q0YsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJM
UmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUs
IGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENG
VVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBh
dGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7
CiAgICAgCi0gICAgLy8gVHJ5IHRvIGluaXRpYWxpemUgdGhlIGJ1bmRsZS4KLSAgICBSZXRhaW5Q
dHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShBZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+
IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVu
ZGxlVVJMLmdldCgpKSk7CiAgICAgaWYgKCFidW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJk
TGlzdENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExp
c3RDRi5jcHAKaW5kZXggY2RmZjM0NDY5YTIzOTNkMzVhZGJhYmM0Y2IwYTM4YmEwZjU2MjMyNC4u
N2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1NGM1OGFiM2E0OGEyYjRiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCkBAIC05
NCw5ICs5NCw5IEBAIENGRGljdGlvbmFyeVJlZiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNG
RGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBhZ2VQcm94CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1
cmwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT51cmwoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZShBZG9wdENGLCBtX2VudHJpZXNbaV0tPnRp
dGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
b3JpZ2luYWxVUkwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybCA9IG1fZW50cmll
c1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB0aXRsZSA9IG1fZW50cmllc1tpXS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsVVJMID0gbV9lbnRyaWVzW2ldLT5v
cmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
dXNlcyB0aGUgQ29yZUlQQyBkYXRhIGVuY29kaW5nIGZvcm1hdCwgd2hpY2ggbWVhbnMgdGhhdCB3
aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIENvcmVJUEMgZW5jb2Rpbmcgd2UgbmVlZCB0byBidW1wIHRo
ZSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNpb24KICAgICAgICAgLy8gY29uc3RhbnQgaW4g
V2ViUGFnZVByb3h5Q0YuY3BwLiBUaGUgQ29yZUlQQyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBi
ZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxk
IGJlIHdyaXR0ZW4gdG8gZGlzay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9jZi9XZWJQYWdlUHJveHlDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2Vi
UGFnZVByb3h5Q0YuY3BwCmluZGV4IDc5ZGQ4Y2VkMDJkN2NlMGQ0ZjNjMjQwNDgxOGI4MDFiZTQw
ZjFmN2EuLmQyMmVlZDI5NGMwY2YzZjhmMTJjNzNlZTg4MjBhNWMzZGJjZTk1MmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBQYXNzUmVmUHRyPFdlYkRhdGE+IFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0
YShXZWJQYWdlUHJveHlTZXNzaW9uU3RhdGVGaWx0ZQogICAgICAgICBpZiAocHJvdmlzaW9uYWxV
UkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgcHJvdmlzaW9uYWxVUkwgPSBtX21haW5GcmFtZS0+
cHJvdmlzaW9uYWxVUkwoKTsKICAgICAgICAgaWYgKCFwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgIHByb3Zpc2lvbmFsVVJMU3RyaW5nLmFkb3B0Q0YocHJvdmlzaW9uYWxV
UkwuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgICAgICBwcm92aXNpb25hbFVSTFN0cmluZyA9
IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAgICBrZXlzW251bVZh
bHVlc10gPSBQcm92aXNpb25hbFVSTEtleSgpOwogICAgICAgICAgICAgdmFsdWVzW251bVZhbHVl
c10gPSBwcm92aXNpb25hbFVSTFN0cmluZy5nZXQoKTsKICAgICAgICAgICAgICsrbnVtVmFsdWVz
OwpAQCAtMTc5LDggKzE3OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZURhdGEoV2ViRGF0YSogd2ViRGF0YSkKIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFN0cmluZyBrZXkg
PSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0
YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAg
cmV0dXJuICgiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZT
dHJpbmcoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKQEAgLTE5
MiwxMCArMTkxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JgogCiAgICAgaWYgKHNpemVfdCBz
aXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJh
eUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVt
LmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNo
SXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NG
UHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hl
TWFuYWdlci5jcHAKaW5kZXggNjgxMGYwYWJkYjlkYmViYTk5ZmEzZTFlOWIwZjA2Y2U0NWFlMDQ5
NC4uMzk1NjQ5YzUwYmY0ZDZkZjA0YmM3NTQwYjU0YmFmNTlkYjJjMzY4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUv
V2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUNhY2hlTWFuYWdlcjo6Y2xlYXJDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbkRh
dGEgb3JpZ2luRGF0YSwKICNpZiBVU0UoQ0ZVUkxDQUNIRSkKICAgICBpZiAocmVzb3VyY2VDYWNo
ZXNUb0NsZWFyICE9IEluTWVtb3J5UmVzb3VyY2VDYWNoZXNPbmx5KSB7IAogICAgICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGhvc3RBcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRl
TXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gaG9zdChBZG9wdENGLCBvcmlnaW4tPmhvc3QoKS5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwgaG9zdC5n
ZXQoKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCksIG9yaWdp
bi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgIGNsZWFyQ0ZVUkxD
YWNoZUZvckhvc3ROYW1lcyhob3N0QXJyYXkuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IDYy
OTRmMDBkODhkZGEwNGJlNTI0MTA3YzZiZjY1OWJjOWU3MzBiYzQuLmM2ZjViNjc4MTJjMzMwZTQx
NzE2ZTE1OGIxNGZhMTg1Y2E0ODUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcApAQCAtMjcwLDggKzI3MCw3IEBAIHN0
YXRpYyBSZXRhaW5QdHI8Q0ZDYWNoZWRVUkxSZXNwb25zZVJlZj4gY2FjaGVkUmVzcG9uc2VGb3JV
UkwoV2ViUGFnZSogd2ViUGFnZSwKICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihSZXNv
dXJjZUhhbmRsZTo6Y3VycmVudFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QuZ2V0KCkpOwogI2Vu
ZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVzZXJBZ2VudChBZG9wdENGLCB3ZWJQ
YWdlLT51c2VyQWdlbnQoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmdldCgpLCBDRlNUUigiVXNlci1BZ2VudCIpLCB1
c2VyQWdlbnQuZ2V0KCkpOworICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVl
KHJlcXVlc3QuZ2V0KCksIENGU1RSKCJVc2VyLUFnZW50IiksIHdlYlBhZ2UtPnVzZXJBZ2VudCgp
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+
IGNhY2hlOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggMjVkYmMzNmM0OTliZjM5
NDY5MzRiNGUxMmU2NTYyMzBhZDliYjE5Mi4uZGE0YjU2ZGM4ODZjM2JhYmFkNzczN2Q4N2Q4ZTc0
NzQ5MWM5ZWE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2Vi
UHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJv
Y2Vzc1dpbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNl
dENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1vZGVsKQogICAgICAgICBjZnVybENhY2hlRGly
ZWN0b3J5LmFkb3B0Q0Yod2tDb3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KDApKTsKIAogICAg
IGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeS5h
ZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0
ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9j
YWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAg
IC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2Ug
dGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRv
IGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC0xNDgsMTMgKzE0OCwxMiBAQCB2b2lkIFdlYlByb2Nl
c3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycwogICAgIGlmIChkZWZhdWx0U3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0Q0YsIHBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghY2Fj
aGVQYXRoKQorICAgIGlmICghcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIENGSW5kZXggY2FjaGVEaXNrQ2FwYWNpdHkgPSBwYXJhbWV0ZXJzLmNm
VVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAgICAgQ0ZJbmRleCBjYWNoZU1lbW9yeUNhcGFjaXR5ID0g
cGFyYW1ldGVycy5jZlVSTENhY2hlTWVtb3J5Q2FwYWNpdHk7Ci0gICAgUmV0YWluUHRyPENGVVJM
Q2FjaGVSZWY+IHVpUHJvY2Vzc0NhY2hlKEFkb3B0Q0YsIENGVVJMQ2FjaGVDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgY2FjaGVNZW1vcnlDYXBhY2l0eSwgY2FjaGVEaXNrQ2FwYWNpdHksIGNh
Y2hlUGF0aC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiB1aVByb2Nlc3ND
YWNoZShBZG9wdENGLCBDRlVSTENhY2hlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNhY2hl
TWVtb3J5Q2FwYWNpdHksIGNhY2hlRGlza0NhcGFjaXR5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURp
cmVjdG9yeS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiAgICAgQ0ZVUkxDYWNoZVNldFNoYXJl
ZFVSTENhY2hlKHVpUHJvY2Vzc0NhY2hlLmdldCgpKTsKICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JL
KQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGYyOWIxYTdmNmQyNDM5YjBjMzQ4YWFkNjI4NWExYjg4ZTdkNTQwZjkuLmM2NTY1YjZmZjc2NmRk
NzRlODkxZjBjNzI5YjU1NzdmYjQ3ODUzZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yOSAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRl
Q0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVh
dGVDRlN0cmluZy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
bWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5k
bGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorCiAyMDEy
LTEwLTI2ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
Q3Jhc2ggd2hlbiBtYWtpbmcgTlBSdW50aW1lIGNhbGxzIHdpdGggYSBudWxsIE5QUCBwb2ludGVy
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9J
bmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0KaW5kZXggNDZjMjczZjFmOGNhNDBh
ZWUyN2M5NDc2YzgxZmU3Mzk0YzMzYmIyNC4uYjBjYjRlMDMxY2I3NDQ2MjhjMGJjMzRkNTdkMTc2
YjY4N2FmMTM0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbQpAQCAtODUs
OCArODUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6cGxhdGZvcm1EaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZQogICAgICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiQ1JBU0hJTkcgVEVTVDog
Iik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHRlc3RQYXRoKTsKLSAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjZlN0cmluZyhBZG9wdENGLCBidWlsZGVyLnRvU3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgICAgIFdLU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNpZmlj
SW5mb3JtYXRpb24oY2ZTdHJpbmcuZ2V0KCkpOworICAgICAgICBXS1NldENyYXNoUmVwb3J0QXBw
bGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGJ1aWxkZXIudG9TdHJpbmcoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKICAgICB9CiAjZW5kaWYKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171347</attachid>
            <date>2012-10-29 17:33:46 -0700</date>
            <delta_ts>2012-10-29 17:36:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121029173213.patch</filename>
            <type>text/plain</type>
            <size>81302</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4MTI3YjlmMTMxMjQ1ZTUzMDAwZDZi
ZmVhMTZkYTNkZTZhMWJmMjIuLjg0OWY4ODFjYTQ1NTFiNmM1NGY4MDViMzJjNDA4MmRlOWZkZWVl
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMTItMTAtMjggIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBYY29kZSBjb25maWd1cmF0aW9uIHNldHRp
bmdzIHRoYXQgdXNlZCB0byB2YXJ5IGJldHdlZW4gT1MgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGM2MGJhZWUyOWIxMGViZTVkNGIxNGJiZGE5YmFlMjJiNTkxZmI3Zi4uNjFkNjc1YWNmMjMzMDY2
YzliMGUxZDIyZjk4YzY3MmQxNzRkN2ViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisy
MDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEgUmV0YWluUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbGVy
cyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICogYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09i
amVjdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5L
ZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9GaWxlU3lz
dGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1D
QUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChyZXN1Ym1pdEFs
bEFuaW1hdGlvbnMpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjphZGRBbmltYXRpb25Gb3JL
ZXkpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkpOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgorICAgICAgICAo
UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0
aUZyb21NSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3Vy
Y2VDR01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp1dGlUeXBlRnJvbUNvY29hVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdl
bmVyYXRvck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRD
b29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpjZkVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RGVm
YXVsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEhlYWRlckZpZWxkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFs
cyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURl
c2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVl
c3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJM
UmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6OjpjcmVhdGVWYWx1ZUZvcktleSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9jZi9TdHJpbmdDRi5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAg
KFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvbWFjL1N0cmluZ0ltcGxNYWMubW06CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om9wZXJh
dG9yIE5TU3RyaW5nICopOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNNYWM6OmVuY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphdXRvc2F2ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OnNh
dmVSZWNlbnRTZWFyY2hlcyk6CisKIDIwMTItMTAtMjkgIFZpbmNlbnQgU2NoZWliICA8c2NoZWli
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyODQ1
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2NmL0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJl
Y2M1Li4xYjE3N2Q3OTZlNzhlODVjNzhlYmEzNGQ0MjhmNjM5NjNjMzBiMzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQg
cmV0dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAg
ICAoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToK
KyAgICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcu
aCwgcmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxMWQ1MGIxNzdk
YWY2ZTIwZjdhYWFkYjEzYjEyNWVlNWNkOTUwMGUzLi5lZWZlYzUxZmZlNDNhMmU3MTViYWY4MmQ5
YTA3YWRlMjI2YzhiOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTIt
MTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBT
dHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9m
IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRh
YmFzZSk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojp2
aXNpdGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcpOgorICAg
ICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpkaWN0
aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZv
VVJMS2V5KToKKyAgICAgICAgKHBvc3REaWRBZGRJY29uTm90aWZpY2F0aW9uKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnVuZGxl
KToKKyAgICAgICAgKGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxlKToKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURl
ZmF1bHRTZXR0aW5ncyk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3
OjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZCk6CisKIDIwMTItMTAtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhIHN0cmF0ZWd5IGZvciBsb2FkZXIgY3VzdG9taXphdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA0ZWY0NDFlZGNjYzE3ZWI3MTY4ZjcyZDkxMGVjY2ZmMGYzZmY0ODY2Li5kNjZmNzJi
M2M0MGE1YzQ4ODQyMWEzZmM5YWNkYTY2NGNhMDljY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5Q
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjYWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9tYWMvTW9kdWxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2R1bGU6OmxvYWQpOgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZlcmVuY2VzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjphdXRvc2F2ZUtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUNhY2hl
TWFuYWdlcjo6Y2xlYXJDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9XZWJQYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2FjaGVkUmVzcG9uc2VG
b3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwog
MjAxMi0xMC0yOSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAog
ICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogRGVsZXRlIGNhY2hlZCBTaGFyZWFibGVTdXJm
YWNlcyB3aGVuIHB1cmdpbmcgYmFja2luZ1N0b3Jlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQXRvbWljU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oCmluZGV4IDhhZWE1ODUwNzdjYzUxMjRlMGJkY2U4MmY4YWViYjA4ZDc1ODU1OWIuLjlmNzhl
ZWQ3OTdkMzRmNTg3M2U3YmNmNTA0ZWRmNjhjY2U5MDc0MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9BdG9t
aWNTdHJpbmcuaApAQCAtMTM4LDcgKzEzOCwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
cmVtb3ZlKFN0cmluZ0ltcGwqKTsKICAgICAKICNpZiBVU0UoQ0YpCis8PDw8PDw8IFVwZGF0ZWQg
dXBzdHJlYW0KICAgICBBdG9taWNTdHJpbmcoQ0ZTdHJpbmdSZWYgcykgOiAgbV9zdHJpbmcoYWRk
KHMpKSB7IH0KKz09PT09PT0KKyAgICBBdG9taWNTdHJpbmcoQ0ZTdHJpbmdSZWYgcykgOiAgbV9z
dHJpbmcoYWRkKFN0cmluZyhzKS5pbXBsKCkpKSB7IH0KKz4+Pj4+Pj4gU3Rhc2hlZCBjaGFuZ2Vz
CiAjZW5kaWYgICAgCiAjaWZkZWYgX19PQkpDX18KICAgICBBdG9taWNTdHJpbmcoTlNTdHJpbmcq
IHMpIDogbV9zdHJpbmcoYWRkKChDRlN0cmluZ1JlZilzKSkgeyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCmluZGV4IDA5ZWY2NDY4MDFmYmM5YjU2OGVmZTRlNjg3NmE5Y2UwYTM5YzBhYWIuLmVi
NDY2MmM1YzI0ZGExMWNkMzc4OTk2YzA1NmNiYzkxYzVlOGZjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCkBAIC02Nyw2ICs2Nyw3IEBAIHN0cnVjdCBDaGFyQnVmZmVyRnJvbUxpdGVyYWxE
YXRhVHJhbnNsYXRvcjsKIGNsYXNzIE1lbW9yeU9iamVjdEluZm87CiBzdHJ1Y3QgU3Vic3RyaW5n
VHJhbnNsYXRvcjsKIHN0cnVjdCBVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7Cit0ZW1wbGF0ZTx0eXBl
bmFtZT4gY2xhc3MgUmV0YWluUHRyOwogCiBlbnVtIFRleHRDYXNlU2Vuc2l0aXZpdHkgeyBUZXh0
Q2FzZVNlbnNpdGl2ZSwgVGV4dENhc2VJbnNlbnNpdGl2ZSB9OwogCkBAIC03MTQsNyArNzE1LDcg
QEAgcHVibGljOgogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBXVEY6OlVuaWNvZGU6OkRpcmVj
dGlvbiBkZWZhdWx0V3JpdGluZ0RpcmVjdGlvbihib29sKiBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0
eSA9IDApOwogCiAjaWYgVVNFKENGKQotICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCk7
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVDRlN0cmluZygpOwogI2VuZGlmCiAj
aWZkZWYgX19PQkpDX18KICAgICBvcGVyYXRvciBOU1N0cmluZyooKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCmluZGV4IGU1OGJhZWQ4NWFmNWFlOTBjZTdmM2UwM2ZlNDBlYmVkOGRkM2M2OGQuLjYy
NGViNTRhYWM3ZmQ3MzdhYWNmMzFhMWM1ZGI5MmIwNGZkNmRlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaApAQCAtMzIsMTAgKzMyLDYgQEAKICNpbmNsdWRlIDxvYmpjL29iamMuaD4KICNlbmRp
ZgogCi0jaWYgVVNFKENGKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3Ry
aW5nUmVmOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKIFFUX0JFR0lOX05BTUVTUEFDRQog
Y2xhc3MgUVN0cmluZzsKQEAgLTM5Miw3ICszODgsNyBAQCBwdWJsaWM6CiAKICNpZiBVU0UoQ0Yp
CiAgICAgU3RyaW5nKENGU3RyaW5nUmVmKTsKLSAgICBDRlN0cmluZ1JlZiBjcmVhdGVDRlN0cmlu
ZygpIGNvbnN0OworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlQ0ZTdHJpbmcoKSBj
b25zdDsKICNlbmRpZgogCiAjaWZkZWYgX19PQkpDX18KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfcnVudGltZS5tbQppbmRleCAyY2YwZGI1NjE4ZTM4MjBjZGY0NDY0NTU4MzQxZjY5
NGY1M2QxZmEzLi5iZTI0ZmRiM2ZkYjEzN2M4MGI2ZjBhNGZiODg3NDFhYjM0MWE0ZDc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCkBAIC0yNDgsOCArMjQ4
LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbE9iakNGYWxsYmFj
a09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIE9iamNDbGFzcyogb2JqY0NsYXNzID0g
c3RhdGljX2Nhc3Q8T2JqY0NsYXNzKj4ob2JqY0luc3RhbmNlLT5nZXRDbGFzcygpKTsKICAgICAg
ICAgT3duUHRyPE9iamNNZXRob2Q+IGZhbGxiYWNrTWV0aG9kKGFkb3B0UHRyKG5ldyBPYmpjTWV0
aG9kKG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRNZXRob2RGcm9t
V2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBuYW1l
SWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdEltcCo+KGV4ZWMtPmNh
bGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
bmFtZShBZG9wdENGLCBuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAg
ZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWUuZ2V0KCkpOworICAgICAgICBm
YWxsYmFja01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZUlkZW50aWZpZXIuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIHJlc3VsdCA9IG9iamNJbnN0YW5jZS0+aW52b2tlT2Jq
Y01ldGhvZChleGVjLCBmYWxsYmFja01ldGhvZC5nZXQoKSk7CiAgICAgfQogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0NThlYWM2OWY2
ZWY2MmY2NmE0NGE4NmExMjYxMjdhMzViMThkMWYyLi5lOWNkMWFmZmM5ZTY2MWQ5OGU0ZTY0ZDk3
NjQ0YTlhMTFiZmJkNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKQEAgLTkxNiw4ICs5MTYsNyBAQCBzdGF0aWMgS1VSTCBjcmVhdGVGaWxlVVJMRm9yQXBwbGlj
YXRpb25DYWNoZVJlc291cmNlKGNvbnN0IFN0cmluZyYgcGF0aCkKICAgICAvLyBhcHAgY2FjaGUg
bWVkaWEgZmlsZXMgYXJlIGFsd2F5cyBjcmVhdGVkIHdpdGggZW5jb2RlRm9yRmlsZU5hbWUoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKS4KIAogI2lmIFVTRShDRikgJiYgUExBVEZPUk0oV0lO
KQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZQYXRoKEFkb3B0Q0YsIHBhdGguY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTChBZG9wdENGLCBDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlBhdGguZ2V0KCksIGtDRlVSTFdpbmRvd3NQ
YXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBjZlVSTChBZG9wdENG
LCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgS1VSTCB1cmwoY2ZV
UkwuZ2V0KCkpOwogI2Vsc2UKICAgICBLVVJMIHVybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKaW5kZXggMzU3NmQ2NGRm
YzQ4MmE0MWQ1NGUxM2VmZDE5NzgxNjJiNzgwN2E3Zi4uZDc3Zjg3NGIwOWRjMjAwOWJiZWQwMzUy
NDE4MzViZmU4NmY4OGUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hp
dmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fy
Y2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTkxLDggKzkxLDcgQEAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVw
cmVzZW50YXRpb24oQXIKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0
KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZURhdGFLZXksIGNmRGF0YS5nZXQoKSk7CiAgICAg
CiAgICAgLy8gUmVzb3VyY2UgVVJMIGNhbm5vdCBiZSBudWxsCi0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjZlVSTChBZG9wdENGLCByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgaWYgKGNmVVJMKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmVVJMID0gcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpCiAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJj
aGl2ZVJlc291cmNlVVJMS2V5LCBjZlVSTC5nZXQoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIExP
RyhBcmNoaXZlcywgIkxlZ2FjeVdlYkFyY2hpdmUgLSBOVUxMIHJlc291cmNlIFVSTCBpcyBpbnZh
bGlkIC0gcmV0dXJuaW5nIG51bGwgcHJvcGVydHkgbGlzdCIpOwpAQCAtMTAxLDIzICsxMDAsMTcg
QEAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJv
cGVydHlMaXN0UmVwcmVzZW50YXRpb24oQXIKIAogICAgIC8vIEZyYW1lTmFtZSBzaG91bGQgYmUg
bGVmdCBvdXQgaWYgZW1wdHkgZm9yIHN1YnJlc291cmNlcywgYnV0IGFsd2F5cyBpbmNsdWRlZCBm
b3IgbWFpbiByZXNvdXJjZXMKICAgICBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZShyZXNvdXJjZS0+
ZnJhbWVOYW1lKCkpOwotICAgIGlmICghZnJhbWVOYW1lLmlzRW1wdHkoKSB8fCBpc01haW5SZXNv
dXJjZSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmRnJhbWVOYW1lKEFkb3B0
Q0YsIGZyYW1lTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VGcmFtZU5h
bWVLZXksIGNmRnJhbWVOYW1lLmdldCgpKTsKLSAgICB9CisgICAgaWYgKCFmcmFtZU5hbWUuaXNF
bXB0eSgpIHx8IGlzTWFpblJlc291cmNlKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZUZyYW1lTmFtZUtleSwg
ZnJhbWVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIAogICAgIC8vIFNldCBNSU1F
VHlwZSwgVGV4dEVuY29kaW5nTmFtZSwgYW5kIFJlc291cmNlUmVzcG9uc2Ugb25seSBpZiB0aGV5
IGFjdHVhbGx5IGV4aXN0CiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZShyZXNvdXJjZS0+bWlt
ZVR5cGUoKSk7Ci0gICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBjZk1JTUVUeXBlKEFkb3B0Q0YsIG1pbWVUeXBlLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCks
IExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZU1JTUVUeXBlS2V5LCBjZk1JTUVUeXBlLmdldCgpKTsK
LSAgICB9CisgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCisgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlTUlN
RVR5cGVLZXksIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIAogICAgIGNv
bnN0IFN0cmluZyYgdGV4dEVuY29kaW5nKHJlc291cmNlLT50ZXh0RW5jb2RpbmcoKSk7Ci0gICAg
aWYgKCF0ZXh0RW5jb2RpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZUZXh0RW5jb2RpbmcoQWRvcHRDRiwgdGV4dEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExl
Z2FjeVdlYkFyY2hpdmVSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXksIGNmVGV4dEVuY29kaW5n
LmdldCgpKTsKLSAgICB9CisgICAgaWYgKCF0ZXh0RW5jb2RpbmcuaXNFbXB0eSgpKQorICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hp
dmVSZXNvdXJjZVRleHRFbmNvZGluZ05hbWVLZXksIHRleHRFbmNvZGluZy5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIAogICAgIC8vIERvbid0IGluY2x1ZGUgdGhlIHJlc291cmNlIHJlc3BvbnNl
IGZvciB0aGUgbWFpbiByZXNvdXJjZQogICAgIGlmICghaXNNYWluUmVzb3VyY2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAKaW5kZXggYWJmMWJjYTVl
ODU0MTBiYTg3ZDVjYWI4MjUwMGQ5NjlmMTA5MjZhNy4uNjkwODQzYjEzNzc4MzQ4MjgwZWM3ZWE1
YjQzNzM4OGU5ZGRjNjQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVk
U3RyaW5ncy5jcHAKQEAgLTU0LDEzICs1NCwxMiBAQCBzdGF0aWMgU3RyaW5nIGZvcm1hdExvY2Fs
aXplZFN0cmluZyhTdHJpbmcgZm9ybWF0LCAuLi4pCiAjaWYgVVNFKENGKQogICAgIHZhX2xpc3Qg
YXJndW1lbnRzOwogICAgIHZhX3N0YXJ0KGFyZ3VtZW50cywgZm9ybWF0KTsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGZvcm1hdENGU3RyaW5nKEFkb3B0Q0YsIGZvcm1hdC5jcmVhdGVDRlN0
cmluZygpKTsKIAogI2lmIENPTVBJTEVSKENMQU5HKQogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRl
cmFsIgogI2VuZGlmCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwg
Q0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKDAsIDAsIGZvcm1hdENGU3RyaW5n
LmdldCgpLCBhcmd1bWVudHMpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdCA9
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0QW5kQXJndW1lbnRzKDAsIDAsIGZvcm1h
dC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhcmd1bWVudHMpKTsKICNpZiBDT01QSUxFUihDTEFO
RykKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICNlbmRpZgpAQCAtMjYwLDcgKzI1OSw3
IEBAIFN0cmluZyBjb250ZXh0TWVudUl0ZW1UYWdMb29rVXBJbkRpY3Rpb25hcnkoY29uc3QgU3Ry
aW5nJiBzZWxlY3RlZFN0cmluZykKICAgICByZXR1cm4gV0VCX1VJX1NUUklORygiTG9vayBVcCBp
biBEaWN0aW9uYXJ5IiwgIkxvb2sgVXAgaW4gRGljdGlvbmFyeSBjb250ZXh0IG1lbnUgaXRlbSIp
OwogI2Vsc2UKICNpZiBVU0UoQ0YpCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzZWxlY3Rl
ZENGU3RyaW5nKEFkb3B0Q0YsIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVj
dGVkU3RyaW5nKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHNlbGVjdGVkQ0ZTdHJpbmcgPSB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVk
U3RyaW5nKFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcJUDigJ0iLCAiTG9vayBVcCBjb250ZXh0
IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKSwgc2VsZWN0ZWRDRlN0cmluZy5nZXQoKSk7
CiAjZWxzZQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJMb29rIFVwIOKAnDxzZWxlY3Rpb24+
4oCdIiwgIkxvb2sgVXAgY29udGV4dCBtZW51IGl0ZW0gd2l0aCBzZWxlY3RlZCB3b3JkIikucmVw
bGFjZSgiPHNlbGVjdGlvbj4iLCB0cnVuY2F0ZWRTdHJpbmdGb3JMb29rdXBNZW51SXRlbShzZWxl
Y3RlZFN0cmluZykpOwpAQCAtNzM4LDggKzczNyw3IEBAIFN0cmluZyBrZXlnZW5NZW51SXRlbTIw
NDgoKQogCiBTdHJpbmcga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZShjb25zdCBTdHJpbmcmIGhvc3Qp
CiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0Q0ZTdHJpbmcoQWRvcHRDRiwgaG9z
dC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdF
Ql9VSV9TVFJJTkcoIktleSBmcm9tICVAIiwgIk5hbWUgb2Yga2V5Y2hhaW4ga2V5IGdlbmVyYXRl
ZCBieSB0aGUgS0VZR0VOIHRhZyIpLCBob3N0Q0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBv
ZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRoZSBLRVlHRU4gdGFnIiksIGhvc3QuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKICNlbmRpZgpAQCAtNzYyLDggKzc2MCw3IEBAIFN0cmlu
ZyBpbWFnZVRpdGxlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAjaWYgVVNFKENGKQogI2lmICFQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykgfHwg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDYwCi0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBmaWxlbmFtZUNGU3RyaW5nKEFkb3B0Q0YsIGZpbGVuYW1lLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlKEFkb3B0Q0YsIENGTG9j
YWxlQ29weUN1cnJlbnQoKSk7CisgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBh
ZG9wdENGKENGTG9jYWxlQ29weUN1cnJlbnQoKSk7CiAgICAgUmV0YWluUHRyPENGTnVtYmVyRm9y
bWF0dGVyUmVmPiBmb3JtYXR0ZXIoQWRvcHRDRiwgQ0ZOdW1iZXJGb3JtYXR0ZXJDcmVhdGUoMCwg
bG9jYWxlLmdldCgpLCBrQ0ZOdW1iZXJGb3JtYXR0ZXJEZWNpbWFsU3R5bGUpKTsKIAogICAgIGlu
dCB3aWR0aEludCA9IHNpemUud2lkdGgoKTsKQEAgLTc3NCw3ICs3NzEsNyBAQCBTdHJpbmcgaW1h
Z2VUaXRsZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IFJldGFpblB0cjxDRk51bWJlclJlZj4gaGVpZ2h0KEFkb3B0Q0YsIENGTnVtYmVyQ3JlYXRlKDAs
IGtDRk51bWJlckludFR5cGUsICZoZWlnaHRJbnQpKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGhlaWdodFN0cmluZyhBZG9wdENGLCBDRk51bWJlckZvcm1hdHRlckNyZWF0ZVN0cmluZ1dp
dGhOdW1iZXIoMCwgZm9ybWF0dGVyLmdldCgpLCBoZWlnaHQuZ2V0KCkpKTsKIAotICAgIHJldHVy
biBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIs
ICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlv
biBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5nLmdldCgpLCB3aWR0aFN0cmluZy5n
ZXQoKSwgaGVpZ2h0U3RyaW5nLmdldCgpKTsKKyAgICByZXR1cm4gZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFdFQl9VSV9TVFJJTkcoIiVAICVAw5clQCBwaXhlbHMiLCAid2luZG93IHRpdGxlIGZvciBh
IHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRpb24gc3ltYm9sLCBub3QgeCkiKSwg
ZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgd2lkdGhTdHJpbmcuZ2V0KCksIGhlaWdo
dFN0cmluZy5nZXQoKSk7CiAjZWxzZQogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZW5h
bWVDRlN0cmluZyhBZG9wdENGLCBmaWxlbmFtZS5jcmVhdGVDRlN0cmluZygpKTsKICAgICByZXR1
cm4gZm9ybWF0TG9jYWxpemVkU3RyaW5nKFdFQl9VSV9TVFJJTkcoIiVAICVkw5clZCBwaXhlbHMi
LCAid2luZG93IHRpdGxlIGZvciBhIHN0YW5kYWxvbmUgaW1hZ2UgKHVzZXMgbXVsdGlwbGljYXRp
b24gc3ltYm9sLCBub3QgeCkiKSwgZmlsZW5hbWVDRlN0cmluZy5nZXQoKSwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50
aW1lQXBwbGljYXRpb25DaGVja3MuY3BwCmluZGV4IDFiOGQwMDZmMjUxOWFhOGE4ZjNhOGM0NTBl
ZmQyNzM0MThhZjQyODQuLjczMGVkYzE1ZmU5MWJjOTI3NzA4NWNjYzI4ODdiMDc5MDY3ODBiZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9u
Q2hlY2tzLmNwcApAQCAtNDYsOCArNDYsNyBAQCBzdGF0aWMgYm9vbCBtYWluQnVuZGxlSXNFcXVh
bFRvKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllclN0cmluZykKICAgICBpZiAoIWJ1bmRs
ZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gYnVuZGxlSWRlbnRpZmllclRvQ29tcGFyZShBZG9wdENGLCBidW5kbGVJZGVudGlm
aWVyU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIHJldHVybiBDRlN0cmluZ0NvbXBhcmUo
YnVuZGxlSWRlbnRpZmllciwgYnVuZGxlSWRlbnRpZmllclRvQ29tcGFyZS5nZXQoKSwgMCkgPT0g
a0NGQ29tcGFyZUVxdWFsVG87CisgICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZShidW5kbGVJZGVu
dGlmaWVyLCBidW5kbGVJZGVudGlmaWVyU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDAp
ID09IGtDRkNvbXBhcmVFcXVhbFRvOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYnVuZGxlSWRl
bnRpZmllclN0cmluZyk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKaW5kZXggOGVmNTBlZWIwY2IwODRkMWI5YjIzYjg3YzNi
ZmE4OTgzOTJiOGEyZC4uZmZlYTkwNThiN2EzYjJkMDJjYjgyMTA2YTgwMGQ1MjlmODkwNDU0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvRmlsZVN5c3RlbUNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCkBAIC0zNyw3
ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ1N0cmluZyBmaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24oY29uc3QgU3RyaW5nJiBwYXRoKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2ZTdHJpbmcoQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gcGF0aC5jcmVhdGVDRlN0cmluZygpOwogCiAgICAg
aWYgKCFjZlN0cmluZykKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsKQEAgLTYzLDggKzYzLDcg
QEAgUmV0YWluUHRyPENGVVJMUmVmPiBwYXRoQXNVUkwoY29uc3QgU3RyaW5nJiBwYXRoKQogI2Vs
c2UKICAgICBwYXRoU3R5bGUgPSBrQ0ZVUkxQT1NJWFBhdGhTdHlsZTsKICNlbmRpZgotICAgIHJl
dHVybiBSZXRhaW5QdHI8Q0ZVUkxSZWY+KEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoKDAsCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgcGF0aC5j
cmVhdGVDRlN0cmluZygpKS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOworICAgIHJldHVybiBh
ZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgcGF0aFN0eWxlLCBGQUxTRSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4v
UGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKaW5kZXggOTdmYjBiNjA5NDY4
ZjRlZDM1YjFlMTkzOGQ5OGJiZDg5NDIyMjU4Ni4uODU2YTRmY2FkZWQyZjBiNjI2MGY1ZTkyYmUx
MTQ1ZGMxMmE1Yzg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcApAQCAt
MTUxLDggKzE1MSw3IEBAIFBsYXRmb3JtQ0FBbmltYXRpb246OlBsYXRmb3JtQ0FBbmltYXRpb24o
QW5pbWF0aW9uVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGtleVBhCiAgICAgZWxzZQogICAgICAg
ICBtX2FuaW1hdGlvbi5hZG9wdENGKENBQ0ZBbmltYXRpb25DcmVhdGUoa0NBQ0ZLZXlmcmFtZUFu
aW1hdGlvbikpOwogICAgIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENGLCBr
ZXlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1f
YW5pbWF0aW9uLmdldCgpLCBzLmdldCgpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0S2V5UGF0aCht
X2FuaW1hdGlvbi5nZXQoKSwga2V5UGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAog
UGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihQbGF0Zm9ybUFuaW1hdGlv
blJlZiBhbmltYXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCmluZGV4IDcwMTY4YjIx
MDRkYjM2OWRhMDc1N2ExMTQ0NjIyMTExYmMzMDYxZjAuLmRkNjE2MzM3ZTkzNjZlYjc5Yzk2YzY3
MmI3MzkzYjY5MjQzNmZjNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwCkBAIC0xNzYs
MTAgKzE3Niw4IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyOjphbmltYXRpb25TdGFydGVkKENGVGlt
ZUludGVydmFsIGJlZ2luVGltZSkKIHN0YXRpYyB2b2lkIHJlc3VibWl0QWxsQW5pbWF0aW9ucyhQ
bGF0Zm9ybUNBTGF5ZXIqIGxheWVyKQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxh
dGZvcm1DQUFuaW1hdGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbGF5ZXItPmFuaW1hdGlv
bnMoKS5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UGxhdGZvcm1DQUFu
aW1hdGlvbj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBsYXllci0+YW5pbWF0aW9ucygpLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMo
QWRvcHRDRiwgaXQtPmtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0FDRkxheWVyQWRk
QW5pbWF0aW9uKGxheWVyLT5wbGF0Zm9ybUxheWVyKCksIHMuZ2V0KCksIGl0LT52YWx1ZS0+cGxh
dGZvcm1BbmltYXRpb24oKSk7Ci0gICAgfQorICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0
cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyLT5hbmlt
YXRpb25zKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBDQUNGTGF5ZXJBZGRB
bmltYXRpb24obGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgaXQtPmtleS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCBpdC0+dmFsdWUtPnBsYXRmb3JtQW5pbWF0aW9uKCkpOwogfQogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllcjo6ZW5zdXJlQW5pbWF0aW9uc1N1Ym1pdHRlZCgpCkBAIC0yOTcsOCArMjk1LDcg
QEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSwgUGxhdGZvcm1DQUFuaW1hdGlvbioKICAgICAvLyBBZGQgaXQgdG8gdGhlIGFuaW1hdGlv
biBsaXN0CiAgICAgbV9hbmltYXRpb25zLmFkZChrZXksIGFuaW1hdGlvbik7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAg
IENBQ0ZMYXllckFkZEFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBzLmdldCgpLCBhbmltYXRpb24t
PnBsYXRmb3JtQW5pbWF0aW9uKCkpOworICAgIENBQ0ZMYXllckFkZEFuaW1hdGlvbihtX2xheWVy
LmdldCgpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgYW5pbWF0aW9uLT5wbGF0Zm9ybUFu
aW1hdGlvbigpKTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogCiAgICAgLy8gVGVsbCB0aGUgaG9z
dCBhYm91dCBpdCBzbyB3ZSBjYW4gZmlyZSB0aGUgc3RhcnQgYW5pbWF0aW9uIGV2ZW50CkBAIC0z
MTIsOCArMzA5LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnJlbW92ZUFuaW1hdGlvbkZvcktl
eShjb25zdCBTdHJpbmcmIGtleSkKICAgICAvLyBSZW1vdmUgaXQgZnJvbSB0aGUgYW5pbWF0aW9u
IGxpc3QKICAgICBtX2FuaW1hdGlvbnMucmVtb3ZlKGtleSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHMoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENBQ0ZMYXll
clJlbW92ZUFuaW1hdGlvbihtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBDQUNGTGF5ZXJS
ZW1vdmVBbmltYXRpb24obV9sYXllci5nZXQoKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogCiAgICAgLy8gV2UgZG9uJ3QgInJlbW92ZSIgYSBsYXllciBmcm9tIEFic3RyYWN0Q0FDRkxh
eWVyVHJlZUhvc3Qgd2hlbiBpdCBsb3NlcyBhbiBhbmltYXRpb24uCiAgICAgLy8gVGhlcmUgbWF5
IGJlIG90aGVyIGFjdGl2ZSBhbmltYXRpb25zIG9uIHRoZSBsYXllciBhbmQgaWYgYW4gYW5pbWF0
aW9uCkBAIC01ODYsOCArNTgyLDcgQEAgU3RyaW5nIFBsYXRmb3JtQ0FMYXllcjo6bmFtZSgpIGNv
bnN0CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIHZhbHVlLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgIENBQ0ZMYXllclNldE5hbWUobV9sYXllci5nZXQoKSwgcy5nZXQoKSk7
CisgICAgQ0FDRkxheWVyU2V0TmFtZShtX2xheWVyLmdldCgpLCB2YWx1ZS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50
ZXJuYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRm
b3JtQ0FMYXllcldpbkludGVybmFsLmNwcAppbmRleCBjNDMwY2YyODQ2MTQ2NjQ3YmY2MWZjN2E3
MTYyOWY1MmYwMjFmYTZhLi4xNTI3NWIzYWU1ZmU1YzFjNmE0ZjhmODRmZDY2OTBkMjFmY2Y1OGRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxh
dGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5jcHAKQEAgLTQ1OSw3
ICs0NTksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcldpbkludGVybmFsOjp1cGRhdGVUaWxlcygp
CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9ICJUaWxlICgiICsg
U3RyaW5nOjpudW1iZXIoaSkgKyAiLCIgKyBTdHJpbmc6Om51bWJlcihqKSArICIpIjsKLSAgICAg
ICAgICAgIENBQ0ZMYXllclNldE5hbWUodGlsZSwgUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9w
dENGLCBuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpLmdldCgpKTsKKyAgICAgICAgICAgIENBQ0ZMYXll
clNldE5hbWUodGlsZSwgbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICNlbmRpZgogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VCdWZmZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZUJ1ZmZlckNHLmNwcAppbmRleCAyMWU5ZGI0YzI4ZDlhMjU1MTM1MjBhY2U3MDg0
MDNhYzVlNzdhYjkzLi5kZDM3ODE1OTdmODVlYjYxMGRjYzQ3MWVjODMxNTNlMGFiZDJjZWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1
ZmZlckNHLmNwcApAQCAtMzc3LDggKzM3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYg
anBlZ1VUSSgpCiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlGcm9tTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZUNGU3RyaW5nKEFkb3B0Q0YsIG1pbWVUeXBlLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0Ys
IFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlw
ZSwgbWltZVR5cGVDRlN0cmluZy5nZXQoKSwgMCkpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlw
ZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NNSU1FVHlwZSwgbWlt
ZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogI2Vsc2UKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOyAvLyBJdCBpcyB1bmNsZWFyIGlmIENGU1RSIGlzIHRocmVhZHNhZmUuCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291
cmNlQ0dNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNv
dXJjZUNHTWFjLm1tCmluZGV4IGJkNTBhMzE3NWYzYjQyNWE4ODI2Y2QyYTU2YTYyZTIxOTM2OTYz
MzcuLjk1M2JjYjlkMjhhZDBlYjc1YWIzODgxM2MzNDM5NDU1ZjEyNjJjNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01h
Yy5tbQpAQCAtMzMsMTYgKzMzLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIE1J
TUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBlKGNvbnN0IFN0cmluZyYgdXRpKQogewotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gdXRpcmVmKEFkb3B0Q0YsIHV0aS5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZl
cnJlZFRhZ1dpdGhDbGFzcyh1dGlyZWYuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAg
ICByZXR1cm4gbWltZS5nZXQoKTsKKyAgICByZXR1cm4gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVy
cmVkVGFnV2l0aENsYXNzKHV0aS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrVVRUYWdDbGFzc01J
TUVUeXBlKSkuZ2V0KCk7CiB9CiAKIFN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNv
dXJjZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB0eXBlKEFkb3B0Q0YsIHV0aS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGV4dGVuc2lvbihBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENs
YXNzKHR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsKLSAgICByZXR1
cm4gZXh0ZW5zaW9uLmdldCgpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJy
ZWRUYWdXaXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzRmls
ZW5hbWVFeHRlbnNpb24pKS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMubW0KaW5kZXggYmQ4ODAyMDQ0
MWIwZTlhZTAwYmFkYWYzNmIyZjRmNWE2YTZiZWFlNy4uZmQ0YWI5OWIxNzQ3NWQ0MTRiMjFhYTNl
Y2Q1N2U2MTgwYTI4ZmNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L0NsaXBib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tCkBAIC05OSwxMSArOTksMTAgQEAgc3RhdGljIFN0cmluZyBjb2NvYVR5cGVGcm9t
SFRNTENsaXBib2FyZFR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogCiAgICAgLy8gVHJ5IFVUSSBu
b3cKICAgICBTdHJpbmcgbWltZVR5cGUgPSBxVHlwZTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHV0aVR5cGUoQWRvcHRDRiwgVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRh
ZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLCBOVUxMKSk7
Ci0gICAgaWYgKHV0aVR5cGUpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgcGJUeXBlID0gVVRUeXBl
Q29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJv
YXJkVHlwZSk7CisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlwZSA9IGFkb3B0
Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVU
eXBlLCBtaW1lVHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBOVUxMKSkpIHsKKyAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBwYlR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJy
ZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NOU1Bib2FyZFR5cGUpKTsK
ICAgICAgICAgaWYgKHBiVHlwZSkKLSAgICAgICAgICAgIHJldHVybiBwYlR5cGU7CisgICAgICAg
ICAgICByZXR1cm4gcGJUeXBlLmdldCgpOwogICAgIH0KIAogICAgIC8vIE5vIG1hcHBpbmcsIGp1
c3QgcGFzcyB0aGUgd2hvbGUgc3RyaW5nIHRob3VnaApAQCAtMTEyLDExICsxMTEsOCBAQCBzdGF0
aWMgU3RyaW5nIGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5
cGUpCiAKIHN0YXRpYyBTdHJpbmcgdXRpVHlwZUZyb21Db2NvYVR5cGUoY29uc3QgU3RyaW5nJiB0
eXBlKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdHlwZUNGID0gYWRvcHRDRih0eXBl
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpVHlwZShB
ZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNz
TlNQYm9hcmRUeXBlLCB0eXBlQ0YuZ2V0KCksIDApKTsKLSAgICBpZiAodXRpVHlwZSkgewotICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlKEFkb3B0Q0YsIFVUVHlwZUNvcHlQ
cmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkp
OwotICAgICAgICBpZiAobWltZVR5cGUpCisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dXRpVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhr
VVRUYWdDbGFzc05TUGJvYXJkVHlwZSwgdHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSkp
IHsKKyAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZG9wdENG
KFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpVHlwZS5nZXQoKSwga1VUVGFnQ2xh
c3NNSU1FVHlwZSkpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhtaW1lVHlwZS5nZXQoKSk7
CiAgICAgfQogICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAKaW5kZXggMGExYTRkOGM3NTE0ZGE5MTM3
MzliZTVlMzQ0NmQ0OTdkOTVhNDc4Yi4uZTU4ZDlhOTQ5OTY5MjdiOWJiNWI5YjM0NjE0OTc4ZjVh
YmY0ZjNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdl
bmVyYXRvck1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdl
bmVyYXRvck1hYy5jcHAKQEAgLTYwLDExICs2MCw3IEBAIFN0cmluZyBzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJpbmcmIGNo
CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNoYWxsZW5nZVN0cmluZ0NGKEFkb3B0Q0YsIGNoYWxsZW5nZVN0cmluZy5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGtleURlc2NyaXB0aW9uKEFk
b3B0Q0YsIGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQoQWRvcHRDRiwgd2tTaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlU3RyaW5nQ0YuZ2V0
KCksIGtleURlc2NyaXB0aW9uLmdldCgpKSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0LmdldCgpOwor
ICAgIHJldHVybiBhZG9wdENGKHdrU2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtl
eVNpemUsIGNoYWxsZW5nZVN0cmluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrZXlnZW5LZXlj
aGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKS5nZXQoKTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9B
dXRoZW50aWNhdGlvbkNGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
QXV0aGVudGljYXRpb25DRi5jcHAKaW5kZXggODdhM2ZhYjhhNzQzN2FlMTBhZjQzOWE0ZTRlMDJj
ZDJlMWEzMGRlYi4uN2IxZDRmYTQ3ODdmMWQxZTBkOWUzYTRkZTgxZjNlYjU0NmQwY2VlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50aWNhdGlv
bkNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ0YuY3BwCkBAIC0xMTksMTMgKzExOSw3IEBAIENGVVJMQ3JlZGVudGlhbFJlZiBjcmVh
dGVDRihjb25zdCBDcmVkZW50aWFsJiBjb3JlQ3JlZGVudGlhbCkKICAgICAgICAgcmV0dXJuIENG
VVJMQ3JlZGVudGlhbENyZWF0ZVdpdGhJZGVudGl0eUFuZENlcnRpZmljYXRlQXJyYXkoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgY29yZUNyZWRlbnRpYWwuaWRlbnRpdHkoKSwgY29yZUNyZWRlbnRpYWwu
Y2VydGlmaWNhdGVzKCksIHBlcnNpc3RlbmNlKTsKICNlbmRpZgogCi0gICAgQ0ZTdHJpbmdSZWYg
dXNlciA9IGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0cmluZygpOwotICAgIENGU3Ry
aW5nUmVmIHBhc3N3b3JkID0gY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVDRlN0cmlu
ZygpOwotICAgIENGVVJMQ3JlZGVudGlhbFJlZiByZXN1bHQgPSBDRlVSTENyZWRlbnRpYWxDcmVh
dGUoMCwgdXNlciwgcGFzc3dvcmQsIDAsIHBlcnNpc3RlbmNlKTsKLSAgICBDRlJlbGVhc2UodXNl
cik7Ci0gICAgQ0ZSZWxlYXNlKHBhc3N3b3JkKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAg
cmV0dXJuIENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCBjb3JlQ3JlZGVudGlhbC51c2VyKCkuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgY29yZUNyZWRlbnRpYWwucGFzc3dvcmQoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCAwLCBwZXJzaXN0ZW5jZSk7CiB9CiAKIENGVVJMUHJvdGVjdGlvblNwYWNl
UmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFjZSYgY29yZVNwYWNlKQpAQCAtMTkyLDEz
ICsxODYsNyBAQCBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiBjcmVhdGVDRihjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIGNvcmVTcGFjZSkKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
fQogCi0gICAgQ0ZTdHJpbmdSZWYgaG9zdCA9IGNvcmVTcGFjZS5ob3N0KCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICBDRlN0cmluZ1JlZiByZWFsbSA9IGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNG
U3RyaW5nKCk7Ci0gICAgQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgcmVzdWx0ID0gQ0ZVUkxQcm90
ZWN0aW9uU3BhY2VDcmVhdGUoMCwgaG9zdCwgY29yZVNwYWNlLnBvcnQoKSwgc2VydmVyVHlwZSwg
cmVhbG0sIHNjaGVtZSk7Ci0gICAgQ0ZSZWxlYXNlKGhvc3QpOwotICAgIENGUmVsZWFzZShyZWFs
bSk7Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gQ0ZVUkxQcm90ZWN0aW9u
U3BhY2VDcmVhdGUoMCwgY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBj
b3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCBjb3JlU3BhY2UucmVhbG0oKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBzY2hlbWUpOwogfQogCiBDcmVkZW50aWFsIGNvcmUoQ0ZVUkxDcmVkZW50
aWFsUmVmIGNmQ3JlZGVudGlhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKaW5kZXggNWQ2ZDczOTI2YzQ0ZWU0ODgwMTgy
ZmZmZTg5ODFhY2YzOGE3NmIwYS4uNTAxNzk3MWRlMTRhNDU0YTg0ZjlhMzg4YmI0N2Y2NDg0ODkx
ZGE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVKYXJDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIHNldENvb2tpZXMoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgLy8gY29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxkcyBkb2Vzbid0IHBhcnNlIGNvb2tp
ZXMgd2l0aG91dCBhIHZhbHVlCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZyA9IHZhbHVlLmNvbnRh
aW5zKCc9JykgPyB2YWx1ZSA6IHZhbHVlICsgIj0iOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBjb29raWVTdHJpbmdDRihBZG9wdENGLCBjb29raWVTdHJpbmcuY3JlYXRlQ0ZTdHJpbmco
KSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjb29raWVTdHJpbmdDRiA9IGNvb2tpZVN0
cmluZy5jcmVhdGVDRlN0cmluZygpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhl
YWRlckZpZWxkc0NGKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LAogICAgICAgICAoY29uc3Qgdm9pZCoqKSZzX3NldENvb2tpZUtleUNGLCAoY29uc3Qgdm9p
ZCoqKSZjb29raWVTdHJpbmdDRiwgMSwKICAgICAgICAgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcAppbmRleCAzZjkwMWE1NDFk
ZTAwZWViZWMyNDMyMmQwNDM5NmVlNGEyMjA1ZmI2Li5jZTE0NTE5MDlhZWQ3ZTJiNGRlZjljZTBk
OWJiNDI5MzQxOGRhY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0ROU0NGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0ROU0NGTmV0LmNwcApAQCAtOTAsMTIgKzkwLDEyIEBAIHZvaWQgRE5TUmVzb2x2ZVF1ZXVl
OjpwbGF0Zm9ybVJlc29sdmUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0bmFtZUNG
KEFkb3B0Q0YsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkhv
c3RSZWY+IGhvc3QoQWRvcHRDRiwgQ0ZIb3N0Q3JlYXRlV2l0aE5hbWUoMCwgaG9zdG5hbWVDRi5n
ZXQoKSkpOworICAgIFJldGFpblB0cjxDRkhvc3RSZWY+IGhvc3QgPSBhZG9wdENGKENGSG9zdENy
ZWF0ZVdpdGhOYW1lKDAsIGhvc3RuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKICAgICBp
ZiAoIWhvc3QpIHsKICAgICAgICAgZGVjcmVtZW50UmVxdWVzdENvdW50KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisKICAgICBDRkhvc3RDbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsIDAs
IDAsIDAsIDAgfTsKICAgICBDRkhvc3RSZWYgbGVha2VkSG9zdCA9IGhvc3QubGVha1JlZigpOyAv
LyBUaGUgaG9zdCB3aWxsIGJlIHJlbGVhc2VkIGZyb20gY2xpZW50Q2FsbGJhY2soKS4KICAgICBC
b29sZWFuIHJlc3VsdCA9IENGSG9zdFNldENsaWVudChsZWFrZWRIb3N0LCBjbGllbnRDYWxsYmFj
aywgJmNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDM1NGZkMjc1ODY0MjA3Yjc5ZWZjMjFhZjdk
MTk5ZGIwYjMwMTIwYjQuLjU4OTVlZDk5MzQ2NjVlZjYzMGJlMzY1MTcxNjE1MTUyZTQwZjgzZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VF
cnJvckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlRXJyb3JDRi5jcHAKQEAgLTE0NSwxMyArMTQ1LDExIEBAIENGRXJyb3JSZWYgUmVzb3VyY2VF
cnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgaWYgKCFtX3BsYXRmb3JtRXJyb3IpIHsKICAgICAg
ICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvKEFkb3B0Q0YsIENG
RGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJh
Y2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgICAgIGlmICgh
bV9sb2NhbGl6ZWREZXNjcmlwdGlvbi5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gbG9jYWxpemVkRGVzY3JpcHRpb25TdHJpbmcoQWRvcHRDRiwgbV9sb2Nh
bGl6ZWREZXNjcmlwdGlvbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2NyaXB0aW9u
S2V5LCBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZy5nZXQoKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgaWYgKCFtX2xvY2FsaXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrQ0ZFcnJvckxvY2FsaXplZERlc2Ny
aXB0aW9uS2V5LCBtX2xvY2FsaXplZERlc2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogCiAgICAgICAgIGlmICghbV9mYWlsaW5nVVJMLmlzRW1wdHkoKSkgewotICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5nKEFkb3B0Q0YsIG1fZmFpbGlu
Z1VSTC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gZmFpbGluZ1VSTFN0cmluZyA9IG1fZmFpbGluZ1VSTC5jcmVhdGVDRlN0cmluZygpOwogICAg
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGZhaWxpbmdVUkxT
dHJpbmdLZXksIGZhaWxpbmdVUkxTdHJpbmcuZ2V0KCkpOwogICAgICAgICAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKDAsIGZhaWxpbmdV
UkxTdHJpbmcuZ2V0KCksIDApKTsKICAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVz
ZXJJbmZvLmdldCgpLCBmYWlsaW5nVVJMS2V5LCB1cmwuZ2V0KCkpOwpAQCAtMTYyLDggKzE2MCw3
IEBAIENGRXJyb3JSZWYgUmVzb3VyY2VFcnJvcjo6Y2ZFcnJvcigpIGNvbnN0CiAgICAgICAgICAg
ICB3a1NldFNTTFBlZXJDZXJ0aWZpY2F0ZURhdGEodXNlckluZm8uZ2V0KCksIG1fY2VydGlmaWNh
dGUuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGRvbWFpblN0cmluZyhBZG9wdENGLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICAgICAgbV9wbGF0Zm9ybUVycm9yLmFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBkb21haW5TdHJp
bmcuZ2V0KCksIG1fZXJyb3JDb2RlLCB1c2VySW5mby5nZXQoKSkpOworICAgICAgICBtX3BsYXRm
b3JtRXJyb3IgPSBhZG9wdENGKENGRXJyb3JDcmVhdGUoMCwgbV9kb21haW4uY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG1fcGxhdGZvcm1FcnJvci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDAx
ZThiOGFlNWMwZDFjNmE2YThmMDMzMDg1ZTkwZjAxMGJjMWY3YzYuLjgwNzBjMjU4MmI3Y2FhMGRl
NmZlMzVmMzA3NDNmNzhiMjBiNzdhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMTMxLDcg
KzEzMSw3IEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPENGRGF0YVJlZj4gPiYg
Y2xpZW50Q2VydHMoKQogCiBzdGF0aWMgdm9pZCBzZXREZWZhdWx0TUlNRVR5cGUoQ0ZVUkxSZXNw
b25zZVJlZiByZXNwb25zZSkKIHsKLSAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVU
eXBlU3RyaW5nID0gZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBzdGF0
aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gZGVmYXVsdE1JTUVUeXBlKCku
Y3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgCiAgICAgQ0ZVUkxSZXNwb25zZVNldE1J
TUVUeXBlKHJlc3BvbnNlLCBkZWZhdWx0TUlNRVR5cGVTdHJpbmcpOwogfQpAQCAtMTYxLDggKzE2
MSw4IEBAIHN0YXRpYyBDRlVSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVj
dGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYKICAgICBpZiAoY2ZSZWRpcmVjdFJlc3BvbnNl
KSB7CiAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2UgPSBDRlVSTFJlc3BvbnNl
R2V0SFRUUFJlc3BvbnNlKGNmUmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIGlmIChodHRwTWVz
c2FnZSAmJiBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKSA9
PSAzMDcpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbGFzdEhUVFBNZXRo
b2QoQWRvcHRDRiwgaGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgpLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2QoQWRvcHRDRiwgQ0ZV
UkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCkpOworICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZCA9IGhhbmRsZS0+bGFzdEhUVFBN
ZXRob2QoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhv
ZChjZlJlcXVlc3QpKTsKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9u
cyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBD
RlN0cmluZ0dldExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1
ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBjZlJlcXVlc3QpKTsKICNpZiBVU0UoQ0ZVUkxTVE9SQUdFU0VTU0lPTlMpCkBAIC0x
NzUsOSArMTc1LDggQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgICAgICAgICAgICAgICAg
ICBXZWJDb3JlOjpzZXRIVFRQQm9keShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgYm9keSk7CiAKICAg
ICAgICAgICAgICAgICBTdHJpbmcgb3JpZ2luYWxDb250ZW50VHlwZSA9IGhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkuaHR0cENvbnRlbnRUeXBlKCk7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBvcmlnaW5hbENvbnRlbnRUeXBlQ0YoQWRvcHRDRiwgb3JpZ2luYWxDb250ZW50
VHlwZS5jcmVhdGVDRlN0cmluZygpKTsKICAgICAgICAgICAgICAgICBpZiAoIW9yaWdpbmFsQ29u
dGVudFR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRI
VFRQSGVhZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQoKSwgQ0ZTVFIoIkNvbnRlbnQt
VHlwZSIpLCBvcmlnaW5hbENvbnRlbnRUeXBlQ0YuZ2V0KCkpOworICAgICAgICAgICAgICAgICAg
ICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShtdXRhYmxlUmVxdWVzdC5nZXQo
KSwgQ0ZTVFIoIkNvbnRlbnQtVHlwZSIpLCBvcmlnaW5hbENvbnRlbnRUeXBlLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IG11dGFibGVSZXF1ZXN0
LmdldCgpOwogICAgICAgICAgICAgfQpAQCAtNjA3LDEwICs2MDYsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbAogI2VuZGlmCiAKICAgICBpZiAoIWQtPm1fdXNlci5pc051bGwoKSAmJiAhZC0+
bV9wYXNzLmlzTnVsbCgpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXNlcihB
ZG9wdENGLCBkLT5tX3VzZXIuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcGFzcyhBZG9wdENGLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwoQWRvcHRDRiwK
LSAgICAgICAgICAgIENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
c2VyLmdldCgpLCBwYXNzLmdldCgpLCAwLCBrQ0ZVUkxDcmVkZW50aWFsUGVyc2lzdGVuY2VOb25l
KSk7CisgICAgICAgIFJldGFpblB0cjxDRlVSTENyZWRlbnRpYWxSZWY+IGNyZWRlbnRpYWwgPSBh
ZG9wdENGKENGVVJMQ3JlZGVudGlhbENyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkLT5tX3Vz
ZXIuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZC0+bV9wYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKICAgICAgICAgCiAgICAg
ICAgIEtVUkwgdXJsVG9TdG9yZTsKICAgICAgICAgaWYgKGNoYWxsZW5nZS5mYWlsdXJlUmVzcG9u
c2UoKS5odHRwU3RhdHVzQ29kZSgpID09IDQwMSkKQEAgLTEwMDUsNyArMTAwMSw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uSWRlbnRpZmllckRlZmF1bHRCYXNlKCkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklk
ZW50aWZpZXIoQWRvcHRDRiwgU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0
ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0g
U3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAg
ICBwcml2YXRlU3RvcmFnZVNlc3Npb24oKSA9IGNyZWF0ZVByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4
IDAyMzJjNTQxZjk2ZTk4MzU1Y2U3Mjg0NjMzYzBkMzBiNDBiYjI5NWUuLjU4NjgzMWFiZDZmMWQ3
MDYwZGY5YTY3NTlmMDYwYTZhNTUxYjlkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC0x
MTgsMTQgKzExOCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRIZWFkZXJGaWVsZHMoQ0ZNdXRh
YmxlVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBjb25zdCBIVFRQSGVhCiAgICAgICAgICAgICBDRlVS
TFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LCBvbGRIZWFkZXJGaWVsZE5h
bWVzW2ldLCAwKTsKICAgICB9CiAKLSAgICBIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSByZXF1ZXN0SGVhZGVycy5lbmQoKTsKLSAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gcmVxdWVzdEhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIENGU3RyaW5nUmVmIGtleSA9IGl0LT5rZXkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWUgPSBpdC0+dmFsdWUuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUocmVxdWVz
dCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIENGUmVsZWFzZShrZXkpOwotICAgICAgICBDRlJlbGVh
c2UodmFsdWUpOwotICAgIH0KKyAgICBmb3IgKEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gcmVxdWVzdEhlYWRlcnMuYmVnaW4oKSwgZW5kID0gcmVxdWVzdEhlYWRlcnMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxk
VmFsdWUocmVxdWVzdCwgaXQtPmtleS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBp
dC0+dmFsdWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXF1
ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCkBAIC0xNDYsOCArMTQwLDcgQEAgdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICB3a1NldFJlcXVl
c3RTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFN0b3JhZ2VTZXNzaW9uKCks
IGNmUmVxdWVzdCk7CiAjZW5kaWYKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVxdWVz
dE1ldGhvZChBZG9wdENGLCBodHRwTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0ZV
UkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0LCByZXF1ZXN0TWV0aG9kLmdl
dCgpKTsKKyAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIGh0
dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIGlmIChodHRwUGlwZWxp
bmluZ0VuYWJsZWQoKSkKICAgICAgICAgd2tTZXRIVFRQUGlwZWxpbmluZ1ByaW9yaXR5KGNmUmVx
dWVzdCwgdG9IVFRQUGlwZWxpbmluZ1ByaW9yaXR5KG1fcHJpb3JpdHkpKTsKQEAgLTE2NCw3ICsx
NTcsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQog
ICAgIHVuc2lnbmVkIGZhbGxiYWNrQ291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9u
RW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJy
YXlSZWY+IGVuY29kaW5nRmFsbGJhY2tzKEFkb3B0Q0YsIENGQXJyYXlDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGZhbGxiYWNrQ291bnQsIDApKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpICE9IGZhbGxiYWNrQ291bnQ7ICsraSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGVuY29kaW5nTmFtZShBZG9wdENGLCBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0
aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZSA9IG1fcmVzcG9uc2VDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAg
ICAgQ0ZTdHJpbmdFbmNvZGluZyBlbmNvZGluZyA9IENGU3RyaW5nQ29udmVydElBTkFDaGFyU2V0
TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKTsKICAgICAgICAgaWYgKGVuY29kaW5n
ICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQogICAgICAgICAgICAgQ0ZBcnJheUFwcGVu
ZFZhbHVlKGVuY29kaW5nRmFsbGJhY2tzLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZv
aWQqPihlbmNvZGluZykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCmluZGV4IGE0NWJlZWRjNDMz
MDA3NzJiMzljYWVlMmIzOTQ2Y2FjM2RmMGJmMzEuLjk1NTA4MzYzYWFlNDI1ZWM4ODRhNDg0N2E1
MTU5ODM3ZDA4ZDM5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKQEAgLTUxLDkgKzUxLDcg
QEAgQ0ZVUkxSZXNwb25zZVJlZiBSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY2ZSZXNwb25zZSAmJiAhbV9pc051bGwpIHsKICAgICAgICAgUmV0
YWluUHRyPENGVVJMUmVmPiB1cmwoQWRvcHRDRiwgbV91cmwuY3JlYXRlQ0ZVUkwoKSk7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgbV9taW1lVHlwZS5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0ZXh0RW5j
b2RpbmdOYW1lKEFkb3B0Q0YsIG1fdGV4dEVuY29kaW5nTmFtZS5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICAgICAgbV9jZlJlc3BvbnNlLmFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNyZWF0ZSgwLCB1cmwu
Z2V0KCksIG1pbWVUeXBlLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgdGV4dEVuY29k
aW5nTmFtZS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCkpOworICAgICAgICBtX2Nm
UmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwgbV9taW1l
VHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBtX2V4cGVjdGVkQ29udGVudExlbmd0aCwgbV90
ZXh0RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFn
ZUFsbG93ZWQpKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9jZlJlc3BvbnNlLmdldCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1I
YW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUNGTmV0LmNwcAppbmRleCBkODZjNzZiYzZmNDVjMTgxNjQ4ZTBhNzc2Y2Qz
OWJhZTg5MDg0MGQ2Li40YTdjZDkwMmFlOWYwMjg3ZDg5OGQ5MmJkOTg1ZGQ3NjZkNDJhMTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcApAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgU29j
a2V0U3RyZWFtSGFuZGxlOjpjcmVhdGVTdHJlYW1zKCkKICAgICBpZiAobV9jb25uZWN0aW9uVHlw
ZSA9PSBVbmtub3duKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGhvc3QoQWRvcHRDRiwgbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdCA9IG1fdXJsLmhvc3QoKS5jcmVhdGVDRlN0cmluZygp
OwogCiAgICAgLy8gQ3JlYXRpbmcgc3RyZWFtcyB0byBmaW5hbCBkZXN0aW5hdGlvbiwgbm90IHRv
IHByb3h5LgogICAgIENGUmVhZFN0cmVhbVJlZiByZWFkU3RyZWFtID0gMDsKQEAgLTM1OSwxMiAr
MzU5LDEwIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjphZGRDT05ORUNUQ3JlZGVudGlhbHMo
Q0ZIVFRQTWVzc2FnZVJlZiBwcm94eVJlc3BvbnNlKQogICAgIFN0cmluZyBwYXNzd29yZDsKICAg
ICBpZiAoIW1fc2VudFN0b3JlZENyZWRlbnRpYWxzICYmIGdldFN0b3JlZENPTk5FQ1RQcm94eUNy
ZWRlbnRpYWxzKHByb3RlY3Rpb25TcGFjZSwgbG9naW4sIHBhc3N3b3JkKSkgewogICAgICAgICAv
LyBUcnkgdG8gYXBwbHkgc3RvcmVkIGNyZWRlbnRpYWxzLCBpZiB3ZSBoYXZlbid0IHRyaWVkIHRo
b3NlIGFscmVhZHkuCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbG9naW5DRihBZG9w
dENGLCBsb2dpbi5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBwYXNzd29yZENGKEFkb3B0Q0YsIHBhc3N3b3JkLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAg
ICAgICAvLyBDcmVhdGluZyBhIHRlbXBvcmFyeSByZXF1ZXN0IHRvIG1ha2UgQ0ZOZXR3b3JrIGFw
cGx5IGNyZWRlbnRpYWxzIHRvIGl0LiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGNhbm5vdCB3b3JrIHdp
dGggTlRMTSBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IHJl
cXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkgY3JlZGVudGlhbHMgdG8gaXQuIFVuZm9ydHVu
YXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0aCBOVExNIGF1dGhlbnRpY2F0aW9uLgogICAgICAg
ICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gZHVtbXlSZXF1ZXN0KEFkb3B0Q0YsIENGSFRU
UE1lc3NhZ2VDcmVhdGVSZXF1ZXN0KDAsIENGU1RSKCJHRVQiKSwgbV9odHRwc1VSTC5nZXQoKSwg
a0NGSFRUUFZlcnNpb24xXzEpKTsKIAotICAgICAgICBCb29sZWFuIGFwcGxpZWRDcmVkZW50aWFs
cyA9IENGSFRUUE1lc3NhZ2VBcHBseUNyZWRlbnRpYWxzKGR1bW15UmVxdWVzdC5nZXQoKSwgYXV0
aGVudGljYXRpb24uZ2V0KCksIGxvZ2luQ0YuZ2V0KCksIHBhc3N3b3JkQ0YuZ2V0KCksIDApOwor
ICAgICAgICBCb29sZWFuIGFwcGxpZWRDcmVkZW50aWFscyA9IENGSFRUUE1lc3NhZ2VBcHBseUNy
ZWRlbnRpYWxzKGR1bW15UmVxdWVzdC5nZXQoKSwgYXV0aGVudGljYXRpb24uZ2V0KCksIGxvZ2lu
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHBhc3N3b3JkLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IDApOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGFwcGxpZWRDcmVkZW50aWFscywgYXBwbGllZENy
ZWRlbnRpYWxzKTsKIAogICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByb3h5QXV0aG9y
aXphdGlvblN0cmluZyhBZG9wdENGLCBDRkhUVFBNZXNzYWdlQ29weUhlYWRlckZpZWxkVmFsdWUo
ZHVtbXlSZXF1ZXN0LmdldCgpLCBDRlNUUigiUHJveHktQXV0aG9yaXphdGlvbiIpKSk7CkBAIC0z
ODksNyArMzg3LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50
aWFscyhDRkhUVFBNZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiBDRlN0cmluZ1JlZiBTb2NrZXRT
dHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURlc2NyaXB0aW9uKHZvaWQqIGluZm8pCiB7CiAgICAg
U29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUgPSBzdGF0aWNfY2FzdDxTb2NrZXRTdHJlYW1IYW5k
bGUqPihpbmZvKTsKLSAgICByZXR1cm4gU3RyaW5nKCJXZWJLaXQgc29ja2V0IHN0cmVhbSwgIiAr
IGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0
cmluZygiV2ViS2l0IHNvY2tldCBzdHJlYW0sICIgKyBoYW5kbGUtPm1fdXJsLnN0cmluZygpKS5j
cmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKIH0KIAogc3RydWN0IE1haW5UaHJlYWRFdmVudENh
bGxiYWNrSW5mbyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZVJlcXVlc3RNYWMubW0KaW5kZXggOTMyMTZjYjU1ZTg1NzczMTM2ZjNl
OGMzYTA3Y2U2ZmI1NTZlMDZkMi4uZTY5MzQ4NDgxYWIwYTAyMTM3OTRkYTI0ZWZiY2M0ZjU2ZGMw
MDhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlUmVxdWVzdE1hYy5tbQpAQCAtMTYzLDkgKzE2Myw5IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgICAgIE5TTXV0YWJsZUFy
cmF5ICplbmNvZGluZ0ZhbGxiYWNrcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CiAgICAgICAg
IHVuc2lnbmVkIGNvdW50ID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFs
bGJhY2tBcnJheS5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gY291
bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZW5jb2RpbmdOYW1lID0gbV9yZXNw
b25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0
cmluZygpOwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBuc0VuY29kaW5nID0gQ0ZTdHJpbmdD
b252ZXJ0RW5jb2RpbmdUb05TU3RyaW5nRW5jb2RpbmcoQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJT
ZXROYW1lVG9FbmNvZGluZyhlbmNvZGluZ05hbWUpKTsKLSAgICAgICAgICAgIENGUmVsZWFzZShl
bmNvZGluZ05hbWUpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBlbmNvZGlu
Z05hbWUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
W2ldLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5zRW5jb2Rp
bmcgPSBDRlN0cmluZ0NvbnZlcnRFbmNvZGluZ1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0Nv
bnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKGVuY29kaW5nTmFtZS5nZXQoKSkpOworCiAg
ICAgICAgICAgICBpZiAobnNFbmNvZGluZyAhPSBrQ0ZTdHJpbmdFbmNvZGluZ0ludmFsaWRJZCkK
ICAgICAgICAgICAgICAgICBbZW5jb2RpbmdGYWxsYmFja3MgYWRkT2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoVW5zaWduZWRMb25nOm5zRW5jb2RpbmddXTsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCmluZGV4IDZhYTc2ZjZkZDc4NGRhMDlkN2JmZjdlMWU2ODU1ZTc1Y2FkYWU5OWMuLmY5
NzEwYjJkZDI1MTg0NjIwMTUxMzI0MmY0MGYzYTQxMjY0ZjIyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0KQEAgLTQ3OCw3ICs0NzgsNyBAQCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZV
UkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogICAgIH0KICAgICAKICAgICBpZiAoIXJlc3VsdCkg
ewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2Vi
Q29yZTo6ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgc3RhdGlj
IENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmluZyA9IFdlYkNvcmU6OmRlZmF1bHRNSU1F
VHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgICAgICByZXN1bHQgPSBkZWZh
dWx0TUlNRVR5cGVTdHJpbmc7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNwcAppbmRleCAyNjFhOTNiNzY4MDQ1NWQ2MDc3ODJh
YmI3NTM0NzBmYzhkOWVjM2NmLi41ZDhhMDFmOGM5MGZjOWYzYjE2ZmJlOTc1MjQ5ODBjMTU0MGIz
M2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0
aW9uQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRp
b25DRi5jcHAKQEAgLTQ2LDggKzQ2LDcgQEAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9taWNT
dHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0cjxDRkxvY2FsZVJlZj4gPjo6Y3JlYXQKIHRlbXBs
YXRlPD4KIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gQXRvbWljU3RyaW5nS2V5ZWRNUlVDYWNoZTxS
ZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+ID46OmNyZWF0ZVZhbHVlRm9yS2V5KGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxlSWRlbnRpZmllcikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNm
TG9jYWxlSWRlbnRpZmllcihBZG9wdENGLCBsb2NhbGVJZGVudGlmaWVyLnN0cmluZygpLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlKEFkb3B0Q0Ys
IENGTG9jYWxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNmTG9jYWxlSWRlbnRpZmllci5n
ZXQoKSkpOworICAgIFJldGFpblB0cjxDRkxvY2FsZVJlZj4gbG9jYWxlID0gYWRvcHRDRihDRkxv
Y2FsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBsb2NhbGVJZGVudGlmaWVyLnN0cmluZygp
LmNyZWF0ZUNGU3RyaW5nKCkpKTsKIAogICAgIHJldHVybiBDRlN0cmluZ0lzSHlwaGVuYXRpb25B
dmFpbGFibGVGb3JMb2NhbGUobG9jYWxlLmdldCgpKSA/IGxvY2FsZSA6IDA7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0NGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwCmluZGV4IGQ3Y2RhNzk2Mjk4
NjI1NzNhMzVjNmE5MjY4NTc1MjMwNWFiNmMyN2UuLjI2OTdlNzZmMGJmNTkyM2IxNTJmZWRkNzEw
MzdlOTcxMTQ5MjZkNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
Y2YvU3RyaW5nQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3Ry
aW5nQ0YuY3BwCkBAIC0yMyw4ICsyMyw4IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKICNpZiBVU0UoQ0YpCi0KICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRh
dGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAK
QEAgLTUxLDcgKzUxLDcgQEAgU3RyaW5nOjpTdHJpbmcoQ0ZTdHJpbmdSZWYgc3RyKQogICAgIH0K
IH0KIAotQ0ZTdHJpbmdSZWYgU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CitSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcoKSBjb25zdAogewogICAgIGlm
ICghbV9pbXBsKQogICAgICAgICByZXR1cm4gQ0ZTVFIoIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJbXBsQ0YuY3BwCmluZGV4IDdhMmQ4MmU0MDJkMjRi
MzdiYmMwNzFmNDdmOThlMGE4NjUxODQ5MjEuLjFkYTU2MWI2MDYyYmNhYjQ5ZTA5YmZlNzk3ODJi
MjczZjBkYTA5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2Yv
U3RyaW5nSW1wbENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0
cmluZ0ltcGxDRi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlv
bi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1RocmVhZGluZy5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTMyLDcgKzEzMyw3
IEBAIG5hbWVzcGFjZSBTdHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3IgewogCiB9CiAKLUNGU3RyaW5n
UmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4g
U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQogewogICAgIGlmICghbV9sZW5ndGggfHwgIWlz
TWFpblRocmVhZCgpKSB7CiAgICAgICAgIGlmIChpczhCaXQoKSkKQEAgLTE1Myw3ICsxNTQsNyBA
QCBDRlN0cmluZ1JlZiBTdHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiAgICAgLy8gQ29yZUZv
dW5kYXRpb24gbWlnaHQgbm90IGhhdmUgdG8gYWxsb2NhdGUgYW55dGhpbmcsIHdlIGNsZWFyIGN1
cnJlbnRTdHJpbmcgaW4gY2FzZSB3ZSBkaWQgbm90IGV4ZWN1dGUgYWxsb2NhdGUoKS4KICAgICBT
dHJpbmdXcmFwcGVyQ0ZBbGxvY2F0b3I6OmN1cnJlbnRTdHJpbmcgPSAwOwogCi0gICAgcmV0dXJu
IHN0cmluZzsKKyAgICByZXR1cm4gYWRvcHRDRihzdHJpbmcpOwogfQogCiAvLyBPbiBTdHJpbmdJ
bXBsIGNyZWF0aW9uIHdlIGNvdWxkIGNoZWNrIGlmIHRoZSBhbGxvY2F0b3IgaXMgdGhlIFN0cmlu
Z1dyYXBwZXJDRkFsbG9jYXRvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvbWFjL1N0cmluZ0ltcGxNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L21hYy9TdHJpbmdJbXBsTWFjLm1tCmluZGV4IDZmNWU5NTNiYTE5MjVlNTQ1YmJiNWFjNTNlMjE0
NzZiYjhmMDNhNTcuLjJmMDg4YTdlYjM2M2M1YWNkMDE0MmYzODcwOTViOTYyYzE4MTZhNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0cmluZ0ltcGxNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5t
bQpAQCAtMjIsMTIgKzIyLDEzIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgog
CiAjaW5jbHVkZSAiRm91bmRhdGlvbkV4dHJhcy5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIAogbmFtZXNwYWNlIFdURiB7CiAKIFN0cmluZ0ltcGw6Om9wZXJhdG9yIE5TU3RyaW5nICoo
KQogewotICAgIHJldHVybiBIYXJkQXV0b3JlbGVhc2UoY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAg
cmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKSk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2Rl
Y01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMu
Y3BwCmluZGV4IDMxMjQxMmZhYWI4YWMyMzYyODY1MDNkYWNhNWE5MjhiZWJkNDM5NjYuLmE3MDQ3
NDk1MjBmZGQzMmQ0ZTFlMDBmY2ZjMGRlYWYzODdjYmE5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcApAQCAtMjg0LDcgKzI4NCw3
IEBAIENTdHJpbmcgVGV4dENvZGVjTWFjOjplbmNvZGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMs
IHNpemVfdCBsZW5ndGgsIFVuZW5jb2RhYmxlCiAgICAgLy8gRW5jb2Rpbmcgd2lsbCBjaGFuZ2Ug
dGhlIHllbiBzaWduIGJhY2sgaW50byBhIGJhY2tzbGFzaC4KICAgICBTdHJpbmcgY29weShjaGFy
YWN0ZXJzLCBsZW5ndGgpOwogICAgIGNvcHkucmVwbGFjZSgnXFwnLCBtX2JhY2tzbGFzaEFzQ3Vy
cmVuY3lTeW1ib2wpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZzKEFkb3B0Q0YsIGNv
cHkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMgPSBj
b3B5LmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBDRkluZGV4IHN0YXJ0UG9zID0gMDsKICAgICBD
RkluZGV4IGNoYXJhY3RlcnNMZWZ0ID0gQ0ZTdHJpbmdHZXRMZW5ndGgoY2ZzLmdldCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TZWFyY2hQb3B1cE1lbnVXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAK
aW5kZXggYTVjYTliNzQ0NjkyZjI4N2YyM2YzNDgxNTBiMDhmNjVlMWZmOTVmZS4uMGQyNTFkZjE4
M2M3ZWNjMTk2YjBkYTcyN2VhYzU0ZDQ5YjE5ZTY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAKQEAgLTUxLDggKzUxLDcgQEAg
Ym9vbCBTZWFyY2hQb3B1cE1lbnVXaW46OmVuYWJsZWQoKQogI2lmIFVTRShDRikKIHN0YXRpYyBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
LSAgICBTdHJpbmcga2V5ID0gImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNoRmllbGQ6IiArIG5hbWU7
Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwga2V5LmNyZWF0ZUNG
U3RyaW5nKCkpOworICAgIHJldHVybiBTdHJpbmcoImNvbS5hcHBsZS5XZWJLaXQuc2VhcmNoRmll
bGQ6IiArIG5hbWUpLmNyZWF0ZUNGU3RyaW5nKCk7CiB9CiAjZW5kaWYKIApAQCAtNjcsMTAgKzY2
LDggQEAgdm9pZCBTZWFyY2hQb3B1cE1lbnVXaW46OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICBzaXplX3Qgc2l6ZSA9IHNlYXJjaEl0
ZW1zLnNpemUoKTsKICAgICBpZiAoc2l6ZSkgewogICAgICAgICBpdGVtcy5hZG9wdENGKENGQXJy
YXlDcmVhdGVNdXRhYmxlKDAsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gaXRlbShBZG9wdENGLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0
cmluZygpKTsKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgaXRl
bS5nZXQoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJj
aEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgIH0KIAogICAgIENGUHJlZmVy
ZW5jZXNTZXRBcHBWYWx1ZShhdXRvc2F2ZUtleShuYW1lKS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtD
RlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNlL1dl
YktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKaW5kZXggODM3
NDdmMjIzNTU2YTZhYzJhYTE2ODlkZmRmYWMxZjFlZjE3YzQ3Ny4uMzM3ZGFjYWIyZjcxMmM5ODZm
MGY1NzIyOTZhNzgwNTYyYzMxNGI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jZi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKQEAgLTYzLDE1ICs2Mywx
NCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCI7CiAK
LXN0YXRpYyBpbmxpbmUgQ0ZTdHJpbmdSZWYgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoY29uc3Qg
U3RyaW5nJiBrZXkpCitzdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRl
S2V5Rm9yUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBrZXlDRlN0cmluZyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgcmV0dXJuIENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdl
YiBJbnNwZWN0b3IgU2V0dGluZyAtICVAIiksIGtleUNGU3RyaW5nLmdldCgpKTsKKyAgICByZXR1
cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBX
ZWIgSW5zcGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkp
OwogfQogCiBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0
cmluZyogc2V0dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2Vz
S2V5KEFkb3B0Q0YsIGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSkpOworICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkgPSBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhr
ZXkpOwogICAgIFJldGFpblB0cjxDRlByb3BlcnR5TGlzdFJlZj4gdmFsdWUoQWRvcHRDRiwgQ0ZQ
cmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5nZXQoKSwga0NGUHJlZmVyZW5j
ZXNDdXJyZW50QXBwbGljYXRpb24pKTsKIAogICAgIGlmICghdmFsdWUpCkBAIC04OCwxMiArODcs
NyBAQCBzdGF0aWMgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmlu
Zyogc2V0dGluZykKIAogc3RhdGljIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCiB7Ci0gICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0
UmVmPiBvYmplY3RUb1N0b3JlOwotICAgIG9iamVjdFRvU3RvcmUuYWRvcHRDRihzZXR0aW5nLmNy
ZWF0ZUNGU3RyaW5nKCkpOwotICAgIEFTU0VSVChvYmplY3RUb1N0b3JlKTsKLQotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJl
ZmVyZW5jZXMoa2V5KSk7Ci0gICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKHByZWZlcmVuY2Vz
S2V5LmdldCgpLCBvYmplY3RUb1N0b3JlLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBs
aWNhdGlvbik7CisgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGNyZWF0ZUtleUZvclByZWZl
cmVuY2VzKGtleSkuZ2V0KCksIHNldHRpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGUHJl
ZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwogfQogCiBib29sIFdlYkluc3BlY3RvckNsaWVu
dDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCAwZTRiMTA2NTY5ODI1ZGQ3NGQ3NGRiMjc3NmVjYzZkOTIxZWE4ZGFhLi41
ZjI4MzUwNGM1ZDY2ODIxODY0ODkwY2U0NDVjODJjZjAwZjEyNmE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC03OTIsMjQgKzc5MiwyMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpbgogICAgICAg
ICBLVVJMIHBsdWdpblBhZ2VVUkwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkp
KTsKICAgICAgICAgaWYgKHBsdWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7
CiAgICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJz
OjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tl
eSk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cihBZG9wdENGLCBwbHVn
aW5QYWdlVVJMLnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgc3RyLmdldCgpKTsKKyAgICAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpblBhZ2VV
Ukwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAoIXBsdWdpblZpZXctPm1pbWVUeXBlKCkuaXNOdWxsKCkpIHsKICAgICAgICAgc3Rh
dGljIENGU3RyaW5nUmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0
cmluZ1JlZihXZWJLaXRFcnJvck1JTUVUeXBlS2V5KTsKLQotICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHN0cihBZG9wdENGLCBwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5
LCBzdHIuZ2V0KCkpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQo
KSwga2V5LCBwbHVnaW5WaWV3LT5taW1lVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwog
ICAgIH0KIAogICAgIGlmIChwbHVnaW5WaWV3LT5wbHVnaW4oKSkgewogICAgICAgICBTdHJpbmcg
cGx1Z2luTmFtZSA9IHBsdWdpblZpZXctPnBsdWdpbigpLT5uYW1lKCk7CiAgICAgICAgIGlmICgh
cGx1Z2luTmFtZS5pc051bGwoKSkgewogICAgICAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGtl
eSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJLaXRFcnJv
clBsdWdJbk5hbWVLZXkpOwotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzdHIo
QWRvcHRDRiwgcGx1Z2luTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHN0ci5nZXQoKSk7CisgICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5OYW1l
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCA2ZTY4N2YxOTM0YWY4MDRiZGY5NDk5
ZGVmZjYxZTc3ZjUzNWNjYjIwLi4xNTg3MmUzNGY5YTU0NDUwYWYzYjQ0OWY4MmNkZjBiMmFmYmVi
NDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTQwMSw4
ICs0MDEsNyBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRh
YmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdAogICAgIFJldGFpblB0cjxDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmPiB1c2VySW5mbyhBZG9wdENGLCBDRkRpY3Rpb25hcnlDcmVhdGVNdXRh
YmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKIAogICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkYXRhYmFzZU5h
bWVLZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViRGF0
YWJhc2VOYW1lS2V5KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cihBZG9wdENGLCBk
YXRhYmFzZU5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
dXNlckluZm8uZ2V0KCksIGRhdGFiYXNlTmFtZUtleSwgc3RyLmdldCgpKTsKKyAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZGF0YWJhc2VOYW1lS2V5LCBkYXRhYmFzZU5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICBDT01QdHI8Q0ZEaWN0aW9uYXJ5UHJv
cGVydHlCYWc+IHVzZXJJbmZvQmFnID0gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNyZWF0ZUlu
c3RhbmNlKCk7CiAgICAgdXNlckluZm9CYWctPnNldERpY3Rpb25hcnkodXNlckluZm8uZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAppbmRleCAxZjdhNTcyYzM0NDVkN2NiYzU3NjNhZjlk
OTFiOWVkZDc4OTUxMDlmLi5hNzMxMGI4MGIwZDQzNDQwNGY5ODU4ZGM4ZGI1NWM5M2YxYTU4OTRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcApAQCAtNjkzLDkgKzY5Myw5IEBAIEhSRVNVTFQg
V2ViSGlzdG9yeTo6YWRkSXRlbShJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5LCBib29sIGRpc2NhcmRE
dXBsaWNhdGUsIGJvb2wqCiAKIHZvaWQgV2ViSGlzdG9yeTo6dmlzaXRlZFVSTChjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgaHR0cE1ldGhvZCwgYm9v
bCB3YXNGYWlsdXJlLCBib29sIGluY3JlYXNlVmlzaXRDb3VudCkKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyhBZG9wdENGLCB1cmwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSB1cmwuc3RyaW5n
KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAotICAgIElXZWJIaXN0b3J5SXRlbSogZW50cnkgPSAoSVdl
Ykhpc3RvcnlJdGVtKikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobV9lbnRyaWVzQnlVUkwuZ2V0KCks
IHVybFN0cmluZy5nZXQoKSk7CisgICAgSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSA9IChJV2ViSGlz
dG9yeUl0ZW0qKUNGRGljdGlvbmFyeUdldFZhbHVlKG1fZW50cmllc0J5VVJMLmdldCgpLCB1cmxT
dHJpbmcuZ2V0KCkpOwogICAgIGlmIChlbnRyeSkgewogICAgICAgICBDT01QdHI8SVdlYkhpc3Rv
cnlJdGVtUHJpdmF0ZT4gZW50cnlQcml2YXRlKFF1ZXJ5LCBlbnRyeSk7CiAgICAgICAgIGlmICgh
ZW50cnlQcml2YXRlKQpAQCAtNzg2LDExICs3ODYsMTAgQEAgSFJFU1VMVCBXZWJIaXN0b3J5Ojpy
ZW1vdmVJdGVtRm9yVVJMU3RyaW5nKENGU3RyaW5nUmVmIHVybFN0cmluZykKIAogQ09NUHRyPElX
ZWJIaXN0b3J5SXRlbT4gV2ViSGlzdG9yeTo6aXRlbUZvclVSTFN0cmluZyhjb25zdCBTdHJpbmcm
IHVybFN0cmluZykgY29uc3QKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybENGU3Ry
aW5nKEFkb3B0Q0YsIHVybFN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBpZiAoIXVybENG
U3RyaW5nKQorICAgIGlmICghdXJsU3RyaW5nKQogICAgICAgICByZXR1cm4gMDsKICAgICBDT01Q
dHI8SVdlYkhpc3RvcnlJdGVtPiBpdGVtOwotICAgIGlmIChGQUlMRUQoaXRlbUZvclVSTFN0cmlu
Zyh1cmxDRlN0cmluZy5nZXQoKSwgJml0ZW0pKSkKKyAgICBpZiAoRkFJTEVEKGl0ZW1Gb3JVUkxT
dHJpbmcodXJsU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksICZpdGVtKSkpCiAgICAgICAg
IHJldHVybiAwOwogICAgIHJldHVybiBpdGVtOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSGlzdG9yeUl0
ZW0uY3BwCmluZGV4IGEyNjQzMDg5ZGNkNzlkODI0MjUyMDE5NjIxMzI3ZmNhOWY4MmQ5ODIuLjhi
ZmU5YmQ3YzA3N2NjZmJlOGIwN2FiNTkxYWMzOTcwNjUyNDMyMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkhpc3RvcnlJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAKQEAgLTIxNCw3ICsyMTQsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYkhpc3RvcnlJdGVtOjpkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24odm9pZCoqIGRp
Y3RpbwogCiAgICAgaWYgKCFtX2hpc3RvcnlJdGVtLT51cmxTdHJpbmcoKS5pc0VtcHR5KCkpIHsK
ICAgICAgICAga2V5c1trZXlDb3VudF0gPSB1cmxLZXk7Ci0gICAgICAgIHZhbHVlc1trZXlDb3Vu
dCsrXSA9IG1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAg
ICAgIHZhbHVlc1trZXlDb3VudCsrXSA9IG1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmNyZWF0
ZUNGU3RyaW5nKCkubGVha1JlZigpOwogICAgIH0KIAogICAgIGtleXNba2V5Q291bnRdID0gbGFz
dFZpc2l0ZWREYXRlS2V5OwpAQCAtMjIyLDcgKzIyMiw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViSGlzdG9yeUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiogZGlj
dGlvCiAKICAgICBpZiAoIW1faGlzdG9yeUl0ZW0tPnRpdGxlKCkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGtleXNba2V5Q291bnRdID0gdGl0bGVLZXk7Ci0gICAgICAgIHZhbHVlc1trZXlDb3VudCsr
XSA9IG1faGlzdG9yeUl0ZW0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgdmFs
dWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygp
LmxlYWtSZWYoKTsKICAgICB9CiAKICAgICBrZXlzW2tleUNvdW50XSA9IHZpc2l0Q291bnRLZXk7
CkBAIC0yNDUsNyArMjQ1LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJIaXN0b3J5
SXRlbTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0aW8KICAgICAgICAgQVNT
RVJUKHNpemUpOwogICAgICAgICBDRlN0cmluZ1JlZiogaXRlbXMgPSBuZXcgQ0ZTdHJpbmdSZWZb
c2l6ZV07CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICAgICAgaXRlbXNbaV0gPSByZWRpcmVjdFVSTHMtPmF0KGkpLmNyZWF0ZUNGU3RyaW5nKCk7Cisg
ICAgICAgICAgICBpdGVtc1tpXSA9IHJlZGlyZWN0VVJMcy0+YXQoaSkuY3JlYXRlQ0ZTdHJpbmco
KS5sZWFrUmVmKCk7CiAgICAgICAgIENGQXJyYXlSZWYgcmVzdWx0ID0gQ0ZBcnJheUNyZWF0ZSgw
LCAoY29uc3Qgdm9pZCoqKWl0ZW1zLCBzaXplLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICBDRlJl
bGVhc2UoaXRlbXNbaV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFzZS5jcHAKaW5kZXgg
MjVkN2VjMDliOTg2MWU0NDM0OTFlMzQ2ZDUwZDRlMjJjNzcxYjg0NS4uMDVhOTQ5MDhhODg4NDEy
YjE1ZDM5NDYzZDEzOTI5YTkxNjc0OTQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4v
V2ViSWNvbkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJh
c2UuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgQlNUUiBXZWJJY29uRGF0YWJhc2U6Omljb25EYXRh
YmFzZURpZEFkZEljb25Ob3RpZmljYXRpb24oKQogCiBDRlN0cmluZ1JlZiBXZWJJY29uRGF0YWJh
c2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5KCkKIHsKLSAgICBzdGF0
aWMgQ0ZTdHJpbmdSZWYgaWNvblVzZXJJbmZvVVJMS2V5ID0gU3RyaW5nKFdlYkljb25Ob3RpZmlj
YXRpb25Vc2VySW5mb1VSTEtleSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYgaWNvblVzZXJJbmZvVVJMS2V5ID0gU3RyaW5nKFdlYkljb25Ob3RpZmljYXRpb25Vc2Vy
SW5mb1VSTEtleSkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIGljb25V
c2VySW5mb1VSTEtleTsKIH0KIApAQCAtMzg3LDggKzM4Nyw3IEBAIHN0YXRpYyB2b2lkIHBvc3RE
aWRBZGRJY29uTm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYgcGFnZVVSTCwgV2ViSWNvbkRhdGFi
YXNlKiBpCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGRpY3Rpb25hcnko
QWRvcHRDRiwgCiAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybChBZG9wdENGLCBwYWdlVVJMLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCks
IFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXko
KSwgdXJsLmdldCgpKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkaWN0aW9uYXJ5LmdldCgp
LCBXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZvVVJMS2V5
KCksIHBhZ2VVUkwuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAgICBDT01QdHI8Q0ZEaWN0
aW9uYXJ5UHJvcGVydHlCYWc+IHVzZXJJbmZvID0gQ0ZEaWN0aW9uYXJ5UHJvcGVydHlCYWc6OmNy
ZWF0ZUluc3RhbmNlKCk7CiAgICAgdXNlckluZm8tPnNldERpY3Rpb25hcnkoZGljdGlvbmFyeS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmlu
Z3MuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViTG9jYWxpemFibGVTdHJpbmdzLmNwcAppbmRl
eCBmZDYxYTAxZmJhZjBlY2E3MTQ0NjNiYjFkNTcwY2ZmYTQxYjc2NThkLi5kZmI3MTRiNDY1MDYx
YWIyMDM1MmJhM2Q3NTc3NGZiZWZhZjI3ZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxv
Y2FsaXphYmxlU3RyaW5ncy5jcHAKQEAgLTEzMiwxMiArMTMyLDEwIEBAIHN0YXRpYyBDRkJ1bmRs
ZVJlZiBjcmVhdGVXZWJLaXRCdW5kbGUoKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFN0cmlu
ZyBidW5kbGVQYXRoU3RyaW5nKHBhdGhTdHIpOwotICAgIENGU3RyaW5nUmVmIGJ1bmRsZVBhdGhD
RlN0cmluZyA9IGJ1bmRsZVBhdGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICBpZiAoIWJ1
bmRsZVBhdGhDRlN0cmluZykKKyAgICBpZiAoIWJ1bmRsZVBhdGhTdHJpbmcpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgQ0ZVUkxSZWYgYnVuZGxlVVJMUmVmID0gQ0ZVUkxDcmVhdGVXaXRoRmls
ZVN5c3RlbVBhdGgoMCwgYnVuZGxlUGF0aENGU3RyaW5nLCBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxl
LCB0cnVlKTsKLSAgICBDRlJlbGVhc2UoYnVuZGxlUGF0aENGU3RyaW5nKTsKKyAgICBDRlVSTFJl
ZiBidW5kbGVVUkxSZWYgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBidW5kbGVQ
YXRoU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUs
IHRydWUpOwogICAgIGlmICghYnVuZGxlVVJMUmVmKQogICAgICAgICByZXR1cm4gMDsKIApAQCAt
MTY4LDggKzE2Niw3IEBAIHN0YXRpYyBDRlN0cmluZ1JlZiBjb3B5TG9jYWxpemVkU3RyaW5nRnJv
bUJ1bmRsZShXZWJMb2NhbGl6YWJsZVN0cmluZ3NCdW5kbGUqIHN0CiAgICAgaWYgKCFidW5kbGUp
CiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
a2V5U3RyaW5nKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlN0cmluZ1Jl
ZiByZXN1bHQgPSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleVN0cmlu
Zy5nZXQoKSwgMCwgYnVuZGxlLCBub3RGb3VuZCwgMCk7CisgICAgQ0ZTdHJpbmdSZWYgcmVzdWx0
ID0gQ0ZDb3B5TG9jYWxpemVkU3RyaW5nV2l0aERlZmF1bHRWYWx1ZShrZXkuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgMCwgYnVuZGxlLCBub3RGb3VuZCwgMCk7CiAKICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKHJlc3VsdCAhPSBub3RGb3VuZCwgImNvdWxkIG5vdCBmaW5kIGxvY2FsaXphYmxlIHN0
cmluZyAlcyBpbiBidW5kbGUiLCBrZXkpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJQcmVmZXJlbmNlcy5jcHAKaW5kZXggNTYzNGExNWIzZWQzZTAxYzI2MDRhNWJlMjYwMTM3
MTFmZGNjZGMzMy4uODk2N2IwYjMwYWU0ZDQyMzM1OGI5ZmNlNmY1ODMxOTFjOTZjMGMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3MoKQogICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0Rml4ZWRGb250U2l6ZVBy
ZWZlcmVuY2VLZXkpLCBDRlNUUigiMTMiKSk7CiAKICAgICBTdHJpbmcgZGVmYXVsdERlZmF1bHRF
bmNvZGluZyhXRUJfVUlfU1RSSU5HKCJJU08tODg1OS0xIiwgIlRoZSBkZWZhdWx0LCBkZWZhdWx0
IGNoYXJhY3RlciBlbmNvZGluZyIpKTsKLSAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVmZXJlbmNlS2V5KSwgZGVm
YXVsdERlZmF1bHRFbmNvZGluZy5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBDRkRpY3Rpb25hcnlB
ZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWVQcmVm
ZXJlbmNlS2V5KSwgZGVmYXVsdERlZmF1bHRFbmNvZGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKIAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2Vy
U3R5bGVTaGVldEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKICAgICBD
RkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0VXNlclN0eWxlU2hlZXRM
b2NhdGlvblByZWZlcmVuY2VLZXkpLCBDRlNUUigiIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCA2YjFiYWRlNGFhZjJlOTVhMjA0ZjkyYTI2ZDRhYjAyNDBhMjcyODM4Li4zYTFiNzRlMjEzNTFm
YWRhNmQ0MWFjZGY4OWYyNTRhODNhYWNiNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtNDcx
LDcgKzQ3MSw3IEBAIHZvaWQgV2ViVmlldzo6c2V0Q2FjaGVNb2RlbChXZWJDYWNoZU1vZGVsIGNh
Y2hlTW9kZWwpCiAgICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNmdXJsQ2FjaGUoQWRvcHRD
RiwgQ0ZVUkxDYWNoZUNvcHlTaGFyZWRVUkxDYWNoZSgpKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGNmdXJsQ2FjaGVEaXJlY3RvcnkoQWRvcHRDRiwgd2tDb3B5Rm91bmRhdGlvbkNhY2hl
RGlyZWN0b3J5KDApKTsKICAgICBpZiAoIWNmdXJsQ2FjaGVEaXJlY3RvcnkpCi0gICAgICAgIGNm
dXJsQ2FjaGVEaXJlY3RvcnkuYWRvcHRDRihXZWJDb3JlOjpsb2NhbFVzZXJTcGVjaWZpY1N0b3Jh
Z2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgY2Z1cmxDYWNoZURpcmVj
dG9yeSA9IFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0
ZUNGU3RyaW5nKCk7CiAKICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3RvciwgdXNlIDEwMDAgaW5zdGVh
ZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlIAogICAgIC8vIGNvdW50IGRvZXNu
J3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgpAQCAtNDcxMiw4ICs0NzEy
LDcgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQoSVdlYk5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uKQogICAgICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAg
ICAgIHJldHVybiBocjsKIAotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmlu
ZyhBZG9wdENGLCB0b1N0cmluZyhzdHIpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgdXJsU3RyaW5nLmdldCgpLCAwKSk7CisgICAgICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCB0b1N0cmluZyhzdHIpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKTsKIAogICAg
ICAgICAvLyBDaGVjayBpZiB0aGUgcGFzc2VkIGluIHN0cmluZyBpcyBhIHBhdGggYW5kIGNvbnZl
cnQgaXQgdG8gYSBVUkwuCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBm
b3IgbmlnaHRseSBidWlsZHMgdW50aWwgd2UgY2FuIGdldCBTYWZhcmkgdG8gcGFzcyAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCmluZGV4IDRhMzViNmEyZDhhMzJjNWRk
ODM0OTcyY2QyZmRmMmFkYzM5MWU2MWEuLjM2ODc1MzE1MTcyMThkYTI5ZTljZGRkYTQyMzJhM2Ix
MjgyNTMzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVN
YWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQpAQCAt
MzAsMTIgKzMwLDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBib29sIE1vZHVsZTo6bG9hZCgp
CiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIG1fcGF0
aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChB
ZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCBidW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmls
ZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgbV9wYXRoLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOwogICAgIGlmICghYnVuZGxlVVJM
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1
bmRsZShBZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVV
UkwuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0Yo
Q0ZCdW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAg
ICAgaWYgKCFidW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KaW5kZXggZGU3
ZDU4MzFmNjA4YzM4MzBlM2M5YmUxNGIzOTQ2NWViMmM3MWMzYi4uNjcxZjIwZDZkY2FiZTFmYzFi
YTM5NTU3ZDVlNjI4ZWU3ZWQ3ZWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCkBAIC0yNzksOCArMjc5LDcgQEAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25z
dCBTdHJpbmcmIHNhbmRib3hQcm8KICAgICBpZiAoc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRo
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBjZlBsdWdpblBhdGggPSBhZG9wdENGKHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgUmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0
aEZpbGVTeXN0ZW1QYXRoKDAsIGNmUGx1Z2luUGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5
bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBwbHVnaW5VUkwgPSBhZG9wdENG
KENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgaWYgKCFwbHVn
aW5VUkwpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjkyLDggKzI5MSw3IEBAIHN0YXRpYyB2b2lk
IGluaXRpYWxpemVTYW5kYm94KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgY29uc3QgU3RyaW5n
JiBzYW5kYm94UHJvCiAgICAgaWYgKCFidW5kbGVJZGVudGlmaWVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQ
YXRoID0gYWRvcHRDRihzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBzYW5kYm94UHJvZmlsZURpcmVjdG9yeSA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgY2ZTYW5kYm94UHJvZmlsZURp
cmVjdG9yeVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBUUlVFKSk7CisgICAgUmV0
YWluUHRyPENGVVJMUmVmPiBzYW5kYm94UHJvZmlsZURpcmVjdG9yeSA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgc2FuZGJveFByb2ZpbGVEaXJlY3RvcnlQYXRoLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBUUlVFKSk7CiAKICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNhbmRib3hGaWxlTmFtZSA9IENGU3RyaW5nQ3JlYXRl
V2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiJUAuc2IiKSwgYnVuZGxlSWRlbnRpZmllcik7CiAgICAg
UmV0YWluUHRyPENGVVJMUmVmPiBzYW5kYm94VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhG
aWxlU3lzdGVtUGF0aFJlbGF0aXZlVG9CYXNlKDAsIHNhbmRib3hGaWxlTmFtZS5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeS5nZXQoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFj
L05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCmluZGV4IDgxYjM4ZTBl
YzhmZTNjNDE4ODk3OWVlZmQwNjIyN2IzNzBmZDRhM2UuLjNkYzM3N2M0NDUwZDg4ZmUyNWY3MDJi
MGZhNTQzYTM4ZTI4ZjZjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVN
YWMubW0KQEAgLTM1MiwxMSArMzUyLDEwIEBAIHN0YXRpYyBib29sIGdldFBsdWdpbkluZm9Gcm9t
Q2FyYm9uUmVzb3VyY2VzKENGQnVuZGxlUmVmIGJ1bmRsZSwgUGx1Z2luTW9kdWxlSW5mCiAKIGJv
b2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVn
aW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVX
aXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0aC5nZXQoKSwg
a0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiBi
dW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9T
SVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRvIGluaXRpYWxpemUgdGhl
IGJ1bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShBZG9wdENGLCBDRkJ1
bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVhdGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYgKCFidW5kbGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTM5NSwxMSArMzk0LDkgQEAgYm9vbCBOZXRz
Y2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBsdWdpbk1vZHVsZUkKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Y3JlYXRlUGx1Z2lu
TUlNRVR5cGVzUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKQogewotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gYnVuZGxlUGF0aChBZG9wdENGLCBwbHVnaW5QYXRoLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0Ys
IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRs
ZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIAotICAgIC8vIFRyeSB0byBp
bml0aWFsaXplIHRoZSBidW5kbGUuCi0gICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUo
QWRvcHRDRiwgQ0ZCdW5kbGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdl
dCgpKSk7CisgICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBidW5kbGUgPSBhZG9wdENGKENGQnVu
ZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOwogICAgIGlm
ICghYnVuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCmluZGV4IGNkZmYzNDQ2
OWEyMzkzZDM1YWRiYWJjNGNiMGEzOGJhMGY1NjIzMjQuLjdjMWYyNDBlY2M0OGI4YjRjMTkxM2Uw
NTRjNThhYjNhNDhhMmI0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
Zi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcApAQCAtOTQsOSArOTQsOSBAQCBDRkRpY3Rpb25h
cnlSZWYgV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVDRkRpY3Rpb25hcnlSZXByZXNlbnRhdGlv
bihXZWJQYWdlUHJveAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsKEFkb3B0Q0YsIG1fZW50cmllc1tp
XS0+dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gdGl0bGUoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCkp
OwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsVVJMKEFkb3B0Q0YsIG1f
ZW50cmllc1tpXS0+b3JpZ2luYWxVUkwoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiB1cmwgPSBtX2VudHJpZXNbaV0tPnVybCgpLmNyZWF0ZUNGU3Ry
aW5nKCk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGl0bGUgPSBtX2VudHJpZXNb
aV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBvcmlnaW5hbFVSTCA9IG1fZW50cmllc1tpXS0+b3JpZ2luYWxVUkwoKS5jcmVhdGVDRlN0
cmluZygpOwogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHVzZXMgdGhlIENvcmVJUEMgZGF0YSBl
bmNvZGluZyBmb3JtYXQsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbmV2ZXIgd2UgY2hhbmdlIHRoZSBD
b3JlSVBDIGVuY29kaW5nIHdlIG5lZWQgdG8gYnVtcCB0aGUgQ3VycmVudFNlc3Npb25TdGF0ZURh
dGFWZXJzaW9uCiAgICAgICAgIC8vIGNvbnN0YW50IGluIFdlYlBhZ2VQcm94eUNGLmNwcC4gVGhl
IENvcmVJUEMgZGF0YSBmb3JtYXQgaXMgbWVhbnQgdG8gYmUgYW4gaW1wbGVtZW50YXRpb24gZGV0
YWlsLCBhbmQgbm90IHNvbWV0aGluZyB0aGF0IHNob3VsZCBiZSB3cml0dGVuIHRvIGRpc2suCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYlBhZ2VQcm94eUNGLmNwcAppbmRleCA3
OWRkOGNlZDAyZDdjZTBkNGYzYzI0MDQ4MThiODAxYmU0MGYxZjdhLi5kMjJlZWQyOTRjMGNmM2Y4
ZjEyYzczZWU4ODIwYTVjM2RiY2U5NTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgUGFzc1JlZlB0cjxXZWJE
YXRhPiBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZURhdGEoV2ViUGFnZVByb3h5U2Vzc2lvblN0
YXRlRmlsdGUKICAgICAgICAgaWYgKHByb3Zpc2lvbmFsVVJMLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHByb3Zpc2lvbmFsVVJMID0gbV9tYWluRnJhbWUtPnByb3Zpc2lvbmFsVVJMKCk7CiAgICAg
ICAgIGlmICghcHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBwcm92aXNp
b25hbFVSTFN0cmluZy5hZG9wdENGKHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNGU3RyaW5nKCkpOwor
ICAgICAgICAgICAgcHJvdmlzaW9uYWxVUkxTdHJpbmcgPSBwcm92aXNpb25hbFVSTC5jcmVhdGVD
RlN0cmluZygpOwogICAgICAgICAgICAga2V5c1tudW1WYWx1ZXNdID0gUHJvdmlzaW9uYWxVUkxL
ZXkoKTsKICAgICAgICAgICAgIHZhbHVlc1tudW1WYWx1ZXNdID0gcHJvdmlzaW9uYWxVUkxTdHJp
bmcuZ2V0KCk7CiAgICAgICAgICAgICArK251bVZhbHVlczsKQEAgLTE3OSw4ICsxNzksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGVEYXRhKFdlYkRhdGEqIHdl
YkRhdGEpCiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGF1dG9zYXZlS2V5KGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKLSAgICBTdHJpbmcga2V5ID0gImNvbS5hcHBsZS5XZWJLaXQuc2Vh
cmNoRmllbGQ6IiArIG5hbWU7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRv
cHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIHJldHVybiAoImNvbS5hcHBsZS5XZWJL
aXQuc2VhcmNoRmllbGQ6IiArIG5hbWUpLmNyZWF0ZUNGU3RyaW5nKCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgc2VhcmNoSXRlbXMpCkBAIC0xOTIsMTAgKzE5MSw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYKIAogICAgIGlmIChzaXplX3Qgc2l6ZSA9IHNlYXJjaEl0ZW1zLnNpemUo
KSkgewogICAgICAgICBpdGVtcy5hZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKDAsIHNpemUs
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaXRlbShB
ZG9wdENGLCBzZWFyY2hJdGVtc1tpXS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgaXRlbS5nZXQoKSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBDRkFy
cmF5QXBwZW5kVmFsdWUoaXRlbXMuZ2V0KCksIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogICAgIH0KIAogICAgIENGUHJlZmVyZW5jZXNTZXRBcHBWYWx1ZShhdXRvc2F2
ZUtleShuYW1lKS5nZXQoKSwgaXRlbXMuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxp
Y2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVzb3VyY2VD
YWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCmluZGV4IDY4MTBm
MGFiZGI5ZGJlYmE5OWZhM2UxZTliMGYwNmNlNDVhZTA0OTQuLjM5NTY0OWM1MGJmNGQ2ZGYwNGJj
NzU0MGI1NGJhZjU5ZGIyYzM2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2Vy
LmNwcApAQCAtMTE4LDggKzExOCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXI6OmNs
ZWFyQ2FjaGVGb3JPcmlnaW4oU2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbkRhdGEsCiAjaWYgVVNF
KENGVVJMQ0FDSEUpCiAgICAgaWYgKHJlc291cmNlQ2FjaGVzVG9DbGVhciAhPSBJbk1lbW9yeVJl
c291cmNlQ2FjaGVzT25seSkgeyAKICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVm
PiBob3N0QXJyYXkoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVB
cnJheUNhbGxCYWNrcykpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3QoQWRv
cHRDRiwgb3JpZ2luLT5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIENGQXJyYXlB
cHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCksIGhvc3QuZ2V0KCkpOworICAgICAgICBDRkFycmF5
QXBwZW5kVmFsdWUoaG9zdEFycmF5LmdldCgpLCBvcmlnaW4tPmhvc3QoKS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIAogICAgICAgICBjbGVhckNGVVJMQ2FjaGVGb3JIb3N0TmFtZXMoaG9zdEFy
cmF5LmdldCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL3dpbi9XZWJQYWdlV2luLmNwcAppbmRleCA2Mjk0ZjAwZDg4ZGRhMDRiZTUyNDEwN2M2
YmY2NTliYzllNzMwYmM0Li5jNmY1YjY3ODEyYzMzMGU0MTcxNmUxNThiMTRmYTE4NWNhNDg1MmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBh
Z2VXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2Vi
UGFnZVdpbi5jcHAKQEAgLTI3MCw4ICsyNzAsNyBAQCBzdGF0aWMgUmV0YWluUHRyPENGQ2FjaGVk
VVJMUmVzcG9uc2VSZWY+IGNhY2hlZFJlc3BvbnNlRm9yVVJMKFdlYlBhZ2UqIHdlYlBhZ2UsCiAg
ICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24oUmVzb3VyY2VIYW5kbGU6OmN1cnJlbnRTdG9y
YWdlU2Vzc2lvbigpLCByZXF1ZXN0LmdldCgpKTsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1c2VyQWdlbnQoQWRvcHRDRiwgd2ViUGFnZS0+dXNlckFnZW50KCkuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUEhlYWRlckZpZWxkVmFsdWUocmVx
dWVzdC5nZXQoKSwgQ0ZTVFIoIlVzZXItQWdlbnQiKSwgdXNlckFnZW50LmdldCgpKTsKKyAgICBD
RlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LmdldCgpLCBDRlNUUigi
VXNlci1BZ2VudCIpLCB3ZWJQYWdlLT51c2VyQWdlbnQoKS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KTsKIAogICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiBjYWNoZTsKICNpZiBVU0UoQ0ZVUkxT
VE9SQUdFU0VTU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3dp
bi9XZWJQcm9jZXNzV2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2luL1dlYlBy
b2Nlc3NXaW4uY3BwCmluZGV4IDI1ZGJjMzZjNDk5YmYzOTQ2OTM0YjRlMTJlNjU2MjMwYWQ5YmIx
OTIuLmRhNGI1NmRjODg2YzNiYWJhZDc3MzdkODdkOGU3NDc0OTFjOWVhNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwCkBAIC03OSw3ICs3
OSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1TZXRDYWNoZU1vZGVsKENhY2hlTW9kZWwg
Y2FjaGVNb2RlbCkKICAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKHdrQ29weUZv
dW5kYXRpb25DYWNoZURpcmVjdG9yeSgwKSk7CiAKICAgICBpZiAoIWNmdXJsQ2FjaGVEaXJlY3Rv
cnkpCi0gICAgICAgIGNmdXJsQ2FjaGVEaXJlY3RvcnkuYWRvcHRDRihXZWJDb3JlOjpsb2NhbFVz
ZXJTcGVjaWZpY1N0b3JhZ2VEaXJlY3RvcnkoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAg
Y2Z1cmxDYWNoZURpcmVjdG9yeSA9IFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURp
cmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICAvLyBBcyBhIGZ1ZGdlIGZhY3Rvciwg
dXNlIDEwMDAgaW5zdGVhZCBvZiAxMDI0LCBpbiBjYXNlIHRoZSByZXBvcnRlZCBieXRlIAogICAg
IC8vIGNvdW50IGRvZXNuJ3QgYWxpZ24gZXhhY3RseSB0byBhIG1lZ2FieXRlIGJvdW5kYXJ5LgpA
QCAtMTQ4LDEzICsxNDgsMTIgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcm9jZXNzKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMKICAgICBpZiAoZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNhY2hlUGF0aChBZG9wdENGLCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9y
eS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBpZiAoIWNhY2hlUGF0aCkKKyAgICBpZiAoIXBhcmFt
ZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5KQogICAgICAgICByZXR1cm47CiAKICAgICBDRkluZGV4
IGNhY2hlRGlza0NhcGFjaXR5ID0gcGFyYW1ldGVycy5jZlVSTENhY2hlRGlza0NhcGFjaXR5Owog
ICAgIENGSW5kZXggY2FjaGVNZW1vcnlDYXBhY2l0eSA9IHBhcmFtZXRlcnMuY2ZVUkxDYWNoZU1l
bW9yeUNhcGFjaXR5OwotICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiB1aVByb2Nlc3NDYWNo
ZShBZG9wdENGLCBDRlVSTENhY2hlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNhY2hlTWVt
b3J5Q2FwYWNpdHksIGNhY2hlRGlza0NhcGFjaXR5LCBjYWNoZVBhdGguZ2V0KCkpKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gdWlQcm9jZXNzQ2FjaGUoQWRvcHRDRiwgQ0ZVUkxDYWNo
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjYWNoZU1lbW9yeUNhcGFjaXR5LCBjYWNoZURp
c2tDYXBhY2l0eSwgcGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkuY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSkpOwogICAgIENGVVJMQ2FjaGVTZXRTaGFyZWRVUkxDYWNoZSh1aVByb2Nlc3NDYWNo
ZS5nZXQoKSk7CiAjZW5kaWYgLy8gVVNFKENGTkVUV09SSykKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3YjEzYzg3OGMxZmY1MTk1MDJiZmZk
YTI0MDhkZGZjNjhhZjJkYjdiLi5lOTAwZWNjYWU2YWRkNGIyMWRjYzk4NzZkNDA5ODNiMTdhOTIw
NGQzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4g
YSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVwZGF0ZSBjYWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VN
YWMubW06CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6cGxhdGZvcm1EaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKwogMjAxMi0xMC0yOCAgTWFyayBSb3dlICA8bXJv
d2VAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IFhjb2RlIGNvbmZpZ3VyYXRpb24gc2V0
dGluZ3MgdGhhdCB1c2VkIHRvIHZhcnkgYmV0d2VlbiBPUyB2ZXJzaW9ucy4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxl
UGFnZU1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0lu
amVjdGVkQnVuZGxlUGFnZU1hYy5tbQppbmRleCA0NmMyNzNmMWY4Y2E0MGFlZTI3Yzk0NzZjODFm
ZTczOTRjMzNiYjI0Li5iMGNiNGUwMzFjYjc0NDYyOGMwYmMzNGQ1N2QxNzZiNjg3YWYxMzQ1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VNYWMubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCkBAIC04NSw4ICs4NSw3IEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUoV0tCdW5kbGVGcmFtZVJlCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJDUkFTSElORyBURVNUOiAiKTsKICAgICAgICAg
YnVpbGRlci5hcHBlbmQodGVzdFBhdGgpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmU3RyaW5nKEFkb3B0Q0YsIGJ1aWxkZXIudG9TdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICAgICAgV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZvcm1hdGlvbihj
ZlN0cmluZy5nZXQoKSk7CisgICAgICAgIFdLU2V0Q3Jhc2hSZXBvcnRBcHBsaWNhdGlvblNwZWNp
ZmljSW5mb3JtYXRpb24oYnVpbGRlci50b1N0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogICAgIH0KICNlbmRpZgogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171348</attachid>
            <date>2012-10-29 17:36:10 -0700</date>
            <delta_ts>2012-10-29 17:45:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121029173437.patch</filename>
            <type>text/plain</type>
            <size>80668</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4MTI3YjlmMTMxMjQ1ZTUzMDAwZDZi
ZmVhMTZkYTNkZTZhMWJmMjIuLjg0OWY4ODFjYTQ1NTFiNmM1NGY4MDViMzJjNDA4MmRlOWZkZWVl
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMTItMTAtMjggIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBYY29kZSBjb25maWd1cmF0aW9uIHNldHRp
bmdzIHRoYXQgdXNlZCB0byB2YXJ5IGJldHdlZW4gT1MgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGM2MGJhZWUyOWIxMGViZTVkNGIxNGJiZGE5YmFlMjJiNTkxZmI3Zi4uNjFkNjc1YWNmMjMzMDY2
YzliMGUxZDIyZjk4YzY3MmQxNzRkN2ViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisy
MDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEgUmV0YWluUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbGVy
cyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICogYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09i
amVjdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5L
ZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9GaWxlU3lz
dGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1D
QUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChyZXN1Ym1pdEFs
bEFuaW1hdGlvbnMpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjphZGRBbmltYXRpb25Gb3JL
ZXkpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkpOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgorICAgICAgICAo
UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0
aUZyb21NSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3Vy
Y2VDR01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp1dGlUeXBlRnJvbUNvY29hVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdl
bmVyYXRvck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRD
b29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpjZkVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RGVm
YXVsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEhlYWRlckZpZWxkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFs
cyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURl
c2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVl
c3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJM
UmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6OjpjcmVhdGVWYWx1ZUZvcktleSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9jZi9TdHJpbmdDRi5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAg
KFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvbWFjL1N0cmluZ0ltcGxNYWMubW06CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om9wZXJh
dG9yIE5TU3RyaW5nICopOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNNYWM6OmVuY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphdXRvc2F2ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OnNh
dmVSZWNlbnRTZWFyY2hlcyk6CisKIDIwMTItMTAtMjkgIFZpbmNlbnQgU2NoZWliICA8c2NoZWli
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyODQ1
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2NmL0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJl
Y2M1Li4xYjE3N2Q3OTZlNzhlODVjNzhlYmEzNGQ0MjhmNjM5NjNjMzBiMzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQg
cmV0dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAg
ICAoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToK
KyAgICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcu
aCwgcmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxMWQ1MGIxNzdk
YWY2ZTIwZjdhYWFkYjEzYjEyNWVlNWNkOTUwMGUzLi5lZWZlYzUxZmZlNDNhMmU3MTViYWY4MmQ5
YTA3YWRlMjI2YzhiOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTIt
MTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBT
dHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9m
IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRh
YmFzZSk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojp2
aXNpdGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcpOgorICAg
ICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpkaWN0
aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZv
VVJMS2V5KToKKyAgICAgICAgKHBvc3REaWRBZGRJY29uTm90aWZpY2F0aW9uKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnVuZGxl
KToKKyAgICAgICAgKGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxlKToKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURl
ZmF1bHRTZXR0aW5ncyk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3
OjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZCk6CisKIDIwMTItMTAtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhIHN0cmF0ZWd5IGZvciBsb2FkZXIgY3VzdG9taXphdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA0ZWY0NDFlZGNjYzE3ZWI3MTY4ZjcyZDkxMGVjY2ZmMGYzZmY0ODY2Li5kNjZmNzJi
M2M0MGE1YzQ4ODQyMWEzZmM5YWNkYTY2NGNhMDljY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5Q
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjYWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9tYWMvTW9kdWxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2R1bGU6OmxvYWQpOgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZlcmVuY2VzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjphdXRvc2F2ZUtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUNhY2hl
TWFuYWdlcjo6Y2xlYXJDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9XZWJQYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2FjaGVkUmVzcG9uc2VG
b3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwog
MjAxMi0xMC0yOSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAog
ICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogRGVsZXRlIGNhY2hlZCBTaGFyZWFibGVTdXJm
YWNlcyB3aGVuIHB1cmdpbmcgYmFja2luZ1N0b3Jlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
aW5kZXggMDllZjY0NjgwMWZiYzliNTY4ZWZlNGU2ODc2YTljZTBhMzljMGFhYi4uZWI0NjYyYzVj
MjRkYTExY2QzNzg5OTZjMDU2Y2JjOTFjNWU4ZmNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKQEAgLTY3LDYgKzY3LDcgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0ZXJhbERhdGFUcmFu
c2xhdG9yOwogY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIHN0cnVjdCBTdWJzdHJpbmdUcmFuc2xh
dG9yOwogc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBSZXRhaW5QdHI7CiAKIGVudW0gVGV4dENhc2VTZW5zaXRpdml0eSB7IFRleHRDYXNlU2Vu
c2l0aXZlLCBUZXh0Q2FzZUluc2Vuc2l0aXZlIH07CiAKQEAgLTcxNCw3ICs3MTUsNyBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7
CiAKICNpZiBVU0UoQ0YpCi0gICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3RyaW5nKCk7CiAjZW5kaWYKICNpZmRlZiBf
X09CSkNfXwogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
aW5kZXggZTU4YmFlZDg1YWY1YWU5MGNlN2YzZTAzZmU0MGViZWQ4ZGQzYzY4ZC4uNjI0ZWI1NGFh
YzdmZDczN2FhY2YzMWExYzVkYjkyYjA0ZmQ2ZGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
CkBAIC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2VuZGlmCiAKLSNp
ZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpbmdSZWY7
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFFUKQogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBR
U3RyaW5nOwpAQCAtMzkyLDcgKzM4OCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDRikKICAgICBT
dHJpbmcoQ0ZTdHJpbmdSZWYpOwotICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29u
c3Q7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVDRlN0cmluZygpIGNvbnN0Owog
I2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCmluZGV4IDJjZjBkYjU2MThlMzgyMGNkZjQ0NjQ1NTgzNDFmNjk0ZjUzZDFm
YTMuLmJlMjRmZGIzZmRiMTM3YzgwYjZmMGE0ZmI4ODc0MWFiMzQxYTRkNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI0OCw4ICsyNDgsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNf
Y2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwogICAgICAgICBPd25Q
dHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QoYWRvcHRQdHIobmV3IE9iamNNZXRob2Qob2Jq
Y0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3Jp
cHQ6d2l0aEFyZ3VtZW50czopKSkpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlm
aWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkp
LT5wcm9wZXJ0eU5hbWUoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFk
b3B0Q0YsIG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBmYWxsYmFj
a01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZS5nZXQoKSk7CisgICAgICAgIGZhbGxiYWNr
TWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpjTWV0aG9k
KGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKICAgICB9CiAgICAgICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDQ1OGVhYzY5ZjZlZjYyZjY2
YTQ0YTg2YTEyNjEyN2EzNWIxOGQxZjIuLmU5Y2QxYWZmYzllNjYxZDk4ZTRlNjRkOTc2NDRhOWEx
MWJmYmQ0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
OTE2LDggKzkxNiw3IEBAIHN0YXRpYyBLVVJMIGNyZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIC8vIGFwcCBjYWNoZSBtZWRpYSBm
aWxlcyBhcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBlbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkpLgogCiAjaWYgVVNFKENGKSAmJiBQTEFURk9STShXSU4pCi0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlBhdGgoQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRl
V2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGNmUGF0aC5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHls
ZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMKEFkb3B0Q0YsIENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBLVVJMIHVybChjZlVSTC5nZXQo
KSk7CiAjZWxzZQogICAgIEtVUkwgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCAzNTc2ZDY0ZGZjNDgyYTQx
ZDU0ZTEzZWZkMTk3ODE2MmI3ODA3YTdmLi5kNzdmODc0YjA5ZGMyMDA5YmJlZDAzNTI0MTgzNWJm
ZTg2Zjg4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTEsOCArOTEsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRh
dGlvbihBcgogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVn
YWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgY2ZEYXRhLmdldCgpKTsKICAgICAKICAgICAv
LyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmVVJMKEFkb3B0Q0YsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBpZiAoY2ZVUkwpCisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwg
PSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVz
b3VyY2VVUkxLZXksIGNmVVJMLmdldCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5VTEwgcmVzb3VyY2UgVVJMIGlzIGludmFsaWQgLSBy
ZXR1cm5pbmcgbnVsbCBwcm9wZXJ0eSBsaXN0Iik7CkBAIC0xMDEsMjMgKzEwMCwxNyBAQCBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbihBcgogCiAgICAgLy8gRnJhbWVOYW1lIHNob3VsZCBiZSBsZWZ0IG91
dCBpZiBlbXB0eSBmb3Igc3VicmVzb3VyY2VzLCBidXQgYWx3YXlzIGluY2x1ZGVkIGZvciBtYWlu
IHJlc291cmNlcwogICAgIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKHJlc291cmNlLT5mcmFtZU5h
bWUoKSk7Ci0gICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpIHx8IGlzTWFpblJlc291cmNlKSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZGcmFtZU5hbWUoQWRvcHRDRiwgZnJh
bWVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZUZyYW1lTmFtZUtleSwg
Y2ZGcmFtZU5hbWUuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkg
fHwgaXNNYWluUmVzb3VyY2UpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5
TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRnJhbWVOYW1lS2V5LCBmcmFtZU5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgCiAgICAgLy8gU2V0IE1JTUVUeXBlLCBU
ZXh0RW5jb2RpbmdOYW1lLCBhbmQgUmVzb3VyY2VSZXNwb25zZSBvbmx5IGlmIHRoZXkgYWN0dWFs
bHkgZXhpc3QKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKHJlc291cmNlLT5taW1lVHlwZSgp
KTsKLSAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNmTUlNRVR5cGUoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXksIGNmTUlNRVR5cGUuZ2V0KCkpOwotICAgIH0K
KyAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtl
eSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgCiAgICAgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcocmVzb3VyY2UtPnRleHRFbmNvZGluZygpKTsKLSAgICBpZiAoIXRl
eHRFbmNvZGluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZlRleHRFbmNvZGluZyhBZG9wdENGLCB0ZXh0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2Vi
QXJjaGl2ZVJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleSwgY2ZUZXh0RW5jb2RpbmcuZ2V0KCkp
OwotICAgIH0KKyAgICBpZiAoIXRleHRFbmNvZGluZy5pc0VtcHR5KCkpCisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlVGV4dEVuY29kaW5nTmFtZUtleSwgdGV4dEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRo
ZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBhYmYxYmNhNWU4NTQxMGJh
ODdkNWNhYjgyNTAwZDk2OWYxMDkyNmE3Li42OTA4NDNiMTM3NzgzNDgyODBlYzdlYTViNDM3Mzg4
ZTlkZGM2NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcApAQCAtNTQsMTMgKzU0LDEyIEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFN0cmluZyBmb3JtYXQsIC4uLikKICNpZiBVU0UoQ0YpCiAgICAgdmFfbGlzdCBhcmd1bWVu
dHM7CiAgICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gZm9ybWF0Q0ZTdHJpbmcoQWRvcHRDRiwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkp
OwogCiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAog
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCiAj
ZW5kaWYKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCBDRlN0cmlu
Z0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0Q0ZTdHJpbmcuZ2V0KCks
IGFyZ3VtZW50cykpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0ID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwogI2lmIENPTVBJTEVSKENMQU5HKQogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCkBAIC0yNjAsNyArMjU5LDcgQEAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNl
bGVjdGVkU3RyaW5nKQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJMb29rIFVwIGluIERpY3Rp
b25hcnkiLCAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQgbWVudSBpdGVtIik7CiAjZWxz
ZQogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJp
bmcoQWRvcHRDRiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJp
bmcpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2VsZWN0
ZWRDRlN0cmluZyA9IHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3Ry
aW5nKS5jcmVhdGVDRlN0cmluZygpOwogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX1NUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBp
dGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKICNlbHNl
CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAi
TG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8
c2VsZWN0aW9uPiIsIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3Ry
aW5nKSk7CkBAIC03MzgsOCArNzM3LDcgQEAgU3RyaW5nIGtleWdlbk1lbnVJdGVtMjA0OCgpCiAK
IFN0cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRlN0cmluZyhBZG9wdENGLCBob3N0LmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NU
UklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRo
ZSBLRVlHRU4gdGFnIiksIGhvc3RDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtleWNo
YWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIH0KIAogI2VuZGlmCkBAIC03NjIsOCArNzYwLDcgQEAgU3RyaW5nIGltYWdl
VGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICNp
ZiBVU0UoQ0YpCiAjaWYgIVBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5
Q3VycmVudCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0Yo
Q0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJGb3JtYXR0ZXJS
ZWY+IGZvcm1hdHRlcihBZG9wdENGLCBDRk51bWJlckZvcm1hdHRlckNyZWF0ZSgwLCBsb2NhbGUu
Z2V0KCksIGtDRk51bWJlckZvcm1hdHRlckRlY2ltYWxTdHlsZSkpOwogCiAgICAgaW50IHdpZHRo
SW50ID0gc2l6ZS53aWR0aCgpOwpAQCAtNzc0LDcgKzc3MSw3IEBAIFN0cmluZyBpbWFnZVRpdGxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgUmV0YWlu
UHRyPENGTnVtYmVyUmVmPiBoZWlnaHQoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVt
YmVySW50VHlwZSwgJmhlaWdodEludCkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaGVp
Z2h0U3RyaW5nKEFkb3B0Q0YsIENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlU3RyaW5nV2l0aE51bWJl
cigwLCBmb3JtYXR0ZXIuZ2V0KCksIGhlaWdodC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRv
dyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJv
bCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBo
ZWlnaHRTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRh
bG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5n
LmdldCgpKTsKICNlbHNlCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNGU3Ry
aW5nKEFkb3B0Q0YsIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJWTDlyVkIHBpeGVscyIsICJ3aW5k
b3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1i
b2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5nLmdldCgpLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5jcHAKaW5kZXggMWI4ZDAwNmYyNTE5YWE4YThmM2E4YzQ1MGVmZDI3MzQx
OGFmNDI4NC4uNzMwZWRjMTVmZTkxYmM5Mjc3MDg1Y2NjMjg4N2IwNzkwNjc4MGJmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
Y3BwCkBAIC00Niw4ICs0Niw3IEBAIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc0VxdWFsVG8oY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQogICAgIGlmICghYnVuZGxlSWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBidW5kbGVJZGVudGlmaWVyVG9Db21wYXJlKEFkb3B0Q0YsIGJ1bmRsZUlkZW50aWZpZXJTdHJp
bmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZShidW5kbGVJ
ZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyVG9Db21wYXJlLmdldCgpLCAwKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbzsKKyAgICByZXR1cm4gQ0ZTdHJpbmdDb21wYXJlKGJ1bmRsZUlkZW50aWZpZXIs
IGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkgPT0ga0NG
Q29tcGFyZUVxdWFsVG87CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShidW5kbGVJZGVudGlmaWVy
U3RyaW5nKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
RmlsZVN5c3RlbUNGLmNwcAppbmRleCA4ZWY1MGVlYjBjYjA4NGQxYjliMjNiODdjM2JmYTg5ODM5
MmI4YTJkLi5mZmVhOTA1OGI3YTNiMmQwMmNiODIxMDZhODAwZDUyOWY4OTA0NTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0
cmluZyhBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBpZiAoIWNm
U3RyaW5nKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwpAQCAtNjMsOCArNjMsNyBAQCBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZWxzZQogICAg
IHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwogI2VuZGlmCi0gICAgcmV0dXJuIFJl
dGFpblB0cjxDRlVSTFJlZj4oQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgo
MCwKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBwYXRoLmNyZWF0ZUNG
U3RyaW5nKCkpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCA5N2ZiMGI2MDk0NjhmNGVkMzVi
MWUxOTM4ZDk4YmJkODk0MjIyNTg2Li44NTZhNGZjYWRlZDJmMGI2MjYwZjVlOTJiZTExNDVkYzEy
YTVjODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCkBAIC0xNTEsOCAr
MTUxLDcgQEAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihBbmltYXRp
b25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGEKICAgICBlbHNlCiAgICAgICAgIG1fYW5p
bWF0aW9uLmFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FDRktleWZyYW1lQW5pbWF0aW9u
KSk7CiAgICAgCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGtleVBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRp
b24uZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0
aW9uLmdldCgpLCBrZXlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFu
aW1hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggNzAxNjhiMjEwNGRiMzY5
ZGEwNzU3YTExNDQ2MjIxMTFiYzMwNjFmMC4uZGQ2MTYzMzdlOTM2NmViNzljOTZjNjcyYjczOTNi
NjkyNDM2ZmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTE3NiwxMCArMTc2
LDggQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2
YWwgYmVnaW5UaW1lKQogc3RhdGljIHZvaWQgcmVzdWJtaXRBbGxBbmltYXRpb25zKFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpCiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllci0+YW5pbWF0aW9ucygpLmVu
ZCgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRpb25zKCkuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENG
LCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRp
b24obGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgcy5nZXQoKSwgaXQtPnZhbHVlLT5wbGF0Zm9ybUFu
aW1hdGlvbigpKTsKLSAgICB9CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXItPmFuaW1hdGlvbnMo
KS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIENBQ0ZMYXllckFkZEFuaW1hdGlv
bihsYXllci0+cGxhdGZvcm1MYXllcigpLCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGl0LT52YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxh
eWVyOjplbnN1cmVBbmltYXRpb25zU3VibWl0dGVkKCkKQEAgLTI5Nyw4ICsyOTUsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcjo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKgogICAgIC8vIEFkZCBpdCB0byB0aGUgYW5pbWF0aW9uIGxpc3QK
ICAgICBtX2FuaW1hdGlvbnMuYWRkKGtleSwgYW5pbWF0aW9uKTsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxh
eWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCksIGFuaW1hdGlvbi0+cGxhdGZv
cm1BbmltYXRpb24oKSk7CisgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCks
IGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9u
KCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBUZWxsIHRoZSBob3N0IGFib3V0
IGl0IHNvIHdlIGNhbiBmaXJlIHRoZSBzdGFydCBhbmltYXRpb24gZXZlbnQKQEAgLTMxMiw4ICsz
MDksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0
IFN0cmluZyYga2V5KQogICAgIC8vIFJlbW92ZSBpdCBmcm9tIHRoZSBhbmltYXRpb24gbGlzdAog
ICAgIG1fYW5pbWF0aW9ucy5yZW1vdmUoa2V5KTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxheWVyUmVtb3Zl
QW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZMYXllclJlbW92ZUFu
aW1hdGlvbihtX2xheWVyLmdldCgpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAg
ICAvLyBXZSBkb24ndCAicmVtb3ZlIiBhIGxheWVyIGZyb20gQWJzdHJhY3RDQUNGTGF5ZXJUcmVl
SG9zdCB3aGVuIGl0IGxvc2VzIGFuIGFuaW1hdGlvbi4KICAgICAvLyBUaGVyZSBtYXkgYmUgb3Ro
ZXIgYWN0aXZlIGFuaW1hdGlvbnMgb24gdGhlIGxheWVyIGFuZCBpZiBhbiBhbmltYXRpb24KQEAg
LTU4Niw4ICs1ODIsNyBAQCBTdHJpbmcgUGxhdGZvcm1DQUxheWVyOjpuYW1lKCkgY29uc3QKIAog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgQ0FDRkxheWVyU2V0TmFtZShtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBD
QUNGTGF5ZXJTZXROYW1lKG1fbGF5ZXIuZ2V0KCksIHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IGM0MzBjZjI4NDYxNDY2NDdiZjYxZmM3YTcxNjI5ZjUy
ZjAyMWZhNmEuLjE1Mjc1YjNhZTVmZTVjMWM2YTRmOGY4NGZkNjY5MGQyMWZjZjU4ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAtNDU5LDcgKzQ1OSw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzKCkKIAogI2lm
bmRlZiBOREVCVUcKICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gIlRpbGUgKCIgKyBTdHJpbmc6
Om51bWJlcihpKSArICIsIiArIFN0cmluZzo6bnVtYmVyKGopICsgIikiOwotICAgICAgICAgICAg
Q0FDRkxheWVyU2V0TmFtZSh0aWxlLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIG5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCkpOworICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmFt
ZSh0aWxlLCBuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwCmluZGV4IDIxZTlkYjRjMjhkOWEyNTUxMzUyMGFjZTcwODQwM2FjNWU3
N2FiOTMuLmRkMzc4MTU5N2Y4NWViNjEwZGNjNDcxZWM4MzE1M2UwYWJkMmNlYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCkBAIC0zNzcsOCArMzc3LDcgQEAgc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJ
KCkKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21NSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG1pbWVUeXBlQ0ZTdHJpbmcoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgVVRUeXBl
Q3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1l
VHlwZUNGU3RyaW5nLmdldCgpLCAwKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dN
YWMubW0KaW5kZXggYmQ1MGEzMTc1ZjNiNDI1YTg4MjZjZDJhNTZhNjJlMjE5MzY5NjMzNy4uOTUz
YmNiOWQyOGFkMGViNzVhYjM4ODEzYzM0Mzk0NTVmMTI2MmM3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBA
IC0zMywxNiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgTUlNRVR5cGVG
b3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1dGlyZWYoQWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZShBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFn
V2l0aENsYXNzKHV0aXJlZi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwotICAgIHJldHVy
biBtaW1lLmdldCgpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdX
aXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUp
KS5nZXQoKTsKIH0KIAogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlw
ZShjb25zdCBTdHJpbmcmIHV0aSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGUo
QWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gZXh0ZW5zaW9uKEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModHlw
ZS5nZXQoKSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOwotICAgIHJldHVybiBleHRl
bnNpb24uZ2V0KCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dp
dGhDbGFzcyh1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4
dGVuc2lvbikpLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBiZDg4MDIwNDQxYjBlOWFl
MDBiYWRhZjM2YjJmNGY1YTZhNmJlYWU3Li5mZDRhYjk5YjE3NDc1ZDQxNGIyMWFhM2VjZDU3ZTYx
ODBhMjhmY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMu
bW0KQEAgLTk5LDExICs5OSwxMCBAQCBzdGF0aWMgU3RyaW5nIGNvY29hVHlwZUZyb21IVE1MQ2xp
cGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKICAgICAvLyBUcnkgVVRJIG5vdwogICAg
IFN0cmluZyBtaW1lVHlwZSA9IHFUeXBlOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRp
VHlwZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCksIE5VTEwpKTsKLSAgICBp
ZiAodXRpVHlwZSkgewotICAgICAgICBDRlN0cmluZ1JlZiBwYlR5cGUgPSBVVFR5cGVDb3B5UHJl
ZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBl
KTsKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlID0gYWRvcHRDRihVVFR5
cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1p
bWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwpKSkgeworICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dp
dGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpOwogICAgICAg
ICBpZiAocGJUeXBlKQotICAgICAgICAgICAgcmV0dXJuIHBiVHlwZTsKKyAgICAgICAgICAgIHJl
dHVybiBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gTm8gbWFwcGluZywganVzdCBwYXNz
IHRoZSB3aG9sZSBzdHJpbmcgdGhvdWdoCkBAIC0xMTIsMTEgKzExMSw4IEBAIHN0YXRpYyBTdHJp
bmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
c3RhdGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlQ0YgPSBhZG9wdENGKHR5cGUuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0Q0Ys
IFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2Fy
ZFR5cGUsIHR5cGVDRi5nZXQoKSwgMCkpOwotICAgIGlmICh1dGlUeXBlKSB7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJl
ZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAg
ICAgIGlmIChtaW1lVHlwZSkKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBl
ID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0Ns
YXNzTlNQYm9hcmRUeXBlLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKSkgeworICAg
ICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBl
Q29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVU
eXBlKSkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKG1pbWVUeXBlLmdldCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcAppbmRleCAwYTFhNGQ4Yzc1MTRkYTkxMzczOWJlNWUz
NDQ2ZDQ5N2Q5NWE0NzhiLi5lNThkOWE5NDk5NjkyN2I5YmI1YjliMzQ2MTQ5NzhmNWFiZjRmM2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLmNwcApAQCAtNjAsMTEgKzYwLDcgQEAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2gKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2hhbGxlbmdlU3RyaW5nQ0YoQWRvcHRDRiwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5RGVzY3JpcHRpb24oQWRvcHRDRiwg
a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCB3a1NpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmdDRi5nZXQoKSwga2V5
RGVzY3JpcHRpb24uZ2V0KCkpKTsKLQotICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CisgICAgcmV0
dXJuIGFkb3B0Q0Yod2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwg
Y2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtleWdlbktleWNoYWluSXRl
bU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpLmdldCgpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50
aWNhdGlvbkNGLmNwcAppbmRleCA4N2EzZmFiOGE3NDM3YWUxMGFmNDM5YTRlNGUwMmNkMmUxYTMw
ZGViLi43YjFkNGZhNDc4N2YxZDFlMGQ5ZTNhNGRlODFmM2ViNTQ2ZDBjZWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25D
Ri5jcHAKQEAgLTExOSwxMyArMTE5LDcgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNv
bnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gQ0ZVUkxDcmVk
ZW50aWFsQ3JlYXRlV2l0aElkZW50aXR5QW5kQ2VydGlmaWNhdGVBcnJheShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBjb3JlQ3JlZGVudGlhbC5pZGVudGl0eSgpLCBjb3JlQ3JlZGVudGlhbC5jZXJ0aWZp
Y2F0ZXMoKSwgcGVyc2lzdGVuY2UpOwogI2VuZGlmCiAKLSAgICBDRlN0cmluZ1JlZiB1c2VyID0g
Y29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZTdHJpbmdSZWYg
cGFzc3dvcmQgPSBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0g
ICAgQ0ZVUkxDcmVkZW50aWFsUmVmIHJlc3VsdCA9IENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCB1
c2VyLCBwYXNzd29yZCwgMCwgcGVyc2lzdGVuY2UpOwotICAgIENGUmVsZWFzZSh1c2VyKTsKLSAg
ICBDRlJlbGVhc2UocGFzc3dvcmQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4g
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKIH0KIAogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3Jl
YXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCkBAIC0xOTIsMTMgKzE4Niw3
IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgY29yZVNwYWNlKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAg
ICBDRlN0cmluZ1JlZiBob3N0ID0gY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpOwot
ICAgIENGU3RyaW5nUmVmIHJlYWxtID0gY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRlQ0ZTdHJpbmco
KTsKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiByZXN1bHQgPSBDRlVSTFByb3RlY3Rpb25T
cGFjZUNyZWF0ZSgwLCBob3N0LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCByZWFsbSwg
c2NoZW1lKTsKLSAgICBDRlJlbGVhc2UoaG9zdCk7Ci0gICAgQ0ZSZWxlYXNlKHJlYWxtKTsKLSAg
ICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25TcGFjZUNy
ZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFj
ZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIHNjaGVtZSk7CiB9CiAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxSZWYg
Y2ZDcmVkZW50aWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1ZDZkNzM5MjZjNDRlZTQ4ODAxODJmZmZlODk4
MWFjZjM4YTc2YjBhLi41MDE3OTcxZGUxNGE0NTRhODRmOWEzODhiYjQ3ZjY0ODQ4OTFkYTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyBj
b29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRvZXNuJ3QgcGFyc2UgY29va2llcyB3aXRo
b3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gdmFsdWUuY29udGFpbnMoJz0n
KSA/IHZhbHVlIDogdmFsdWUgKyAiPSI7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNv
b2tpZVN0cmluZ0NGKEFkb3B0Q0YsIGNvb2tpZVN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGID0gY29va2llU3RyaW5nLmNy
ZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyRmll
bGRzQ0YoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsCiAg
ICAgICAgIChjb25zdCB2b2lkKiopJnNfc2V0Q29va2llS2V5Q0YsIChjb25zdCB2b2lkKiopJmNv
b2tpZVN0cmluZ0NGLCAxLAogICAgICAgICAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDNmOTAxYTU0MWRlMDBlZWJl
YzI0MzIyZDA0Mzk2ZWU0YTIyMDVmYjYuLmNlMTQ1MTkwOWFlZDdlMmI0ZGVmOWNlMGQ5YmI0Mjkz
NDE4ZGFjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCkBAIC05MCwxMiArOTAsMTIgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RuYW1lQ0YoQWRvcHRD
RiwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4g
aG9zdChBZG9wdENGLCBDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZUNGLmdldCgpKSk7
CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0
aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgIGlmICghaG9z
dCkgewogICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKwogICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwg
MCB9OwogICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBo
b3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgogICAgIEJvb2xlYW4g
cmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKaW5kZXggMzU0ZmQyNzU4NjQyMDdiNzllZmMyMWFmN2QxOTlkYjBi
MzAxMjBiNC4uNTg5NWVkOTkzNDY2NWVmNjMwYmUzNjUxNzE2MTUxNTJlNDBmODNmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJv
ckNGLmNwcApAQCAtMTQ1LDEzICsxNDUsMTEgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpj
ZkVycm9yKCkgY29uc3QKICAgICBpZiAoIW1fcGxhdGZvcm1FcnJvcikgewogICAgICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICAgICAgaWYgKCFtX2xvY2Fs
aXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZyhBZG9wdENGLCBtX2xvY2FsaXplZERl
c2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXksIGxv
Y2FsaXplZERlc2NyaXB0aW9uU3RyaW5nLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAo
IW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25L
ZXksIG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAg
ICAgICAgaWYgKCFtX2ZhaWxpbmdVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcoQWRvcHRDRiwgbV9mYWlsaW5nVVJMLmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWls
aW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tl
eSwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgZmFpbGluZ1VSTFN0cmlu
Zy5nZXQoKSwgMCkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8u
Z2V0KCksIGZhaWxpbmdVUkxLZXksIHVybC5nZXQoKSk7CkBAIC0xNjIsOCArMTYwLDcgQEAgQ0ZF
cnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICAgICAgICAgIHdrU2V0
U1NMUGVlckNlcnRpZmljYXRlRGF0YSh1c2VySW5mby5nZXQoKSwgbV9jZXJ0aWZpY2F0ZS5nZXQo
KSk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZG9t
YWluU3RyaW5nKEFkb3B0Q0YsIG1fZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBt
X3BsYXRmb3JtRXJyb3IuYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIGRvbWFpblN0cmluZy5nZXQo
KSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CisgICAgICAgIG1fcGxhdGZvcm1FcnJv
ciA9IGFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKICAgICB9CiAKICAgICByZXR1cm4g
bV9wbGF0Zm9ybUVycm9yLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggMDFlOGI4YWU1
YzBkMWM2YTZhOGYwMzMwODVlOTBmMDEwYmMxZjdjNi4uODA3MGMyNTgyYjdjYWEwZGU2ZmUzNWYz
MDc0M2Y3OGIyMGI3N2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0xMzEsNyArMTMxLDcg
QEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiA+JiBjbGllbnRD
ZXJ0cygpCiAKIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJp
bmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBDRlN0
cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVD
RlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAKICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUo
cmVzcG9uc2UsIGRlZmF1bHRNSU1FVHlwZVN0cmluZyk7CiB9CkBAIC0xNjEsOCArMTYxLDggQEAg
c3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9uUmVm
IGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpIHsKICAg
ICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQ
UmVzcG9uc2UoY2ZSZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgaWYgKGh0dHBNZXNzYWdlICYm
IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09IDMwNykg
ewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZChBZG9w
dENGLCBoYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZChBZG9wdENGLCBDRlVSTFJlcXVl
c3RDb3B5SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7CisgICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gaGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgp
LmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5l
d01ldGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVx
dWVzdCkpOwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25zKGxhc3RI
VFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5n
R2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRp
dmUpKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+
IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAs
IGNmUmVxdWVzdCkpOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKQEAgLTE3NSw5ICsx
NzUsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTENvbm5l
Y3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgICAgICAgICAgICAgICAgIFdlYkNv
cmU6OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5KTsKIAogICAgICAgICAg
ICAgICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS5odHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG9yaWdpbmFsQ29udGVudFR5cGVDRihBZG9wdENGLCBvcmlnaW5hbENvbnRlbnRUeXBlLmNy
ZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGlmICghb3JpZ2luYWxDb250ZW50VHlw
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFk
ZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNUUigiQ29udGVudC1UeXBlIiks
IG9yaWdpbmFsQ29udGVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENGVVJM
UmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNU
UigiQ29udGVudC1UeXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3QuZ2V0KCk7
CiAgICAgICAgICAgICB9CkBAIC02MDcsMTAgKzYwNiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsCiAjZW5kaWYKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3Mu
aXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1c2VyKEFkb3B0Q0Ys
IGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBwYXNzKEFkb3B0Q0YsIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbChBZG9wdENGLAotICAgICAg
ICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVzZXIuZ2V0
KCksIHBhc3MuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKKyAg
ICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwg
a0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogICAgICAgICAKICAgICAgICAgS1VS
TCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0
dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtMTAwNSw3ICsxMDAxLDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyRGVmYXVsdEJhc2UoKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmll
cihBZG9wdENGLCBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJp
bmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmco
YmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIHByaXZh
dGVTdG9yYWdlU2Vzc2lvbigpID0gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
Y2ZJZGVudGlmaWVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggMDIzMmM1
NDFmOTZlOTgzNTVjZTcyODQ2MzNjMGQzMGI0MGJiMjk1ZS4uNTg2ODMxYWJkNmYxZDcwNjBkZjlh
Njc1OWYwNjBhNmE1NTFiOWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTExOCwxNCAr
MTE4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEhlYWRlckZpZWxkcyhDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWEKICAgICAgICAgICAgIENGVVJMUmVxdWVz
dFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QsIG9sZEhlYWRlckZpZWxkTmFtZXNbaV0s
IDApOwogICAgIH0KIAotICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
cXVlc3RIZWFkZXJzLmVuZCgpOwotICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSByZXF1ZXN0SGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgQ0ZTdHJpbmdSZWYga2V5ID0gaXQtPmtleS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOwot
ICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZSA9IGl0LT52YWx1ZS5jcmVhdGVDRlN0cmluZygpOwot
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LCBrZXks
IHZhbHVlKTsKLSAgICAgICAgQ0ZSZWxlYXNlKGtleSk7Ci0gICAgICAgIENGUmVsZWFzZSh2YWx1
ZSk7Ci0gICAgfQorICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBy
ZXF1ZXN0SGVhZGVycy5iZWdpbigpLCBlbmQgPSByZXF1ZXN0SGVhZGVycy5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShy
ZXF1ZXN0LCBpdC0+a2V5LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGl0LT52YWx1
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKQEAgLTE0Niw4ICsxNDAsNyBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIHdrU2V0UmVxdWVzdFN0b3Jh
Z2VTZXNzaW9uKFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RvcmFnZVNlc3Npb24oKSwgY2ZSZXF1
ZXN0KTsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXF1ZXN0TWV0aG9k
KEFkb3B0Q0YsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlVSTFJlcXVl
c3RTZXRIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIHJlcXVlc3RNZXRob2QuZ2V0KCkpOwor
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhv
ZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5nRW5h
YmxlZCgpKQogICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoY2ZSZXF1ZXN0LCB0
b0hUVFBQaXBlbGluaW5nUHJpb3JpdHkobV9wcmlvcml0eSkpOwpAQCAtMTY0LDcgKzE1Nyw3IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgdW5z
aWduZWQgZmFsbGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4g
ZW5jb2RpbmdGYWxsYmFja3MoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZmFsbGJhY2tDb3VudCwgMCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgIT0gZmFsbGJhY2tDb3VudDsgKytpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gZW5jb2RpbmdOYW1lKEFkb3B0Q0YsIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gZW5jb2RpbmdOYW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICBDRlN0
cmluZ0VuY29kaW5nIGVuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9F
bmNvZGluZyhlbmNvZGluZ05hbWUuZ2V0KCkpOwogICAgICAgICBpZiAoZW5jb2RpbmcgIT0ga0NG
U3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUo
ZW5jb2RpbmdGYWxsYmFja3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGVu
Y29kaW5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKaW5kZXggYTQ1YmVlZGM0MzMwMDc3MmIz
OWNhZWUyYjM5NDZjYWMzZGYwYmYzMS4uOTU1MDgzNjNhYWU0MjVlYzg4NGE0ODQ3YTUxNTk4Mzdk
MDhkMzk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcApAQCAtNTEsOSArNTEsNyBAQCBDRlVS
TFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewog
ICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewogICAgICAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBtX3VybC5jcmVhdGVDRlVSTCgpKTsKLSAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBtX21pbWVUeXBlLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRleHRFbmNvZGluZ05h
bWUoQWRvcHRDRiwgbV90ZXh0RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICBtX2NmUmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwg
bWltZVR5cGUuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1l
LmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CisgICAgICAgIG1fY2ZSZXNwb25z
ZS5hZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21pbWVUeXBlLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNv
ZGluZ05hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dl
ZCkpOwogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGQ4NmM3NmJjNmY0NWMxODE2NDhlMGE3NzZjZDM5YmFlODkw
ODQwZDYuLjRhN2NkOTAyYWU5ZjAyODdkODk4ZDkyYmQ5ODVkZDc2NmQ0MmExNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OmNyZWF0ZVN0cmVhbXMoKQogICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBlID09IFVu
a25vd24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9z
dChBZG9wdENGLCBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBob3N0ID0gbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAg
ICAvLyBDcmVhdGluZyBzdHJlYW1zIHRvIGZpbmFsIGRlc3RpbmF0aW9uLCBub3QgdG8gcHJveHku
CiAgICAgQ0ZSZWFkU3RyZWFtUmVmIHJlYWRTdHJlYW0gPSAwOwpAQCAtMzU5LDEyICszNTksMTAg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBN
ZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiAgICAgU3RyaW5nIHBhc3N3b3JkOwogICAgIGlmICgh
bV9zZW50U3RvcmVkQ3JlZGVudGlhbHMgJiYgZ2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlh
bHMocHJvdGVjdGlvblNwYWNlLCBsb2dpbiwgcGFzc3dvcmQpKSB7CiAgICAgICAgIC8vIFRyeSB0
byBhcHBseSBzdG9yZWQgY3JlZGVudGlhbHMsIGlmIHdlIGhhdmVuJ3QgdHJpZWQgdGhvc2UgYWxy
ZWFkeS4KLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2dpbkNGKEFkb3B0Q0YsIGxv
Z2luLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBh
c3N3b3JkQ0YoQWRvcHRDRiwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIC8v
IENyZWF0aW5nIGEgdGVtcG9yYXJ5IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkgY3Jl
ZGVudGlhbHMgdG8gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0aCBOVExN
IGF1dGhlbnRpY2F0aW9uLgorICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgcmVxdWVzdCB0
byBtYWtlIENGTmV0d29yayBhcHBseSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5hdGVseSwg
dGhpcyBjYW5ub3Qgd29yayB3aXRoIE5UTE0gYXV0aGVudGljYXRpb24uCiAgICAgICAgIFJldGFp
blB0cjxDRkhUVFBNZXNzYWdlUmVmPiBkdW1teVJlcXVlc3QoQWRvcHRDRiwgQ0ZIVFRQTWVzc2Fn
ZUNyZWF0ZVJlcXVlc3QoMCwgQ0ZTVFIoIkdFVCIpLCBtX2h0dHBzVVJMLmdldCgpLCBrQ0ZIVFRQ
VmVyc2lvbjFfMSkpOwogCi0gICAgICAgIEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZI
VFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlhbHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNh
dGlvbi5nZXQoKSwgbG9naW5DRi5nZXQoKSwgcGFzc3dvcmRDRi5nZXQoKSwgMCk7CisgICAgICAg
IEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZIVFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlh
bHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNhdGlvbi5nZXQoKSwgbG9naW4uY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoYXBwbGllZENyZWRlbnRpYWxzLCBhcHBsaWVkQ3JlZGVudGlh
bHMpOwogCiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nKEFkb3B0Q0YsIENGSFRUUE1lc3NhZ2VDb3B5SGVhZGVyRmllbGRWYWx1ZShkdW1teVJl
cXVlc3QuZ2V0KCksIENGU1RSKCJQcm94eS1BdXRob3JpemF0aW9uIikpKTsKQEAgLTM4OSw3ICsz
ODcsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENG
SFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIENGU3RyaW5nUmVmIFNvY2tldFN0cmVhbUhh
bmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24odm9pZCogaW5mbykKIHsKICAgICBTb2NrZXRT
dHJlYW1IYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRsZSo+KGlu
Zm8pOwotICAgIHJldHVybiBTdHJpbmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxl
LT5tX3VybC5zdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJX
ZWJLaXQgc29ja2V0IHN0cmVhbSwgIiArIGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0ZUNG
U3RyaW5nKCkubGVha1JlZigpOwogfQogCiBzdHJ1Y3QgTWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJ
bmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVxdWVzdE1hYy5tbQppbmRleCA5MzIxNmNiNTVlODU3NzMxMzZmM2U4YzNhMDdj
ZTZmYjU1NmUwNmQyLi5lNjkzNDg0ODFhYjBhMDIxMzc5NGRhMjRlZmJjYzRmNTZkYzAwOGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJl
cXVlc3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tCkBAIC0xNjMsOSArMTYzLDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmVu
Y29kaW5nRmFsbGJhY2tzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICAgICAgdW5zaWdu
ZWQgY291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5LnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBjb3VudDsgKytp
KSB7Ci0gICAgICAgICAgICBDRlN0cmluZ1JlZiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5zRW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRF
bmNvZGluZ1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVU
b0VuY29kaW5nKGVuY29kaW5nTmFtZSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKGVuY29kaW5n
TmFtZSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZSA9
IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3Jl
YXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENG
U3RyaW5nQ29udmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElB
TkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKSk7CisKICAgICAgICAg
ICAgIGlmIChuc0VuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQogICAgICAg
ICAgICAgICAgIFtlbmNvZGluZ0ZhbGxiYWNrcyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhVbnNpZ25lZExvbmc6bnNFbmNvZGluZ11dOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0K
aW5kZXggNmFhNzZmNmRkNzg0ZGEwOWQ3YmZmN2UxZTY4NTVlNzVjYWRhZTk5Yy4uZjk3MTBiMmRk
MjUxODQ2MjAxNTEzMjQyZjQwZjNhNDEyNjRmMjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAt
NDc4LDcgKzQ3OCw3IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3Bv
bnNlUmVmIGNmUmVzcG9uc2UpCiAgICAgfQogICAgIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAg
ICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpk
ZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCku
Y3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRNSU1F
VHlwZVN0cmluZzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDI2MWE5M2I3NjgwNDU1ZDYwNzc4MmFiYjc1MzQ3
MGZjOGQ5ZWMzY2YuLjVkOGEwMWY4YzkwZmM5ZjNiMTZmYmU5NzUyNDk4MGMxNTQwYjMzZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNw
cApAQCAtNDYsOCArNDYsNyBAQCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tl
eWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdAogdGVtcGxhdGU8Pgog
UmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0
cjxDRkxvY2FsZVJlZj4gPjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZMb2NhbGVJ
ZGVudGlmaWVyKEFkb3B0Q0YsIGxvY2FsZUlkZW50aWZpZXIuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2Nh
bGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2ZMb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7
CisgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxvY2FsZUlkZW50aWZpZXIuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKSkpOwogCiAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2YWlsYWJs
ZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogMDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKaW5kZXggZDdjZGE3OTYyOTg2MjU3M2Ez
NWM2YTkyNjg1NzUyMzA1YWI2YzI3ZS4uMjY5N2U3NmYwYmY1OTIzYjE1MmZlZGQ3MTAzN2U5NzEx
NDkyNmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJp
bmdDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5j
cHAKQEAgLTIzLDggKzIzLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
I2lmIFVTRShDRikKLQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtNTEs
NyArNTEsNyBAQCBTdHJpbmc6OlN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiAgICAgfQogfQogCi1D
RlN0cmluZ1JlZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKK1JldGFpblB0cjxDRlN0
cmluZ1JlZj4gU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2lt
cGwpCiAgICAgICAgIHJldHVybiBDRlNUUigiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggN2EyZDgyZTQwMmQyNGIzN2JiYzA3
MWY0N2Y5OGUwYTg2NTE4NDkyMS4uMWRhNTYxYjYwNjJiY2FiNDllMDliZmU3OTc4MmIyNzNmMGRh
MDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdJ
bXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1w
bENGLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVG
b3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMzIsNyArMTMzLDcgQEAgbmFt
ZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAKIH0KIAotQ0ZTdHJpbmdSZWYgU3Ry
aW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBTdHJpbmdJ
bXBsOjpjcmVhdGVDRlN0cmluZygpCiB7CiAgICAgaWYgKCFtX2xlbmd0aCB8fCAhaXNNYWluVGhy
ZWFkKCkpIHsKICAgICAgICAgaWYgKGlzOEJpdCgpKQpAQCAtMTUzLDcgKzE1NCw3IEBAIENGU3Ry
aW5nUmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKICAgICAvLyBDb3JlRm91bmRhdGlv
biBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIgY3VycmVudFN0
cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAgIFN0cmluZ1dy
YXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IDA7CiAKLSAgICByZXR1cm4gc3RyaW5n
OworICAgIHJldHVybiBhZG9wdENGKHN0cmluZyk7CiB9CiAKIC8vIE9uIFN0cmluZ0ltcGwgY3Jl
YXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0aGUgU3RyaW5nV3JhcHBl
ckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9t
YWMvU3RyaW5nSW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1N0
cmluZ0ltcGxNYWMubW0KaW5kZXggNmY1ZTk1M2JhMTkyNWU1NDViYmI1YWM1M2UyMTQ3NmJiOGYw
M2E1Ny4uMmYwODhhN2ViMzYzYzVhY2QwMTQyZjM4NzA5NWI5NjJjMTgxNmE2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1tCkBAIC0y
MiwxMiArMjIsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKICNpbmNs
dWRlICJGb3VuZGF0aW9uRXh0cmFzLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKigpCiB7Ci0g
ICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpKTsKKyAgICByZXR1cm4g
SGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAKaW5k
ZXggMzEyNDEyZmFhYjhhYzIzNjI4NjUwM2RhY2E1YTkyOGJlYmQ0Mzk2Ni4uYTcwNDc0OTUyMGZk
ZDMyZDRlMWUwMGZjZmMwZGVhZjM4N2NiYTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgQ1N0
cmluZyBUZXh0Q29kZWNNYWM6OmVuY29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90
IGxlbmd0aCwgVW5lbmNvZGFibGUKICAgICAvLyBFbmNvZGluZyB3aWxsIGNoYW5nZSB0aGUgeWVu
IHNpZ24gYmFjayBpbnRvIGEgYmFja3NsYXNoLgogICAgIFN0cmluZyBjb3B5KGNoYXJhY3RlcnMs
IGxlbmd0aCk7CiAgICAgY29weS5yZXBsYWNlKCdcXCcsIG1fYmFja3NsYXNoQXNDdXJyZW5jeVN5
bWJvbCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMoQWRvcHRDRiwgY29weS5jcmVh
dGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmcyA9IGNvcHkuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIAogICAgIENGSW5kZXggc3RhcnRQb3MgPSAwOwogICAgIENGSW5kZXgg
Y2hhcmFjdGVyc0xlZnQgPSBDRlN0cmluZ0dldExlbmd0aChjZnMuZ2V0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAppbmRleCBh
NWNhOWI3NDQ2OTJmMjg3ZjIzZjM0ODE1MGIwOGY2NWUxZmY5NWZlLi4wZDI1MWRmMTgzYzdlY2Mx
OTZiMGRhNzI3ZWFjNTRkNDliMTllNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtNTEsOCArNTEsNyBAQCBib29sIFNl
YXJjaFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgpCiAjaWYgVVNFKENGKQogc3RhdGljIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFN0
cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZTsKLSAgICBy
ZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmco
KSk7CisgICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsg
bmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KICNlbmRpZgogCkBAIC02NywxMCArNjYsOCBAQCB2
b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6
ZSgpOwogICAgIGlmIChzaXplKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0
ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkp
OwotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgp
KTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkK
KyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNb
aV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1Nl
dEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVy
ZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCA4Mzc0N2YyMjM1
NTZhNmFjMmFhMTY4OWRmZGZhYzFmMWVmMTdjNDc3Li4zMzdkYWNhYjJmNzEyYzk4NmYwZjU3MjI5
NmE3ODA1NjJjMzE0YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNjMsMTUgKzYzLDE0IEBAIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yU3Rh
cnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIjsKIAotc3RhdGlj
IGlubGluZSBDRlN0cmluZ1JlZiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcm
IGtleSkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQ
cmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGtleUNGU3RyaW5nKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICByZXR1
cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQgV2ViIEluc3Bl
Y3RvciBTZXR0aW5nIC0gJUAiKSwga2V5Q0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdlYiBJbnNw
ZWN0b3IgU2V0dGluZyAtICVAIiksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBz
ZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNLZXkoQWRv
cHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBwcmVmZXJlbmNlc0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSk7CiAg
ICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZShBZG9wdENGLCBDRlByZWZlcmVu
Y2VzQ29weUFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJl
bnRBcHBsaWNhdGlvbikpOwogCiAgICAgaWYgKCF2YWx1ZSkKQEAgLTg4LDEyICs4Nyw3IEBAIHN0
YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBzZXR0
aW5nKQogCiBzdGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0
IFN0cmluZyYgc2V0dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IG9i
amVjdFRvU3RvcmU7Ci0gICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKHNldHRpbmcuY3JlYXRlQ0ZT
dHJpbmcoKSk7Ci0gICAgQVNTRVJUKG9iamVjdFRvU3RvcmUpOwotCi0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVmZXJlbmNl
cyhrZXkpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUocHJlZmVyZW5jZXNLZXkuZ2V0
KCksIG9iamVjdFRvU3RvcmUuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9u
KTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMo
a2V5KS5nZXQoKSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVmZXJlbmNl
c0N1cnJlbnRBcHBsaWNhdGlvbik7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDBlNGIxMDY1Njk4MjVkZDc0ZDc0ZGIyNzc2ZWNjNmQ5MjFlYThkYWEuLjVmMjgzNTA0
YzVkNjY4MjE4NjQ4OTBjZTQ0NWM4MmNmMDBmMTI2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAg
LTc5MiwyNCArNzkyLDIwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgICAgIEtVUkwg
cGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRp
bmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkpOwogICAg
ICAgICBpZiAocGx1Z2luUGFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKICAgICAg
ICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6OkxQQ09M
RVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5KTsKLSAg
ICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIHBsdWdpblBhZ2VV
Ukwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBzdHIuZ2V0KCkpOworICAgICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5zdHJp
bmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlm
ICghcGx1Z2luVmlldy0+bWltZVR5cGUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0aWMgQ0ZT
dHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVm
KFdlYktpdEVycm9yTUlNRVR5cGVLZXkpOwotCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gc3RyKEFkb3B0Q0YsIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHN0ci5n
ZXQoKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXks
IHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQog
CiAgICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpKSB7CiAgICAgICAgIFN0cmluZyBwbHVnaW5O
YW1lID0gcGx1Z2luVmlldy0+cGx1Z2luKCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFwbHVnaW5O
YW1lLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFy
c2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9yUGx1Z0lu
TmFtZUtleSk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cihBZG9wdENG
LCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgc3RyLmdldCgpKTsKKyAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDZlNjg3ZjE5MzRhZjgwNGJkZjk0OTlkZWZmNjFl
NzdmNTM1Y2NiMjAuLjE1ODcyZTM0ZjlhNTQ0NTBhZjNiNDQ5ZjgyY2RmMGIyYWZiZWI0NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtNDAxLDggKzQwMSw3
IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IHVzZXJJbmZvKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoMCwg
MCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwogCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRhdGFiYXNlTmFtZUtleSA9
IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJEYXRhYmFzZU5h
bWVLZXkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIGRhdGFiYXNl
TmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5m
by5nZXQoKSwgZGF0YWJhc2VOYW1lS2V5LCBzdHIuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHVzZXJJbmZvLmdldCgpLCBkYXRhYmFzZU5hbWVLZXksIGRhdGFiYXNlTmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9wZXJ0eUJh
Zz4gdXNlckluZm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5zdGFuY2Uo
KTsKICAgICB1c2VySW5mb0JhZy0+c2V0RGljdGlvbmFyeSh1c2VySW5mby5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDFmN2E1NzJjMzQ0NWQ3Y2JjNTc2M2FmOWQ5MWI5ZWRk
Nzg5NTEwOWYuLmE3MzEwYjgwYjBkNDM0NDA0Zjk4NThkYzhkYjU1YzkzZjFhNTg5NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgSFJFU1VMVCBXZWJIaXN0
b3J5OjphZGRJdGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnksIGJvb2wgZGlzY2FyZER1cGxpY2F0
ZSwgYm9vbCoKIAogdm9pZCBXZWJIaXN0b3J5Ojp2aXNpdGVkVVJMKGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBib29sIHdhc0Zh
aWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KQogewotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIHVybC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyA9IHVybC5zdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpOwogCi0gICAgSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSA9IChJV2ViSGlzdG9y
eUl0ZW0qKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShtX2VudHJpZXNCeVVSTC5nZXQoKSwgdXJsU3Ry
aW5nLmdldCgpKTsKKyAgICBJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5ID0gKElXZWJIaXN0b3J5SXRl
bSopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobV9lbnRyaWVzQnlVUkwuZ2V0KCksIHVybFN0cmluZy5n
ZXQoKSk7CiAgICAgaWYgKGVudHJ5KSB7CiAgICAgICAgIENPTVB0cjxJV2ViSGlzdG9yeUl0ZW1Q
cml2YXRlPiBlbnRyeVByaXZhdGUoUXVlcnksIGVudHJ5KTsKICAgICAgICAgaWYgKCFlbnRyeVBy
aXZhdGUpCkBAIC03ODYsMTEgKzc4NiwxMCBAQCBIUkVTVUxUIFdlYkhpc3Rvcnk6OnJlbW92ZUl0
ZW1Gb3JVUkxTdHJpbmcoQ0ZTdHJpbmdSZWYgdXJsU3RyaW5nKQogCiBDT01QdHI8SVdlYkhpc3Rv
cnlJdGVtPiBXZWJIaXN0b3J5OjppdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nKSBjb25zdAogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0ZTdHJpbmcoQWRv
cHRDRiwgdXJsU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghdXJsQ0ZTdHJpbmcp
CisgICAgaWYgKCF1cmxTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogICAgIENPTVB0cjxJV2Vi
SGlzdG9yeUl0ZW0+IGl0ZW07Ci0gICAgaWYgKEZBSUxFRChpdGVtRm9yVVJMU3RyaW5nKHVybENG
U3RyaW5nLmdldCgpLCAmaXRlbSkpKQorICAgIGlmIChGQUlMRUQoaXRlbUZvclVSTFN0cmluZyh1
cmxTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgJml0ZW0pKSkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgcmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAK
aW5kZXggYTI2NDMwODlkY2Q3OWQ4MjQyNTIwMTk2MjEzMjdmY2E5ZjgyZDk4Mi4uOGJmZTliZDdj
MDc3Y2NmYmU4YjA3YWI1OTFhYzM5NzA2NTI0MzIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3Rv
cnlJdGVtLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViSGlzdG9yeUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiogZGljdGlvCiAK
ICAgICBpZiAoIW1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmlzRW1wdHkoKSkgewogICAgICAg
ICBrZXlzW2tleUNvdW50XSA9IHVybEtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0g
bV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgdmFs
dWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKS5sZWFrUmVmKCk7CiAgICAgfQogCiAgICAga2V5c1trZXlDb3VudF0gPSBsYXN0VmlzaXRl
ZERhdGVLZXk7CkBAIC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJIaXN0b3J5SXRlbTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0aW8KIAog
ICAgIGlmICghbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5pc0VtcHR5KCkpIHsKICAgICAgICAga2V5
c1trZXlDb3VudF0gPSB0aXRsZUtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9o
aXN0b3J5SXRlbS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICB2YWx1ZXNba2V5
Q291bnQrK10gPSBtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1Jl
ZigpOwogICAgIH0KIAogICAgIGtleXNba2V5Q291bnRdID0gdmlzaXRDb3VudEtleTsKQEAgLTI0
NSw3ICsyNDUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJdGVtOjpk
aWN0aW9uYXJ5UmVwcmVzZW50YXRpb24odm9pZCoqIGRpY3RpbwogICAgICAgICBBU1NFUlQoc2l6
ZSk7CiAgICAgICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IG5ldyBDRlN0cmluZ1JlZltzaXplXTsK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICBp
dGVtc1tpXSA9IHJlZGlyZWN0VVJMcy0+YXQoaSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAg
ICAgIGl0ZW1zW2ldID0gcmVkaXJlY3RVUkxzLT5hdChpKS5jcmVhdGVDRlN0cmluZygpLmxlYWtS
ZWYoKTsKICAgICAgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAsIChjb25z
dCB2b2lkKiopaXRlbXMsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgIENGUmVsZWFzZShp
dGVtc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRleCAyNWQ3ZWMw
OWI5ODYxZTQ0MzQ5MWUzNDZkNTBkNGUyMmM3NzFiODQ1Li4wNWE5NDkwOGE4ODg0MTJiMTVkMzk0
NjNkMTM5MjlhOTE2NzQ5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29u
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFzZS5jcHAK
QEAgLTM2Niw3ICszNjYsNyBAQCBCU1RSIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlRGlk
QWRkSWNvbk5vdGlmaWNhdGlvbigpCiAKIENGU3RyaW5nUmVmIFdlYkljb25EYXRhYmFzZTo6aWNv
bkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKQogewotICAgIHN0YXRpYyBDRlN0
cmluZ1JlZiBpY29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVz
ZXJJbmZvVVJMS2V5KS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBp
Y29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJbmZvVVJM
S2V5KS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gaWNvblVzZXJJbmZv
VVJMS2V5OwogfQogCkBAIC0zODcsOCArMzg3LDcgQEAgc3RhdGljIHZvaWQgcG9zdERpZEFkZElj
b25Ob3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBXZWJJY29uRGF0YWJhc2UqIGkK
ICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShBZG9wdENG
LCAKICAgICBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGljdGlvbmFy
eUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsKEFkb3B0Q0YsIHBhZ2VVUkwuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwgV2ViSWNv
bkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgpLCB1cmwu
Z2V0KCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIFdlYklj
b25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKSwgcGFn
ZVVSTC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQ
cm9wZXJ0eUJhZz4gdXNlckluZm8gPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5z
dGFuY2UoKTsKICAgICB1c2VySW5mby0+c2V0RGljdGlvbmFyeShkaWN0aW9uYXJ5LmdldCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4IGZkNjFh
MDFmYmFmMGVjYTcxNDQ2M2JiMWQ1NzBjZmZhNDFiNzY1OGQuLmRmYjcxNGI0NjUwNjFhYjIwMzUy
YmEzZDc1Nzc0ZmJlZmFmMjdkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxv
Y2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTG9jYWxpemFi
bGVTdHJpbmdzLmNwcApAQCAtMTMyLDEyICsxMzIsMTAgQEAgc3RhdGljIENGQnVuZGxlUmVmIGNy
ZWF0ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3RyaW5nIGJ1bmRs
ZVBhdGhTdHJpbmcocGF0aFN0cik7Ci0gICAgQ0ZTdHJpbmdSZWYgYnVuZGxlUGF0aENGU3RyaW5n
ID0gYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpOwotICAgIGlmICghYnVuZGxlUGF0
aENGU3RyaW5nKQorICAgIGlmICghYnVuZGxlUGF0aFN0cmluZykKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBDRlVSTFJlZiBidW5kbGVVUkxSZWYgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aCgwLCBidW5kbGVQYXRoQ0ZTdHJpbmcsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsIHRydWUp
OwotICAgIENGUmVsZWFzZShidW5kbGVQYXRoQ0ZTdHJpbmcpOworICAgIENGVVJMUmVmIGJ1bmRs
ZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBhdGhTdHJp
bmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwgdHJ1ZSk7
CiAgICAgaWYgKCFidW5kbGVVUkxSZWYpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNjgsOCAr
MTY2LDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxl
KFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAgICBpZiAoIWJ1bmRsZSkKICAgICAg
ICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlTdHJp
bmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGU3RyaW5nUmVmIHJlc3Vs
dCA9IENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5nLmdldCgp
LCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKTsKKyAgICBDRlN0cmluZ1JlZiByZXN1bHQgPSBDRkNv
cHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
cmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3RyaW5nICVz
IGluIGJ1bmRsZSIsIGtleSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlBy
ZWZlcmVuY2VzLmNwcAppbmRleCA1NjM0YTE1YjNlZDNlMDFjMjYwNGE1YmUyNjAxMzcxMWZkY2Nk
YzMzLi44OTY3YjBiMzBhZTRkNDIzMzU4YjlmY2U2ZjU4MzE5MWM5NmMwYzM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBXZWJQcmVm
ZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplUHJlZmVyZW5j
ZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAgIFN0cmluZyBkZWZhdWx0RGVmYXVsdEVuY29kaW5n
KFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEiLCAiVGhlIGRlZmF1bHQsIGRlZmF1bHQgY2hhcmFj
dGVyIGVuY29kaW5nIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNU
UihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZhdWx0RGVm
YXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VL
ZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAg
ICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGljdGlv
bmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExvY2F0aW9u
UHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDZiMWJh
ZGU0YWFmMmU5NWEyMDRmOTJhMjZkNGFiMDI0MGEyNzI4MzguLjNhMWI3NGUyMTM1MWZhZGE2ZDQx
YWNkZjg5ZjI1NGE4M2FhY2I2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC00NzEsNyArNDcx
LDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2FjaGVNb2Rl
bCkKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxDYWNoZShBZG9wdENGLCBDRlVS
TENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2Z1cmxDYWNoZURpcmVjdG9yeShBZG9wdENGLCB3a0NvcHlGb3VuZGF0aW9uQ2FjaGVEaXJlY3Rv
cnkoMCkpOwogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAgICAgICAgY2Z1cmxDYWNo
ZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVj
dG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0g
V2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEw
MjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291bnQgZG9lc24ndCBhbGln
biBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC00NzEyLDggKzQ3MTIsNyBAQCBI
UkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZpY2F0aW9u
KiBub3RpZmljYXRpb24pCiAgICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICAgICAgcmV0
dXJuIGhyOwogCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0
Q0YsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFpblB0cjxD
RlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCB1cmxTdHJpbmcuZ2V0KCksIDApKTsKKyAgICAgICAgUmV0YWluUHRyPENGVVJMUmVm
PiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogCiAgICAgICAgIC8v
IENoZWNrIGlmIHRoZSBwYXNzZWQgaW4gc3RyaW5nIGlzIGEgcGF0aCBhbmQgY29udmVydCBpdCB0
byBhIFVSTC4KICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBuaWdo
dGx5IGJ1aWxkcyB1bnRpbCB3ZSBjYW4gZ2V0IFNhZmFyaSB0byBwYXNzIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0KaW5kZXggNGEzNWI2YTJkOGEzMmM1ZGQ4MzQ5NzJj
ZDJmZGYyYWRjMzkxZTYxYS4uMzY4NzUzMTUxNzIxOGRhMjllOWNkZGRhNDIzMmEzYjEyODI1MzMx
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCkBAIC0zMCwxMiAr
MzAsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgbV9wYXRoLmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFkb3B0Q0Ys
IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRs
ZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIFJldGFpblB0
cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVt
UGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVVUkwpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFk
b3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQo
KSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRs
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAo
IWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZTdkNTgzMWY2
MDhjMzgzMGUzYzliZTE0YjM5NDY1ZWIyYzcxYzNiLi42NzFmMjBkNmRjYWJlMWZjMWJhMzk1NTdk
NWU2MjhlZTdlZDdlZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTI3OSw4ICsyNzksNyBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0IFN0cmlu
ZyYgc2FuZGJveFBybwogICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmUGx1
Z2luUGF0aCA9IGFkb3B0Q0YocGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5
c3RlbVBhdGgoMCwgY2ZQbHVnaW5QYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFs
c2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdpblVSTCkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTIsOCArMjkxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcmIHNhbmRi
b3hQcm8KICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGggPSBh
ZG9wdENGKHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlNhbmRib3hQcm9maWxlRGlyZWN0b3J5
UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKKyAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aCgwLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKIAogICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9y
bWF0KDAsIDAsIENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlmaWVyKTsKICAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0
ZW1QYXRoUmVsYXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1lLmdldCgpLCBrQ0ZVUkxQT1NJ
WFBhdGhTdHlsZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5LmdldCgpKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2Nh
cGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggODFiMzhlMGVjOGZlM2M0
MTg4OTc5ZWVmZDA2MjI3YjM3MGZkNGEzZS4uM2RjMzc3YzQ0NTBkODhmZTI1ZjcwMmIwZmE1NDNh
MzhlMjhmNmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0
c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQpA
QCAtMzUyLDExICszNTIsMTAgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21DYXJib25S
ZXNvdXJjZXMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmYKIAogYm9vbCBOZXRz
Y2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgpLCBrQ0ZVUkxQ
T1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVS
TCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhT
dHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlhbGl6ZSB0aGUgYnVuZGxl
LgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIFJldGFpblB0
cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIApAQCAtMzk1LDExICszOTQsOSBAQCBib29sIE5ldHNjYXBlUGx1
Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2lu
TW9kdWxlSQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5NSU1FVHlw
ZXNQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwgQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlUGF0aC5n
ZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRyPENGVVJM
UmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NG
VVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCi0gICAgLy8gVHJ5IHRvIGluaXRpYWxp
emUgdGhlIGJ1bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShBZG9wdENG
LCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5kbGVDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYgKCFidW5k
bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggY2RmZjM0NDY5YTIzOTNk
MzVhZGJhYmM0Y2IwYTM4YmEwZjU2MjMyNC4uN2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1NGM1OGFi
M2E0OGEyYjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dlYkJh
Y2tGb3J3YXJkTGlzdENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2Vi
QmFja0ZvcndhcmRMaXN0Q0YuY3BwCkBAIC05NCw5ICs5NCw5IEBAIENGRGljdGlvbmFyeVJlZiBX
ZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKFdlYlBh
Z2VQcm94CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwoQWRvcHRDRiwgbV9lbnRyaWVzW2ldLT51cmwo
KS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRs
ZShBZG9wdENGLCBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxVUkwoQWRvcHRDRiwgbV9lbnRyaWVz
W2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHVybCA9IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJpbmcoKTsK
KyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZSA9IG1fZW50cmllc1tpXS0+dGl0
bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG9y
aWdpbmFsVVJMID0gbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCk7
CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgQ29yZUlQQyBkYXRhIGVuY29kaW5n
IGZvcm1hdCwgd2hpY2ggbWVhbnMgdGhhdCB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIENvcmVJUEMg
ZW5jb2Rpbmcgd2UgbmVlZCB0byBidW1wIHRoZSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0YVZlcnNp
b24KICAgICAgICAgLy8gY29uc3RhbnQgaW4gV2ViUGFnZVByb3h5Q0YuY3BwLiBUaGUgQ29yZUlQ
QyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIGFu
ZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gZGlzay4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCmluZGV4IDc5ZGQ4Y2Vk
MDJkN2NlMGQ0ZjNjMjQwNDgxOGI4MDFiZTQwZjFmN2EuLmQyMmVlZDI5NGMwY2YzZjhmMTJjNzNl
ZTg4MjBhNWMzZGJjZTk1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9j
Zi9XZWJQYWdlUHJveHlDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2NmL1dl
YlBhZ2VQcm94eUNGLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYXNzUmVmUHRyPFdlYkRhdGE+IFdl
YlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YShXZWJQYWdlUHJveHlTZXNzaW9uU3RhdGVGaWx0
ZQogICAgICAgICBpZiAocHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKQogICAgICAgICAgICAgcHJv
dmlzaW9uYWxVUkwgPSBtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKICAgICAgICAgaWYg
KCFwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHByb3Zpc2lvbmFsVVJM
U3RyaW5nLmFkb3B0Q0YocHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAg
ICAgICBwcm92aXNpb25hbFVSTFN0cmluZyA9IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNGU3RyaW5n
KCk7CiAgICAgICAgICAgICBrZXlzW251bVZhbHVlc10gPSBQcm92aXNpb25hbFVSTEtleSgpOwog
ICAgICAgICAgICAgdmFsdWVzW251bVZhbHVlc10gPSBwcm92aXNpb25hbFVSTFN0cmluZy5nZXQo
KTsKICAgICAgICAgICAgICsrbnVtVmFsdWVzOwpAQCAtMTc5LDggKzE3OSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSogd2ViRGF0YSkK
IAogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5n
JiBuYW1lKQogewotICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVs
ZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBr
ZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuICgiY29tLmFwcGxlLldlYktpdC5zZWFy
Y2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBzZWFyY2hJdGVtcykKQEAgLTE5MiwxMCArMTkxLDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JgogCiAgICAgaWYgKHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgpKSB7CiAg
ICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5
cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0Ys
IHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBl
bmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5h
bWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUmVz
b3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggNjgxMGYwYWJkYjlk
YmViYTk5ZmEzZTFlOWIwZjA2Y2U0NWFlMDQ5NC4uMzk1NjQ5YzUwYmY0ZDZkZjA0YmM3NTQwYjU0
YmFmNTlkYjJjMzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNv
dXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwCkBA
IC0xMTgsOCArMTE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Y2xlYXJDYWNo
ZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwKICNpZiBVU0UoQ0ZVUkxD
QUNIRSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9IEluTWVtb3J5UmVzb3VyY2VD
YWNoZXNPbmx5KSB7IAogICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IGhvc3RB
cnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2Fs
bEJhY2tzKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdChBZG9wdENGLCBv
cmlnaW4tPmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZBcnJheUFwcGVuZFZh
bHVlKGhvc3RBcnJheS5nZXQoKSwgaG9zdC5nZXQoKSk7CisgICAgICAgIENGQXJyYXlBcHBlbmRW
YWx1ZShob3N0QXJyYXkuZ2V0KCksIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogCiAgICAgICAgIGNsZWFyQ0ZVUkxDYWNoZUZvckhvc3ROYW1lcyhob3N0QXJyYXkuZ2V0
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
d2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IDYyOTRmMDBkODhkZGEwNGJlNTI0MTA3YzZiZjY1OWJj
OWU3MzBiYzQuLmM2ZjViNjc4MTJjMzMwZTQxNzE2ZTE1OGIxNGZhMTg1Y2E0ODUyYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdlV2lu
LmNwcApAQCAtMjcwLDggKzI3MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZDYWNoZWRVUkxSZXNw
b25zZVJlZj4gY2FjaGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFnZSwKICAgICB3a1Nl
dFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFN0b3JhZ2VTZXNz
aW9uKCksIHJlcXVlc3QuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHVzZXJBZ2VudChBZG9wdENGLCB3ZWJQYWdlLT51c2VyQWdlbnQoKS5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0Lmdl
dCgpLCBDRlNUUigiVXNlci1BZ2VudCIpLCB1c2VyQWdlbnQuZ2V0KCkpOworICAgIENGVVJMUmVx
dWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZ2V0KCksIENGU1RSKCJVc2VyLUFn
ZW50IiksIHdlYlBhZ2UtPnVzZXJBZ2VudCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAg
ICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNhY2hlOwogI2lmIFVTRShDRlVSTFNUT1JBR0VT
RVNTSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2luL1dlYlBy
b2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dp
bi5jcHAKaW5kZXggMjVkYmMzNmM0OTliZjM5NDY5MzRiNGUxMmU2NTYyMzBhZDliYjE5Mi4uZGE0
YjU2ZGM4ODZjM2JhYmFkNzczN2Q4N2Q4ZTc0NzQ5MWM5ZWE0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBjYWNoZU1v
ZGVsKQogICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5LmFkb3B0Q0Yod2tDb3B5Rm91bmRhdGlv
bkNhY2hlRGlyZWN0b3J5KDApKTsKIAogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAg
ICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNp
ZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENh
Y2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5
KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAw
MCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291
bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC0xNDgs
MTMgKzE0OCwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nl
c3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogICAgIGlmIChkZWZhdWx0U3Rv
cmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2FjaGVQYXRoKEFkb3B0Q0YsIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5LmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIGlmICghY2FjaGVQYXRoKQorICAgIGlmICghcGFyYW1ldGVycy5k
aXNrQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENGSW5kZXggY2FjaGVE
aXNrQ2FwYWNpdHkgPSBwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAgICAgQ0ZJ
bmRleCBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gcGFyYW1ldGVycy5jZlVSTENhY2hlTWVtb3J5Q2Fw
YWNpdHk7Ci0gICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHVpUHJvY2Vzc0NhY2hlKEFkb3B0
Q0YsIENGVVJMQ2FjaGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2FjaGVNZW1vcnlDYXBh
Y2l0eSwgY2FjaGVEaXNrQ2FwYWNpdHksIGNhY2hlUGF0aC5nZXQoKSkpOworICAgIFJldGFpblB0
cjxDRlVSTENhY2hlUmVmPiB1aVByb2Nlc3NDYWNoZShBZG9wdENGLCBDRlVSTENhY2hlQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGNhY2hlTWVtb3J5Q2FwYWNpdHksIGNhY2hlRGlza0NhcGFj
aXR5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiAgICAgQ0ZVUkxDYWNoZVNldFNoYXJlZFVSTENhY2hlKHVpUHJvY2Vzc0NhY2hlLmdldCgp
KTsKICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdiMTNjODc4YzFmZjUxOTUwMmJmZmRhMjQwOGRk
ZmM2OGFmMmRiN2IuLmU5MDBlY2NhZTZhZGQ0YjIxZGNjOTg3NmQ0MDk4M2IxN2E5MjA0ZDMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMi0xMC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBhIFJldGFp
blB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAw
NDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbToK
KyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOgorCiAyMDEyLTEwLTI4ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgWGNvZGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0
aGF0IHVzZWQgdG8gdmFyeSBiZXR3ZWVuIE9TIHZlcnNpb25zLgpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFj
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRC
dW5kbGVQYWdlTWFjLm1tCmluZGV4IDQ2YzI3M2YxZjhjYTQwYWVlMjdjOTQ3NmM4MWZlNzM5NGMz
M2JiMjQuLmIwY2I0ZTAzMWNiNzQ0NjI4YzBiYzM0ZDU3ZDE3NmI2ODdhZjEzNDUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVu
ZGxlUGFnZU1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0KQEAgLTg1LDggKzg1LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShX
S0J1bmRsZUZyYW1lUmUKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAgICAgICBi
dWlsZGVyLmFwcGVuZExpdGVyYWwoIkNSQVNISU5HIFRFU1Q6ICIpOwogICAgICAgICBidWlsZGVy
LmFwcGVuZCh0ZXN0UGF0aCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJp
bmcoQWRvcHRDRiwgYnVpbGRlci50b1N0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICBXS1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGNmU3RyaW5n
LmdldCgpKTsKKyAgICAgICAgV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lmaWNJbmZv
cm1hdGlvbihidWlsZGVyLnRvU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAg
fQogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171349</attachid>
            <date>2012-10-29 17:45:36 -0700</date>
            <delta_ts>2012-10-29 18:02:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121029174403.patch</filename>
            <type>text/plain</type>
            <size>80674</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4MTI3YjlmMTMxMjQ1ZTUzMDAwZDZi
ZmVhMTZkYTNkZTZhMWJmMjIuLjg0OWY4ODFjYTQ1NTFiNmM1NGY4MDViMzJjNDA4MmRlOWZkZWVl
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMTItMTAtMjggIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBYY29kZSBjb25maWd1cmF0aW9uIHNldHRp
bmdzIHRoYXQgdXNlZCB0byB2YXJ5IGJldHdlZW4gT1MgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGM2MGJhZWUyOWIxMGViZTVkNGIxNGJiZGE5YmFlMjJiNTkxZmI3Zi4uNjFkNjc1YWNmMjMzMDY2
YzliMGUxZDIyZjk4YzY3MmQxNzRkN2ViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisy
MDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEgUmV0YWluUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbGVy
cyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICogYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09i
amVjdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5L
ZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9GaWxlU3lz
dGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1D
QUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChyZXN1Ym1pdEFs
bEFuaW1hdGlvbnMpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjphZGRBbmltYXRpb25Gb3JL
ZXkpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkpOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgorICAgICAgICAo
UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0
aUZyb21NSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3Vy
Y2VDR01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp1dGlUeXBlRnJvbUNvY29hVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdl
bmVyYXRvck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRD
b29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpjZkVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RGVm
YXVsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEhlYWRlckZpZWxkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFs
cyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURl
c2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVl
c3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJM
UmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6OjpjcmVhdGVWYWx1ZUZvcktleSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9jZi9TdHJpbmdDRi5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAg
KFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvbWFjL1N0cmluZ0ltcGxNYWMubW06CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om9wZXJh
dG9yIE5TU3RyaW5nICopOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNNYWM6OmVuY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphdXRvc2F2ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OnNh
dmVSZWNlbnRTZWFyY2hlcyk6CisKIDIwMTItMTAtMjkgIFZpbmNlbnQgU2NoZWliICA8c2NoZWli
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyODQ1
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2NmL0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJl
Y2M1Li4xYjE3N2Q3OTZlNzhlODVjNzhlYmEzNGQ0MjhmNjM5NjNjMzBiMzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQg
cmV0dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAg
ICAoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToK
KyAgICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcu
aCwgcmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxMWQ1MGIxNzdk
YWY2ZTIwZjdhYWFkYjEzYjEyNWVlNWNkOTUwMGUzLi5lZWZlYzUxZmZlNDNhMmU3MTViYWY4MmQ5
YTA3YWRlMjI2YzhiOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTIt
MTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBT
dHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9m
IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRh
YmFzZSk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojp2
aXNpdGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcpOgorICAg
ICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpkaWN0
aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZv
VVJMS2V5KToKKyAgICAgICAgKHBvc3REaWRBZGRJY29uTm90aWZpY2F0aW9uKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnVuZGxl
KToKKyAgICAgICAgKGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxlKToKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURl
ZmF1bHRTZXR0aW5ncyk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3
OjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZCk6CisKIDIwMTItMTAtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhIHN0cmF0ZWd5IGZvciBsb2FkZXIgY3VzdG9taXphdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA0ZWY0NDFlZGNjYzE3ZWI3MTY4ZjcyZDkxMGVjY2ZmMGYzZmY0ODY2Li5kNjZmNzJi
M2M0MGE1YzQ4ODQyMWEzZmM5YWNkYTY2NGNhMDljY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5Q
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjYWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9tYWMvTW9kdWxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2R1bGU6OmxvYWQpOgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZlcmVuY2VzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjphdXRvc2F2ZUtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUNhY2hl
TWFuYWdlcjo6Y2xlYXJDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9XZWJQYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2FjaGVkUmVzcG9uc2VG
b3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwog
MjAxMi0xMC0yOSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAog
ICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogRGVsZXRlIGNhY2hlZCBTaGFyZWFibGVTdXJm
YWNlcyB3aGVuIHB1cmdpbmcgYmFja2luZ1N0b3Jlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
aW5kZXggMDllZjY0NjgwMWZiYzliNTY4ZWZlNGU2ODc2YTljZTBhMzljMGFhYi4uZWI0NjYyYzVj
MjRkYTExY2QzNzg5OTZjMDU2Y2JjOTFjNWU4ZmNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKQEAgLTY3LDYgKzY3LDcgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0ZXJhbERhdGFUcmFu
c2xhdG9yOwogY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIHN0cnVjdCBTdWJzdHJpbmdUcmFuc2xh
dG9yOwogc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBSZXRhaW5QdHI7CiAKIGVudW0gVGV4dENhc2VTZW5zaXRpdml0eSB7IFRleHRDYXNlU2Vu
c2l0aXZlLCBUZXh0Q2FzZUluc2Vuc2l0aXZlIH07CiAKQEAgLTcxNCw3ICs3MTUsNyBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7
CiAKICNpZiBVU0UoQ0YpCi0gICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3RyaW5nKCk7CiAjZW5kaWYKICNpZmRlZiBf
X09CSkNfXwogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
aW5kZXggZTU4YmFlZDg1YWY1YWU5MGNlN2YzZTAzZmU0MGViZWQ4ZGQzYzY4ZC4uNjI0ZWI1NGFh
YzdmZDczN2FhY2YzMWExYzVkYjkyYjA0ZmQ2ZGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
CkBAIC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2VuZGlmCiAKLSNp
ZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpbmdSZWY7
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFFUKQogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBR
U3RyaW5nOwpAQCAtMzkyLDcgKzM4OCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDRikKICAgICBT
dHJpbmcoQ0ZTdHJpbmdSZWYpOwotICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29u
c3Q7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVDRlN0cmluZygpIGNvbnN0Owog
I2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCmluZGV4IDJjZjBkYjU2MThlMzgyMGNkZjQ0NjQ1NTgzNDFmNjk0ZjUzZDFm
YTMuLmJlMjRmZGIzZmRiMTM3YzgwYjZmMGE0ZmI4ODc0MWFiMzQxYTRkNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI0OCw4ICsyNDgsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNf
Y2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwogICAgICAgICBPd25Q
dHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QoYWRvcHRQdHIobmV3IE9iamNNZXRob2Qob2Jq
Y0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3Jp
cHQ6d2l0aEFyZ3VtZW50czopKSkpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlm
aWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkp
LT5wcm9wZXJ0eU5hbWUoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFk
b3B0Q0YsIG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBmYWxsYmFj
a01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZS5nZXQoKSk7CisgICAgICAgIGZhbGxiYWNr
TWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpjTWV0aG9k
KGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKICAgICB9CiAgICAgICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDQ1OGVhYzY5ZjZlZjYyZjY2
YTQ0YTg2YTEyNjEyN2EzNWIxOGQxZjIuLmU5Y2QxYWZmYzllNjYxZDk4ZTRlNjRkOTc2NDRhOWEx
MWJmYmQ0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
OTE2LDggKzkxNiw3IEBAIHN0YXRpYyBLVVJMIGNyZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIC8vIGFwcCBjYWNoZSBtZWRpYSBm
aWxlcyBhcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBlbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkpLgogCiAjaWYgVVNFKENGKSAmJiBQTEFURk9STShXSU4pCi0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlBhdGgoQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRl
V2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGNmUGF0aC5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHls
ZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMKEFkb3B0Q0YsIENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBLVVJMIHVybChjZlVSTC5nZXQo
KSk7CiAjZWxzZQogICAgIEtVUkwgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCAzNTc2ZDY0ZGZjNDgyYTQx
ZDU0ZTEzZWZkMTk3ODE2MmI3ODA3YTdmLi5kNzdmODc0YjA5ZGMyMDA5YmJlZDAzNTI0MTgzNWJm
ZTg2Zjg4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTEsOCArOTEsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRh
dGlvbihBcgogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVn
YWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgY2ZEYXRhLmdldCgpKTsKICAgICAKICAgICAv
LyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmVVJMKEFkb3B0Q0YsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBpZiAoY2ZVUkwpCisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwg
PSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVz
b3VyY2VVUkxLZXksIGNmVVJMLmdldCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5VTEwgcmVzb3VyY2UgVVJMIGlzIGludmFsaWQgLSBy
ZXR1cm5pbmcgbnVsbCBwcm9wZXJ0eSBsaXN0Iik7CkBAIC0xMDEsMjMgKzEwMCwxNyBAQCBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbihBcgogCiAgICAgLy8gRnJhbWVOYW1lIHNob3VsZCBiZSBsZWZ0IG91
dCBpZiBlbXB0eSBmb3Igc3VicmVzb3VyY2VzLCBidXQgYWx3YXlzIGluY2x1ZGVkIGZvciBtYWlu
IHJlc291cmNlcwogICAgIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKHJlc291cmNlLT5mcmFtZU5h
bWUoKSk7Ci0gICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpIHx8IGlzTWFpblJlc291cmNlKSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZGcmFtZU5hbWUoQWRvcHRDRiwgZnJh
bWVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZUZyYW1lTmFtZUtleSwg
Y2ZGcmFtZU5hbWUuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkg
fHwgaXNNYWluUmVzb3VyY2UpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5
TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRnJhbWVOYW1lS2V5LCBmcmFtZU5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgCiAgICAgLy8gU2V0IE1JTUVUeXBlLCBU
ZXh0RW5jb2RpbmdOYW1lLCBhbmQgUmVzb3VyY2VSZXNwb25zZSBvbmx5IGlmIHRoZXkgYWN0dWFs
bHkgZXhpc3QKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKHJlc291cmNlLT5taW1lVHlwZSgp
KTsKLSAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNmTUlNRVR5cGUoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXksIGNmTUlNRVR5cGUuZ2V0KCkpOwotICAgIH0K
KyAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtl
eSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgCiAgICAgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcocmVzb3VyY2UtPnRleHRFbmNvZGluZygpKTsKLSAgICBpZiAoIXRl
eHRFbmNvZGluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZlRleHRFbmNvZGluZyhBZG9wdENGLCB0ZXh0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2Vi
QXJjaGl2ZVJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleSwgY2ZUZXh0RW5jb2RpbmcuZ2V0KCkp
OwotICAgIH0KKyAgICBpZiAoIXRleHRFbmNvZGluZy5pc0VtcHR5KCkpCisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlVGV4dEVuY29kaW5nTmFtZUtleSwgdGV4dEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRo
ZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBhYmYxYmNhNWU4NTQxMGJh
ODdkNWNhYjgyNTAwZDk2OWYxMDkyNmE3Li42OTA4NDNiMTM3NzgzNDgyODBlYzdlYTViNDM3Mzg4
ZTlkZGM2NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcApAQCAtNTQsMTMgKzU0LDEyIEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFN0cmluZyBmb3JtYXQsIC4uLikKICNpZiBVU0UoQ0YpCiAgICAgdmFfbGlzdCBhcmd1bWVu
dHM7CiAgICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gZm9ybWF0Q0ZTdHJpbmcoQWRvcHRDRiwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkp
OwogCiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAog
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCiAj
ZW5kaWYKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCBDRlN0cmlu
Z0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0Q0ZTdHJpbmcuZ2V0KCks
IGFyZ3VtZW50cykpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0ID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwogI2lmIENPTVBJTEVSKENMQU5HKQogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCkBAIC0yNjAsNyArMjU5LDcgQEAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNl
bGVjdGVkU3RyaW5nKQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJMb29rIFVwIGluIERpY3Rp
b25hcnkiLCAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQgbWVudSBpdGVtIik7CiAjZWxz
ZQogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJp
bmcoQWRvcHRDRiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJp
bmcpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2VsZWN0
ZWRDRlN0cmluZyA9IHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3Ry
aW5nKS5jcmVhdGVDRlN0cmluZygpOwogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX1NUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBp
dGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKICNlbHNl
CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAi
TG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8
c2VsZWN0aW9uPiIsIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3Ry
aW5nKSk7CkBAIC03MzgsOCArNzM3LDcgQEAgU3RyaW5nIGtleWdlbk1lbnVJdGVtMjA0OCgpCiAK
IFN0cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRlN0cmluZyhBZG9wdENGLCBob3N0LmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NU
UklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRo
ZSBLRVlHRU4gdGFnIiksIGhvc3RDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtleWNo
YWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIH0KIAogI2VuZGlmCkBAIC03NjIsOCArNzYwLDcgQEAgU3RyaW5nIGltYWdl
VGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICNp
ZiBVU0UoQ0YpCiAjaWYgIVBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5
Q3VycmVudCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0Yo
Q0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJGb3JtYXR0ZXJS
ZWY+IGZvcm1hdHRlcihBZG9wdENGLCBDRk51bWJlckZvcm1hdHRlckNyZWF0ZSgwLCBsb2NhbGUu
Z2V0KCksIGtDRk51bWJlckZvcm1hdHRlckRlY2ltYWxTdHlsZSkpOwogCiAgICAgaW50IHdpZHRo
SW50ID0gc2l6ZS53aWR0aCgpOwpAQCAtNzc0LDcgKzc3MSw3IEBAIFN0cmluZyBpbWFnZVRpdGxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgUmV0YWlu
UHRyPENGTnVtYmVyUmVmPiBoZWlnaHQoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVt
YmVySW50VHlwZSwgJmhlaWdodEludCkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaGVp
Z2h0U3RyaW5nKEFkb3B0Q0YsIENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlU3RyaW5nV2l0aE51bWJl
cigwLCBmb3JtYXR0ZXIuZ2V0KCksIGhlaWdodC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRv
dyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJv
bCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBo
ZWlnaHRTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRh
bG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5n
LmdldCgpKTsKICNlbHNlCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNGU3Ry
aW5nKEFkb3B0Q0YsIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJWTDlyVkIHBpeGVscyIsICJ3aW5k
b3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1i
b2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5nLmdldCgpLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5jcHAKaW5kZXggMWI4ZDAwNmYyNTE5YWE4YThmM2E4YzQ1MGVmZDI3MzQx
OGFmNDI4NC4uNzMwZWRjMTVmZTkxYmM5Mjc3MDg1Y2NjMjg4N2IwNzkwNjc4MGJmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
Y3BwCkBAIC00Niw4ICs0Niw3IEBAIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc0VxdWFsVG8oY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQogICAgIGlmICghYnVuZGxlSWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBidW5kbGVJZGVudGlmaWVyVG9Db21wYXJlKEFkb3B0Q0YsIGJ1bmRsZUlkZW50aWZpZXJTdHJp
bmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZShidW5kbGVJ
ZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyVG9Db21wYXJlLmdldCgpLCAwKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbzsKKyAgICByZXR1cm4gQ0ZTdHJpbmdDb21wYXJlKGJ1bmRsZUlkZW50aWZpZXIs
IGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkgPT0ga0NG
Q29tcGFyZUVxdWFsVG87CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShidW5kbGVJZGVudGlmaWVy
U3RyaW5nKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
RmlsZVN5c3RlbUNGLmNwcAppbmRleCA4ZWY1MGVlYjBjYjA4NGQxYjliMjNiODdjM2JmYTg5ODM5
MmI4YTJkLi5mZmVhOTA1OGI3YTNiMmQwMmNiODIxMDZhODAwZDUyOWY4OTA0NTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0
cmluZyhBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBpZiAoIWNm
U3RyaW5nKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwpAQCAtNjMsOCArNjMsNyBAQCBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZWxzZQogICAg
IHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwogI2VuZGlmCi0gICAgcmV0dXJuIFJl
dGFpblB0cjxDRlVSTFJlZj4oQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgo
MCwKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBwYXRoLmNyZWF0ZUNG
U3RyaW5nKCkpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCA5N2ZiMGI2MDk0NjhmNGVkMzVi
MWUxOTM4ZDk4YmJkODk0MjIyNTg2Li44NTZhNGZjYWRlZDJmMGI2MjYwZjVlOTJiZTExNDVkYzEy
YTVjODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCkBAIC0xNTEsOCAr
MTUxLDcgQEAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihBbmltYXRp
b25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGEKICAgICBlbHNlCiAgICAgICAgIG1fYW5p
bWF0aW9uLmFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FDRktleWZyYW1lQW5pbWF0aW9u
KSk7CiAgICAgCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGtleVBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRp
b24uZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0
aW9uLmdldCgpLCBrZXlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFu
aW1hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggNzAxNjhiMjEwNGRiMzY5
ZGEwNzU3YTExNDQ2MjIxMTFiYzMwNjFmMC4uZGQ2MTYzMzdlOTM2NmViNzljOTZjNjcyYjczOTNi
NjkyNDM2ZmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTE3NiwxMCArMTc2
LDggQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2
YWwgYmVnaW5UaW1lKQogc3RhdGljIHZvaWQgcmVzdWJtaXRBbGxBbmltYXRpb25zKFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpCiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllci0+YW5pbWF0aW9ucygpLmVu
ZCgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRpb25zKCkuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENG
LCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRp
b24obGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgcy5nZXQoKSwgaXQtPnZhbHVlLT5wbGF0Zm9ybUFu
aW1hdGlvbigpKTsKLSAgICB9CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXItPmFuaW1hdGlvbnMo
KS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIENBQ0ZMYXllckFkZEFuaW1hdGlv
bihsYXllci0+cGxhdGZvcm1MYXllcigpLCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGl0LT52YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxh
eWVyOjplbnN1cmVBbmltYXRpb25zU3VibWl0dGVkKCkKQEAgLTI5Nyw4ICsyOTUsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcjo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKgogICAgIC8vIEFkZCBpdCB0byB0aGUgYW5pbWF0aW9uIGxpc3QK
ICAgICBtX2FuaW1hdGlvbnMuYWRkKGtleSwgYW5pbWF0aW9uKTsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxh
eWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCksIGFuaW1hdGlvbi0+cGxhdGZv
cm1BbmltYXRpb24oKSk7CisgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCks
IGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9u
KCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBUZWxsIHRoZSBob3N0IGFib3V0
IGl0IHNvIHdlIGNhbiBmaXJlIHRoZSBzdGFydCBhbmltYXRpb24gZXZlbnQKQEAgLTMxMiw4ICsz
MDksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0
IFN0cmluZyYga2V5KQogICAgIC8vIFJlbW92ZSBpdCBmcm9tIHRoZSBhbmltYXRpb24gbGlzdAog
ICAgIG1fYW5pbWF0aW9ucy5yZW1vdmUoa2V5KTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxheWVyUmVtb3Zl
QW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZMYXllclJlbW92ZUFu
aW1hdGlvbihtX2xheWVyLmdldCgpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAg
ICAvLyBXZSBkb24ndCAicmVtb3ZlIiBhIGxheWVyIGZyb20gQWJzdHJhY3RDQUNGTGF5ZXJUcmVl
SG9zdCB3aGVuIGl0IGxvc2VzIGFuIGFuaW1hdGlvbi4KICAgICAvLyBUaGVyZSBtYXkgYmUgb3Ro
ZXIgYWN0aXZlIGFuaW1hdGlvbnMgb24gdGhlIGxheWVyIGFuZCBpZiBhbiBhbmltYXRpb24KQEAg
LTU4Niw4ICs1ODIsNyBAQCBTdHJpbmcgUGxhdGZvcm1DQUxheWVyOjpuYW1lKCkgY29uc3QKIAog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgQ0FDRkxheWVyU2V0TmFtZShtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBD
QUNGTGF5ZXJTZXROYW1lKG1fbGF5ZXIuZ2V0KCksIHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IGM0MzBjZjI4NDYxNDY2NDdiZjYxZmM3YTcxNjI5ZjUy
ZjAyMWZhNmEuLjE1Mjc1YjNhZTVmZTVjMWM2YTRmOGY4NGZkNjY5MGQyMWZjZjU4ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAtNDU5LDcgKzQ1OSw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzKCkKIAogI2lm
bmRlZiBOREVCVUcKICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gIlRpbGUgKCIgKyBTdHJpbmc6
Om51bWJlcihpKSArICIsIiArIFN0cmluZzo6bnVtYmVyKGopICsgIikiOwotICAgICAgICAgICAg
Q0FDRkxheWVyU2V0TmFtZSh0aWxlLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIG5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCkpOworICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmFt
ZSh0aWxlLCBuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwCmluZGV4IDIxZTlkYjRjMjhkOWEyNTUxMzUyMGFjZTcwODQwM2FjNWU3
N2FiOTMuLmRkMzc4MTU5N2Y4NWViNjEwZGNjNDcxZWM4MzE1M2UwYWJkMmNlYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCkBAIC0zNzcsOCArMzc3LDcgQEAgc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJ
KCkKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21NSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG1pbWVUeXBlQ0ZTdHJpbmcoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgVVRUeXBl
Q3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1l
VHlwZUNGU3RyaW5nLmdldCgpLCAwKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dN
YWMubW0KaW5kZXggYmQ1MGEzMTc1ZjNiNDI1YTg4MjZjZDJhNTZhNjJlMjE5MzY5NjMzNy4uOTUz
YmNiOWQyOGFkMGViNzVhYjM4ODEzYzM0Mzk0NTVmMTI2MmM3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBA
IC0zMywxNiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgTUlNRVR5cGVG
b3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1dGlyZWYoQWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZShBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFn
V2l0aENsYXNzKHV0aXJlZi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwotICAgIHJldHVy
biBtaW1lLmdldCgpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdX
aXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUp
KS5nZXQoKTsKIH0KIAogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlw
ZShjb25zdCBTdHJpbmcmIHV0aSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGUo
QWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gZXh0ZW5zaW9uKEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModHlw
ZS5nZXQoKSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOwotICAgIHJldHVybiBleHRl
bnNpb24uZ2V0KCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dp
dGhDbGFzcyh1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4
dGVuc2lvbikpLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBiZDg4MDIwNDQxYjBlOWFl
MDBiYWRhZjM2YjJmNGY1YTZhNmJlYWU3Li5mZDRhYjk5YjE3NDc1ZDQxNGIyMWFhM2VjZDU3ZTYx
ODBhMjhmY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMu
bW0KQEAgLTk5LDExICs5OSwxMCBAQCBzdGF0aWMgU3RyaW5nIGNvY29hVHlwZUZyb21IVE1MQ2xp
cGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKICAgICAvLyBUcnkgVVRJIG5vdwogICAg
IFN0cmluZyBtaW1lVHlwZSA9IHFUeXBlOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRp
VHlwZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCksIE5VTEwpKTsKLSAgICBp
ZiAodXRpVHlwZSkgewotICAgICAgICBDRlN0cmluZ1JlZiBwYlR5cGUgPSBVVFR5cGVDb3B5UHJl
ZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBl
KTsKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlID0gYWRvcHRDRihVVFR5
cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1p
bWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwpKSkgeworICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dp
dGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpOwogICAgICAg
ICBpZiAocGJUeXBlKQotICAgICAgICAgICAgcmV0dXJuIHBiVHlwZTsKKyAgICAgICAgICAgIHJl
dHVybiBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gTm8gbWFwcGluZywganVzdCBwYXNz
IHRoZSB3aG9sZSBzdHJpbmcgdGhvdWdoCkBAIC0xMTIsMTEgKzExMSw4IEBAIHN0YXRpYyBTdHJp
bmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
c3RhdGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlQ0YgPSBhZG9wdENGKHR5cGUuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0Q0Ys
IFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2Fy
ZFR5cGUsIHR5cGVDRi5nZXQoKSwgMCkpOwotICAgIGlmICh1dGlUeXBlKSB7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJl
ZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAg
ICAgIGlmIChtaW1lVHlwZSkKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBl
ID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0Ns
YXNzTlNQYm9hcmRUeXBlLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKSkgeworICAg
ICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBl
Q29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVU
eXBlKSkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKG1pbWVUeXBlLmdldCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcAppbmRleCAwYTFhNGQ4Yzc1MTRkYTkxMzczOWJlNWUz
NDQ2ZDQ5N2Q5NWE0NzhiLi5lNThkOWE5NDk5NjkyN2I5YmI1YjliMzQ2MTQ5NzhmNWFiZjRmM2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLmNwcApAQCAtNjAsMTEgKzYwLDcgQEAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2gKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2hhbGxlbmdlU3RyaW5nQ0YoQWRvcHRDRiwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5RGVzY3JpcHRpb24oQWRvcHRDRiwg
a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCB3a1NpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmdDRi5nZXQoKSwga2V5
RGVzY3JpcHRpb24uZ2V0KCkpKTsKLQotICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CisgICAgcmV0
dXJuIGFkb3B0Q0Yod2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwg
Y2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtleWdlbktleWNoYWluSXRl
bU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpLmdldCgpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50
aWNhdGlvbkNGLmNwcAppbmRleCA4N2EzZmFiOGE3NDM3YWUxMGFmNDM5YTRlNGUwMmNkMmUxYTMw
ZGViLi43YjFkNGZhNDc4N2YxZDFlMGQ5ZTNhNGRlODFmM2ViNTQ2ZDBjZWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25D
Ri5jcHAKQEAgLTExOSwxMyArMTE5LDcgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNv
bnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gQ0ZVUkxDcmVk
ZW50aWFsQ3JlYXRlV2l0aElkZW50aXR5QW5kQ2VydGlmaWNhdGVBcnJheShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBjb3JlQ3JlZGVudGlhbC5pZGVudGl0eSgpLCBjb3JlQ3JlZGVudGlhbC5jZXJ0aWZp
Y2F0ZXMoKSwgcGVyc2lzdGVuY2UpOwogI2VuZGlmCiAKLSAgICBDRlN0cmluZ1JlZiB1c2VyID0g
Y29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZTdHJpbmdSZWYg
cGFzc3dvcmQgPSBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0g
ICAgQ0ZVUkxDcmVkZW50aWFsUmVmIHJlc3VsdCA9IENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCB1
c2VyLCBwYXNzd29yZCwgMCwgcGVyc2lzdGVuY2UpOwotICAgIENGUmVsZWFzZSh1c2VyKTsKLSAg
ICBDRlJlbGVhc2UocGFzc3dvcmQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4g
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKIH0KIAogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3Jl
YXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCkBAIC0xOTIsMTMgKzE4Niw3
IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgY29yZVNwYWNlKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAg
ICBDRlN0cmluZ1JlZiBob3N0ID0gY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpOwot
ICAgIENGU3RyaW5nUmVmIHJlYWxtID0gY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRlQ0ZTdHJpbmco
KTsKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiByZXN1bHQgPSBDRlVSTFByb3RlY3Rpb25T
cGFjZUNyZWF0ZSgwLCBob3N0LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCByZWFsbSwg
c2NoZW1lKTsKLSAgICBDRlJlbGVhc2UoaG9zdCk7Ci0gICAgQ0ZSZWxlYXNlKHJlYWxtKTsKLSAg
ICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25TcGFjZUNy
ZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFj
ZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIHNjaGVtZSk7CiB9CiAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxSZWYg
Y2ZDcmVkZW50aWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1ZDZkNzM5MjZjNDRlZTQ4ODAxODJmZmZlODk4
MWFjZjM4YTc2YjBhLi41MDE3OTcxZGUxNGE0NTRhODRmOWEzODhiYjQ3ZjY0ODQ4OTFkYTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyBj
b29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRvZXNuJ3QgcGFyc2UgY29va2llcyB3aXRo
b3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gdmFsdWUuY29udGFpbnMoJz0n
KSA/IHZhbHVlIDogdmFsdWUgKyAiPSI7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNv
b2tpZVN0cmluZ0NGKEFkb3B0Q0YsIGNvb2tpZVN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGID0gY29va2llU3RyaW5nLmNy
ZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyRmll
bGRzQ0YoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsCiAg
ICAgICAgIChjb25zdCB2b2lkKiopJnNfc2V0Q29va2llS2V5Q0YsIChjb25zdCB2b2lkKiopJmNv
b2tpZVN0cmluZ0NGLCAxLAogICAgICAgICAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDNmOTAxYTU0MWRlMDBlZWJl
YzI0MzIyZDA0Mzk2ZWU0YTIyMDVmYjYuLmNlMTQ1MTkwOWFlZDdlMmI0ZGVmOWNlMGQ5YmI0Mjkz
NDE4ZGFjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCkBAIC05MCwxMiArOTAsMTIgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RuYW1lQ0YoQWRvcHRD
RiwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4g
aG9zdChBZG9wdENGLCBDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZUNGLmdldCgpKSk7
CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0
aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgIGlmICghaG9z
dCkgewogICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKwogICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwg
MCB9OwogICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBo
b3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgogICAgIEJvb2xlYW4g
cmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKaW5kZXggMzU0ZmQyNzU4NjQyMDdiNzllZmMyMWFmN2QxOTlkYjBi
MzAxMjBiNC4uNTg5NWVkOTkzNDY2NWVmNjMwYmUzNjUxNzE2MTUxNTJlNDBmODNmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJv
ckNGLmNwcApAQCAtMTQ1LDEzICsxNDUsMTEgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpj
ZkVycm9yKCkgY29uc3QKICAgICBpZiAoIW1fcGxhdGZvcm1FcnJvcikgewogICAgICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICAgICAgaWYgKCFtX2xvY2Fs
aXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZyhBZG9wdENGLCBtX2xvY2FsaXplZERl
c2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXksIGxv
Y2FsaXplZERlc2NyaXB0aW9uU3RyaW5nLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAo
IW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25L
ZXksIG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAg
ICAgICAgaWYgKCFtX2ZhaWxpbmdVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcoQWRvcHRDRiwgbV9mYWlsaW5nVVJMLmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWls
aW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tl
eSwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgZmFpbGluZ1VSTFN0cmlu
Zy5nZXQoKSwgMCkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8u
Z2V0KCksIGZhaWxpbmdVUkxLZXksIHVybC5nZXQoKSk7CkBAIC0xNjIsOCArMTYwLDcgQEAgQ0ZF
cnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICAgICAgICAgIHdrU2V0
U1NMUGVlckNlcnRpZmljYXRlRGF0YSh1c2VySW5mby5nZXQoKSwgbV9jZXJ0aWZpY2F0ZS5nZXQo
KSk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZG9t
YWluU3RyaW5nKEFkb3B0Q0YsIG1fZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBt
X3BsYXRmb3JtRXJyb3IuYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIGRvbWFpblN0cmluZy5nZXQo
KSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CisgICAgICAgIG1fcGxhdGZvcm1FcnJv
ciA9IGFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKICAgICB9CiAKICAgICByZXR1cm4g
bV9wbGF0Zm9ybUVycm9yLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggMDFlOGI4YWU1
YzBkMWM2YTZhOGYwMzMwODVlOTBmMDEwYmMxZjdjNi4uODA3MGMyNTgyYjdjYWEwZGU2ZmUzNWYz
MDc0M2Y3OGIyMGI3N2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0xMzEsNyArMTMxLDcg
QEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiA+JiBjbGllbnRD
ZXJ0cygpCiAKIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJp
bmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBDRlN0
cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVD
RlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAKICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUo
cmVzcG9uc2UsIGRlZmF1bHRNSU1FVHlwZVN0cmluZyk7CiB9CkBAIC0xNjEsOCArMTYxLDggQEAg
c3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9uUmVm
IGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpIHsKICAg
ICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQ
UmVzcG9uc2UoY2ZSZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgaWYgKGh0dHBNZXNzYWdlICYm
IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09IDMwNykg
ewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZChBZG9w
dENGLCBoYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZChBZG9wdENGLCBDRlVSTFJlcXVl
c3RDb3B5SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7CisgICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gaGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgp
LmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5l
d01ldGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVx
dWVzdCkpOwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25zKGxhc3RI
VFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5n
R2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRp
dmUpKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+
IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAs
IGNmUmVxdWVzdCkpOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKQEAgLTE3NSw5ICsx
NzUsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTENvbm5l
Y3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgICAgICAgICAgICAgICAgIFdlYkNv
cmU6OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5KTsKIAogICAgICAgICAg
ICAgICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS5odHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG9yaWdpbmFsQ29udGVudFR5cGVDRihBZG9wdENGLCBvcmlnaW5hbENvbnRlbnRUeXBlLmNy
ZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGlmICghb3JpZ2luYWxDb250ZW50VHlw
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFk
ZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNUUigiQ29udGVudC1UeXBlIiks
IG9yaWdpbmFsQ29udGVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENGVVJM
UmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNU
UigiQ29udGVudC1UeXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3QuZ2V0KCk7
CiAgICAgICAgICAgICB9CkBAIC02MDcsMTAgKzYwNiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsCiAjZW5kaWYKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3Mu
aXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1c2VyKEFkb3B0Q0Ys
IGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBwYXNzKEFkb3B0Q0YsIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbChBZG9wdENGLAotICAgICAg
ICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVzZXIuZ2V0
KCksIHBhc3MuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKKyAg
ICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwg
a0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogICAgICAgICAKICAgICAgICAgS1VS
TCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0
dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtMTAwNSw3ICsxMDAxLDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyRGVmYXVsdEJhc2UoKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmll
cihBZG9wdENGLCBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJp
bmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmco
YmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIHByaXZh
dGVTdG9yYWdlU2Vzc2lvbigpID0gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
Y2ZJZGVudGlmaWVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggMDIzMmM1
NDFmOTZlOTgzNTVjZTcyODQ2MzNjMGQzMGI0MGJiMjk1ZS4uNTg2ODMxYWJkNmYxZDcwNjBkZjlh
Njc1OWYwNjBhNmE1NTFiOWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTExOCwxNCAr
MTE4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEhlYWRlckZpZWxkcyhDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWEKICAgICAgICAgICAgIENGVVJMUmVxdWVz
dFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QsIG9sZEhlYWRlckZpZWxkTmFtZXNbaV0s
IDApOwogICAgIH0KIAotICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
cXVlc3RIZWFkZXJzLmVuZCgpOwotICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSByZXF1ZXN0SGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgQ0ZTdHJpbmdSZWYga2V5ID0gaXQtPmtleS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOwot
ICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZSA9IGl0LT52YWx1ZS5jcmVhdGVDRlN0cmluZygpOwot
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LCBrZXks
IHZhbHVlKTsKLSAgICAgICAgQ0ZSZWxlYXNlKGtleSk7Ci0gICAgICAgIENGUmVsZWFzZSh2YWx1
ZSk7Ci0gICAgfQorICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBy
ZXF1ZXN0SGVhZGVycy5iZWdpbigpLCBlbmQgPSByZXF1ZXN0SGVhZGVycy5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShy
ZXF1ZXN0LCBpdC0+a2V5LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGl0LT52YWx1
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKQEAgLTE0Niw4ICsxNDAsNyBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIHdrU2V0UmVxdWVzdFN0b3Jh
Z2VTZXNzaW9uKFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RvcmFnZVNlc3Npb24oKSwgY2ZSZXF1
ZXN0KTsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXF1ZXN0TWV0aG9k
KEFkb3B0Q0YsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlVSTFJlcXVl
c3RTZXRIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIHJlcXVlc3RNZXRob2QuZ2V0KCkpOwor
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhv
ZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5nRW5h
YmxlZCgpKQogICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoY2ZSZXF1ZXN0LCB0
b0hUVFBQaXBlbGluaW5nUHJpb3JpdHkobV9wcmlvcml0eSkpOwpAQCAtMTY0LDcgKzE1Nyw3IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgdW5z
aWduZWQgZmFsbGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4g
ZW5jb2RpbmdGYWxsYmFja3MoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZmFsbGJhY2tDb3VudCwgMCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgIT0gZmFsbGJhY2tDb3VudDsgKytpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gZW5jb2RpbmdOYW1lKEFkb3B0Q0YsIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gZW5jb2RpbmdOYW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICBDRlN0
cmluZ0VuY29kaW5nIGVuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9F
bmNvZGluZyhlbmNvZGluZ05hbWUuZ2V0KCkpOwogICAgICAgICBpZiAoZW5jb2RpbmcgIT0ga0NG
U3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUo
ZW5jb2RpbmdGYWxsYmFja3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGVu
Y29kaW5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKaW5kZXggYTQ1YmVlZGM0MzMwMDc3MmIz
OWNhZWUyYjM5NDZjYWMzZGYwYmYzMS4uOTU1MDgzNjNhYWU0MjVlYzg4NGE0ODQ3YTUxNTk4Mzdk
MDhkMzk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcApAQCAtNTEsOSArNTEsNyBAQCBDRlVS
TFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewog
ICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewogICAgICAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBtX3VybC5jcmVhdGVDRlVSTCgpKTsKLSAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBtX21pbWVUeXBlLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRleHRFbmNvZGluZ05h
bWUoQWRvcHRDRiwgbV90ZXh0RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICBtX2NmUmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwg
bWltZVR5cGUuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1l
LmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CisgICAgICAgIG1fY2ZSZXNwb25z
ZS5hZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21pbWVUeXBlLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNv
ZGluZ05hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dl
ZCkpOwogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGQ4NmM3NmJjNmY0NWMxODE2NDhlMGE3NzZjZDM5YmFlODkw
ODQwZDYuLjRhN2NkOTAyYWU5ZjAyODdkODk4ZDkyYmQ5ODVkZDc2NmQ0MmExNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OmNyZWF0ZVN0cmVhbXMoKQogICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBlID09IFVu
a25vd24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9z
dChBZG9wdENGLCBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBob3N0ID0gbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAg
ICAvLyBDcmVhdGluZyBzdHJlYW1zIHRvIGZpbmFsIGRlc3RpbmF0aW9uLCBub3QgdG8gcHJveHku
CiAgICAgQ0ZSZWFkU3RyZWFtUmVmIHJlYWRTdHJlYW0gPSAwOwpAQCAtMzU5LDEyICszNTksMTAg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBN
ZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiAgICAgU3RyaW5nIHBhc3N3b3JkOwogICAgIGlmICgh
bV9zZW50U3RvcmVkQ3JlZGVudGlhbHMgJiYgZ2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlh
bHMocHJvdGVjdGlvblNwYWNlLCBsb2dpbiwgcGFzc3dvcmQpKSB7CiAgICAgICAgIC8vIFRyeSB0
byBhcHBseSBzdG9yZWQgY3JlZGVudGlhbHMsIGlmIHdlIGhhdmVuJ3QgdHJpZWQgdGhvc2UgYWxy
ZWFkeS4KLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2dpbkNGKEFkb3B0Q0YsIGxv
Z2luLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBh
c3N3b3JkQ0YoQWRvcHRDRiwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIC8v
IENyZWF0aW5nIGEgdGVtcG9yYXJ5IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkgY3Jl
ZGVudGlhbHMgdG8gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0aCBOVExN
IGF1dGhlbnRpY2F0aW9uLgorICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgcmVxdWVzdCB0
byBtYWtlIENGTmV0d29yayBhcHBseSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5hdGVseSwg
dGhpcyBjYW5ub3Qgd29yayB3aXRoIE5UTE0gYXV0aGVudGljYXRpb24uCiAgICAgICAgIFJldGFp
blB0cjxDRkhUVFBNZXNzYWdlUmVmPiBkdW1teVJlcXVlc3QoQWRvcHRDRiwgQ0ZIVFRQTWVzc2Fn
ZUNyZWF0ZVJlcXVlc3QoMCwgQ0ZTVFIoIkdFVCIpLCBtX2h0dHBzVVJMLmdldCgpLCBrQ0ZIVFRQ
VmVyc2lvbjFfMSkpOwogCi0gICAgICAgIEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZI
VFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlhbHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNh
dGlvbi5nZXQoKSwgbG9naW5DRi5nZXQoKSwgcGFzc3dvcmRDRi5nZXQoKSwgMCk7CisgICAgICAg
IEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZIVFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlh
bHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNhdGlvbi5nZXQoKSwgbG9naW4uY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoYXBwbGllZENyZWRlbnRpYWxzLCBhcHBsaWVkQ3JlZGVudGlh
bHMpOwogCiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nKEFkb3B0Q0YsIENGSFRUUE1lc3NhZ2VDb3B5SGVhZGVyRmllbGRWYWx1ZShkdW1teVJl
cXVlc3QuZ2V0KCksIENGU1RSKCJQcm94eS1BdXRob3JpemF0aW9uIikpKTsKQEAgLTM4OSw3ICsz
ODcsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENG
SFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIENGU3RyaW5nUmVmIFNvY2tldFN0cmVhbUhh
bmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24odm9pZCogaW5mbykKIHsKICAgICBTb2NrZXRT
dHJlYW1IYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRsZSo+KGlu
Zm8pOwotICAgIHJldHVybiBTdHJpbmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxl
LT5tX3VybC5zdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJX
ZWJLaXQgc29ja2V0IHN0cmVhbSwgIiArIGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0ZUNG
U3RyaW5nKCkubGVha1JlZigpOwogfQogCiBzdHJ1Y3QgTWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJ
bmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVxdWVzdE1hYy5tbQppbmRleCA5MzIxNmNiNTVlODU3NzMxMzZmM2U4YzNhMDdj
ZTZmYjU1NmUwNmQyLi5lNjkzNDg0ODFhYjBhMDIxMzc5NGRhMjRlZmJjYzRmNTZkYzAwOGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJl
cXVlc3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tCkBAIC0xNjMsOSArMTYzLDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmVu
Y29kaW5nRmFsbGJhY2tzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICAgICAgdW5zaWdu
ZWQgY291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5LnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBjb3VudDsgKytp
KSB7Ci0gICAgICAgICAgICBDRlN0cmluZ1JlZiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5zRW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRF
bmNvZGluZ1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVU
b0VuY29kaW5nKGVuY29kaW5nTmFtZSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKGVuY29kaW5n
TmFtZSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZSA9
IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3Jl
YXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENG
U3RyaW5nQ29udmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElB
TkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKSk7CisKICAgICAgICAg
ICAgIGlmIChuc0VuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQogICAgICAg
ICAgICAgICAgIFtlbmNvZGluZ0ZhbGxiYWNrcyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhVbnNpZ25lZExvbmc6bnNFbmNvZGluZ11dOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0K
aW5kZXggNmFhNzZmNmRkNzg0ZGEwOWQ3YmZmN2UxZTY4NTVlNzVjYWRhZTk5Yy4uZjk3MTBiMmRk
MjUxODQ2MjAxNTEzMjQyZjQwZjNhNDEyNjRmMjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAt
NDc4LDcgKzQ3OCw3IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3Bv
bnNlUmVmIGNmUmVzcG9uc2UpCiAgICAgfQogICAgIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAg
ICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpk
ZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCku
Y3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRNSU1F
VHlwZVN0cmluZzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDI2MWE5M2I3NjgwNDU1ZDYwNzc4MmFiYjc1MzQ3
MGZjOGQ5ZWMzY2YuLjFiNjE2ZWI2MGJlOTZmYTUxYmVjZjgxNjgxZDVmZmVmYTljNWI5NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNw
cApAQCAtNDYsOCArNDYsNyBAQCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tl
eWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdAogdGVtcGxhdGU8Pgog
UmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0
cjxDRkxvY2FsZVJlZj4gPjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZMb2NhbGVJ
ZGVudGlmaWVyKEFkb3B0Q0YsIGxvY2FsZUlkZW50aWZpZXIuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2Nh
bGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2ZMb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7
CisgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxvY2FsZUlkZW50aWZpZXIuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2
YWlsYWJsZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKaW5kZXggZDdjZGE3OTYyOTg2
MjU3M2EzNWM2YTkyNjg1NzUyMzA1YWI2YzI3ZS4uMjY5N2U3NmYwYmY1OTIzYjE1MmZlZGQ3MTAz
N2U5NzExNDkyNmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9j
Zi9TdHJpbmdDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJp
bmdDRi5jcHAKQEAgLTIzLDggKzIzLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogI2lmIFVTRShDRikKLQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApA
QCAtNTEsNyArNTEsNyBAQCBTdHJpbmc6OlN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiAgICAgfQog
fQogCi1DRlN0cmluZ1JlZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKK1JldGFpblB0
cjxDRlN0cmluZ1JlZj4gU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2ltcGwpCiAgICAgICAgIHJldHVybiBDRlNUUigiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggN2EyZDgyZTQwMmQyNGIz
N2JiYzA3MWY0N2Y5OGUwYTg2NTE4NDkyMS4uMWRhNTYxYjYwNjJiY2FiNDllMDliZmU3OTc4MmIy
NzNmMGRhMDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9T
dHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3Ry
aW5nSW1wbENGLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMzIsNyArMTMzLDcg
QEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAKIH0KIAotQ0ZTdHJpbmdS
ZWYgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiB7CiAgICAgaWYgKCFtX2xlbmd0aCB8fCAhaXNN
YWluVGhyZWFkKCkpIHsKICAgICAgICAgaWYgKGlzOEJpdCgpKQpAQCAtMTUzLDcgKzE1NCw3IEBA
IENGU3RyaW5nUmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKICAgICAvLyBDb3JlRm91
bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIgY3Vy
cmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAgIFN0
cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IDA7CiAKLSAgICByZXR1cm4g
c3RyaW5nOworICAgIHJldHVybiBhZG9wdENGKHN0cmluZyk7CiB9CiAKIC8vIE9uIFN0cmluZ0lt
cGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0aGUgU3RyaW5n
V3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1N0cmluZ0ltcGxNYWMubW0KaW5kZXggNmY1ZTk1M2JhMTkyNWU1NDViYmI1YWM1M2UyMTQ3
NmJiOGYwM2E1Ny4uMmYwODhhN2ViMzYzYzVhY2QwMTQyZjM4NzA5NWI5NjJjMTgxNmE2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1t
CkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAK
ICNpbmNsdWRlICJGb3VuZGF0aW9uRXh0cmFzLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKigp
CiB7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpKTsKKyAgICBy
ZXR1cm4gSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVj
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5j
cHAKaW5kZXggMzEyNDEyZmFhYjhhYzIzNjI4NjUwM2RhY2E1YTkyOGJlYmQ0Mzk2Ni4uYTcwNDc0
OTUyMGZkZDMyZDRlMWUwMGZjZmMwZGVhZjM4N2NiYTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCkBAIC0yODQsNyArMjg0LDcg
QEAgQ1N0cmluZyBUZXh0Q29kZWNNYWM6OmVuY29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGUKICAgICAvLyBFbmNvZGluZyB3aWxsIGNoYW5nZSB0
aGUgeWVuIHNpZ24gYmFjayBpbnRvIGEgYmFja3NsYXNoLgogICAgIFN0cmluZyBjb3B5KGNoYXJh
Y3RlcnMsIGxlbmd0aCk7CiAgICAgY29weS5yZXBsYWNlKCdcXCcsIG1fYmFja3NsYXNoQXNDdXJy
ZW5jeVN5bWJvbCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMoQWRvcHRDRiwgY29w
eS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmcyA9IGNv
cHkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIENGSW5kZXggc3RhcnRQb3MgPSAwOwogICAgIENG
SW5kZXggY2hhcmFjdGVyc0xlZnQgPSBDRlN0cmluZ0dldExlbmd0aChjZnMuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApp
bmRleCBhNWNhOWI3NDQ2OTJmMjg3ZjIzZjM0ODE1MGIwOGY2NWUxZmY5NWZlLi4wZDI1MWRmMTgz
YzdlY2MxOTZiMGRhNzI3ZWFjNTRkNDliMTllNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtNTEsOCArNTEsNyBAQCBi
b29sIFNlYXJjaFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgpCiAjaWYgVVNFKENGKQogc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogewot
ICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZTsK
LSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZT
dHJpbmcoKSk7CisgICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVs
ZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KICNlbmRpZgogCkBAIC02NywxMCArNjYs
OCBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIHNpemVfdCBzaXplID0gc2VhcmNoSXRl
bXMuc2l6ZSgpOwogICAgIGlmIChzaXplKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJh
eUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVt
LmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNo
SXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NG
UHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCA4Mzc0
N2YyMjM1NTZhNmFjMmFhMTY4OWRmZGZhYzFmMWVmMTdjNDc3Li4zMzdkYWNhYjJmNzEyYzk4NmYw
ZjU3MjI5NmE3ODA1NjJjMzE0YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNjMsMTUgKzYzLDE0
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgY2hhciogaW5zcGVj
dG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIjsKIAot
c3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBT
dHJpbmcmIGtleSkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVL
ZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGtleUNGU3RyaW5nKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQgV2Vi
IEluc3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5Q0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVy
biBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdl
YiBJbnNwZWN0b3IgU2V0dGluZyAtICVAIiksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7
CiB9CiAKIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3Ry
aW5nKiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNL
ZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtl
eSk7CiAgICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZShBZG9wdENGLCBDRlBy
ZWZlcmVuY2VzQ29weUFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNl
c0N1cnJlbnRBcHBsaWNhdGlvbikpOwogCiAgICAgaWYgKCF2YWx1ZSkKQEAgLTg4LDEyICs4Nyw3
IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5n
KiBzZXR0aW5nKQogCiBzdGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgc2V0dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RS
ZWY+IG9iamVjdFRvU3RvcmU7Ci0gICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKHNldHRpbmcuY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQVNTRVJUKG9iamVjdFRvU3RvcmUpOwotCi0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVm
ZXJlbmNlcyhrZXkpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUocHJlZmVyZW5jZXNL
ZXkuZ2V0KCksIG9iamVjdFRvU3RvcmUuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxp
Y2F0aW9uKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRlS2V5Rm9yUHJlZmVy
ZW5jZXMoa2V5KS5nZXQoKSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDBlNGIxMDY1Njk4MjVkZDc0ZDc0ZGIyNzc2ZWNjNmQ5MjFlYThkYWEuLjVm
MjgzNTA0YzVkNjY4MjE4NjQ4OTBjZTQ0NWM4MmNmMDBmMTI2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKQEAgLTc5MiwyNCArNzkyLDIwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgICAg
IEtVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkp
OwogICAgICAgICBpZiAocGx1Z2luUGFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsK
ICAgICAgICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6
OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5
KTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIHBsdWdp
blBhZ2VVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBzdHIuZ2V0KCkpOworICAgICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVS
TC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAog
ICAgIGlmICghcGx1Z2luVmlldy0+bWltZVR5cGUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0
aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3Ry
aW5nUmVmKFdlYktpdEVycm9yTUlNRVR5cGVLZXkpOwotCi0gICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXks
IHN0ci5nZXQoKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgp
LCBrZXksIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAg
ICAgfQogCiAgICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpKSB7CiAgICAgICAgIFN0cmluZyBw
bHVnaW5OYW1lID0gcGx1Z2luVmlldy0+cGx1Z2luKCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFw
bHVnaW5OYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9y
UGx1Z0luTmFtZUtleSk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cihB
ZG9wdENGLCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgc3RyLmdldCgpKTsKKyAgICAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDZlNjg3ZjE5MzRhZjgwNGJkZjk0OTlk
ZWZmNjFlNzdmNTM1Y2NiMjAuLjE1ODcyZTM0ZjlhNTQ0NTBhZjNiNDQ5ZjgyY2RmMGIyYWZiZWI0
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtNDAxLDgg
KzQwMSw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFi
YXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0CiAgICAgUmV0YWluUHRyPENGTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZU11dGFi
bGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRhdGFiYXNlTmFt
ZUtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJEYXRh
YmFzZU5hbWVLZXkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIGRh
dGFiYXNlTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwgZGF0YWJhc2VOYW1lS2V5LCBzdHIuZ2V0KCkpOworICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBkYXRhYmFzZU5hbWVLZXksIGRhdGFiYXNlTmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9w
ZXJ0eUJhZz4gdXNlckluZm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5z
dGFuY2UoKTsKICAgICB1c2VySW5mb0JhZy0+c2V0RGljdGlvbmFyeSh1c2VySW5mby5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDFmN2E1NzJjMzQ0NWQ3Y2JjNTc2M2FmOWQ5
MWI5ZWRkNzg5NTEwOWYuLmE3MzEwYjgwYjBkNDM0NDA0Zjk4NThkYzhkYjU1YzkzZjFhNTg5NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgSFJFU1VMVCBX
ZWJIaXN0b3J5OjphZGRJdGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnksIGJvb2wgZGlzY2FyZER1
cGxpY2F0ZSwgYm9vbCoKIAogdm9pZCBXZWJIaXN0b3J5Ojp2aXNpdGVkVVJMKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBib29s
IHdhc0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KQogewotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIHVybC5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyA9IHVybC5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpOwogCi0gICAgSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSA9IChJV2Vi
SGlzdG9yeUl0ZW0qKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShtX2VudHJpZXNCeVVSTC5nZXQoKSwg
dXJsU3RyaW5nLmdldCgpKTsKKyAgICBJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5ID0gKElXZWJIaXN0
b3J5SXRlbSopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobV9lbnRyaWVzQnlVUkwuZ2V0KCksIHVybFN0
cmluZy5nZXQoKSk7CiAgICAgaWYgKGVudHJ5KSB7CiAgICAgICAgIENPTVB0cjxJV2ViSGlzdG9y
eUl0ZW1Qcml2YXRlPiBlbnRyeVByaXZhdGUoUXVlcnksIGVudHJ5KTsKICAgICAgICAgaWYgKCFl
bnRyeVByaXZhdGUpCkBAIC03ODYsMTEgKzc4NiwxMCBAQCBIUkVTVUxUIFdlYkhpc3Rvcnk6OnJl
bW92ZUl0ZW1Gb3JVUkxTdHJpbmcoQ0ZTdHJpbmdSZWYgdXJsU3RyaW5nKQogCiBDT01QdHI8SVdl
Ykhpc3RvcnlJdGVtPiBXZWJIaXN0b3J5OjppdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKSBjb25zdAogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0ZTdHJp
bmcoQWRvcHRDRiwgdXJsU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghdXJsQ0ZT
dHJpbmcpCisgICAgaWYgKCF1cmxTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogICAgIENPTVB0
cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW07Ci0gICAgaWYgKEZBSUxFRChpdGVtRm9yVVJMU3RyaW5n
KHVybENGU3RyaW5nLmdldCgpLCAmaXRlbSkpKQorICAgIGlmIChGQUlMRUQoaXRlbUZvclVSTFN0
cmluZyh1cmxTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgJml0ZW0pKSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgcmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRl
bS5jcHAKaW5kZXggYTI2NDMwODlkY2Q3OWQ4MjQyNTIwMTk2MjEzMjdmY2E5ZjgyZDk4Mi4uOGJm
ZTliZDdjMDc3Y2NmYmU4YjA3YWI1OTFhYzM5NzA2NTI0MzIxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykhpc3RvcnlJdGVtLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViSGlzdG9yeUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiogZGlj
dGlvCiAKICAgICBpZiAoIW1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmlzRW1wdHkoKSkgewog
ICAgICAgICBrZXlzW2tleUNvdW50XSA9IHVybEtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50
KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAg
ICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgfQogCiAgICAga2V5c1trZXlDb3VudF0gPSBsYXN0
VmlzaXRlZERhdGVLZXk7CkBAIC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJIaXN0b3J5SXRlbTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0
aW8KIAogICAgIGlmICghbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5pc0VtcHR5KCkpIHsKICAgICAg
ICAga2V5c1trZXlDb3VudF0gPSB0aXRsZUtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50Kytd
ID0gbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICB2YWx1
ZXNba2V5Q291bnQrK10gPSBtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCku
bGVha1JlZigpOwogICAgIH0KIAogICAgIGtleXNba2V5Q291bnRdID0gdmlzaXRDb3VudEtleTsK
QEAgLTI0NSw3ICsyNDUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJ
dGVtOjpkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24odm9pZCoqIGRpY3RpbwogICAgICAgICBBU1NF
UlQoc2l6ZSk7CiAgICAgICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IG5ldyBDRlN0cmluZ1JlZltz
aXplXTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
ICAgICBpdGVtc1tpXSA9IHJlZGlyZWN0VVJMcy0+YXQoaSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAg
ICAgICAgICAgIGl0ZW1zW2ldID0gcmVkaXJlY3RVUkxzLT5hdChpKS5jcmVhdGVDRlN0cmluZygp
LmxlYWtSZWYoKTsKICAgICAgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAs
IChjb25zdCB2b2lkKiopaXRlbXMsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgIENGUmVs
ZWFzZShpdGVtc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRleCAy
NWQ3ZWMwOWI5ODYxZTQ0MzQ5MWUzNDZkNTBkNGUyMmM3NzFiODQ1Li4wNWE5NDkwOGE4ODg0MTJi
MTVkMzk0NjNkMTM5MjlhOTE2NzQ5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJJY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFz
ZS5jcHAKQEAgLTM2Niw3ICszNjYsNyBAQCBCU1RSIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFi
YXNlRGlkQWRkSWNvbk5vdGlmaWNhdGlvbigpCiAKIENGU3RyaW5nUmVmIFdlYkljb25EYXRhYmFz
ZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKQogewotICAgIHN0YXRp
YyBDRlN0cmluZ1JlZiBpY29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNh
dGlvblVzZXJJbmZvVVJMS2V5KS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiBpY29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJ
bmZvVVJMS2V5KS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gaWNvblVz
ZXJJbmZvVVJMS2V5OwogfQogCkBAIC0zODcsOCArMzg3LDcgQEAgc3RhdGljIHZvaWQgcG9zdERp
ZEFkZEljb25Ob3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBXZWJJY29uRGF0YWJh
c2UqIGkKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShB
ZG9wdENGLCAKICAgICBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsKEFkb3B0Q0YsIHBhZ2VVUkwuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwg
V2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgp
LCB1cmwuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCks
IFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXko
KSwgcGFnZVVSTC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm8gPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3Jl
YXRlSW5zdGFuY2UoKTsKICAgICB1c2VySW5mby0+c2V0RGljdGlvbmFyeShkaWN0aW9uYXJ5Lmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5n
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4
IGZkNjFhMDFmYmFmMGVjYTcxNDQ2M2JiMWQ1NzBjZmZhNDFiNzY1OGQuLmRmYjcxNGI0NjUwNjFh
YjIwMzUyYmEzZDc1Nzc0ZmJlZmFmMjdkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTG9j
YWxpemFibGVTdHJpbmdzLmNwcApAQCAtMTMyLDEyICsxMzIsMTAgQEAgc3RhdGljIENGQnVuZGxl
UmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3RyaW5n
IGJ1bmRsZVBhdGhTdHJpbmcocGF0aFN0cik7Ci0gICAgQ0ZTdHJpbmdSZWYgYnVuZGxlUGF0aENG
U3RyaW5nID0gYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpOwotICAgIGlmICghYnVu
ZGxlUGF0aENGU3RyaW5nKQorICAgIGlmICghYnVuZGxlUGF0aFN0cmluZykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBDRlVSTFJlZiBidW5kbGVVUkxSZWYgPSBDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aCgwLCBidW5kbGVQYXRoQ0ZTdHJpbmcsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUs
IHRydWUpOwotICAgIENGUmVsZWFzZShidW5kbGVQYXRoQ0ZTdHJpbmcpOworICAgIENGVVJMUmVm
IGJ1bmRsZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBh
dGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwg
dHJ1ZSk7CiAgICAgaWYgKCFidW5kbGVVUkxSZWYpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0x
NjgsOCArMTY2LDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9t
QnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAgICBpZiAoIWJ1bmRsZSkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBr
ZXlTdHJpbmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGU3RyaW5nUmVm
IHJlc3VsdCA9IENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5n
LmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKTsKKyAgICBDRlN0cmluZ1JlZiByZXN1bHQg
PSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKTsKIAogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3Ry
aW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1NjM0YTE1YjNlZDNlMDFjMjYwNGE1YmUyNjAxMzcx
MWZkY2NkYzMzLi44OTY3YjBiMzBhZTRkNDIzMzU4YjlmY2U2ZjU4MzE5MWM5NmMwYzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBX
ZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplUHJl
ZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAgIFN0cmluZyBkZWZhdWx0RGVmYXVsdEVu
Y29kaW5nKFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEiLCAiVGhlIGRlZmF1bHQsIGRlZmF1bHQg
Y2hhcmFjdGVyIGVuY29kaW5nIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZh
dWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZl
cmVuY2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJT
dHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uUHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4
IDZiMWJhZGU0YWFmMmU5NWEyMDRmOTJhMjZkNGFiMDI0MGEyNzI4MzguLjNhMWI3NGUyMTM1MWZh
ZGE2ZDQxYWNkZjg5ZjI1NGE4M2FhY2I2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC00NzEs
NyArNDcxLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2Fj
aGVNb2RlbCkKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxDYWNoZShBZG9wdENG
LCBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOwogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2Z1cmxDYWNoZURpcmVjdG9yeShBZG9wdENGLCB3a0NvcHlGb3VuZGF0aW9uQ2FjaGVE
aXJlY3RvcnkoMCkpOwogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAgICAgICAgY2Z1
cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENhY2hlRGlyZWN0
b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRl
Q0ZTdHJpbmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFk
IG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291bnQgZG9lc24n
dCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC00NzEyLDggKzQ3MTIs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICAg
ICAgcmV0dXJuIGhyOwogCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5n
KEFkb3B0Q0YsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCB1cmxTdHJpbmcuZ2V0KCksIDApKTsKKyAgICAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogCiAgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBwYXNzZWQgaW4gc3RyaW5nIGlzIGEgcGF0aCBhbmQgY29udmVy
dCBpdCB0byBhIFVSTC4KICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZv
ciBuaWdodGx5IGJ1aWxkcyB1bnRpbCB3ZSBjYW4gZ2V0IFNhZmFyaSB0byBwYXNzIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0KaW5kZXggNGEzNWI2YTJkOGEzMmM1ZGQ4
MzQ5NzJjZDJmZGYyYWRjMzkxZTYxYS4uMzY4NzUzMTUxNzIxOGRhMjllOWNkZGRhNDIzMmEzYjEy
ODI1MzMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCkBAIC0z
MCwxMiArMzAsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkK
IHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgbV9wYXRo
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFk
b3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGJ1bmRsZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVVUkwp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVu
ZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVS
TC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihD
RkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAg
ICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZTdk
NTgzMWY2MDhjMzgzMGUzYzliZTE0YjM5NDY1ZWIyYzcxYzNiLi42NzFmMjBkNmRjYWJlMWZjMWJh
Mzk1NTdkNWU2MjhlZTdlZDdlZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTI3OSw4ICsyNzksNyBAQCBzdGF0
aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0
IFN0cmluZyYgc2FuZGJveFBybwogICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGgu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmUGx1Z2luUGF0aCA9IGFkb3B0Q0YocGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgY2ZQbHVnaW5QYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdp
blVSTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTIsOCArMjkxLDcgQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcm
IHNhbmRib3hQcm8KICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTYW5kYm94UHJvZmlsZURpcmVjdG9yeVBh
dGggPSBhZG9wdENGKHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlNhbmRib3hQcm9maWxlRGly
ZWN0b3J5UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKIAogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZTdHJpbmdDcmVhdGVX
aXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlmaWVyKTsKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZp
bGVTeXN0ZW1QYXRoUmVsYXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1lLmdldCgpLCBrQ0ZV
UkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5LmdldCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggODFiMzhlMGVj
OGZlM2M0MTg4OTc5ZWVmZDA2MjI3YjM3MGZkNGEzZS4uM2RjMzc3YzQ0NTBkODhmZTI1ZjcwMmIw
ZmE1NDNhMzhlMjhmNmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1h
Yy5tbQpAQCAtMzUyLDExICszNTIsMTAgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21D
YXJib25SZXNvdXJjZXMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmYKIAogYm9v
bCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgpLCBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1
bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJ
WFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlhbGl6ZSB0aGUg
YnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVu
ZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMzk1LDExICszOTQsOSBAQCBib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
UGx1Z2luTW9kdWxlSQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5N
SU1FVHlwZXNQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwg
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxl
UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRy
PENGVVJMUmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCi0gICAgLy8gVHJ5IHRvIGlu
aXRpYWxpemUgdGhlIGJ1bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShB
ZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5k
bGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYg
KCFidW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggY2RmZjM0NDY5
YTIzOTNkMzVhZGJhYmM0Y2IwYTM4YmEwZjU2MjMyNC4uN2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1
NGM1OGFiM2E0OGEyYjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Nm
L1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Y2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCkBAIC05NCw5ICs5NCw5IEBAIENGRGljdGlvbmFy
eVJlZiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9u
KFdlYlBhZ2VQcm94CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwoQWRvcHRDRiwgbV9lbnRyaWVzW2ld
LT51cmwoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB0aXRsZShBZG9wdENGLCBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxVUkwoQWRvcHRDRiwgbV9l
bnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHVybCA9IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZSA9IG1fZW50cmllc1tp
XS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG9yaWdpbmFsVVJMID0gbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3Ry
aW5nKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgQ29yZUlQQyBkYXRhIGVu
Y29kaW5nIGZvcm1hdCwgd2hpY2ggbWVhbnMgdGhhdCB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIENv
cmVJUEMgZW5jb2Rpbmcgd2UgbmVlZCB0byBidW1wIHRoZSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0
YVZlcnNpb24KICAgICAgICAgLy8gY29uc3RhbnQgaW4gV2ViUGFnZVByb3h5Q0YuY3BwLiBUaGUg
Q29yZUlQQyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRh
aWwsIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gZGlzay4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCmluZGV4IDc5
ZGQ4Y2VkMDJkN2NlMGQ0ZjNjMjQwNDgxOGI4MDFiZTQwZjFmN2EuLmQyMmVlZDI5NGMwY2YzZjhm
MTJjNzNlZTg4MjBhNWMzZGJjZTk1MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYlBhZ2VQcm94eUNGLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYXNzUmVmUHRyPFdlYkRh
dGE+IFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YShXZWJQYWdlUHJveHlTZXNzaW9uU3Rh
dGVGaWx0ZQogICAgICAgICBpZiAocHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcHJvdmlzaW9uYWxVUkwgPSBtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKICAgICAg
ICAgaWYgKCFwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHByb3Zpc2lv
bmFsVVJMU3RyaW5nLmFkb3B0Q0YocHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBwcm92aXNpb25hbFVSTFN0cmluZyA9IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNG
U3RyaW5nKCk7CiAgICAgICAgICAgICBrZXlzW251bVZhbHVlc10gPSBQcm92aXNpb25hbFVSTEtl
eSgpOwogICAgICAgICAgICAgdmFsdWVzW251bVZhbHVlc10gPSBwcm92aXNpb25hbFVSTFN0cmlu
Zy5nZXQoKTsKICAgICAgICAgICAgICsrbnVtVmFsdWVzOwpAQCAtMTc5LDggKzE3OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSogd2Vi
RGF0YSkKIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3Qg
U3RyaW5nJiBuYW1lKQogewotICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFy
Y2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9w
dENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuICgiY29tLmFwcGxlLldlYktp
dC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKQEAgLTE5MiwxMCArMTkxLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JgogCiAgICAgaWYgKHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMuc2l6ZSgp
KSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwg
JmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBpdGVtKEFk
b3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAgICAgfQorICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIENGQXJy
YXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmco
KS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1dG9zYXZl
S2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGlj
YXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNvdXJjZUNh
Y2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXggNjgxMGYw
YWJkYjlkYmViYTk5ZmEzZTFlOWIwZjA2Y2U0NWFlMDQ5NC4uMzk1NjQ5YzUwYmY0ZDZkZjA0YmM3
NTQwYjU0YmFmNTlkYjJjMzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXIu
Y3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlcjo6Y2xl
YXJDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwKICNpZiBVU0Uo
Q0ZVUkxDQUNIRSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9IEluTWVtb3J5UmVz
b3VyY2VDYWNoZXNPbmx5KSB7IAogICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+
IGhvc3RBcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFy
cmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9zdChBZG9w
dENGLCBvcmlnaW4tPmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZBcnJheUFw
cGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwgaG9zdC5nZXQoKSk7CisgICAgICAgIENGQXJyYXlB
cHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCksIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpOwogCiAgICAgICAgIGNsZWFyQ0ZVUkxDYWNoZUZvckhvc3ROYW1lcyhob3N0QXJy
YXkuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IDYyOTRmMDBkODhkZGEwNGJlNTI0MTA3YzZi
ZjY1OWJjOWU3MzBiYzQuLmM2ZjViNjc4MTJjMzMwZTQxNzE2ZTE1OGIxNGZhMTg1Y2E0ODUyYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQ
YWdlV2luLmNwcApAQCAtMjcwLDggKzI3MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZDYWNoZWRV
UkxSZXNwb25zZVJlZj4gY2FjaGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFnZSwKICAg
ICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6Y3VycmVudFN0b3Jh
Z2VTZXNzaW9uKCksIHJlcXVlc3QuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHVzZXJBZ2VudChBZG9wdENGLCB3ZWJQYWdlLT51c2VyQWdlbnQoKS5jcmVhdGVD
RlN0cmluZygpKTsKLSAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1
ZXN0LmdldCgpLCBDRlNUUigiVXNlci1BZ2VudCIpLCB1c2VyQWdlbnQuZ2V0KCkpOworICAgIENG
VVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZ2V0KCksIENGU1RSKCJV
c2VyLUFnZW50IiksIHdlYlBhZ2UtPnVzZXJBZ2VudCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogCiAgICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNhY2hlOwogI2lmIFVTRShDRlVSTFNU
T1JBR0VTRVNTSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvd2lu
L1dlYlByb2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJv
Y2Vzc1dpbi5jcHAKaW5kZXggMjVkYmMzNmM0OTliZjM5NDY5MzRiNGUxMmU2NTYyMzBhZDliYjE5
Mi4uZGE0YjU2ZGM4ODZjM2JhYmFkNzczN2Q4N2Q4ZTc0NzQ5MWM5ZWE0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVNb2RlbCBj
YWNoZU1vZGVsKQogICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5LmFkb3B0Q0Yod2tDb3B5Rm91
bmRhdGlvbkNhY2hlRGlyZWN0b3J5KDApKTsKIAogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9y
eSkKLSAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNl
clNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBj
ZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGly
ZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1
c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAg
Ly8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBA
IC0xNDgsMTMgKzE0OCwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdl
YlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogICAgIGlmIChkZWZh
dWx0U3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0Q0YsIHBhcmFtZXRlcnMuZGlza0NhY2hlRGlyZWN0b3J5
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghY2FjaGVQYXRoKQorICAgIGlmICghcGFyYW1l
dGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENGSW5kZXgg
Y2FjaGVEaXNrQ2FwYWNpdHkgPSBwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAg
ICAgQ0ZJbmRleCBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gcGFyYW1ldGVycy5jZlVSTENhY2hlTWVt
b3J5Q2FwYWNpdHk7Ci0gICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHVpUHJvY2Vzc0NhY2hl
KEFkb3B0Q0YsIENGVVJMQ2FjaGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2FjaGVNZW1v
cnlDYXBhY2l0eSwgY2FjaGVEaXNrQ2FwYWNpdHksIGNhY2hlUGF0aC5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRlVSTENhY2hlUmVmPiB1aVByb2Nlc3NDYWNoZShBZG9wdENGLCBDRlVSTENhY2hl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNhY2hlTWVtb3J5Q2FwYWNpdHksIGNhY2hlRGlz
a0NhcGFjaXR5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5jcmVhdGVDRlN0cmluZygp
LmdldCgpKSk7CiAgICAgQ0ZVUkxDYWNoZVNldFNoYXJlZFVSTENhY2hlKHVpUHJvY2Vzc0NhY2hl
LmdldCgpKTsKICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdiMTNjODc4YzFmZjUxOTUwMmJmZmRh
MjQwOGRkZmM2OGFmMmRiN2IuLmU5MDBlY2NhZTZhZGQ0YjIxZGNjOTg3NmQ0MDk4M2IxN2E5MjA0
ZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxMi0xMC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJldHVybiBh
IFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxlUGFnZU1h
Yy5tbToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorCiAyMDEyLTEwLTI4ICBNYXJrIFJvd2UgIDxtcm93
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgWGNvZGUgY29uZmlndXJhdGlvbiBzZXR0
aW5ncyB0aGF0IHVzZWQgdG8gdmFyeSBiZXR3ZWVuIE9TIHZlcnNpb25zLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRCdW5kbGVQ
YWdlTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5q
ZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCmluZGV4IDQ2YzI3M2YxZjhjYTQwYWVlMjdjOTQ3NmM4MWZl
NzM5NGMzM2JiMjQuLmIwY2I0ZTAzMWNiNzQ0NjI4YzBiYzM0ZDU3ZDE3NmI2ODdhZjEzNDUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVj
dGVkQnVuZGxlUGFnZU1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0KQEAgLTg1LDggKzg1LDcgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZShXS0J1bmRsZUZyYW1lUmUKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAg
ICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkNSQVNISU5HIFRFU1Q6ICIpOwogICAgICAgICBi
dWlsZGVyLmFwcGVuZCh0ZXN0UGF0aCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2ZTdHJpbmcoQWRvcHRDRiwgYnVpbGRlci50b1N0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkpOwot
ICAgICAgICBXS1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0aW9uKGNm
U3RyaW5nLmdldCgpKTsKKyAgICAgICAgV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9uU3BlY2lm
aWNJbmZvcm1hdGlvbihidWlsZGVyLnRvU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7
CiAgICAgfQogI2VuZGlmCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171350</attachid>
            <date>2012-10-29 18:02:13 -0700</date>
            <delta_ts>2012-10-30 09:03:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100419-20121029180040.patch</filename>
            <type>text/plain</type>
            <size>80680</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGE4MTI3YjlmMTMxMjQ1ZTUzMDAwZDZi
ZmVhMTZkYTNkZTZhMWJmMjIuLjg0OWY4ODFjYTQ1NTFiNmM1NGY4MDViMzJjNDA4MmRlOWZkZWVl
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3Vs
ZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1ha2UgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBhbmQgU3RyaW5nSW1wbDo6
Y3JlYXRlQ0ZTdHJpbmcgcmV0dXJuIFJldGFpblB0cnMuCisKKyAgICAgICAgKiB3dGYvdGV4dC9B
dG9taWNTdHJpbmcuaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAg
ICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMTItMTAtMjggIE1hcmsgUm93ZSAgPG1yb3dl
QGFwcGxlLmNvbT4KIAogICAgICAgICBTaW1wbGlmeSBYY29kZSBjb25maWd1cmF0aW9uIHNldHRp
bmdzIHRoYXQgdXNlZCB0byB2YXJ5IGJldHdlZW4gT1MgdmVyc2lvbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OGM2MGJhZWUyOWIxMGViZTVkNGIxNGJiZGE5YmFlMjJiNTkxZmI3Zi4uNjFkNjc1YWNmMjMzMDY2
YzliMGUxZDIyZjk4YzY3MmQxNzRkN2ViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg3IEBACisy
MDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQgcmV0dXJuIGEgUmV0YWluUHRyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA0MTkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FsbGVy
cyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisgICAgICAgICogYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y2FsbE9iakNGYWxsYmFja09i
amVjdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UpOgorICAgICAg
ICAqIGxvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlUHJvcGVydHlMaXN0UmVwcmVzZW50YXRpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL0xvY2FsaXplZFN0cmluZ3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Zm9ybWF0TG9jYWxpemVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRleHRN
ZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjprZXlnZW5L
ZXljaGFpbkl0ZW1OYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmltYWdlVGl0bGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjptYWluQnVuZGxlSXNFcXVhbFRvKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jZi9GaWxlU3lz
dGVtQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhdGhBc1VSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1D
QUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChyZXN1Ym1pdEFs
bEFuaW1hdGlvbnMpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjphZGRBbmltYXRpb25Gb3JL
ZXkpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpyZW1vdmVBbmltYXRpb25Gb3JLZXkpOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyOjpzZXROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWwuY3BwOgorICAgICAgICAo
UGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnV0
aUZyb21NSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3Vy
Y2VDR01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlRm9ySW1hZ2VTb3VyY2VUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlw
ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp1dGlUeXBlRnJvbUNvY29hVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NTTEtleUdl
bmVyYXRvck1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVDRik6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRD
b29raWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkROU1Jlc29sdmVRdWV1ZTo6cGxhdGZvcm1SZXNvbHZlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpjZkVycm9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0RGVm
YXVsdE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OndpbGxTZW5kUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzZXRQcml2YXRlQnJv
d3NpbmdFbmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVx
dWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEhlYWRlckZpZWxkcyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpjZlVSTFJlc3BvbnNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNGTmV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZTo6Y3JlYXRlU3RyZWFtcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFs
cyk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGU6OmNvcHlDRlN0cmVhbURl
c2NyaXB0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJlcXVl
c3RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvVXBkYXRlUGxh
dGZvcm1SZXF1ZXN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJM
UmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L2NmL0h5cGhlbmF0aW9uQ0YuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6OjpjcmVhdGVWYWx1ZUZvcktleSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4
dC9jZi9TdHJpbmdDRi5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcp
OgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvY2YvU3RyaW5nSW1wbENGLmNwcDoKKyAgICAgICAg
KFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvbWFjL1N0cmluZ0ltcGxNYWMubW06CisgICAgICAgIChXVEY6OlN0cmluZ0ltcGw6Om9wZXJh
dG9yIE5TU3RyaW5nICopOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01h
Yy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29kZWNNYWM6OmVuY29kZSk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjphdXRvc2F2ZUtleSk6CisgICAgICAgIChXZWJDb3JlOjpTZWFyY2hQb3B1cE1lbnVXaW46OnNh
dmVSZWNlbnRTZWFyY2hlcyk6CisKIDIwMTItMTAtMjkgIFZpbmNlbnQgU2NoZWliICA8c2NoZWli
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMyODQ1
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L2NmL0NoYW5nZUxvZwppbmRleCA1ODYzZTkyZjRmZmJlZTQwZjI0ZWVmOTUyYjNhMDc1MDdkNDJl
Y2M1Li4xYjE3N2Q3OTZlNzhlODVjNzhlYmEzNGQ0MjhmNjM5NjNjMzBiMzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEwLTI5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nOjpjcmVhdGVDRlN0cmluZyBzaG91bGQg
cmV0dXJuIGEgUmV0YWluUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA0MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgY2FsbGVycyBvZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAgICAg
ICAoY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMpOgorICAgICAgICAocG9wdWxhdGVTZXR0aW5nKToK
KyAgICAgICAgKHN0b3JlU2V0dGluZyk6CisKIDIwMTItMDktMDUgIFNhbSBXZWluaWcgIDxzYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBQYXJ0IDIgb2YgcmVtb3ZpbmcgUGxhdGZvcm1TdHJpbmcu
aCwgcmVtb3ZlIFBsYXRmb3JtU3RyaW5nLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxMWQ1MGIxNzdk
YWY2ZTIwZjdhYWFkYjEzYjEyNWVlNWNkOTUwMGUzLi5lZWZlYzUxZmZlNDNhMmU3MTViYWY4MmQ5
YTA3YWRlMjI2YzhiOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTIt
MTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBT
dHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5QdHIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQxOQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYWxsZXJzIG9m
IFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAgICAgICogV2ViRGF0YWJhc2VNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGlzcGF0Y2hEaWRNb2RpZnlEYXRh
YmFzZSk6CisgICAgICAgICogV2ViSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJIaXN0b3J5Ojp2
aXNpdGVkVVJMKToKKyAgICAgICAgKFdlYkhpc3Rvcnk6Oml0ZW1Gb3JVUkxTdHJpbmcpOgorICAg
ICAgICAqIFdlYkhpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkhpc3RvcnlJdGVtOjpkaWN0
aW9uYXJ5UmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIFdlYkljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZU5vdGlmaWNhdGlvblVzZXJJbmZv
VVJMS2V5KToKKyAgICAgICAgKHBvc3REaWRBZGRJY29uTm90aWZpY2F0aW9uKToKKyAgICAgICAg
KiBXZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwOgorICAgICAgICAoY3JlYXRlV2ViS2l0QnVuZGxl
KToKKyAgICAgICAgKGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9tQnVuZGxlKToKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURl
ZmF1bHRTZXR0aW5ncyk6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3
OjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZCk6CisKIDIwMTItMTAtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBhIHN0cmF0ZWd5IGZvciBsb2FkZXIgY3VzdG9taXphdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCA0ZWY0NDFlZGNjYzE3ZWI3MTY4ZjcyZDkxMGVjY2ZmMGYzZmY0ODY2Li5kNjZmNzJi
M2M0MGE1YzQ4ODQyMWEzZmM5YWNkYTY2NGNhMDljY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzMgQEAKKzIwMTItMTAtMjkgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nIHNob3VsZCByZXR1cm4gYSBSZXRhaW5Q
dHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0
ZSBjYWxsZXJzIG9mIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcuCisKKyAgICAgICAgKiBQbGF0Zm9y
bS9tYWMvTW9kdWxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2R1bGU6OmxvYWQpOgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OmluaXRpYWxpemVTYW5kYm94KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW5Nb2R1bGU6OmNyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZlcmVuY2VzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZURhdGEpOgorICAgICAgICAoV2Vi
S2l0OjphdXRvc2F2ZUtleSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZVJl
Y2VudFNlYXJjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUNhY2hl
TWFuYWdlcjo6Y2xlYXJDYWNoZUZvck9yaWdpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL3dpbi9XZWJQYWdlV2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Y2FjaGVkUmVzcG9uc2VG
b3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKwog
MjAxMi0xMC0yOSAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAog
ICAgICAgICBDb29yZGluYXRlZCBHcmFwaGljczogRGVsZXRlIGNhY2hlZCBTaGFyZWFibGVTdXJm
YWNlcyB3aGVuIHB1cmdpbmcgYmFja2luZ1N0b3Jlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
aW5kZXggMDllZjY0NjgwMWZiYzliNTY4ZWZlNGU2ODc2YTljZTBhMzljMGFhYi4uZWI0NjYyYzVj
MjRkYTExY2QzNzg5OTZjMDU2Y2JjOTFjNWU4ZmNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKQEAgLTY3LDYgKzY3LDcgQEAgc3RydWN0IENoYXJCdWZmZXJGcm9tTGl0ZXJhbERhdGFUcmFu
c2xhdG9yOwogY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIHN0cnVjdCBTdWJzdHJpbmdUcmFuc2xh
dG9yOwogc3RydWN0IFVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBSZXRhaW5QdHI7CiAKIGVudW0gVGV4dENhc2VTZW5zaXRpdml0eSB7IFRleHRDYXNlU2Vu
c2l0aXZlLCBUZXh0Q2FzZUluc2Vuc2l0aXZlIH07CiAKQEAgLTcxNCw3ICs3MTUsNyBAQCBwdWJs
aWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRl
ZmF1bHRXcml0aW5nRGlyZWN0aW9uKGJvb2wqIGhhc1N0cm9uZ0RpcmVjdGlvbmFsaXR5ID0gMCk7
CiAKICNpZiBVU0UoQ0YpCi0gICAgQ0ZTdHJpbmdSZWYgY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUNGU3RyaW5nKCk7CiAjZW5kaWYKICNpZmRlZiBf
X09CSkNfXwogICAgIG9wZXJhdG9yIE5TU3RyaW5nKigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
aW5kZXggZTU4YmFlZDg1YWY1YWU5MGNlN2YzZTAzZmU0MGViZWQ4ZGQzYzY4ZC4uNjI0ZWI1NGFh
YzdmZDczN2FhY2YzMWExYzVkYjkyYjA0ZmQ2ZGUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
CkBAIC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgPG9iamMvb2JqYy5oPgogI2VuZGlmCiAKLSNp
ZiBVU0UoQ0YpCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpbmdSZWY7
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKFFUKQogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBR
U3RyaW5nOwpAQCAtMzkyLDcgKzM4OCw3IEBAIHB1YmxpYzoKIAogI2lmIFVTRShDRikKICAgICBT
dHJpbmcoQ0ZTdHJpbmdSZWYpOwotICAgIENGU3RyaW5nUmVmIGNyZWF0ZUNGU3RyaW5nKCkgY29u
c3Q7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVDRlN0cmluZygpIGNvbnN0Owog
I2VuZGlmCiAKICNpZmRlZiBfX09CSkNfXwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvb2JqY19ydW50aW1lLm1tIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19ydW50aW1lLm1tCmluZGV4IDJjZjBkYjU2MThlMzgyMGNkZjQ0NjQ1NTgzNDFmNjk0ZjUzZDFm
YTMuLmJlMjRmZGIzZmRiMTM3YzgwYjZmMGE0ZmI4ODc0MWFiMzQxYTRkNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KQEAgLTI0OCw4ICsyNDgsNyBAQCBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsT2JqQ0ZhbGxiYWNrT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNf
Y2FzdDxPYmpjQ2xhc3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwogICAgICAgICBPd25Q
dHI8T2JqY01ldGhvZD4gZmFsbGJhY2tNZXRob2QoYWRvcHRQdHIobmV3IE9iamNNZXRob2Qob2Jq
Y0NsYXNzLT5pc2EoKSwgQHNlbGVjdG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3Jp
cHQ6d2l0aEFyZ3VtZW50czopKSkpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG5hbWVJZGVudGlm
aWVyID0gc3RhdGljX2Nhc3Q8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wKj4oZXhlYy0+Y2FsbGVlKCkp
LT5wcm9wZXJ0eU5hbWUoKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuYW1lKEFk
b3B0Q0YsIG5hbWVJZGVudGlmaWVyLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBmYWxsYmFj
a01ldGhvZC0+c2V0SmF2YVNjcmlwdE5hbWUobmFtZS5nZXQoKSk7CisgICAgICAgIGZhbGxiYWNr
TWV0aG9kLT5zZXRKYXZhU2NyaXB0TmFtZShuYW1lSWRlbnRpZmllci5jcmVhdGVDRlN0cmluZygp
LmdldCgpKTsKICAgICAgICAgcmVzdWx0ID0gb2JqY0luc3RhbmNlLT5pbnZva2VPYmpjTWV0aG9k
KGV4ZWMsIGZhbGxiYWNrTWV0aG9kLmdldCgpKTsKICAgICB9CiAgICAgICAgICAgICAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDQ1OGVhYzY5ZjZlZjYyZjY2
YTQ0YTg2YTEyNjEyN2EzNWIxOGQxZjIuLmU5Y2QxYWZmYzllNjYxZDk4ZTRlNjRkOTc2NDRhOWEx
MWJmYmQ0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
OTE2LDggKzkxNiw3IEBAIHN0YXRpYyBLVVJMIGNyZWF0ZUZpbGVVUkxGb3JBcHBsaWNhdGlvbkNh
Y2hlUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBwYXRoKQogICAgIC8vIGFwcCBjYWNoZSBtZWRpYSBm
aWxlcyBhcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBlbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCkpLgogCiAjaWYgVVNFKENGKSAmJiBQTEFURk9STShXSU4pCi0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlBhdGgoQWRvcHRDRiwgcGF0aC5jcmVhdGVDRlN0cmlu
ZygpKTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMKEFkb3B0Q0YsIENGVVJMQ3JlYXRl
V2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGNmUGF0aC5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHls
ZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGNmVVJMKEFkb3B0Q0YsIENGVVJM
Q3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
a0NGVVJMV2luZG93c1BhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBLVVJMIHVybChjZlVSTC5nZXQo
KSk7CiAjZWxzZQogICAgIEtVUkwgdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCAzNTc2ZDY0ZGZjNDgyYTQx
ZDU0ZTEzZWZkMTk3ODE2MmI3ODA3YTdmLi5kNzdmODc0YjA5ZGMyMDA5YmJlZDAzNTI0MTgzNWJm
ZTg2Zjg4ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtOTEsOCArOTEsNyBAQCBSZXRhaW5QdHI8Q0ZEaWN0
aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxpc3RSZXByZXNlbnRh
dGlvbihBcgogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVn
YWN5V2ViQXJjaGl2ZVJlc291cmNlRGF0YUtleSwgY2ZEYXRhLmdldCgpKTsKICAgICAKICAgICAv
LyBSZXNvdXJjZSBVUkwgY2Fubm90IGJlIG51bGwKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmVVJMKEFkb3B0Q0YsIHJlc291cmNlLT51cmwoKS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBpZiAoY2ZVUkwpCisgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZVUkwg
PSByZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSkKICAgICAgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVz
b3VyY2VVUkxLZXksIGNmVVJMLmdldCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgTE9HKEFyY2hp
dmVzLCAiTGVnYWN5V2ViQXJjaGl2ZSAtIE5VTEwgcmVzb3VyY2UgVVJMIGlzIGludmFsaWQgLSBy
ZXR1cm5pbmcgbnVsbCBwcm9wZXJ0eSBsaXN0Iik7CkBAIC0xMDEsMjMgKzEwMCwxNyBAQCBSZXRh
aW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBMZWdhY3lXZWJBcmNoaXZlOjpjcmVhdGVQcm9wZXJ0eUxp
c3RSZXByZXNlbnRhdGlvbihBcgogCiAgICAgLy8gRnJhbWVOYW1lIHNob3VsZCBiZSBsZWZ0IG91
dCBpZiBlbXB0eSBmb3Igc3VicmVzb3VyY2VzLCBidXQgYWx3YXlzIGluY2x1ZGVkIGZvciBtYWlu
IHJlc291cmNlcwogICAgIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lKHJlc291cmNlLT5mcmFtZU5h
bWUoKSk7Ci0gICAgaWYgKCFmcmFtZU5hbWUuaXNFbXB0eSgpIHx8IGlzTWFpblJlc291cmNlKSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZGcmFtZU5hbWUoQWRvcHRDRiwgZnJh
bWVOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShw
cm9wZXJ0eUxpc3QuZ2V0KCksIExlZ2FjeVdlYkFyY2hpdmVSZXNvdXJjZUZyYW1lTmFtZUtleSwg
Y2ZGcmFtZU5hbWUuZ2V0KCkpOwotICAgIH0KKyAgICBpZiAoIWZyYW1lTmFtZS5pc0VtcHR5KCkg
fHwgaXNNYWluUmVzb3VyY2UpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5
TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291cmNlRnJhbWVOYW1lS2V5LCBmcmFtZU5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgCiAgICAgLy8gU2V0IE1JTUVUeXBlLCBU
ZXh0RW5jb2RpbmdOYW1lLCBhbmQgUmVzb3VyY2VSZXNwb25zZSBvbmx5IGlmIHRoZXkgYWN0dWFs
bHkgZXhpc3QKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKHJlc291cmNlLT5taW1lVHlwZSgp
KTsKLSAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNmTUlNRVR5cGUoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5
V2ViQXJjaGl2ZVJlc291cmNlTUlNRVR5cGVLZXksIGNmTUlNRVR5cGUuZ2V0KCkpOwotICAgIH0K
KyAgICBpZiAoIW1pbWVUeXBlLmlzRW1wdHkoKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocHJvcGVydHlMaXN0LmdldCgpLCBMZWdhY3lXZWJBcmNoaXZlUmVzb3VyY2VNSU1FVHlwZUtl
eSwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgCiAgICAgY29uc3QgU3Ry
aW5nJiB0ZXh0RW5jb2RpbmcocmVzb3VyY2UtPnRleHRFbmNvZGluZygpKTsKLSAgICBpZiAoIXRl
eHRFbmNvZGluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBj
ZlRleHRFbmNvZGluZyhBZG9wdENGLCB0ZXh0RW5jb2RpbmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0g
ICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2Vi
QXJjaGl2ZVJlc291cmNlVGV4dEVuY29kaW5nTmFtZUtleSwgY2ZUZXh0RW5jb2RpbmcuZ2V0KCkp
OwotICAgIH0KKyAgICBpZiAoIXRleHRFbmNvZGluZy5pc0VtcHR5KCkpCisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdC5nZXQoKSwgTGVnYWN5V2ViQXJjaGl2ZVJlc291
cmNlVGV4dEVuY29kaW5nTmFtZUtleSwgdGV4dEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogCiAgICAgLy8gRG9uJ3QgaW5jbHVkZSB0aGUgcmVzb3VyY2UgcmVzcG9uc2UgZm9yIHRo
ZSBtYWluIHJlc291cmNlCiAgICAgaWYgKCFpc01haW5SZXNvdXJjZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAppbmRleCBhYmYxYmNhNWU4NTQxMGJh
ODdkNWNhYjgyNTAwZDk2OWYxMDkyNmE3Li42OTA4NDNiMTM3NzgzNDgyODBlYzdlYTViNDM3Mzg4
ZTlkZGM2NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdz
LmNwcApAQCAtNTQsMTMgKzU0LDEyIEBAIHN0YXRpYyBTdHJpbmcgZm9ybWF0TG9jYWxpemVkU3Ry
aW5nKFN0cmluZyBmb3JtYXQsIC4uLikKICNpZiBVU0UoQ0YpCiAgICAgdmFfbGlzdCBhcmd1bWVu
dHM7CiAgICAgdmFfc3RhcnQoYXJndW1lbnRzLCBmb3JtYXQpOwotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gZm9ybWF0Q0ZTdHJpbmcoQWRvcHRDRiwgZm9ybWF0LmNyZWF0ZUNGU3RyaW5nKCkp
OwogCiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAog
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCiAj
ZW5kaWYKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCBDRlN0cmlu
Z0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0Q0ZTdHJpbmcuZ2V0KCks
IGFyZ3VtZW50cykpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0ID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXRBbmRBcmd1bWVudHMoMCwgMCwgZm9ybWF0LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGFyZ3VtZW50cykpOwogI2lmIENPTVBJTEVSKENMQU5HKQogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogI2VuZGlmCkBAIC0yNjAsNyArMjU5LDcgQEAgU3Ry
aW5nIGNvbnRleHRNZW51SXRlbVRhZ0xvb2tVcEluRGljdGlvbmFyeShjb25zdCBTdHJpbmcmIHNl
bGVjdGVkU3RyaW5nKQogICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJMb29rIFVwIGluIERpY3Rp
b25hcnkiLCAiTG9vayBVcCBpbiBEaWN0aW9uYXJ5IGNvbnRleHQgbWVudSBpdGVtIik7CiAjZWxz
ZQogI2lmIFVTRShDRikKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHNlbGVjdGVkQ0ZTdHJp
bmcoQWRvcHRDRiwgdHJ1bmNhdGVkU3RyaW5nRm9yTG9va3VwTWVudUl0ZW0oc2VsZWN0ZWRTdHJp
bmcpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2VsZWN0
ZWRDRlN0cmluZyA9IHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3Ry
aW5nKS5jcmVhdGVDRlN0cmluZygpOwogICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmco
V0VCX1VJX1NUUklORygiTG9vayBVcCDigJwlQOKAnSIsICJMb29rIFVwIGNvbnRleHQgbWVudSBp
dGVtIHdpdGggc2VsZWN0ZWQgd29yZCIpLCBzZWxlY3RlZENGU3RyaW5nLmdldCgpKTsKICNlbHNl
CiAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkcoIkxvb2sgVXAg4oCcPHNlbGVjdGlvbj7igJ0iLCAi
TG9vayBVcCBjb250ZXh0IG1lbnUgaXRlbSB3aXRoIHNlbGVjdGVkIHdvcmQiKS5yZXBsYWNlKCI8
c2VsZWN0aW9uPiIsIHRydW5jYXRlZFN0cmluZ0Zvckxvb2t1cE1lbnVJdGVtKHNlbGVjdGVkU3Ry
aW5nKSk7CkBAIC03MzgsOCArNzM3LDcgQEAgU3RyaW5nIGtleWdlbk1lbnVJdGVtMjA0OCgpCiAK
IFN0cmluZyBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKGNvbnN0IFN0cmluZyYgaG9zdCkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RDRlN0cmluZyhBZG9wdENGLCBob3N0LmNyZWF0
ZUNGU3RyaW5nKCkpOwotICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NU
UklORygiS2V5IGZyb20gJUAiLCAiTmFtZSBvZiBrZXljaGFpbiBrZXkgZ2VuZXJhdGVkIGJ5IHRo
ZSBLRVlHRU4gdGFnIiksIGhvc3RDRlN0cmluZy5nZXQoKSk7CisgICAgcmV0dXJuIGZvcm1hdExv
Y2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJLZXkgZnJvbSAlQCIsICJOYW1lIG9mIGtleWNo
YWluIGtleSBnZW5lcmF0ZWQgYnkgdGhlIEtFWUdFTiB0YWciKSwgaG9zdC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKTsKIH0KIAogI2VuZGlmCkBAIC03NjIsOCArNzYwLDcgQEAgU3RyaW5nIGltYWdl
VGl0bGUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICNp
ZiBVU0UoQ0YpCiAjaWYgIVBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKSB8fCBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNjAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGZpbGVuYW1lQ0ZTdHJpbmcoQWRvcHRDRiwgZmlsZW5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2NhbGVDb3B5
Q3VycmVudCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IGxvY2FsZSA9IGFkb3B0Q0Yo
Q0ZMb2NhbGVDb3B5Q3VycmVudCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJGb3JtYXR0ZXJS
ZWY+IGZvcm1hdHRlcihBZG9wdENGLCBDRk51bWJlckZvcm1hdHRlckNyZWF0ZSgwLCBsb2NhbGUu
Z2V0KCksIGtDRk51bWJlckZvcm1hdHRlckRlY2ltYWxTdHlsZSkpOwogCiAgICAgaW50IHdpZHRo
SW50ID0gc2l6ZS53aWR0aCgpOwpAQCAtNzc0LDcgKzc3MSw3IEBAIFN0cmluZyBpbWFnZVRpdGxl
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgUmV0YWlu
UHRyPENGTnVtYmVyUmVmPiBoZWlnaHQoQWRvcHRDRiwgQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVt
YmVySW50VHlwZSwgJmhlaWdodEludCkpOwogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaGVp
Z2h0U3RyaW5nKEFkb3B0Q0YsIENGTnVtYmVyRm9ybWF0dGVyQ3JlYXRlU3RyaW5nV2l0aE51bWJl
cigwLCBmb3JtYXR0ZXIuZ2V0KCksIGhlaWdodC5nZXQoKSkpOwogCi0gICAgcmV0dXJuIGZvcm1h
dExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCIlQCAlQMOXJUAgcGl4ZWxzIiwgIndpbmRv
dyB0aXRsZSBmb3IgYSBzdGFuZGFsb25lIGltYWdlICh1c2VzIG11bHRpcGxpY2F0aW9uIHN5bWJv
bCwgbm90IHgpIiksIGZpbGVuYW1lQ0ZTdHJpbmcuZ2V0KCksIHdpZHRoU3RyaW5nLmdldCgpLCBo
ZWlnaHRTdHJpbmcuZ2V0KCkpOworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VC
X1VJX1NUUklORygiJUAgJUDDlyVAIHBpeGVscyIsICJ3aW5kb3cgdGl0bGUgZm9yIGEgc3RhbmRh
bG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1ib2wsIG5vdCB4KSIpLCBmaWxlbmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB3aWR0aFN0cmluZy5nZXQoKSwgaGVpZ2h0U3RyaW5n
LmdldCgpKTsKICNlbHNlCiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlbmFtZUNGU3Ry
aW5nKEFkb3B0Q0YsIGZpbGVuYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwogICAgIHJldHVybiBmb3Jt
YXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgJWTDlyVkIHBpeGVscyIsICJ3aW5k
b3cgdGl0bGUgZm9yIGEgc3RhbmRhbG9uZSBpbWFnZSAodXNlcyBtdWx0aXBsaWNhdGlvbiBzeW1i
b2wsIG5vdCB4KSIpLCBmaWxlbmFtZUNGU3RyaW5nLmdldCgpLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1J1bnRpbWVBcHBs
aWNhdGlvbkNoZWNrcy5jcHAKaW5kZXggMWI4ZDAwNmYyNTE5YWE4YThmM2E4YzQ1MGVmZDI3MzQx
OGFmNDI4NC4uNzMwZWRjMTVmZTkxYmM5Mjc3MDg1Y2NjMjg4N2IwNzkwNjc4MGJmZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SdW50aW1lQXBwbGljYXRpb25DaGVja3Mu
Y3BwCkBAIC00Niw4ICs0Niw3IEBAIHN0YXRpYyBib29sIG1haW5CdW5kbGVJc0VxdWFsVG8oY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyU3RyaW5nKQogICAgIGlmICghYnVuZGxlSWRlbnRp
ZmllcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBidW5kbGVJZGVudGlmaWVyVG9Db21wYXJlKEFkb3B0Q0YsIGJ1bmRsZUlkZW50aWZpZXJTdHJp
bmcuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZShidW5kbGVJ
ZGVudGlmaWVyLCBidW5kbGVJZGVudGlmaWVyVG9Db21wYXJlLmdldCgpLCAwKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbzsKKyAgICByZXR1cm4gQ0ZTdHJpbmdDb21wYXJlKGJ1bmRsZUlkZW50aWZpZXIs
IGJ1bmRsZUlkZW50aWZpZXJTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkgPT0ga0NG
Q29tcGFyZUVxdWFsVG87CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShidW5kbGVJZGVudGlmaWVy
U3RyaW5nKTsKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2Yv
RmlsZVN5c3RlbUNGLmNwcAppbmRleCA4ZWY1MGVlYjBjYjA4NGQxYjliMjNiODdjM2JmYTg5ODM5
MmI4YTJkLi5mZmVhOTA1OGI3YTNiMmQwMmNiODIxMDZhODAwZDUyOWY4OTA0NTQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9GaWxlU3lzdGVtQ0YuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL0ZpbGVTeXN0ZW1DRi5jcHAKQEAgLTM3LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDU3RyaW5nIGZpbGVTeXN0ZW1SZXByZXNlbnRhdGlv
bihjb25zdCBTdHJpbmcmIHBhdGgpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0
cmluZyhBZG9wdENGLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZTdHJpbmcgPSBwYXRoLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAgICBpZiAoIWNm
U3RyaW5nKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwpAQCAtNjMsOCArNjMsNyBAQCBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHBhdGhBc1VSTChjb25zdCBTdHJpbmcmIHBhdGgpCiAjZWxzZQogICAg
IHBhdGhTdHlsZSA9IGtDRlVSTFBPU0lYUGF0aFN0eWxlOwogI2VuZGlmCi0gICAgcmV0dXJuIFJl
dGFpblB0cjxDRlVSTFJlZj4oQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgo
MCwKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBwYXRoLmNyZWF0ZUNG
U3RyaW5nKCkpLmdldCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7CisgICAgcmV0dXJuIGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBwYXRoU3R5bGUsIEZBTFNFKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCA5N2ZiMGI2MDk0NjhmNGVkMzVi
MWUxOTM4ZDk4YmJkODk0MjIyNTg2Li44NTZhNGZjYWRlZDJmMGI2MjYwZjVlOTJiZTExNDVkYzEy
YTVjODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCkBAIC0xNTEsOCAr
MTUxLDcgQEAgUGxhdGZvcm1DQUFuaW1hdGlvbjo6UGxhdGZvcm1DQUFuaW1hdGlvbihBbmltYXRp
b25UeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGEKICAgICBlbHNlCiAgICAgICAgIG1fYW5p
bWF0aW9uLmFkb3B0Q0YoQ0FDRkFuaW1hdGlvbkNyZWF0ZShrQ0FDRktleWZyYW1lQW5pbWF0aW9u
KSk7CiAgICAgCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBzKEFkb3B0Q0YsIGtleVBhdGgu
Y3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkFuaW1hdGlvblNldEtleVBhdGgobV9hbmltYXRp
b24uZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZBbmltYXRpb25TZXRLZXlQYXRoKG1fYW5pbWF0
aW9uLmdldCgpLCBrZXlQYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogfQogCiBQbGF0Zm9y
bUNBQW5pbWF0aW9uOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKFBsYXRmb3JtQW5pbWF0aW9uUmVmIGFu
aW1hdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggNzAxNjhiMjEwNGRiMzY5
ZGEwNzU3YTExNDQ2MjIxMTFiYzMwNjFmMC4uZGQ2MTYzMzdlOTM2NmViNzljOTZjNjcyYjczOTNi
NjkyNDM2ZmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTE3NiwxMCArMTc2
LDggQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWQoQ0ZUaW1lSW50ZXJ2
YWwgYmVnaW5UaW1lKQogc3RhdGljIHZvaWQgcmVzdWJtaXRBbGxBbmltYXRpb25zKFBsYXRmb3Jt
Q0FMYXllciogbGF5ZXIpCiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNB
QW5pbWF0aW9uPiA+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsYXllci0+YW5pbWF0aW9ucygpLmVu
ZCgpOwotICAgIGZvciAoSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9u
PiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGxheWVyLT5hbmltYXRpb25zKCkuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcyhBZG9wdENG
LCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBDQUNGTGF5ZXJBZGRBbmltYXRp
b24obGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSwgcy5nZXQoKSwgaXQtPnZhbHVlLT5wbGF0Zm9ybUFu
aW1hdGlvbigpKTsKLSAgICB9CisgICAgZm9yIChIYXNoTWFwPFN0cmluZywgUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbGF5ZXItPmFuaW1hdGlvbnMo
KS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIENBQ0ZMYXllckFkZEFuaW1hdGlv
bihsYXllci0+cGxhdGZvcm1MYXllcigpLCBpdC0+a2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCks
IGl0LT52YWx1ZS0+cGxhdGZvcm1BbmltYXRpb24oKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxh
eWVyOjplbnN1cmVBbmltYXRpb25zU3VibWl0dGVkKCkKQEAgLTI5Nyw4ICsyOTUsNyBAQCB2b2lk
IFBsYXRmb3JtQ0FMYXllcjo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKgogICAgIC8vIEFkZCBpdCB0byB0aGUgYW5pbWF0aW9uIGxpc3QK
ICAgICBtX2FuaW1hdGlvbnMuYWRkKGtleSwgYW5pbWF0aW9uKTsKIAotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxh
eWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCksIGFuaW1hdGlvbi0+cGxhdGZv
cm1BbmltYXRpb24oKSk7CisgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCks
IGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBhbmltYXRpb24tPnBsYXRmb3JtQW5pbWF0aW9u
KCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiAKICAgICAvLyBUZWxsIHRoZSBob3N0IGFib3V0
IGl0IHNvIHdlIGNhbiBmaXJlIHRoZSBzdGFydCBhbmltYXRpb24gZXZlbnQKQEAgLTMxMiw4ICsz
MDksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllcjo6cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0
IFN0cmluZyYga2V5KQogICAgIC8vIFJlbW92ZSBpdCBmcm9tIHRoZSBhbmltYXRpb24gbGlzdAog
ICAgIG1fYW5pbWF0aW9ucy5yZW1vdmUoa2V5KTsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcyhBZG9wdENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQ0FDRkxheWVyUmVtb3Zl
QW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIHMuZ2V0KCkpOworICAgIENBQ0ZMYXllclJlbW92ZUFu
aW1hdGlvbihtX2xheWVyLmdldCgpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAg
ICAvLyBXZSBkb24ndCAicmVtb3ZlIiBhIGxheWVyIGZyb20gQWJzdHJhY3RDQUNGTGF5ZXJUcmVl
SG9zdCB3aGVuIGl0IGxvc2VzIGFuIGFuaW1hdGlvbi4KICAgICAvLyBUaGVyZSBtYXkgYmUgb3Ro
ZXIgYWN0aXZlIGFuaW1hdGlvbnMgb24gdGhlIGxheWVyIGFuZCBpZiBhbiBhbmltYXRpb24KQEAg
LTU4Niw4ICs1ODIsNyBAQCBTdHJpbmcgUGxhdGZvcm1DQUxheWVyOjpuYW1lKCkgY29uc3QKIAog
dm9pZCBQbGF0Zm9ybUNBTGF5ZXI6OnNldE5hbWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHMoQWRvcHRDRiwgdmFsdWUuY3JlYXRlQ0ZTdHJpbmco
KSk7Ci0gICAgQ0FDRkxheWVyU2V0TmFtZShtX2xheWVyLmdldCgpLCBzLmdldCgpKTsKKyAgICBD
QUNGTGF5ZXJTZXROYW1lKG1fbGF5ZXIuZ2V0KCksIHZhbHVlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW5JbnRlcm5hbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxh
eWVyV2luSW50ZXJuYWwuY3BwCmluZGV4IGM0MzBjZjI4NDYxNDY2NDdiZjYxZmM3YTcxNjI5ZjUy
ZjAyMWZhNmEuLjE1Mjc1YjNhZTVmZTVjMWM2YTRmOGY4NGZkNjY5MGQyMWZjZjU4ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW5JbnRlcm5hbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbkludGVybmFsLmNwcApAQCAtNDU5LDcgKzQ1OSw3
IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyV2luSW50ZXJuYWw6OnVwZGF0ZVRpbGVzKCkKIAogI2lm
bmRlZiBOREVCVUcKICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gIlRpbGUgKCIgKyBTdHJpbmc6
Om51bWJlcihpKSArICIsIiArIFN0cmluZzo6bnVtYmVyKGopICsgIikiOwotICAgICAgICAgICAg
Q0FDRkxheWVyU2V0TmFtZSh0aWxlLCBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+KEFkb3B0Q0YsIG5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKSkuZ2V0KCkpOworICAgICAgICAgICAgQ0FDRkxheWVyU2V0TmFt
ZSh0aWxlLCBuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogI2VuZGlmCiAgICAgICAgIH0K
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlQnVmZmVyQ0cuY3BwCmluZGV4IDIxZTlkYjRjMjhkOWEyNTUxMzUyMGFjZTcwODQwM2FjNWU3
N2FiOTMuLmRkMzc4MTU5N2Y4NWViNjEwZGNjNDcxZWM4MzE1M2UwYWJkMmNlYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cu
Y3BwCkBAIC0zNzcsOCArMzc3LDcgQEAgc3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBqcGVnVVRJ
KCkKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aUZyb21NSU1FVHlwZShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlKQogewogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IG1pbWVUeXBlQ0ZTdHJpbmcoQWRvcHRDRiwgbWltZVR5cGUuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgcmV0dXJuIFJldGFpblB0cjxDRlN0cmluZ1JlZj4oQWRvcHRDRiwgVVRUeXBl
Q3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1l
VHlwZUNGU3RyaW5nLmdldCgpLCAwKSk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ3JlYXRl
UHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc01JTUVUeXBlLCBtaW1lVHlwZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCAwKSk7CiAjZWxzZQogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7IC8vIEl0IGlzIHVuY2xlYXIgaWYgQ0ZTVFIgaXMgdGhyZWFkc2FmZS4KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0dN
YWMubW0KaW5kZXggYmQ1MGEzMTc1ZjNiNDI1YTg4MjZjZDJhNTZhNjJlMjE5MzY5NjMzNy4uOTUz
YmNiOWQyOGFkMGViNzVhYjM4ODEzYzM0Mzk0NTVmMTI2MmM3NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDR01hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHTWFjLm1tCkBA
IC0zMywxNiArMzMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHJpbmcgTUlNRVR5cGVG
b3JJbWFnZVNvdXJjZVR5cGUoY29uc3QgU3RyaW5nJiB1dGkpCiB7Ci0gICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiB1dGlyZWYoQWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZShBZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFn
V2l0aENsYXNzKHV0aXJlZi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwotICAgIHJldHVy
biBtaW1lLmdldCgpOworICAgIHJldHVybiBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdX
aXRoQ2xhc3ModXRpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUp
KS5nZXQoKTsKIH0KIAogU3RyaW5nIHByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlw
ZShjb25zdCBTdHJpbmcmIHV0aSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGUo
QWRvcHRDRiwgdXRpLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gZXh0ZW5zaW9uKEFkb3B0Q0YsIFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModHlw
ZS5nZXQoKSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOwotICAgIHJldHVybiBleHRl
bnNpb24uZ2V0KCk7CisgICAgcmV0dXJuIGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dp
dGhDbGFzcyh1dGkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4
dGVuc2lvbikpLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJvYXJkTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL0NsaXBib2FyZE1hYy5tbQppbmRleCBiZDg4MDIwNDQxYjBlOWFl
MDBiYWRhZjM2YjJmNGY1YTZhNmJlYWU3Li5mZDRhYjk5YjE3NDc1ZDQxNGIyMWFhM2VjZDU3ZTYx
ODBhMjhmY2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvQ2xpcGJv
YXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9DbGlwYm9hcmRNYWMu
bW0KQEAgLTk5LDExICs5OSwxMCBAQCBzdGF0aWMgU3RyaW5nIGNvY29hVHlwZUZyb21IVE1MQ2xp
cGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiAKICAgICAvLyBUcnkgVVRJIG5vdwogICAg
IFN0cmluZyBtaW1lVHlwZSA9IHFUeXBlOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRp
VHlwZShBZG9wdENGLCBVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRh
Z0NsYXNzTUlNRVR5cGUsIG1pbWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCksIE5VTEwpKTsKLSAgICBp
ZiAodXRpVHlwZSkgewotICAgICAgICBDRlN0cmluZ1JlZiBwYlR5cGUgPSBVVFR5cGVDb3B5UHJl
ZmVycmVkVGFnV2l0aENsYXNzKHV0aVR5cGUuZ2V0KCksIGtVVFRhZ0NsYXNzTlNQYm9hcmRUeXBl
KTsKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlID0gYWRvcHRDRihVVFR5
cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzTUlNRVR5cGUsIG1p
bWVUeXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIE5VTEwpKSkgeworICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHBiVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dp
dGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc05TUGJvYXJkVHlwZSkpOwogICAgICAg
ICBpZiAocGJUeXBlKQotICAgICAgICAgICAgcmV0dXJuIHBiVHlwZTsKKyAgICAgICAgICAgIHJl
dHVybiBwYlR5cGUuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8gTm8gbWFwcGluZywganVzdCBwYXNz
IHRoZSB3aG9sZSBzdHJpbmcgdGhvdWdoCkBAIC0xMTIsMTEgKzExMSw4IEBAIHN0YXRpYyBTdHJp
bmcgY29jb2FUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKIAog
c3RhdGljIFN0cmluZyB1dGlUeXBlRnJvbUNvY29hVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlQ0YgPSBhZG9wdENGKHR5cGUuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBlKEFkb3B0Q0Ys
IFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NOU1Bib2Fy
ZFR5cGUsIHR5cGVDRi5nZXQoKSwgMCkpOwotICAgIGlmICh1dGlUeXBlKSB7Ci0gICAgICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJl
ZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAg
ICAgIGlmIChtaW1lVHlwZSkKKyAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGlUeXBl
ID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0Ns
YXNzTlNQYm9hcmRUeXBlLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIDApKSkgeworICAg
ICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBl
Q29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlUeXBlLmdldCgpLCBrVVRUYWdDbGFzc01JTUVU
eXBlKSkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKG1pbWVUeXBlLmdldCgpKTsKICAgICB9
CiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU1NMS2V5R2VuZXJhdG9yTWFjLmNwcAppbmRleCAwYTFhNGQ4Yzc1MTRkYTkxMzczOWJlNWUz
NDQ2ZDQ5N2Q5NWE0NzhiLi5lNThkOWE5NDk5NjkyN2I5YmI1YjliMzQ2MTQ5NzhmNWFiZjRmM2Rk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9y
TWFjLmNwcApAQCAtNjAsMTEgKzYwLDcgQEAgU3RyaW5nIHNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2gKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2hhbGxlbmdlU3RyaW5nQ0YoQWRvcHRDRiwgY2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4ga2V5RGVzY3JpcHRpb24oQWRvcHRDRiwg
a2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpKS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3VsdChBZG9wdENGLCB3a1NpZ25lZFB1YmxpY0tl
eUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBjaGFsbGVuZ2VTdHJpbmdDRi5nZXQoKSwga2V5
RGVzY3JpcHRpb24uZ2V0KCkpKTsKLQotICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CisgICAgcmV0
dXJuIGFkb3B0Q0Yod2tTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwg
Y2hhbGxlbmdlU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtleWdlbktleWNoYWluSXRl
bU5hbWUodXJsLmhvc3QoKSkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpLmdldCgpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRp
Y2F0aW9uQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9BdXRoZW50
aWNhdGlvbkNGLmNwcAppbmRleCA4N2EzZmFiOGE3NDM3YWUxMGFmNDM5YTRlNGUwMmNkMmUxYTMw
ZGViLi43YjFkNGZhNDc4N2YxZDFlMGQ5ZTNhNGRlODFmM2ViNTQ2ZDBjZWVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRpb25D
Ri5jcHAKQEAgLTExOSwxMyArMTE5LDcgQEAgQ0ZVUkxDcmVkZW50aWFsUmVmIGNyZWF0ZUNGKGNv
bnN0IENyZWRlbnRpYWwmIGNvcmVDcmVkZW50aWFsKQogICAgICAgICByZXR1cm4gQ0ZVUkxDcmVk
ZW50aWFsQ3JlYXRlV2l0aElkZW50aXR5QW5kQ2VydGlmaWNhdGVBcnJheShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBjb3JlQ3JlZGVudGlhbC5pZGVudGl0eSgpLCBjb3JlQ3JlZGVudGlhbC5jZXJ0aWZp
Y2F0ZXMoKSwgcGVyc2lzdGVuY2UpOwogI2VuZGlmCiAKLSAgICBDRlN0cmluZ1JlZiB1c2VyID0g
Y29yZUNyZWRlbnRpYWwudXNlcigpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0gICAgQ0ZTdHJpbmdSZWYg
cGFzc3dvcmQgPSBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0g
ICAgQ0ZVUkxDcmVkZW50aWFsUmVmIHJlc3VsdCA9IENGVVJMQ3JlZGVudGlhbENyZWF0ZSgwLCB1
c2VyLCBwYXNzd29yZCwgMCwgcGVyc2lzdGVuY2UpOwotICAgIENGUmVsZWFzZSh1c2VyKTsKLSAg
ICBDRlJlbGVhc2UocGFzc3dvcmQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4g
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKDAsIGNvcmVDcmVkZW50aWFsLnVzZXIoKS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBjb3JlQ3JlZGVudGlhbC5wYXNzd29yZCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIDAsIHBlcnNpc3RlbmNlKTsKIH0KIAogQ0ZVUkxQcm90ZWN0aW9uU3BhY2VSZWYgY3Jl
YXRlQ0YoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBjb3JlU3BhY2UpCkBAIC0xOTIsMTMgKzE4Niw3
IEBAIENGVVJMUHJvdGVjdGlvblNwYWNlUmVmIGNyZWF0ZUNGKGNvbnN0IFByb3RlY3Rpb25TcGFj
ZSYgY29yZVNwYWNlKQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAg
ICBDRlN0cmluZ1JlZiBob3N0ID0gY29yZVNwYWNlLmhvc3QoKS5jcmVhdGVDRlN0cmluZygpOwot
ICAgIENGU3RyaW5nUmVmIHJlYWxtID0gY29yZVNwYWNlLnJlYWxtKCkuY3JlYXRlQ0ZTdHJpbmco
KTsKLSAgICBDRlVSTFByb3RlY3Rpb25TcGFjZVJlZiByZXN1bHQgPSBDRlVSTFByb3RlY3Rpb25T
cGFjZUNyZWF0ZSgwLCBob3N0LCBjb3JlU3BhY2UucG9ydCgpLCBzZXJ2ZXJUeXBlLCByZWFsbSwg
c2NoZW1lKTsKLSAgICBDRlJlbGVhc2UoaG9zdCk7Ci0gICAgQ0ZSZWxlYXNlKHJlYWxtKTsKLSAg
ICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBDRlVSTFByb3RlY3Rpb25TcGFjZUNy
ZWF0ZSgwLCBjb3JlU3BhY2UuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvcmVTcGFj
ZS5wb3J0KCksIHNlcnZlclR5cGUsIGNvcmVTcGFjZS5yZWFsbSgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCksIHNjaGVtZSk7CiB9CiAKIENyZWRlbnRpYWwgY29yZShDRlVSTENyZWRlbnRpYWxSZWYg
Y2ZDcmVkZW50aWFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Db29raWVKYXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Nvb2tpZUphckNGTmV0LmNwcAppbmRleCA1ZDZkNzM5MjZjNDRlZTQ4ODAxODJmZmZlODk4
MWFjZjM4YTc2YjBhLi41MDE3OTcxZGUxNGE0NTRhODRmOWEzODhiYjQ3ZjY0ODQ4OTFkYTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgc2V0Q29va2llcyhEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICAvLyBj
b29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzIGRvZXNuJ3QgcGFyc2UgY29va2llcyB3aXRo
b3V0IGEgdmFsdWUKICAgICBTdHJpbmcgY29va2llU3RyaW5nID0gdmFsdWUuY29udGFpbnMoJz0n
KSA/IHZhbHVlIDogdmFsdWUgKyAiPSI7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNv
b2tpZVN0cmluZ0NGKEFkb3B0Q0YsIGNvb2tpZVN0cmluZy5jcmVhdGVDRlN0cmluZygpKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNvb2tpZVN0cmluZ0NGID0gY29va2llU3RyaW5nLmNy
ZWF0ZUNGU3RyaW5nKCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyRmll
bGRzQ0YoQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsCiAg
ICAgICAgIChjb25zdCB2b2lkKiopJnNfc2V0Q29va2llS2V5Q0YsIChjb25zdCB2b2lkKiopJmNv
b2tpZVN0cmluZ0NGLCAxLAogICAgICAgICAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvRE5TQ0ZOZXQuY3BwCmluZGV4IDNmOTAxYTU0MWRlMDBlZWJl
YzI0MzIyZDA0Mzk2ZWU0YTIyMDVmYjYuLmNlMTQ1MTkwOWFlZDdlMmI0ZGVmOWNlMGQ5YmI0Mjkz
NDE4ZGFjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
RE5TQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvRE5T
Q0ZOZXQuY3BwCkBAIC05MCwxMiArOTAsMTIgQEAgdm9pZCBETlNSZXNvbHZlUXVldWU6OnBsYXRm
b3JtUmVzb2x2ZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3RuYW1lQ0YoQWRvcHRD
RiwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGSG9zdFJlZj4g
aG9zdChBZG9wdENGLCBDRkhvc3RDcmVhdGVXaXRoTmFtZSgwLCBob3N0bmFtZUNGLmdldCgpKSk7
CisgICAgUmV0YWluUHRyPENGSG9zdFJlZj4gaG9zdCA9IGFkb3B0Q0YoQ0ZIb3N0Q3JlYXRlV2l0
aE5hbWUoMCwgaG9zdG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogICAgIGlmICghaG9z
dCkgewogICAgICAgICBkZWNyZW1lbnRSZXF1ZXN0Q291bnQoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKwogICAgIENGSG9zdENsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgMCwgMCwgMCwg
MCB9OwogICAgIENGSG9zdFJlZiBsZWFrZWRIb3N0ID0gaG9zdC5sZWFrUmVmKCk7IC8vIFRoZSBo
b3N0IHdpbGwgYmUgcmVsZWFzZWQgZnJvbSBjbGllbnRDYWxsYmFjaygpLgogICAgIEJvb2xlYW4g
cmVzdWx0ID0gQ0ZIb3N0U2V0Q2xpZW50KGxlYWtlZEhvc3QsIGNsaWVudENhbGxiYWNrLCAmY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3JDRi5jcHAKaW5kZXggMzU0ZmQyNzU4NjQyMDdiNzllZmMyMWFmN2QxOTlkYjBi
MzAxMjBiNC4uNTg5NWVkOTkzNDY2NWVmNjMwYmUzNjUxNzE2MTUxNTJlNDBmODNmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yQ0Yu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJv
ckNGLmNwcApAQCAtMTQ1LDEzICsxNDUsMTEgQEAgQ0ZFcnJvclJlZiBSZXNvdXJjZUVycm9yOjpj
ZkVycm9yKCkgY29uc3QKICAgICBpZiAoIW1fcGxhdGZvcm1FcnJvcikgewogICAgICAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gdXNlckluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAKLSAgICAgICAgaWYgKCFtX2xvY2Fs
aXplZERlc2NyaXB0aW9uLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBsb2NhbGl6ZWREZXNjcmlwdGlvblN0cmluZyhBZG9wdENGLCBtX2xvY2FsaXplZERl
c2NyaXB0aW9uLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25LZXksIGxv
Y2FsaXplZERlc2NyaXB0aW9uU3RyaW5nLmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBpZiAo
IW1fbG9jYWxpemVkRGVzY3JpcHRpb24uaXNFbXB0eSgpKQorICAgICAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtDRkVycm9yTG9jYWxpemVkRGVzY3JpcHRpb25L
ZXksIG1fbG9jYWxpemVkRGVzY3JpcHRpb24uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAKICAg
ICAgICAgaWYgKCFtX2ZhaWxpbmdVUkwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGZhaWxpbmdVUkxTdHJpbmcoQWRvcHRDRiwgbV9mYWlsaW5nVVJMLmNy
ZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYWls
aW5nVVJMU3RyaW5nID0gbV9mYWlsaW5nVVJMLmNyZWF0ZUNGU3RyaW5nKCk7CiAgICAgICAgICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwgZmFpbGluZ1VSTFN0cmluZ0tl
eSwgZmFpbGluZ1VSTFN0cmluZy5nZXQoKSk7CiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHVybChBZG9wdENGLCBDRlVSTENyZWF0ZVdpdGhTdHJpbmcoMCwgZmFpbGluZ1VSTFN0cmlu
Zy5nZXQoKSwgMCkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8u
Z2V0KCksIGZhaWxpbmdVUkxLZXksIHVybC5nZXQoKSk7CkBAIC0xNjIsOCArMTYwLDcgQEAgQ0ZF
cnJvclJlZiBSZXNvdXJjZUVycm9yOjpjZkVycm9yKCkgY29uc3QKICAgICAgICAgICAgIHdrU2V0
U1NMUGVlckNlcnRpZmljYXRlRGF0YSh1c2VySW5mby5nZXQoKSwgbV9jZXJ0aWZpY2F0ZS5nZXQo
KSk7CiAjZW5kaWYKICAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZG9t
YWluU3RyaW5nKEFkb3B0Q0YsIG1fZG9tYWluLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBt
X3BsYXRmb3JtRXJyb3IuYWRvcHRDRihDRkVycm9yQ3JlYXRlKDAsIGRvbWFpblN0cmluZy5nZXQo
KSwgbV9lcnJvckNvZGUsIHVzZXJJbmZvLmdldCgpKSk7CisgICAgICAgIG1fcGxhdGZvcm1FcnJv
ciA9IGFkb3B0Q0YoQ0ZFcnJvckNyZWF0ZSgwLCBtX2RvbWFpbi5jcmVhdGVDRlN0cmluZygpLmdl
dCgpLCBtX2Vycm9yQ29kZSwgdXNlckluZm8uZ2V0KCkpKTsKICAgICB9CiAKICAgICByZXR1cm4g
bV9wbGF0Zm9ybUVycm9yLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggMDFlOGI4YWU1
YzBkMWM2YTZhOGYwMzMwODVlOTBmMDEwYmMxZjdjNi4uODA3MGMyNTgyYjdjYWEwZGU2ZmUzNWYz
MDc0M2Y3OGIyMGI3N2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0xMzEsNyArMTMxLDcg
QEAgc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiA+JiBjbGllbnRD
ZXJ0cygpCiAKIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlKQogewotICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJp
bmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBDRlN0
cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVD
RlN0cmluZygpLmxlYWtSZWYoKTsKICAgICAKICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUo
cmVzcG9uc2UsIGRlZmF1bHRNSU1FVHlwZVN0cmluZyk7CiB9CkBAIC0xNjEsOCArMTYxLDggQEAg
c3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9uUmVm
IGNvbm4sIENGVVJMUmVxdWVzdFJlZgogICAgIGlmIChjZlJlZGlyZWN0UmVzcG9uc2UpIHsKICAg
ICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQ
UmVzcG9uc2UoY2ZSZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgaWYgKGh0dHBNZXNzYWdlICYm
IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpID09IDMwNykg
ewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsYXN0SFRUUE1ldGhvZChBZG9w
dENGLCBoYW5kbGUtPmxhc3RIVFRQTWV0aG9kKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5ld01ldGhvZChBZG9wdENGLCBDRlVSTFJlcXVl
c3RDb3B5SFRUUFJlcXVlc3RNZXRob2QoY2ZSZXF1ZXN0KSk7CisgICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGxhc3RIVFRQTWV0aG9kID0gaGFuZGxlLT5sYXN0SFRUUE1ldGhvZCgp
LmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG5l
d01ldGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVx
dWVzdCkpOwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25zKGxhc3RI
VFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5n
R2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRp
dmUpKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVlc3RSZWY+
IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVDb3B5KDAs
IGNmUmVxdWVzdCkpOwogI2lmIFVTRShDRlVSTFNUT1JBR0VTRVNTSU9OUykKQEAgLTE3NSw5ICsx
NzUsOCBAQCBzdGF0aWMgQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTENvbm5l
Y3Rpb25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmCiAgICAgICAgICAgICAgICAgICAgIFdlYkNv
cmU6OnNldEhUVFBCb2R5KG11dGFibGVSZXF1ZXN0LmdldCgpLCBib2R5KTsKIAogICAgICAgICAg
ICAgICAgIFN0cmluZyBvcmlnaW5hbENvbnRlbnRUeXBlID0gaGFuZGxlLT5maXJzdFJlcXVlc3Qo
KS5odHRwQ29udGVudFR5cGUoKTsKLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG9yaWdpbmFsQ29udGVudFR5cGVDRihBZG9wdENGLCBvcmlnaW5hbENvbnRlbnRUeXBlLmNy
ZWF0ZUNGU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgIGlmICghb3JpZ2luYWxDb250ZW50VHlw
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFk
ZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNUUigiQ29udGVudC1UeXBlIiks
IG9yaWdpbmFsQ29udGVudFR5cGVDRi5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENGVVJM
UmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKG11dGFibGVSZXF1ZXN0LmdldCgpLCBDRlNU
UigiQ29udGVudC1UeXBlIiksIG9yaWdpbmFsQ29udGVudFR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gbXV0YWJsZVJlcXVlc3QuZ2V0KCk7
CiAgICAgICAgICAgICB9CkBAIC02MDcsMTAgKzYwNiw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsCiAjZW5kaWYKIAogICAgIGlmICghZC0+bV91c2VyLmlzTnVsbCgpICYmICFkLT5tX3Bhc3Mu
aXNOdWxsKCkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1c2VyKEFkb3B0Q0Ys
IGQtPm1fdXNlci5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBwYXNzKEFkb3B0Q0YsIGQtPm1fcGFzcy5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAg
UmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbChBZG9wdENGLAotICAgICAg
ICAgICAgQ0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVzZXIuZ2V0
KCksIHBhc3MuZ2V0KCksIDAsIGtDRlVSTENyZWRlbnRpYWxQZXJzaXN0ZW5jZU5vbmUpKTsKKyAg
ICAgICAgUmV0YWluUHRyPENGVVJMQ3JlZGVudGlhbFJlZj4gY3JlZGVudGlhbCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVkZW50aWFsQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGQtPm1fdXNlci5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCBkLT5tX3Bhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCwg
a0NGVVJMQ3JlZGVudGlhbFBlcnNpc3RlbmNlTm9uZSkpOwogICAgICAgICAKICAgICAgICAgS1VS
TCB1cmxUb1N0b3JlOwogICAgICAgICBpZiAoY2hhbGxlbmdlLmZhaWx1cmVSZXNwb25zZSgpLmh0
dHBTdGF0dXNDb2RlKCkgPT0gNDAxKQpAQCAtMTAwNSw3ICsxMDAxLDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyRGVmYXVsdEJhc2UoKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmll
cihBZG9wdENGLCBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJp
bmcoKSk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmco
YmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIHByaXZh
dGVTdG9yYWdlU2Vzc2lvbigpID0gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
Y2ZJZGVudGlmaWVyLmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggMDIzMmM1
NDFmOTZlOTgzNTVjZTcyODQ2MzNjMGQzMGI0MGJiMjk1ZS4uNTg2ODMxYWJkNmYxZDcwNjBkZjlh
Njc1OWYwNjBhNmE1NTFiOWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTExOCwxNCAr
MTE4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNldEhlYWRlckZpZWxkcyhDRk11dGFibGVVUkxS
ZXF1ZXN0UmVmIHJlcXVlc3QsIGNvbnN0IEhUVFBIZWEKICAgICAgICAgICAgIENGVVJMUmVxdWVz
dFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QsIG9sZEhlYWRlckZpZWxkTmFtZXNbaV0s
IDApOwogICAgIH0KIAotICAgIEhUVFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHJl
cXVlc3RIZWFkZXJzLmVuZCgpOwotICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSByZXF1ZXN0SGVhZGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAg
ICAgQ0ZTdHJpbmdSZWYga2V5ID0gaXQtPmtleS5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOwot
ICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZSA9IGl0LT52YWx1ZS5jcmVhdGVDRlN0cmluZygpOwot
ICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShyZXF1ZXN0LCBrZXks
IHZhbHVlKTsKLSAgICAgICAgQ0ZSZWxlYXNlKGtleSk7Ci0gICAgICAgIENGUmVsZWFzZSh2YWx1
ZSk7Ci0gICAgfQorICAgIGZvciAoSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBy
ZXF1ZXN0SGVhZGVycy5iZWdpbigpLCBlbmQgPSByZXF1ZXN0SGVhZGVycy5lbmQoKTsgaXQgIT0g
ZW5kOyArK2l0KQorICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1ZShy
ZXF1ZXN0LCBpdC0+a2V5LnN0cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGl0LT52YWx1
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIH0KIAogdm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRv
VXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKQEAgLTE0Niw4ICsxNDAsNyBAQCB2b2lkIFJlc291cmNl
UmVxdWVzdDo6ZG9VcGRhdGVQbGF0Zm9ybVJlcXVlc3QoKQogICAgIHdrU2V0UmVxdWVzdFN0b3Jh
Z2VTZXNzaW9uKFJlc291cmNlSGFuZGxlOjpjdXJyZW50U3RvcmFnZVNlc3Npb24oKSwgY2ZSZXF1
ZXN0KTsKICNlbmRpZgogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXF1ZXN0TWV0aG9k
KEFkb3B0Q0YsIGh0dHBNZXRob2QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlVSTFJlcXVl
c3RTZXRIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QsIHJlcXVlc3RNZXRob2QuZ2V0KCkpOwor
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKGNmUmVxdWVzdCwgaHR0cE1ldGhv
ZCgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgaWYgKGh0dHBQaXBlbGluaW5nRW5h
YmxlZCgpKQogICAgICAgICB3a1NldEhUVFBQaXBlbGluaW5nUHJpb3JpdHkoY2ZSZXF1ZXN0LCB0
b0hUVFBQaXBlbGluaW5nUHJpb3JpdHkobV9wcmlvcml0eSkpOwpAQCAtMTY0LDcgKzE1Nyw3IEBA
IHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojpkb1VwZGF0ZVBsYXRmb3JtUmVxdWVzdCgpCiAgICAgdW5z
aWduZWQgZmFsbGJhY2tDb3VudCA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGlu
Z0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4g
ZW5jb2RpbmdGYWxsYmFja3MoQWRvcHRDRiwgQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZmFsbGJhY2tDb3VudCwgMCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgIT0gZmFsbGJhY2tDb3VudDsgKytpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gZW5jb2RpbmdOYW1lKEFkb3B0Q0YsIG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNv
ZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gZW5jb2RpbmdOYW1lID0gbV9yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheVtpXS5jcmVhdGVDRlN0cmluZygpOwogICAgICAgICBDRlN0
cmluZ0VuY29kaW5nIGVuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9F
bmNvZGluZyhlbmNvZGluZ05hbWUuZ2V0KCkpOwogICAgICAgICBpZiAoZW5jb2RpbmcgIT0ga0NG
U3RyaW5nRW5jb2RpbmdJbnZhbGlkSWQpCiAgICAgICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUo
ZW5jb2RpbmdGYWxsYmFja3MuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KGVu
Y29kaW5nKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2VDRk5ldC5jcHAKaW5kZXggYTQ1YmVlZGM0MzMwMDc3MmIz
OWNhZWUyYjM5NDZjYWMzZGYwYmYzMS4uOTU1MDgzNjNhYWU0MjVlYzg4NGE0ODQ3YTUxNTk4Mzdk
MDhkMzk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZVJlc3BvbnNlQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZUNGTmV0LmNwcApAQCAtNTEsOSArNTEsNyBAQCBDRlVS
TFJlc3BvbnNlUmVmIFJlc291cmNlUmVzcG9uc2U6OmNmVVJMUmVzcG9uc2UoKSBjb25zdAogewog
ICAgIGlmICghbV9jZlJlc3BvbnNlICYmICFtX2lzTnVsbCkgewogICAgICAgICBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IHVybChBZG9wdENGLCBtX3VybC5jcmVhdGVDRlVSTCgpKTsKLSAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBtX21pbWVUeXBlLmNyZWF0ZUNG
U3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHRleHRFbmNvZGluZ05h
bWUoQWRvcHRDRiwgbV90ZXh0RW5jb2RpbmdOYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAg
ICBtX2NmUmVzcG9uc2UuYWRvcHRDRihDRlVSTFJlc3BvbnNlQ3JlYXRlKDAsIHVybC5nZXQoKSwg
bWltZVR5cGUuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCB0ZXh0RW5jb2RpbmdOYW1l
LmdldCgpLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKSk7CisgICAgICAgIG1fY2ZSZXNwb25z
ZS5hZG9wdENGKENGVVJMUmVzcG9uc2VDcmVhdGUoMCwgdXJsLmdldCgpLCBtX21pbWVUeXBlLmNy
ZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCBtX3RleHRFbmNv
ZGluZ05hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dl
ZCkpOwogICAgIH0KIAogICAgIHJldHVybiBtX2NmUmVzcG9uc2UuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUNG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGQ4NmM3NmJjNmY0NWMxODE2NDhlMGE3NzZjZDM5YmFlODkw
ODQwZDYuLjRhN2NkOTAyYWU5ZjAyODdkODk4ZDkyYmQ5ODVkZDc2NmQ0MmExNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlQ0ZOZXQuY3BwCkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBTb2NrZXRTdHJl
YW1IYW5kbGU6OmNyZWF0ZVN0cmVhbXMoKQogICAgIGlmIChtX2Nvbm5lY3Rpb25UeXBlID09IFVu
a25vd24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9z
dChBZG9wdENGLCBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBob3N0ID0gbV91cmwuaG9zdCgpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKICAg
ICAvLyBDcmVhdGluZyBzdHJlYW1zIHRvIGZpbmFsIGRlc3RpbmF0aW9uLCBub3QgdG8gcHJveHku
CiAgICAgQ0ZSZWFkU3RyZWFtUmVmIHJlYWRTdHJlYW0gPSAwOwpAQCAtMzU5LDEyICszNTksMTAg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGU6OmFkZENPTk5FQ1RDcmVkZW50aWFscyhDRkhUVFBN
ZXNzYWdlUmVmIHByb3h5UmVzcG9uc2UpCiAgICAgU3RyaW5nIHBhc3N3b3JkOwogICAgIGlmICgh
bV9zZW50U3RvcmVkQ3JlZGVudGlhbHMgJiYgZ2V0U3RvcmVkQ09OTkVDVFByb3h5Q3JlZGVudGlh
bHMocHJvdGVjdGlvblNwYWNlLCBsb2dpbiwgcGFzc3dvcmQpKSB7CiAgICAgICAgIC8vIFRyeSB0
byBhcHBseSBzdG9yZWQgY3JlZGVudGlhbHMsIGlmIHdlIGhhdmVuJ3QgdHJpZWQgdGhvc2UgYWxy
ZWFkeS4KLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBsb2dpbkNGKEFkb3B0Q0YsIGxv
Z2luLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBh
c3N3b3JkQ0YoQWRvcHRDRiwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIC8v
IENyZWF0aW5nIGEgdGVtcG9yYXJ5IHJlcXVlc3QgdG8gbWFrZSBDRk5ldHdvcmsgYXBwbHkgY3Jl
ZGVudGlhbHMgdG8gaXQuIFVuZm9ydHVuYXRlbHksIHRoaXMgY2Fubm90IHdvcmsgd2l0aCBOVExN
IGF1dGhlbnRpY2F0aW9uLgorICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wb3JhcnkgcmVxdWVzdCB0
byBtYWtlIENGTmV0d29yayBhcHBseSBjcmVkZW50aWFscyB0byBpdC4gVW5mb3J0dW5hdGVseSwg
dGhpcyBjYW5ub3Qgd29yayB3aXRoIE5UTE0gYXV0aGVudGljYXRpb24uCiAgICAgICAgIFJldGFp
blB0cjxDRkhUVFBNZXNzYWdlUmVmPiBkdW1teVJlcXVlc3QoQWRvcHRDRiwgQ0ZIVFRQTWVzc2Fn
ZUNyZWF0ZVJlcXVlc3QoMCwgQ0ZTVFIoIkdFVCIpLCBtX2h0dHBzVVJMLmdldCgpLCBrQ0ZIVFRQ
VmVyc2lvbjFfMSkpOwogCi0gICAgICAgIEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZI
VFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlhbHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNh
dGlvbi5nZXQoKSwgbG9naW5DRi5nZXQoKSwgcGFzc3dvcmRDRi5nZXQoKSwgMCk7CisgICAgICAg
IEJvb2xlYW4gYXBwbGllZENyZWRlbnRpYWxzID0gQ0ZIVFRQTWVzc2FnZUFwcGx5Q3JlZGVudGlh
bHMoZHVtbXlSZXF1ZXN0LmdldCgpLCBhdXRoZW50aWNhdGlvbi5nZXQoKSwgbG9naW4uY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSwgcGFzc3dvcmQuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoYXBwbGllZENyZWRlbnRpYWxzLCBhcHBsaWVkQ3JlZGVudGlh
bHMpOwogCiAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJveHlBdXRob3JpemF0aW9u
U3RyaW5nKEFkb3B0Q0YsIENGSFRUUE1lc3NhZ2VDb3B5SGVhZGVyRmllbGRWYWx1ZShkdW1teVJl
cXVlc3QuZ2V0KCksIENGU1RSKCJQcm94eS1BdXRob3JpemF0aW9uIikpKTsKQEAgLTM4OSw3ICsz
ODcsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZTo6YWRkQ09OTkVDVENyZWRlbnRpYWxzKENG
SFRUUE1lc3NhZ2VSZWYgcHJveHlSZXNwb25zZSkKIENGU3RyaW5nUmVmIFNvY2tldFN0cmVhbUhh
bmRsZTo6Y29weUNGU3RyZWFtRGVzY3JpcHRpb24odm9pZCogaW5mbykKIHsKICAgICBTb2NrZXRT
dHJlYW1IYW5kbGUqIGhhbmRsZSA9IHN0YXRpY19jYXN0PFNvY2tldFN0cmVhbUhhbmRsZSo+KGlu
Zm8pOwotICAgIHJldHVybiBTdHJpbmcoIldlYktpdCBzb2NrZXQgc3RyZWFtLCAiICsgaGFuZGxl
LT5tX3VybC5zdHJpbmcoKSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICByZXR1cm4gU3RyaW5nKCJX
ZWJLaXQgc29ja2V0IHN0cmVhbSwgIiArIGhhbmRsZS0+bV91cmwuc3RyaW5nKCkpLmNyZWF0ZUNG
U3RyaW5nKCkubGVha1JlZigpOwogfQogCiBzdHJ1Y3QgTWFpblRocmVhZEV2ZW50Q2FsbGJhY2tJ
bmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlUmVxdWVzdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlUmVxdWVzdE1hYy5tbQppbmRleCA5MzIxNmNiNTVlODU3NzMxMzZmM2U4YzNhMDdj
ZTZmYjU1NmUwNmQyLi5lNjkzNDg0ODFhYjBhMDIxMzc5NGRhMjRlZmJjYzRmNTZkYzAwOGY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZVJl
cXVlc3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tCkBAIC0xNjMsOSArMTYzLDkgQEAgdm9pZCBSZXNvdXJjZVJlcXVl
c3Q6OmRvVXBkYXRlUGxhdGZvcm1SZXF1ZXN0KCkKICAgICAgICAgTlNNdXRhYmxlQXJyYXkgKmVu
Y29kaW5nRmFsbGJhY2tzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICAgICAgdW5zaWdu
ZWQgY291bnQgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5LnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBjb3VudDsgKytp
KSB7Ci0gICAgICAgICAgICBDRlN0cmluZ1JlZiBlbmNvZGluZ05hbWUgPSBtX3Jlc3BvbnNlQ29u
dGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5W2ldLmNyZWF0ZUNGU3RyaW5nKCk7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG5zRW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRF
bmNvZGluZ1RvTlNTdHJpbmdFbmNvZGluZyhDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVU
b0VuY29kaW5nKGVuY29kaW5nTmFtZSkpOwotICAgICAgICAgICAgQ0ZSZWxlYXNlKGVuY29kaW5n
TmFtZSk7CisgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGVuY29kaW5nTmFtZSA9
IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaV0uY3Jl
YXRlQ0ZTdHJpbmcoKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbnNFbmNvZGluZyA9IENG
U3RyaW5nQ29udmVydEVuY29kaW5nVG9OU1N0cmluZ0VuY29kaW5nKENGU3RyaW5nQ29udmVydElB
TkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcoZW5jb2RpbmdOYW1lLmdldCgpKSk7CisKICAgICAgICAg
ICAgIGlmIChuc0VuY29kaW5nICE9IGtDRlN0cmluZ0VuY29kaW5nSW52YWxpZElkKQogICAgICAg
ICAgICAgICAgIFtlbmNvZGluZ0ZhbGxiYWNrcyBhZGRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldp
dGhVbnNpZ25lZExvbmc6bnNFbmNvZGluZ11dOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0K
aW5kZXggNmFhNzZmNmRkNzg0ZGEwOWQ3YmZmN2UxZTY4NTVlNzVjYWRhZTk5Yy4uZjk3MTBiMmRk
MjUxODQ2MjAxNTEzMjQyZjQwZjNhNDEyNjRmMjJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQpAQCAt
NDc4LDcgKzQ3OCw3IEBAIHZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3Bv
bnNlUmVmIGNmUmVzcG9uc2UpCiAgICAgfQogICAgIAogICAgIGlmICghcmVzdWx0KSB7Ci0gICAg
ICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBkZWZhdWx0TUlNRVR5cGVTdHJpbmcgPSBXZWJDb3JlOjpk
ZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBzdGF0aWMgQ0ZTdHJp
bmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCku
Y3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRNSU1F
VHlwZVN0cmluZzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvY2YvSHlwaGVuYXRpb25DRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L2NmL0h5cGhlbmF0aW9uQ0YuY3BwCmluZGV4IDI2MWE5M2I3NjgwNDU1ZDYwNzc4MmFiYjc1MzQ3
MGZjOGQ5ZWMzY2YuLjFiNjE2ZWI2MGJlOTZmYTUxYmVjZjgxNjgxZDVmZmVmYTljNWI5NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvSHlwaGVuYXRpb25DRi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9IeXBoZW5hdGlvbkNGLmNw
cApAQCAtNDYsOCArNDYsNyBAQCBSZXRhaW5QdHI8Q0ZMb2NhbGVSZWY+IEF0b21pY1N0cmluZ0tl
eWVkTVJVQ2FjaGU8UmV0YWluUHRyPENGTG9jYWxlUmVmPiA+OjpjcmVhdAogdGVtcGxhdGU8Pgog
UmV0YWluUHRyPENGTG9jYWxlUmVmPiBBdG9taWNTdHJpbmdLZXllZE1SVUNhY2hlPFJldGFpblB0
cjxDRkxvY2FsZVJlZj4gPjo6Y3JlYXRlVmFsdWVGb3JLZXkoY29uc3QgQXRvbWljU3RyaW5nJiBs
b2NhbGVJZGVudGlmaWVyKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZMb2NhbGVJ
ZGVudGlmaWVyKEFkb3B0Q0YsIGxvY2FsZUlkZW50aWZpZXIuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUoQWRvcHRDRiwgQ0ZMb2Nh
bGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2ZMb2NhbGVJZGVudGlmaWVyLmdldCgpKSk7
CisgICAgUmV0YWluUHRyPENGTG9jYWxlUmVmPiBsb2NhbGUgPSBhZG9wdENGKENGTG9jYWxlQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGxvY2FsZUlkZW50aWZpZXIuc3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkpOwogCiAgICAgcmV0dXJuIENGU3RyaW5nSXNIeXBoZW5hdGlvbkF2
YWlsYWJsZUZvckxvY2FsZShsb2NhbGUuZ2V0KCkpID8gbG9jYWxlIDogMDsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3RyaW5nQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJpbmdDRi5jcHAKaW5kZXggZDdjZGE3OTYyOTg2
MjU3M2EzNWM2YTkyNjg1NzUyMzA1YWI2YzI3ZS4uMjY5N2U3NmYwYmY1OTIzYjE1MmZlZGQ3MTAz
N2U5NzExNDkyNmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9j
Zi9TdHJpbmdDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9TdHJp
bmdDRi5jcHAKQEAgLTIzLDggKzIzLDggQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogI2lmIFVTRShDRikKLQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApA
QCAtNTEsNyArNTEsNyBAQCBTdHJpbmc6OlN0cmluZyhDRlN0cmluZ1JlZiBzdHIpCiAgICAgfQog
fQogCi1DRlN0cmluZ1JlZiBTdHJpbmc6OmNyZWF0ZUNGU3RyaW5nKCkgY29uc3QKK1JldGFpblB0
cjxDRlN0cmluZ1JlZj4gU3RyaW5nOjpjcmVhdGVDRlN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KCFtX2ltcGwpCiAgICAgICAgIHJldHVybiBDRlNUUigiIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L2NmL1N0cmluZ0ltcGxDRi5jcHAKaW5kZXggN2EyZDgyZTQwMmQyNGIz
N2JiYzA3MWY0N2Y5OGUwYTg2NTE4NDkyMS4uMWRhNTYxYjYwNjJiY2FiNDllMDliZmU3OTc4MmIy
NzNmMGRhMDk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9jZi9T
dHJpbmdJbXBsQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvY2YvU3Ry
aW5nSW1wbENGLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xMzIsNyArMTMzLDcg
QEAgbmFtZXNwYWNlIFN0cmluZ1dyYXBwZXJDRkFsbG9jYXRvciB7CiAKIH0KIAotQ0ZTdHJpbmdS
ZWYgU3RyaW5nSW1wbDo6Y3JlYXRlQ0ZTdHJpbmcoKQorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBT
dHJpbmdJbXBsOjpjcmVhdGVDRlN0cmluZygpCiB7CiAgICAgaWYgKCFtX2xlbmd0aCB8fCAhaXNN
YWluVGhyZWFkKCkpIHsKICAgICAgICAgaWYgKGlzOEJpdCgpKQpAQCAtMTUzLDcgKzE1NCw3IEBA
IENGU3RyaW5nUmVmIFN0cmluZ0ltcGw6OmNyZWF0ZUNGU3RyaW5nKCkKICAgICAvLyBDb3JlRm91
bmRhdGlvbiBtaWdodCBub3QgaGF2ZSB0byBhbGxvY2F0ZSBhbnl0aGluZywgd2UgY2xlYXIgY3Vy
cmVudFN0cmluZyBpbiBjYXNlIHdlIGRpZCBub3QgZXhlY3V0ZSBhbGxvY2F0ZSgpLgogICAgIFN0
cmluZ1dyYXBwZXJDRkFsbG9jYXRvcjo6Y3VycmVudFN0cmluZyA9IDA7CiAKLSAgICByZXR1cm4g
c3RyaW5nOworICAgIHJldHVybiBhZG9wdENGKHN0cmluZyk7CiB9CiAKIC8vIE9uIFN0cmluZ0lt
cGwgY3JlYXRpb24gd2UgY291bGQgY2hlY2sgaWYgdGhlIGFsbG9jYXRvciBpcyB0aGUgU3RyaW5n
V3JhcHBlckNGQWxsb2NhdG9yLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
bWFjL1N0cmluZ0ltcGxNYWMubW0KaW5kZXggNmY1ZTk1M2JhMTkyNWU1NDViYmI1YWM1M2UyMTQ3
NmJiOGYwM2E1Ny4uMmYwODhhN2ViMzYzYzVhY2QwMTQyZjM4NzA5NWI5NjJjMTgxNmE2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvU3RyaW5nSW1wbE1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9TdHJpbmdJbXBsTWFjLm1t
CkBAIC0yMiwxMiArMjIsMTMgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAK
ICNpbmNsdWRlICJGb3VuZGF0aW9uRXh0cmFzLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgogCiBuYW1lc3BhY2UgV1RGIHsKIAogU3RyaW5nSW1wbDo6b3BlcmF0b3IgTlNTdHJpbmcgKigp
CiB7Ci0gICAgcmV0dXJuIEhhcmRBdXRvcmVsZWFzZShjcmVhdGVDRlN0cmluZygpKTsKKyAgICBy
ZXR1cm4gSGFyZEF1dG9yZWxlYXNlKGNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVj
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5j
cHAKaW5kZXggMzEyNDEyZmFhYjhhYzIzNjI4NjUwM2RhY2E1YTkyOGJlYmQ0Mzk2Ni4uYTcwNDc0
OTUyMGZkZDMyZDRlMWUwMGZjZmMwZGVhZjM4N2NiYTlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCkBAIC0yODQsNyArMjg0LDcg
QEAgQ1N0cmluZyBUZXh0Q29kZWNNYWM6OmVuY29kZShjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
c2l6ZV90IGxlbmd0aCwgVW5lbmNvZGFibGUKICAgICAvLyBFbmNvZGluZyB3aWxsIGNoYW5nZSB0
aGUgeWVuIHNpZ24gYmFjayBpbnRvIGEgYmFja3NsYXNoLgogICAgIFN0cmluZyBjb3B5KGNoYXJh
Y3RlcnMsIGxlbmd0aCk7CiAgICAgY29weS5yZXBsYWNlKCdcXCcsIG1fYmFja3NsYXNoQXNDdXJy
ZW5jeVN5bWJvbCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZnMoQWRvcHRDRiwgY29w
eS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmcyA9IGNv
cHkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIENGSW5kZXggc3RhcnRQb3MgPSAwOwogICAgIENG
SW5kZXggY2hhcmFjdGVyc0xlZnQgPSBDRlN0cmluZ0dldExlbmd0aChjZnMuZ2V0KCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1NlYXJjaFBvcHVwTWVudVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApp
bmRleCBhNWNhOWI3NDQ2OTJmMjg3ZjIzZjM0ODE1MGIwOGY2NWUxZmY5NWZlLi4wZDI1MWRmMTgz
YzdlY2MxOTZiMGRhNzI3ZWFjNTRkNDliMTllNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2VhcmNoUG9wdXBNZW51V2luLmNwcApAQCAtNTEsOCArNTEsNyBAQCBi
b29sIFNlYXJjaFBvcHVwTWVudVdpbjo6ZW5hYmxlZCgpCiAjaWYgVVNFKENGKQogc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogewot
ICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZTsK
LSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9wdENGLCBrZXkuY3JlYXRlQ0ZT
dHJpbmcoKSk7CisgICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxlLldlYktpdC5zZWFyY2hGaWVs
ZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KICNlbmRpZgogCkBAIC02NywxMCArNjYs
OCBAQCB2b2lkIFNlYXJjaFBvcHVwTWVudVdpbjo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgVmVjdAogICAgIHNpemVfdCBzaXplID0gc2VhcmNoSXRl
bXMuc2l6ZSgpOwogICAgIGlmIChzaXplKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJh
eUNyZWF0ZU11dGFibGUoMCwgc2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBpdGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3Ry
aW5nKCkpOwotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVt
LmdldCgpKTsKLSAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgICAgIENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNo
SXRlbXNbaV0uY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJl
bmNlc1NldEFwcFZhbHVlKGF1dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NG
UHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCA4Mzc0
N2YyMjM1NTZhNmFjMmFhMTY4OWRmZGZhYzFmMWVmMTdjNDc3Li4zMzdkYWNhYjJmNzEyYzk4NmYw
ZjU3MjI5NmE3ODA1NjJjMzE0YjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nm
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtNjMsMTUgKzYzLDE0
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBzdGF0aWMgY29uc3QgY2hhciogaW5zcGVj
dG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIjsKIAot
c3RhdGljIGlubGluZSBDRlN0cmluZ1JlZiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBT
dHJpbmcmIGtleSkKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVL
ZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGtleUNGU3RyaW5nKEFkb3B0Q0YsIGtleS5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICByZXR1cm4gQ0ZTdHJpbmdDcmVhdGVXaXRoRm9ybWF0KDAsIDAsIENGU1RSKCJXZWJLaXQgV2Vi
IEluc3BlY3RvciBTZXR0aW5nIC0gJUAiKSwga2V5Q0ZTdHJpbmcuZ2V0KCkpOworICAgIHJldHVy
biBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdl
YiBJbnNwZWN0b3IgU2V0dGluZyAtICVAIiksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7
CiB9CiAKIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3Ry
aW5nKiBzZXR0aW5nKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVyZW5jZXNL
ZXkoQWRvcHRDRiwgY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KSk7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtl
eSk7CiAgICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZShBZG9wdENGLCBDRlBy
ZWZlcmVuY2VzQ29weUFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNl
c0N1cnJlbnRBcHBsaWNhdGlvbikpOwogCiAgICAgaWYgKCF2YWx1ZSkKQEAgLTg4LDEyICs4Nyw3
IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5n
KiBzZXR0aW5nKQogCiBzdGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgc2V0dGluZykKIHsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RS
ZWY+IG9iamVjdFRvU3RvcmU7Ci0gICAgb2JqZWN0VG9TdG9yZS5hZG9wdENGKHNldHRpbmcuY3Jl
YXRlQ0ZTdHJpbmcoKSk7Ci0gICAgQVNTRVJUKG9iamVjdFRvU3RvcmUpOwotCi0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleShBZG9wdENGLCBjcmVhdGVLZXlGb3JQcmVm
ZXJlbmNlcyhrZXkpKTsKLSAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUocHJlZmVyZW5jZXNL
ZXkuZ2V0KCksIG9iamVjdFRvU3RvcmUuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxp
Y2F0aW9uKTsKKyAgICBDRlByZWZlcmVuY2VzU2V0QXBwVmFsdWUoY3JlYXRlS2V5Rm9yUHJlZmVy
ZW5jZXMoa2V5KS5nZXQoKSwgc2V0dGluZy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbik7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDBlNGIxMDY1Njk4MjVkZDc0ZDc0ZGIyNzc2ZWNjNmQ5MjFlYThkYWEuLjVm
MjgzNTA0YzVkNjY4MjE4NjQ4OTBjZTQ0NWM4MmNmMDBmMTI2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKQEAgLTc5MiwyNCArNzkyLDIwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgICAg
IEtVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChzdHJp
cExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2luVmlldy0+cGx1Z2luc1BhZ2UoKSkp
OwogICAgICAgICBpZiAocGx1Z2luUGFnZVVSTC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsK
ICAgICAgICAgICAgIHN0YXRpYyBDRlN0cmluZ1JlZiBrZXkgPSBNYXJzaGFsbGluZ0hlbHBlcnM6
OkxQQ09MRVNUUlRvQ0ZTdHJpbmdSZWYoV2ViS2l0RXJyb3JQbHVnSW5QYWdlVVJMU3RyaW5nS2V5
KTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIHBsdWdp
blBhZ2VVUkwuc3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBzdHIuZ2V0KCkpOworICAgICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVS
TC5zdHJpbmcoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKICAgICAgICAgfQogICAgIH0KIAog
ICAgIGlmICghcGx1Z2luVmlldy0+bWltZVR5cGUoKS5pc051bGwoKSkgewogICAgICAgICBzdGF0
aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3Ry
aW5nUmVmKFdlYktpdEVycm9yTUlNRVR5cGVLZXkpOwotCi0gICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJp
bmcoKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXks
IHN0ci5nZXQoKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgp
LCBrZXksIHBsdWdpblZpZXctPm1pbWVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAg
ICAgfQogCiAgICAgaWYgKHBsdWdpblZpZXctPnBsdWdpbigpKSB7CiAgICAgICAgIFN0cmluZyBw
bHVnaW5OYW1lID0gcGx1Z2luVmlldy0+cGx1Z2luKCktPm5hbWUoKTsKICAgICAgICAgaWYgKCFw
bHVnaW5OYW1lLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYga2V5
ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3RyaW5nUmVmKFdlYktpdEVycm9y
UGx1Z0luTmFtZUtleSk7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN0cihB
ZG9wdENGLCBwbHVnaW5OYW1lLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgc3RyLmdldCgpKTsKKyAgICAgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBrZXksIHBsdWdpbk5hbWUu
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDZlNjg3ZjE5MzRhZjgwNGJkZjk0OTlk
ZWZmNjFlNzdmNTM1Y2NiMjAuLjE1ODcyZTM0ZjlhNTQ0NTBhZjNiNDQ5ZjgyY2RmMGIyYWZiZWI0
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkRhdGFiYXNlTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtNDAxLDgg
KzQwMSw3IEBAIHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkaXNwYXRjaERpZE1vZGlmeURhdGFi
YXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0CiAgICAgUmV0YWluUHRyPENGTXV0YWJs
ZURpY3Rpb25hcnlSZWY+IHVzZXJJbmZvKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0ZU11dGFi
bGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwogCiAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRhdGFiYXNlTmFt
ZUtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJEYXRh
YmFzZU5hbWVLZXkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3RyKEFkb3B0Q0YsIGRh
dGFiYXNlTmFtZS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZSh1
c2VySW5mby5nZXQoKSwgZGF0YWJhc2VOYW1lS2V5LCBzdHIuZ2V0KCkpOworICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHVzZXJJbmZvLmdldCgpLCBkYXRhYmFzZU5hbWVLZXksIGRhdGFiYXNlTmFt
ZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rpb25hcnlQcm9w
ZXJ0eUJhZz4gdXNlckluZm9CYWcgPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3JlYXRlSW5z
dGFuY2UoKTsKICAgICB1c2VySW5mb0JhZy0+c2V0RGljdGlvbmFyeSh1c2VySW5mby5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCmluZGV4IDFmN2E1NzJjMzQ0NWQ3Y2JjNTc2M2FmOWQ5
MWI5ZWRkNzg5NTEwOWYuLmE3MzEwYjgwYjBkNDM0NDA0Zjk4NThkYzhkYjU1YzkzZjFhNTg5NGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkhpc3RvcnkuY3BwCkBAIC02OTMsOSArNjkzLDkgQEAgSFJFU1VMVCBX
ZWJIaXN0b3J5OjphZGRJdGVtKElXZWJIaXN0b3J5SXRlbSogZW50cnksIGJvb2wgZGlzY2FyZER1
cGxpY2F0ZSwgYm9vbCoKIAogdm9pZCBXZWJIaXN0b3J5Ojp2aXNpdGVkVVJMKGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBodHRwTWV0aG9kLCBib29s
IHdhc0ZhaWx1cmUsIGJvb2wgaW5jcmVhc2VWaXNpdENvdW50KQogewotICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gdXJsU3RyaW5nKEFkb3B0Q0YsIHVybC5zdHJpbmcoKS5jcmVhdGVDRlN0cmlu
ZygpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVybFN0cmluZyA9IHVybC5zdHJpbmco
KS5jcmVhdGVDRlN0cmluZygpOwogCi0gICAgSVdlYkhpc3RvcnlJdGVtKiBlbnRyeSA9IChJV2Vi
SGlzdG9yeUl0ZW0qKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShtX2VudHJpZXNCeVVSTC5nZXQoKSwg
dXJsU3RyaW5nLmdldCgpKTsKKyAgICBJV2ViSGlzdG9yeUl0ZW0qIGVudHJ5ID0gKElXZWJIaXN0
b3J5SXRlbSopQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobV9lbnRyaWVzQnlVUkwuZ2V0KCksIHVybFN0
cmluZy5nZXQoKSk7CiAgICAgaWYgKGVudHJ5KSB7CiAgICAgICAgIENPTVB0cjxJV2ViSGlzdG9y
eUl0ZW1Qcml2YXRlPiBlbnRyeVByaXZhdGUoUXVlcnksIGVudHJ5KTsKICAgICAgICAgaWYgKCFl
bnRyeVByaXZhdGUpCkBAIC03ODYsMTEgKzc4NiwxMCBAQCBIUkVTVUxUIFdlYkhpc3Rvcnk6OnJl
bW92ZUl0ZW1Gb3JVUkxTdHJpbmcoQ0ZTdHJpbmdSZWYgdXJsU3RyaW5nKQogCiBDT01QdHI8SVdl
Ykhpc3RvcnlJdGVtPiBXZWJIaXN0b3J5OjppdGVtRm9yVVJMU3RyaW5nKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nKSBjb25zdAogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsQ0ZTdHJp
bmcoQWRvcHRDRiwgdXJsU3RyaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghdXJsQ0ZT
dHJpbmcpCisgICAgaWYgKCF1cmxTdHJpbmcpCiAgICAgICAgIHJldHVybiAwOwogICAgIENPTVB0
cjxJV2ViSGlzdG9yeUl0ZW0+IGl0ZW07Ci0gICAgaWYgKEZBSUxFRChpdGVtRm9yVVJMU3RyaW5n
KHVybENGU3RyaW5nLmdldCgpLCAmaXRlbSkpKQorICAgIGlmIChGQUlMRUQoaXRlbUZvclVSTFN0
cmluZyh1cmxTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgJml0ZW0pKSkKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgcmV0dXJuIGl0ZW07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJIaXN0b3J5SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJIaXN0b3J5SXRl
bS5jcHAKaW5kZXggYTI2NDMwODlkY2Q3OWQ4MjQyNTIwMTk2MjEzMjdmY2E5ZjgyZDk4Mi4uOGJm
ZTliZDdjMDc3Y2NmYmU4YjA3YWI1OTFhYzM5NzA2NTI0MzIxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vV2ViSGlzdG9yeUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
Ykhpc3RvcnlJdGVtLmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgV2ViSGlzdG9yeUl0ZW06OmRpY3Rpb25hcnlSZXByZXNlbnRhdGlvbih2b2lkKiogZGlj
dGlvCiAKICAgICBpZiAoIW1faGlzdG9yeUl0ZW0tPnVybFN0cmluZygpLmlzRW1wdHkoKSkgewog
ICAgICAgICBrZXlzW2tleUNvdW50XSA9IHVybEtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50
KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICAg
ICAgdmFsdWVzW2tleUNvdW50KytdID0gbV9oaXN0b3J5SXRlbS0+dXJsU3RyaW5nKCkuY3JlYXRl
Q0ZTdHJpbmcoKS5sZWFrUmVmKCk7CiAgICAgfQogCiAgICAga2V5c1trZXlDb3VudF0gPSBsYXN0
VmlzaXRlZERhdGVLZXk7CkBAIC0yMjIsNyArMjIyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBXZWJIaXN0b3J5SXRlbTo6ZGljdGlvbmFyeVJlcHJlc2VudGF0aW9uKHZvaWQqKiBkaWN0
aW8KIAogICAgIGlmICghbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5pc0VtcHR5KCkpIHsKICAgICAg
ICAga2V5c1trZXlDb3VudF0gPSB0aXRsZUtleTsKLSAgICAgICAgdmFsdWVzW2tleUNvdW50Kytd
ID0gbV9oaXN0b3J5SXRlbS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICB2YWx1
ZXNba2V5Q291bnQrK10gPSBtX2hpc3RvcnlJdGVtLT50aXRsZSgpLmNyZWF0ZUNGU3RyaW5nKCku
bGVha1JlZigpOwogICAgIH0KIAogICAgIGtleXNba2V5Q291bnRdID0gdmlzaXRDb3VudEtleTsK
QEAgLTI0NSw3ICsyNDUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkhpc3RvcnlJ
dGVtOjpkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb24odm9pZCoqIGRpY3RpbwogICAgICAgICBBU1NF
UlQoc2l6ZSk7CiAgICAgICAgIENGU3RyaW5nUmVmKiBpdGVtcyA9IG5ldyBDRlN0cmluZ1JlZltz
aXplXTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
ICAgICBpdGVtc1tpXSA9IHJlZGlyZWN0VVJMcy0+YXQoaSkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAg
ICAgICAgICAgIGl0ZW1zW2ldID0gcmVkaXJlY3RVUkxzLT5hdChpKS5jcmVhdGVDRlN0cmluZygp
LmxlYWtSZWYoKTsKICAgICAgICAgQ0ZBcnJheVJlZiByZXN1bHQgPSBDRkFycmF5Q3JlYXRlKDAs
IChjb25zdCB2b2lkKiopaXRlbXMsIHNpemUsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgICAgIENGUmVs
ZWFzZShpdGVtc1tpXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJJY29uRGF0
YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViSWNvbkRhdGFiYXNlLmNwcAppbmRleCAy
NWQ3ZWMwOWI5ODYxZTQ0MzQ5MWUzNDZkNTBkNGUyMmM3NzFiODQ1Li4wNWE5NDkwOGE4ODg0MTJi
MTVkMzk0NjNkMTM5MjlhOTE2NzQ5NDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJJY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkljb25EYXRhYmFz
ZS5jcHAKQEAgLTM2Niw3ICszNjYsNyBAQCBCU1RSIFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFi
YXNlRGlkQWRkSWNvbk5vdGlmaWNhdGlvbigpCiAKIENGU3RyaW5nUmVmIFdlYkljb25EYXRhYmFz
ZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXkoKQogewotICAgIHN0YXRp
YyBDRlN0cmluZ1JlZiBpY29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNh
dGlvblVzZXJJbmZvVVJMS2V5KS5jcmVhdGVDRlN0cmluZygpOworICAgIHN0YXRpYyBDRlN0cmlu
Z1JlZiBpY29uVXNlckluZm9VUkxLZXkgPSBTdHJpbmcoV2ViSWNvbk5vdGlmaWNhdGlvblVzZXJJ
bmZvVVJMS2V5KS5jcmVhdGVDRlN0cmluZygpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gaWNvblVz
ZXJJbmZvVVJMS2V5OwogfQogCkBAIC0zODcsOCArMzg3LDcgQEAgc3RhdGljIHZvaWQgcG9zdERp
ZEFkZEljb25Ob3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBXZWJJY29uRGF0YWJh
c2UqIGkKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gZGljdGlvbmFyeShB
ZG9wdENGLCAKICAgICBDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKDAsIDAsICZrQ0ZUeXBlRGlj
dGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsKEFkb3B0Q0YsIHBhZ2VVUkwuY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGljdGlvbmFyeS5nZXQoKSwg
V2ViSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VOb3RpZmljYXRpb25Vc2VySW5mb1VSTEtleSgp
LCB1cmwuZ2V0KCkpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRpY3Rpb25hcnkuZ2V0KCks
IFdlYkljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlTm90aWZpY2F0aW9uVXNlckluZm9VUkxLZXko
KSwgcGFnZVVSTC5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKIAogICAgIENPTVB0cjxDRkRpY3Rp
b25hcnlQcm9wZXJ0eUJhZz4gdXNlckluZm8gPSBDRkRpY3Rpb25hcnlQcm9wZXJ0eUJhZzo6Y3Jl
YXRlSW5zdGFuY2UoKTsKICAgICB1c2VySW5mby0+c2V0RGljdGlvbmFyeShkaWN0aW9uYXJ5Lmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkxvY2FsaXphYmxlU3RyaW5n
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJMb2NhbGl6YWJsZVN0cmluZ3MuY3BwCmluZGV4
IGZkNjFhMDFmYmFmMGVjYTcxNDQ2M2JiMWQ1NzBjZmZhNDFiNzY1OGQuLmRmYjcxNGI0NjUwNjFh
YjIwMzUyYmEzZDc1Nzc0ZmJlZmFmMjdkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYkxvY2FsaXphYmxlU3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViTG9j
YWxpemFibGVTdHJpbmdzLmNwcApAQCAtMTMyLDEyICsxMzIsMTAgQEAgc3RhdGljIENGQnVuZGxl
UmVmIGNyZWF0ZVdlYktpdEJ1bmRsZSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgU3RyaW5n
IGJ1bmRsZVBhdGhTdHJpbmcocGF0aFN0cik7Ci0gICAgQ0ZTdHJpbmdSZWYgYnVuZGxlUGF0aENG
U3RyaW5nID0gYnVuZGxlUGF0aFN0cmluZy5jcmVhdGVDRlN0cmluZygpOwotICAgIGlmICghYnVu
ZGxlUGF0aENGU3RyaW5nKQorICAgIGlmICghYnVuZGxlUGF0aFN0cmluZykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBDRlVSTFJlZiBidW5kbGVVUkxSZWYgPSBDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aCgwLCBidW5kbGVQYXRoQ0ZTdHJpbmcsIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUs
IHRydWUpOwotICAgIENGUmVsZWFzZShidW5kbGVQYXRoQ0ZTdHJpbmcpOworICAgIENGVVJMUmVm
IGJ1bmRsZVVSTFJlZiA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKDAsIGJ1bmRsZVBh
dGhTdHJpbmcuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMV2luZG93c1BhdGhTdHlsZSwg
dHJ1ZSk7CiAgICAgaWYgKCFidW5kbGVVUkxSZWYpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0x
NjgsOCArMTY2LDcgQEAgc3RhdGljIENGU3RyaW5nUmVmIGNvcHlMb2NhbGl6ZWRTdHJpbmdGcm9t
QnVuZGxlKFdlYkxvY2FsaXphYmxlU3RyaW5nc0J1bmRsZSogc3QKICAgICBpZiAoIWJ1bmRsZSkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwogCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBr
ZXlTdHJpbmcoQWRvcHRDRiwga2V5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIENGU3RyaW5nUmVm
IHJlc3VsdCA9IENGQ29weUxvY2FsaXplZFN0cmluZ1dpdGhEZWZhdWx0VmFsdWUoa2V5U3RyaW5n
LmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKTsKKyAgICBDRlN0cmluZ1JlZiByZXN1bHQg
PSBDRkNvcHlMb2NhbGl6ZWRTdHJpbmdXaXRoRGVmYXVsdFZhbHVlKGtleS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCAwLCBidW5kbGUsIG5vdEZvdW5kLCAwKTsKIAogICAgIEFTU0VSVF9XSVRIX01F
U1NBR0UocmVzdWx0ICE9IG5vdEZvdW5kLCAiY291bGQgbm90IGZpbmQgbG9jYWxpemFibGUgc3Ry
aW5nICVzIGluIGJ1bmRsZSIsIGtleSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCA1NjM0YTE1YjNlZDNlMDFjMjYwNGE1YmUyNjAxMzcx
MWZkY2NkYzMzLi44OTY3YjBiMzBhZTRkNDIzMzU4YjlmY2U2ZjU4MzE5MWM5NmMwYzM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBX
ZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncygpCiAgICAgQ0ZEaWN0aW9u
YXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdERlZmF1bHRGaXhlZEZvbnRTaXplUHJl
ZmVyZW5jZUtleSksIENGU1RSKCIxMyIpKTsKIAogICAgIFN0cmluZyBkZWZhdWx0RGVmYXVsdEVu
Y29kaW5nKFdFQl9VSV9TVFJJTkcoIklTTy04ODU5LTEiLCAiVGhlIGRlZmF1bHQsIGRlZmF1bHQg
Y2hhcmFjdGVyIGVuY29kaW5nIikpOwotICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZlcmVuY2VLZXkpLCBkZWZh
dWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZVByZWZl
cmVuY2VLZXkpLCBkZWZhdWx0RGVmYXVsdEVuY29kaW5nLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkp
OwogCiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFVzZXJT
dHlsZVNoZWV0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENG
RGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uUHJlZmVyZW5jZUtleSksIENGU1RSKCIiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4
IDZiMWJhZGU0YWFmMmU5NWEyMDRmOTJhMjZkNGFiMDI0MGEyNzI4MzguLjNhMWI3NGUyMTM1MWZh
ZGE2ZDQxYWNkZjg5ZjI1NGE4M2FhY2I2ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC00NzEs
NyArNDcxLDcgQEAgdm9pZCBXZWJWaWV3OjpzZXRDYWNoZU1vZGVsKFdlYkNhY2hlTW9kZWwgY2Fj
aGVNb2RlbCkKICAgICBSZXRhaW5QdHI8Q0ZVUkxDYWNoZVJlZj4gY2Z1cmxDYWNoZShBZG9wdENG
LCBDRlVSTENhY2hlQ29weVNoYXJlZFVSTENhY2hlKCkpOwogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2Z1cmxDYWNoZURpcmVjdG9yeShBZG9wdENGLCB3a0NvcHlGb3VuZGF0aW9uQ2FjaGVE
aXJlY3RvcnkoMCkpOwogICAgIGlmICghY2Z1cmxDYWNoZURpcmVjdG9yeSkKLSAgICAgICAgY2Z1
cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6OmxvY2FsVXNlclNwZWNpZmljU3RvcmFn
ZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBjZnVybENhY2hlRGlyZWN0
b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9yYWdlRGlyZWN0b3J5KCkuY3JlYXRl
Q0ZTdHJpbmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2UgZmFjdG9yLCB1c2UgMTAwMCBpbnN0ZWFk
IG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUgCiAgICAgLy8gY291bnQgZG9lc24n
dCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRhcnkuCkBAIC00NzEyLDggKzQ3MTIs
NyBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChJV2ViTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCiAgICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICAg
ICAgcmV0dXJuIGhyOwogCi0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXJsU3RyaW5n
KEFkb3B0Q0YsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKSk7Ci0gICAgICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gdXJsKEFkb3B0Q0YsIENGVVJMQ3JlYXRlV2l0aFN0cmluZyhrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCB1cmxTdHJpbmcuZ2V0KCksIDApKTsKKyAgICAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiB1cmwoQWRvcHRDRiwgQ0ZVUkxDcmVhdGVXaXRoU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHRvU3RyaW5nKHN0cikuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgMCkpOwogCiAgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBwYXNzZWQgaW4gc3RyaW5nIGlzIGEgcGF0aCBhbmQgY29udmVy
dCBpdCB0byBhIFVSTC4KICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZv
ciBuaWdodGx5IGJ1aWxkcyB1bnRpbCB3ZSBjYW4gZ2V0IFNhZmFyaSB0byBwYXNzIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtL21hYy9Nb2R1bGVNYWMubW0KaW5kZXggNGEzNWI2YTJkOGEzMmM1ZGQ4
MzQ5NzJjZDJmZGYyYWRjMzkxZTYxYS4uMzY4NzUzMTUxNzIxOGRhMjllOWNkZGRhNDIzMmEzYjEy
ODI1MzMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL01vZHVsZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvTW9kdWxlTWFjLm1tCkBAIC0z
MCwxMiArMzAsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgTW9kdWxlOjpsb2FkKCkK
IHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgbV9wYXRo
LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMKEFk
b3B0Q0YsIENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGJ1bmRsZVBhdGguZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSkpOworICAgIFJl
dGFpblB0cjxDRlVSTFJlZj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxl
U3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBtX3BhdGguY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIEZBTFNFKSk7CiAgICAgaWYgKCFidW5kbGVVUkwp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVu
ZGxlKEFkb3B0Q0YsIENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVS
TC5nZXQoKSkpOworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihD
RkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAg
ICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9tYWMvUGx1Z2luUHJvY2Vzc01hYy5tbQppbmRleCBkZTdk
NTgzMWY2MDhjMzgzMGUzYzliZTE0YjM5NDY1ZWIyYzcxYzNiLi42NzFmMjBkNmRjYWJlMWZjMWJh
Mzk1NTdkNWU2MjhlZTdlZDdlZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL21hYy9QbHVnaW5Qcm9jZXNzTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvbWFjL1BsdWdpblByb2Nlc3NNYWMubW0KQEAgLTI3OSw4ICsyNzksNyBAQCBzdGF0
aWMgdm9pZCBpbml0aWFsaXplU2FuZGJveChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIGNvbnN0
IFN0cmluZyYgc2FuZGJveFBybwogICAgIGlmIChzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGgu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmUGx1Z2luUGF0aCA9IGFkb3B0Q0YocGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoMCwgY2ZQbHVnaW5QYXRoLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHBsdWdpblVSTCA9IGFkb3B0Q0Yo
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoMCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICBpZiAoIXBsdWdp
blVSTCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yOTIsOCArMjkxLDcgQEAgc3RhdGljIHZvaWQg
aW5pdGlhbGl6ZVNhbmRib3goY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBjb25zdCBTdHJpbmcm
IHNhbmRib3hQcm8KICAgICBpZiAoIWJ1bmRsZUlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTYW5kYm94UHJvZmlsZURpcmVjdG9yeVBh
dGggPSBhZG9wdENGKHNhbmRib3hQcm9maWxlRGlyZWN0b3J5UGF0aC5jcmVhdGVDRlN0cmluZygp
KTsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRv
cHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBjZlNhbmRib3hQcm9maWxlRGly
ZWN0b3J5UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hQcm9maWxlRGlyZWN0b3J5ID0gYWRvcHRDRihDRlVSTENy
ZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgwLCBzYW5kYm94UHJvZmlsZURpcmVjdG9yeVBhdGguY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIFRSVUUpKTsKIAogICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc2FuZGJveEZpbGVOYW1lID0gQ0ZTdHJpbmdDcmVhdGVX
aXRoRm9ybWF0KDAsIDAsIENGU1RSKCIlQC5zYiIpLCBidW5kbGVJZGVudGlmaWVyKTsKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHNhbmRib3hVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZp
bGVTeXN0ZW1QYXRoUmVsYXRpdmVUb0Jhc2UoMCwgc2FuZGJveEZpbGVOYW1lLmdldCgpLCBrQ0ZV
UkxQT1NJWFBhdGhTdHlsZSwgRkFMU0UsIHNhbmRib3hQcm9maWxlRGlyZWN0b3J5LmdldCgpKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMv
TmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggODFiMzhlMGVj
OGZlM2M0MTg4OTc5ZWVmZDA2MjI3YjM3MGZkNGEzZS4uM2RjMzc3YzQ0NTBkODhmZTI1ZjcwMmIw
ZmE1NDNhMzhlMjhmNmMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1h
Yy5tbQpAQCAtMzUyLDExICszNTIsMTAgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21D
YXJib25SZXNvdXJjZXMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmYKIAogYm9v
bCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGJ1bmRsZVBhdGgoQWRvcHRDRiwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpKTsK
LSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTChBZG9wdENGLCBDRlVSTENyZWF0ZVdp
dGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVQYXRoLmdldCgpLCBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1
bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJ
WFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlhbGl6ZSB0aGUg
YnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlKEFkb3B0Q0YsIENGQnVu
ZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIFJl
dGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRvcHRDRihDRkJ1bmRsZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMzk1LDExICszOTQsOSBAQCBib29sIE5ldHNj
YXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwg
UGx1Z2luTW9kdWxlSQogCiBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpjcmVhdGVQbHVnaW5N
SU1FVHlwZXNQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiB7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBidW5kbGVQYXRoKEFkb3B0Q0YsIHBsdWdpblBhdGguY3JlYXRl
Q0ZTdHJpbmcoKSk7Ci0gICAgUmV0YWluUHRyPENGVVJMUmVmPiBidW5kbGVVUkwoQWRvcHRDRiwg
Q0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxl
UGF0aC5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgUmV0YWluUHRy
PENGVVJMUmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CiAgICAgCi0gICAgLy8gVHJ5IHRvIGlu
aXRpYWxpemUgdGhlIGJ1bmRsZS4KLSAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZShB
ZG9wdENGLCBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoQ0ZCdW5k
bGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYg
KCFidW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2NmL1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9jZi9XZWJCYWNrRm9yd2FyZExpc3RDRi5jcHAKaW5kZXggY2RmZjM0NDY5
YTIzOTNkMzVhZGJhYmM0Y2IwYTM4YmEwZjU2MjMyNC4uN2MxZjI0MGVjYzQ4YjhiNGMxOTEzZTA1
NGM1OGFiM2E0OGEyYjRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Nm
L1dlYkJhY2tGb3J3YXJkTGlzdENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Y2YvV2ViQmFja0ZvcndhcmRMaXN0Q0YuY3BwCkBAIC05NCw5ICs5NCw5IEBAIENGRGljdGlvbmFy
eVJlZiBXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZUNGRGljdGlvbmFyeVJlcHJlc2VudGF0aW9u
KFdlYlBhZ2VQcm94CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cmwoQWRvcHRDRiwgbV9lbnRyaWVzW2ld
LT51cmwoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB0aXRsZShBZG9wdENGLCBtX2VudHJpZXNbaV0tPnRpdGxlKCkuY3JlYXRlQ0ZTdHJpbmcoKSk7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gb3JpZ2luYWxVUkwoQWRvcHRDRiwgbV9l
bnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAgICAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHVybCA9IG1fZW50cmllc1tpXS0+dXJsKCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0aXRsZSA9IG1fZW50cmllc1tp
XS0+dGl0bGUoKS5jcmVhdGVDRlN0cmluZygpOworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG9yaWdpbmFsVVJMID0gbV9lbnRyaWVzW2ldLT5vcmlnaW5hbFVSTCgpLmNyZWF0ZUNGU3Ry
aW5nKCk7CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgdXNlcyB0aGUgQ29yZUlQQyBkYXRhIGVu
Y29kaW5nIGZvcm1hdCwgd2hpY2ggbWVhbnMgdGhhdCB3aGVuZXZlciB3ZSBjaGFuZ2UgdGhlIENv
cmVJUEMgZW5jb2Rpbmcgd2UgbmVlZCB0byBidW1wIHRoZSBDdXJyZW50U2Vzc2lvblN0YXRlRGF0
YVZlcnNpb24KICAgICAgICAgLy8gY29uc3RhbnQgaW4gV2ViUGFnZVByb3h5Q0YuY3BwLiBUaGUg
Q29yZUlQQyBkYXRhIGZvcm1hdCBpcyBtZWFudCB0byBiZSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRh
aWwsIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8gZGlzay4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvY2YvV2ViUGFnZVByb3h5Q0YuY3BwCmluZGV4IDc5
ZGQ4Y2VkMDJkN2NlMGQ0ZjNjMjQwNDgxOGI4MDFiZTQwZjFmN2EuLmZhYzAyYzFiNDY5MGYxMjM2
ZTlhYTc4ZGFjYTQ5MmIxYzQyNjNhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9jZi9XZWJQYWdlUHJveHlDRi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2NmL1dlYlBhZ2VQcm94eUNGLmNwcApAQCAtNjUsNyArNjUsNyBAQCBQYXNzUmVmUHRyPFdlYkRh
dGE+IFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlRGF0YShXZWJQYWdlUHJveHlTZXNzaW9uU3Rh
dGVGaWx0ZQogICAgICAgICBpZiAocHJvdmlzaW9uYWxVUkwuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcHJvdmlzaW9uYWxVUkwgPSBtX21haW5GcmFtZS0+cHJvdmlzaW9uYWxVUkwoKTsKICAgICAg
ICAgaWYgKCFwcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHByb3Zpc2lv
bmFsVVJMU3RyaW5nLmFkb3B0Q0YocHJvdmlzaW9uYWxVUkwuY3JlYXRlQ0ZTdHJpbmcoKSk7Cisg
ICAgICAgICAgICBwcm92aXNpb25hbFVSTFN0cmluZyA9IHByb3Zpc2lvbmFsVVJMLmNyZWF0ZUNG
U3RyaW5nKCk7CiAgICAgICAgICAgICBrZXlzW251bVZhbHVlc10gPSBQcm92aXNpb25hbFVSTEtl
eSgpOwogICAgICAgICAgICAgdmFsdWVzW251bVZhbHVlc10gPSBwcm92aXNpb25hbFVSTFN0cmlu
Zy5nZXQoKTsKICAgICAgICAgICAgICsrbnVtVmFsdWVzOwpAQCAtMTc5LDggKzE3OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZURhdGEoV2ViRGF0YSogd2Vi
RGF0YSkKIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gYXV0b3NhdmVLZXkoY29uc3Qg
U3RyaW5nJiBuYW1lKQogewotICAgIFN0cmluZyBrZXkgPSAiY29tLmFwcGxlLldlYktpdC5zZWFy
Y2hGaWVsZDoiICsgbmFtZTsKLSAgICByZXR1cm4gUmV0YWluUHRyPENGU3RyaW5nUmVmPihBZG9w
dENGLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKSk7CisgICAgcmV0dXJuIFN0cmluZygiY29tLmFwcGxl
LldlYktpdC5zZWFyY2hGaWVsZDoiICsgbmFtZSkuY3JlYXRlQ0ZTdHJpbmcoKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBzZWFyY2hJdGVtcykKQEAgLTE5MiwxMCArMTkxLDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JgogCiAgICAgaWYgKHNpemVfdCBzaXplID0gc2VhcmNoSXRlbXMu
c2l6ZSgpKSB7CiAgICAgICAgIGl0ZW1zLmFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoMCwg
c2l6ZSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBp
dGVtKEFkb3B0Q0YsIHNlYXJjaEl0ZW1zW2ldLmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgICAgICAg
ICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGl0ZW1zLmdldCgpLCBpdGVtLmdldCgpKTsKLSAgICAgICAg
fQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAg
IENGQXJyYXlBcHBlbmRWYWx1ZShpdGVtcy5nZXQoKSwgc2VhcmNoSXRlbXNbaV0uY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSk7CiAgICAgfQogCiAgICAgQ0ZQcmVmZXJlbmNlc1NldEFwcFZhbHVlKGF1
dG9zYXZlS2V5KG5hbWUpLmdldCgpLCBpdGVtcy5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50
QXBwbGljYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9SZXNv
dXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUmVzb3VyY2VDYWNoZS9XZWJSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAKaW5kZXgg
NjgxMGYwYWJkYjlkYmViYTk5ZmEzZTFlOWIwZjA2Y2U0NWFlMDQ5NC4uMzk1NjQ5YzUwYmY0ZDZk
ZjA0YmM3NTQwYjU0YmFmNTlkYjJjMzY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9SZXNvdXJjZUNhY2hlL1dlYlJlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Jlc291cmNlQ2FjaGUvV2ViUmVzb3VyY2VDYWNoZU1h
bmFnZXIuY3BwCkBAIC0xMTgsOCArMTE4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUNhY2hlTWFuYWdl
cjo6Y2xlYXJDYWNoZUZvck9yaWdpbihTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luRGF0YSwKICNp
ZiBVU0UoQ0ZVUkxDQUNIRSkKICAgICBpZiAocmVzb3VyY2VDYWNoZXNUb0NsZWFyICE9IEluTWVt
b3J5UmVzb3VyY2VDYWNoZXNPbmx5KSB7IAogICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJy
YXlSZWY+IGhvc3RBcnJheShBZG9wdENGLCBDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NG
VHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9z
dChBZG9wdENGLCBvcmlnaW4tPmhvc3QoKS5jcmVhdGVDRlN0cmluZygpKTsKLSAgICAgICAgQ0ZB
cnJheUFwcGVuZFZhbHVlKGhvc3RBcnJheS5nZXQoKSwgaG9zdC5nZXQoKSk7CisgICAgICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShob3N0QXJyYXkuZ2V0KCksIG9yaWdpbi0+aG9zdCgpLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCkpOwogCiAgICAgICAgIGNsZWFyQ0ZVUkxDYWNoZUZvckhvc3ROYW1lcyho
b3N0QXJyYXkuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFnZVdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IDYyOTRmMDBkODhkZGEwNGJlNTI0
MTA3YzZiZjY1OWJjOWU3MzBiYzQuLmM2ZjViNjc4MTJjMzMwZTQxNzE2ZTE1OGIxNGZhMTg1Y2E0
ODUyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS93aW4v
V2ViUGFnZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3dp
bi9XZWJQYWdlV2luLmNwcApAQCAtMjcwLDggKzI3MCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZD
YWNoZWRVUkxSZXNwb25zZVJlZj4gY2FjaGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFn
ZSwKICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihSZXNvdXJjZUhhbmRsZTo6Y3VycmVu
dFN0b3JhZ2VTZXNzaW9uKCksIHJlcXVlc3QuZ2V0KCkpOwogI2VuZGlmCiAKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHVzZXJBZ2VudChBZG9wdENGLCB3ZWJQYWdlLT51c2VyQWdlbnQoKS5j
cmVhdGVDRlN0cmluZygpKTsKLSAgICBDRlVSTFJlcXVlc3RTZXRIVFRQSGVhZGVyRmllbGRWYWx1
ZShyZXF1ZXN0LmdldCgpLCBDRlNUUigiVXNlci1BZ2VudCIpLCB1c2VyQWdlbnQuZ2V0KCkpOwor
ICAgIENGVVJMUmVxdWVzdFNldEhUVFBIZWFkZXJGaWVsZFZhbHVlKHJlcXVlc3QuZ2V0KCksIENG
U1RSKCJVc2VyLUFnZW50IiksIHdlYlBhZ2UtPnVzZXJBZ2VudCgpLmNyZWF0ZUNGU3RyaW5nKCku
Z2V0KCkpOwogCiAgICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IGNhY2hlOwogI2lmIFVTRShD
RlVSTFNUT1JBR0VTRVNTSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NXaW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1dpbi5jcHAKaW5kZXggMjVkYmMzNmM0OTliZjM5NDY5MzRiNGUxMmU2NTYyMzBh
ZDliYjE5Mi4uZGE0YjU2ZGM4ODZjM2JhYmFkNzczN2Q4N2Q4ZTc0NzQ5MWM5ZWE0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1dpbi5jcHAKQEAgLTc5
LDcgKzc5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybVNldENhY2hlTW9kZWwoQ2FjaGVN
b2RlbCBjYWNoZU1vZGVsKQogICAgICAgICBjZnVybENhY2hlRGlyZWN0b3J5LmFkb3B0Q0Yod2tD
b3B5Rm91bmRhdGlvbkNhY2hlRGlyZWN0b3J5KDApKTsKIAogICAgIGlmICghY2Z1cmxDYWNoZURp
cmVjdG9yeSkKLSAgICAgICAgY2Z1cmxDYWNoZURpcmVjdG9yeS5hZG9wdENGKFdlYkNvcmU6Omxv
Y2FsVXNlclNwZWNpZmljU3RvcmFnZURpcmVjdG9yeSgpLmNyZWF0ZUNGU3RyaW5nKCkpOworICAg
ICAgICBjZnVybENhY2hlRGlyZWN0b3J5ID0gV2ViQ29yZTo6bG9jYWxVc2VyU3BlY2lmaWNTdG9y
YWdlRGlyZWN0b3J5KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIEFzIGEgZnVkZ2UgZmFj
dG9yLCB1c2UgMTAwMCBpbnN0ZWFkIG9mIDEwMjQsIGluIGNhc2UgdGhlIHJlcG9ydGVkIGJ5dGUg
CiAgICAgLy8gY291bnQgZG9lc24ndCBhbGlnbiBleGFjdGx5IHRvIGEgbWVnYWJ5dGUgYm91bmRh
cnkuCkBAIC0xNDgsMTMgKzE0OCwxMiBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycwogICAgIGlm
IChkZWZhdWx0U3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gY2FjaGVQYXRoKEFkb3B0Q0YsIHBhcmFtZXRlcnMuZGlza0NhY2hlRGly
ZWN0b3J5LmNyZWF0ZUNGU3RyaW5nKCkpOwotICAgIGlmICghY2FjaGVQYXRoKQorICAgIGlmICgh
cGFyYW1ldGVycy5kaXNrQ2FjaGVEaXJlY3RvcnkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENG
SW5kZXggY2FjaGVEaXNrQ2FwYWNpdHkgPSBwYXJhbWV0ZXJzLmNmVVJMQ2FjaGVEaXNrQ2FwYWNp
dHk7CiAgICAgQ0ZJbmRleCBjYWNoZU1lbW9yeUNhcGFjaXR5ID0gcGFyYW1ldGVycy5jZlVSTENh
Y2hlTWVtb3J5Q2FwYWNpdHk7Ci0gICAgUmV0YWluUHRyPENGVVJMQ2FjaGVSZWY+IHVpUHJvY2Vz
c0NhY2hlKEFkb3B0Q0YsIENGVVJMQ2FjaGVDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY2Fj
aGVNZW1vcnlDYXBhY2l0eSwgY2FjaGVEaXNrQ2FwYWNpdHksIGNhY2hlUGF0aC5nZXQoKSkpOwor
ICAgIFJldGFpblB0cjxDRlVSTENhY2hlUmVmPiB1aVByb2Nlc3NDYWNoZShBZG9wdENGLCBDRlVS
TENhY2hlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGNhY2hlTWVtb3J5Q2FwYWNpdHksIGNh
Y2hlRGlza0NhcGFjaXR5LCBwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKSk7CiAgICAgQ0ZVUkxDYWNoZVNldFNoYXJlZFVSTENhY2hlKHVpUHJvY2Vz
c0NhY2hlLmdldCgpKTsKICNlbmRpZiAvLyBVU0UoQ0ZORVRXT1JLKQogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdiMTNjODc4YzFmZjUxOTUw
MmJmZmRhMjQwOGRkZmM2OGFmMmRiN2IuLmU5MDBlY2NhZTZhZGQ0YjIxZGNjOTg3NmQ0MDk4M2Ix
N2E5MjA0ZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZzo6Y3JlYXRlQ0ZTdHJpbmcgc2hvdWxkIHJl
dHVybiBhIFJldGFpblB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAwNDE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIGNhbGxlcnMgb2YgU3RyaW5nOjpjcmVhdGVDRlN0cmluZy4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0luamVjdGVkQnVuZGxl
UGFnZU1hYy5tbToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpwbGF0Zm9ybURp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorCiAyMDEyLTEwLTI4ICBNYXJrIFJvd2Ug
IDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgWGNvZGUgY29uZmlndXJhdGlv
biBzZXR0aW5ncyB0aGF0IHVzZWQgdG8gdmFyeSBiZXR3ZWVuIE9TIHZlcnNpb25zLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvSW5qZWN0ZWRC
dW5kbGVQYWdlTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvSW5qZWN0ZWRCdW5kbGVQYWdlTWFjLm1tCmluZGV4IDQ2YzI3M2YxZjhjYTQwYWVlMjdjOTQ3
NmM4MWZlNzM5NGMzM2JiMjQuLmIwY2I0ZTAzMWNiNzQ0NjI4YzBiYzM0ZDU3ZDE3NmI2ODdhZjEz
NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0luamVjdGVkQnVuZGxlUGFnZU1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL21hYy9JbmplY3RlZEJ1bmRsZVBhZ2VNYWMubW0KQEAgLTg1LDggKzg1LDcg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OnBsYXRmb3JtRGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmUKICAgICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVy
OwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIkNSQVNISU5HIFRFU1Q6ICIpOwogICAg
ICAgICBidWlsZGVyLmFwcGVuZCh0ZXN0UGF0aCk7Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZTdHJpbmcoQWRvcHRDRiwgYnVpbGRlci50b1N0cmluZygpLmNyZWF0ZUNGU3RyaW5n
KCkpOwotICAgICAgICBXS1NldENyYXNoUmVwb3J0QXBwbGljYXRpb25TcGVjaWZpY0luZm9ybWF0
aW9uKGNmU3RyaW5nLmdldCgpKTsKKyAgICAgICAgV0tTZXRDcmFzaFJlcG9ydEFwcGxpY2F0aW9u
U3BlY2lmaWNJbmZvcm1hdGlvbihidWlsZGVyLnRvU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CiAgICAgfQogI2VuZGlmCiB9Cg==
</data>
<flag name="review"
          id="185219"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202820</attachid>
            <date>2013-05-24 07:47:51 -0700</date>
            <delta_ts>2013-05-24 07:47:51 -0700</delta_ts>
            <desc>don&apos;t adopt CFStringRefs twice</desc>
            <filename>createCFString.patch</filename>
            <type>text/plain</type>
            <size>2371</size>
            <attacher name="Tobias Netzel">tobias.netzel</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblBhY2thZ2VNYWMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KZGlmZiAtLWdpdCBhL3RhZ3MvU2FmYXJpLTUzNy40My9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL21hYy9QbHVnaW5QYWNrYWdlTWFjLmNwcCBiL3RhZ3MvU2FmYXJpLTUzNy40My9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5QYWNrYWdlTWFjLmNwcAotLS0gYS90YWdzL1Nh
ZmFyaS01MzcuNDMvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luUGFja2FnZU1hYy5j
cHAJKFJldmlzaW9uIDE1MDQzMikKKysrIGIvdGFncy9TYWZhcmktNTM3LjQzL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvbWFjL1BsdWdpblBhY2thZ2VNYWMuY3BwCShBcmJlaXRza29waWUpCkBAIC0x
MzgsNyArMTM4LDcgQEAKICAgICBpZiAobWltZVR5cGVzRmlsZU5hbWUgJiYgQ0ZHZXRUeXBlSUQo
bWltZVR5cGVzRmlsZU5hbWUuZ2V0KCkpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKIAogICAg
ICAgICBXVEY6OlJldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZU5hbWUgPSAoQ0ZTdHJpbmdSZWYp
bWltZVR5cGVzRmlsZU5hbWUuZ2V0KCk7Ci0gICAgICAgIFdURjo6UmV0YWluUHRyPENGU3RyaW5n
UmVmPiBob21lRGlyID0gYWRvcHRDRihob21lRGlyZWN0b3J5UGF0aCgpLmNyZWF0ZUNGU3RyaW5n
KCkpOworICAgICAgICBXVEY6OlJldGFpblB0cjxDRlN0cmluZ1JlZj4gaG9tZURpciA9IGhvbWVE
aXJlY3RvcnlQYXRoKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKICAgICAgICAgV1RGOjpSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHBhdGggPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAw
LCBDRlNUUigiJUAvTGlicmFyeS9QcmVmZXJlbmNlcy8lQCIpLCBob21lRGlyLmdldCgpLCBmaWxl
TmFtZS5nZXQoKSkpOwogCiAgICAgICAgIFdURjo6UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cGxpc3QgPSByZWFkUExpc3RGaWxlKHBhdGguZ2V0KCksIC8qY3JlYXRlRmlsZSovIGZhbHNlLCBt
X21vZHVsZSk7CkBAIC0yNTUsNyArMjU1LDcgQEAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCi0gICAgV1RGOjpSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHBhdGggPSBhZG9wdENGKG1fcGF0
aC5jcmVhdGVDRlN0cmluZygpKTsKKyAgICBXVEY6OlJldGFpblB0cjxDRlN0cmluZ1JlZj4gcGF0
aCA9IG1fcGF0aC5jcmVhdGVDRlN0cmluZygpOwogICAgIFdURjo6UmV0YWluUHRyPENGVVJMUmVm
PiB1cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHBhdGguZ2V0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZSwgZmFsc2UpKTsKICAgICBtX21vZHVsZSA9IENGQnVuZGxlQ3JlYXRlKE5VTEwsIHVybC5nZXQo
KSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KZGlmZiAtLWdpdCBhL3RhZ3MvU2FmYXJpLTUzNy40My9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tIGIvdGFncy9TYWZhcmktNTM3LjQzL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KLS0tIGEvdGFncy9TYWZhcmktNTM3
LjQzL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0JKFJldmlzaW9u
IDE1MDQzMikKKysrIGIvdGFncy9TYWZhcmktNTM3LjQzL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
bWFjL1BsdWdpblZpZXdNYWMubW0JKEFyYmVpdHNrb3BpZSkKQEAgLTg1Myw3ICs4NTMsNyBAQAog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBXVEY6OlJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZUZXh0ID0gYWRvcHRDRih0ZXh0LmNyZWF0ZUNGU3RyaW5n
KCkpOworICAgICAgICBXVEY6OlJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZUZXh0ID0gdGV4dC5j
cmVhdGVDRlN0cmluZygpOwogICAgICAgICAKICAgICAgICAgTE9HKFBsdWdpbnMsICJQVjo6aEtF
KCk6IFBLRS50ZXh0OiAlcywgUEtFLnVubW9kaWZpZWRUZXh0OiAlcywgUEtFLmtleUlkZW50aWZp
ZXI6ICVzIiwKICAgICAgICAgICAgIHRleHQuYXNjaWkoKS5kYXRhKCksIHBsYXRmb3JtRXZlbnQt
PnVubW9kaWZpZWRUZXh0KCkuYXNjaWkoKS5kYXRhKCksCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>