<?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>179013</bug_id>
          
          <creation_ts>2017-10-30 08:13:00 -0700</creation_ts>
          <short_desc>[Attachment Support] Implement WKWebView SPI for inserting attachment elements</short_desc>
          <delta_ts>2017-10-31 12:29:18 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1366025</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 08:13:00 -0700</bug_when>
    <thetext>Add native SPI for inserting attachment elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366026</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 08:13:35 -0700</bug_when>
    <thetext>&lt;rdar://problem/35249668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366039</commentid>
    <comment_count>2</comment_count>
      <attachid>325354</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 09:21:22 -0700</bug_when>
    <thetext>Created attachment 325354
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366040</commentid>
    <comment_count>3</comment_count>
      <attachid>325354</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 09:23:34 -0700</bug_when>
    <thetext>Comment on attachment 325354
First pass

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:452
&gt; +- (_WKAttachment *)_insertAttachmentWithFilename:(NSString *)filename contentType:(NSString *)contentType data:(NSData *)data options:(_WKAttachmentDisplayOptions *)options completion:(void(^)(BOOL success))completionHandler;

(Just realized I&apos;m missing availability macros here — will add.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366045</commentid>
    <comment_count>4</comment_count>
      <attachid>325354</attachid>
    <who name="">mitz</who>
    <bug_when>2017-10-30 09:41:47 -0700</bug_when>
    <thetext>Comment on attachment 325354
First pass

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:451
&gt; +@interface WKWebView (AttachmentSupport)

Why is this a category separate from WKPrivate?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366047</commentid>
    <comment_count>5</comment_count>
      <attachid>325354</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 09:44:08 -0700</bug_when>
    <thetext>Comment on attachment 325354
First pass

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h:451
&gt;&gt; +@interface WKWebView (AttachmentSupport)
&gt; 
&gt; Why is this a category separate from WKPrivate?

It doesn&apos;t have to be — the purpose was just to contain all of the attachment-related SPIs under one category. I&apos;ll move this into WKPrivate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366049</commentid>
    <comment_count>6</comment_count>
      <attachid>325354</attachid>
    <who name="">mitz</who>
    <bug_when>2017-10-30 09:46:45 -0700</bug_when>
    <thetext>Comment on attachment 325354
First pass

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.h:48
&gt; +@property (nonatomic, copy, readonly) NSString *uniqueIdentifier;

What is the purpose of this property? It’s strange for a mutable, copyable object to have a “unique” identifier like that. Does making a copy preserve the identifier? If so, how is it “unique”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366050</commentid>
    <comment_count>7</comment_count>
      <attachid>325354</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 09:49:23 -0700</bug_when>
    <thetext>Comment on attachment 325354
First pass

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.h:48
&gt;&gt; +@property (nonatomic, copy, readonly) NSString *uniqueIdentifier;
&gt; 
&gt; What is the purpose of this property? It’s strange for a mutable, copyable object to have a “unique” identifier like that. Does making a copy preserve the identifier? If so, how is it “unique”?

Ah, good point — there shouldn&apos;t be any need to expose the attachment&apos;s unique identifier to clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366052</commentid>
    <comment_count>8</comment_count>
      <attachid>325354</attachid>
    <who name="">mitz</who>
    <bug_when>2017-10-30 09:49:46 -0700</bug_when>
    <thetext>Comment on attachment 325354
First pass

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachmentInternal.h:30
&gt; +@protocol _WKAttachmentDelegate &lt;NSObject&gt;

Conventionally, internal types are not underscore-prefixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366054</commentid>
    <comment_count>9</comment_count>
      <attachid>325354</attachid>
    <who name="">mitz</who>
    <bug_when>2017-10-30 09:52:08 -0700</bug_when>
    <thetext>Comment on attachment 325354
First pass

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachmentInternal.h:36
&gt; +@interface _WKAttachment ()

This is an unusual setup, I think. Normally, Objective-C API objects are wrappers for C++ API objects. What are the advantages doing things this way? What are the advantages of the internal delegate abstraction?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366055</commentid>
    <comment_count>10</comment_count>
      <attachid>325354</attachid>
    <who name="">mitz</who>
    <bug_when>2017-10-30 09:54:09 -0700</bug_when>
    <thetext>Comment on attachment 325354
First pass

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

&gt; Source/WebCore/PAL/pal/spi/FileSizeFormatter.cpp:39
&gt; +    if (size &lt; 1 &lt;&lt; 10)
&gt; +        return String::format(&quot;%tu bytes&quot;, size);
&gt; +    if (size &lt; 1 &lt;&lt; 20)
&gt; +        return String::format(&quot;%.1f KB&quot;, size / 1024.);
&gt; +    if (size &lt; 1 &lt;&lt; 30)
&gt; +        return String::format(&quot;%.1f MB&quot;, size / (1024. * 1024.));
&gt; +    return String::format(&quot;%.1f GB&quot;, size / (1024. * 1024. * 1024.));

Shouldn’t these be KiB, MiB and GiB? And shouldn’t these strings be localizable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366123</commentid>
    <comment_count>11</comment_count>
      <attachid>325354</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 12:24:15 -0700</bug_when>
    <thetext>Comment on attachment 325354
First pass

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

&gt;&gt; Source/WebCore/PAL/pal/spi/FileSizeFormatter.cpp:39
&gt;&gt; +    return String::format(&quot;%.1f GB&quot;, size / (1024. * 1024. * 1024.));
&gt; 
&gt; Shouldn’t these be KiB, MiB and GiB? And shouldn’t these strings be localizable?

Fixed the former by actually making this in KB/MB/GB. Filed &lt;https://bugs.webkit.org/show_bug.cgi?id=179019&gt; regarding the latter — there doesn&apos;t appear to be a way of adding localizable strings in PAL, since LocalizedStrings currently resides in WebCore. I don&apos;t think it makes sense to do this work in the same patch, so let&apos;s add a FIXME here referencing the bug. We can additionally stub this method out and just return emptyString() here, if we really don&apos;t want unlocalized strings being returned from fileSizeDescription on non-Cocoa platforms.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachmentInternal.h:30
&gt;&gt; +@protocol _WKAttachmentDelegate &lt;NSObject&gt;
&gt; 
&gt; Conventionally, internal types are not underscore-prefixed.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachmentInternal.h:36
&gt;&gt; +@interface _WKAttachment ()
&gt; 
&gt; This is an unusual setup, I think. Normally, Objective-C API objects are wrappers for C++ API objects. What are the advantages doing things this way? What are the advantages of the internal delegate abstraction?

Regarding delegation: originally, I added SPI to manipulate attachments on WKWebView, and had each SPI method take a WKAttachment as an argument. I then refactored this SPI to make it more object-oriented by putting these methods on WKAttachment instead. In doing so, each attachment now needs to call out to its WKWebView, passing itself as an argument. The delegate pattern (where the WKWebView is a delegate for the attachment) seemed to be an appropriate way to implement this, which is why I went with the internal attachment delegate approach. Please let me know if you have a cleaner alternative in mind!

Also, I&apos;m not entirely sure what you mean by &quot;wrapper for C++ API object&quot;. WKPreviewElementInfo and _WKActivatedElementInfo, for instance, don&apos;t seem to be backed by any C++ API objects (though _WKActivatedElementInfo is effectively a snapshot of the InteractionInformationAtPosition struct, if that&apos;s close to what you&apos;re referring to by &quot;wrapper for C++ API object&quot;). Are you proposing that we should implement a WK2 C API version of these objects, and then implement the ObjC version of the API on top of it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366178</commentid>
    <comment_count>12</comment_count>
      <attachid>325378</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 14:32:27 -0700</bug_when>
    <thetext>Created attachment 325378
Try to fix builds (and address some review feedback).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366204</commentid>
    <comment_count>13</comment_count>
      <attachid>325378</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-10-30 15:11:33 -0700</bug_when>
    <thetext>Comment on attachment 325378
Try to fix builds (and address some review feedback).

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.h:35
&gt; +    _WKAttachmentDisplayModeIcon,
&gt; +    _WKAttachmentDisplayModeImage

To make this work with non-image attachments that have two representations, we could base the naming on the Mac context menu which switches between “View as Icon” and “View in Place”.  That way, this would work for videos (or perhaps things like keynote files in the future).

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.h:47
&gt; +@interface _WKAttachment : NSObject &lt;NSCopying&gt;

Why is this &lt;NSCopying&gt;?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.mm:54
&gt; +@implementation _WKAttachment {
&gt; +    RetainPtr&lt;NSString&gt; _uniqueIdentifier;
&gt; +    WeakObjCPtr&lt;id &lt;WKAttachmentDelegate&gt;&gt; _delegate;
&gt; +}

I think this should have a c++ implementation, like all our other types, if only for consistency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366239</commentid>
    <comment_count>14</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 16:59:07 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #13)
&gt; Comment on attachment 325378 [details]
&gt; Try to fix builds (and address some review feedback).
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=325378&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.h:35
&gt; &gt; +    _WKAttachmentDisplayModeIcon,
&gt; &gt; +    _WKAttachmentDisplayModeImage
&gt; 
&gt; To make this work with non-image attachments that have two representations,
&gt; we could base the naming on the Mac context menu which switches between
&gt; “View as Icon” and “View in Place”.  That way, this would work for videos
&gt; (or perhaps things like keynote files in the future).

Sounds good! Changed to _WKAttachmentDisplayModeAuto, _WKAttachmentDisplayModeInPlace, and _WKAttachmentDisplayModeAsIcon.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.h:47
&gt; &gt; +@interface _WKAttachment : NSObject &lt;NSCopying&gt;
&gt; 
&gt; Why is this &lt;NSCopying&gt;?

Whoops, I meant to remove this. Removed.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.mm:54
&gt; &gt; +@implementation _WKAttachment {
&gt; &gt; +    RetainPtr&lt;NSString&gt; _uniqueIdentifier;
&gt; &gt; +    WeakObjCPtr&lt;id &lt;WKAttachmentDelegate&gt;&gt; _delegate;
&gt; &gt; +}
&gt; 
&gt; I think this should have a c++ implementation, like all our other types, if
&gt; only for consistency.

Yep! I&apos;ve added an API::Attachment to back _WKAttachment (patch forthcoming).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366240</commentid>
    <comment_count>15</comment_count>
      <attachid>325390</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 17:08:09 -0700</bug_when>
    <thetext>Created attachment 325390
Back _WKAttachment with API::Attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366253</commentid>
    <comment_count>16</comment_count>
      <attachid>325393</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 17:50:52 -0700</bug_when>
    <thetext>Created attachment 325393
Fix 32-bit Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366268</commentid>
    <comment_count>17</comment_count>
      <attachid>325400</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 18:15:44 -0700</bug_when>
    <thetext>Created attachment 325400
Fix 32-bit Mac build (v2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366275</commentid>
    <comment_count>18</comment_count>
      <attachid>325405</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 18:39:10 -0700</bug_when>
    <thetext>Created attachment 325405
Fix 32-bit Mac build (v3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366286</commentid>
    <comment_count>19</comment_count>
      <attachid>325410</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 19:08:19 -0700</bug_when>
    <thetext>Created attachment 325410
Another attempt to fix 32-bit Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366298</commentid>
    <comment_count>20</comment_count>
      <attachid>325414</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 19:48:15 -0700</bug_when>
    <thetext>Created attachment 325414
Guard _WKAttachment.mm with WK_API_ENABLED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366313</commentid>
    <comment_count>21</comment_count>
      <attachid>325421</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-30 20:45:00 -0700</bug_when>
    <thetext>Created attachment 325421
Fix the Windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366323</commentid>
    <comment_count>22</comment_count>
      <attachid>325421</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-10-30 21:54:43 -0700</bug_when>
    <thetext>Comment on attachment 325421
Fix the Windows build

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

&gt; Source/WebCore/PAL/pal/FileSizeFormatter.cpp:41
&gt; +        return String::format(&quot;%.1f MB&quot;, size / (1000000.));
&gt; +    return String::format(&quot;%.1f GB&quot;, size / (1000000000.));

What&apos;s up with the extra parens around the denominators?

&gt; Source/WebKit/Platform/cocoa/SharedMemoryCocoa.cpp:163
&gt; +    memcpy(sharedMemoryBuffer-&gt;data(), buffer-&gt;data(), buffer-&gt;size());

This seems wrong, like it&apos;s defeating the whole point of shm. Let&apos;s poke around and/or see what Brady or Alexey or Sam or someone have to say.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.h:38
&gt; +typedef void(^_WKAttachmentDataCompletionHandler)(NSData *, NSError *);

What&apos;s this for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366325</commentid>
    <comment_count>23</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-10-30 21:59:21 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #22)
&gt; &gt; Source/WebKit/Platform/cocoa/SharedMemoryCocoa.cpp:163
&gt; &gt; +    memcpy(sharedMemoryBuffer-&gt;data(), buffer-&gt;data(), buffer-&gt;size());
&gt; 
&gt; This seems wrong, like it&apos;s defeating the whole point of shm. Let&apos;s poke
&gt; around and/or see what Brady or Alexey or Sam or someone have to say.

OH RIGHT! SharedBufferDataReference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366339</commentid>
    <comment_count>24</comment_count>
      <attachid>325421</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-31 01:01:32 -0700</bug_when>
    <thetext>Comment on attachment 325421
Fix the Windows build

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

&gt;&gt; Source/WebCore/PAL/pal/FileSizeFormatter.cpp:41
&gt;&gt; +    return String::format(&quot;%.1f GB&quot;, size / (1000000000.));
&gt; 
&gt; What&apos;s up with the extra parens around the denominators?

Good catch — removed. (I was previously multiplying 1000. by itself for the larger denominations, but then decided that didn&apos;t yield much extra clarity and removed it, but apparently forgot to remove the parens around it).

&gt;&gt; Source/WebKit/Platform/cocoa/SharedMemoryCocoa.cpp:163
&gt;&gt; +    memcpy(sharedMemoryBuffer-&gt;data(), buffer-&gt;data(), buffer-&gt;size());
&gt; 
&gt; This seems wrong, like it&apos;s defeating the whole point of shm. Let&apos;s poke around and/or see what Brady or Alexey or Sam or someone have to say.

Changed to use SharedBufferDataReference here — thanks!

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKAttachment.h:38
&gt;&gt; +typedef void(^_WKAttachmentDataCompletionHandler)(NSData *, NSError *);
&gt; 
&gt; What&apos;s this for?

Whoops, that&apos;s for a subsequent patch :) Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366340</commentid>
    <comment_count>25</comment_count>
      <attachid>325427</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-10-31 01:03:20 -0700</bug_when>
    <thetext>Created attachment 325427
Fix the Windows build (2)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366485</commentid>
    <comment_count>26</comment_count>
      <attachid>325427</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-31 12:29:16 -0700</bug_when>
    <thetext>Comment on attachment 325427
Fix the Windows build (2)

Clearing flags on attachment: 325427

Committed r224238: &lt;https://trac.webkit.org/changeset/224238&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366486</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-31 12:29:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325354</attachid>
            <date>2017-10-30 09:21:22 -0700</date>
            <delta_ts>2017-10-30 14:32:26 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-179013-20171030092122.patch</filename>
            <type>text/plain</type>
            <size>69079</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMzAwYmI1YmU2NzAwYzg1Mzk2N2Q1YjQ1YmFlNTkw
ODYzM2FlOWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uMmEwOThlNTkzZmRkOTliMTIxOWNiZTE1MDcyZTFjMmIxNmM3MThmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvRmlsZVNpemVGb3JtYXR0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKiBwYWwvY29jb2EvRmlsZVNp
emVGb3JtYXR0ZXJDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKGZpbGVTaXplRGVzY3JpcHRpb24pOgor
ICAgICAgICAqIHBhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoZmls
ZVNpemVEZXNjcmlwdGlvbik6CisgICAgICAgICogcGFsL3NwaS9GaWxlU2l6ZUZvcm1hdHRlci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0
ZS5oLgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5o
LgorCiAyMDE3LTEwLTI3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgaU9TIHNwZWNpZmljIHNvdXJjZXMgdG8gdW5pZmllZCBzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGI0MWZkNDUzZDJlOGEyNGZlN2VmZGU4NjRhODE2NzFmMDlmNDE3NDIuLjU2ODgx
YjhkYTdhNDQ5OWFjZjhiYTdmYjIyZWE4NDY0NzNmYzQ0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjkgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFdLV2ViVmlldyBTUEkg
Zm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgbmF0aXZlIFNQSSB0byBpbnNlcnQgYXR0YWNobWVudCBlbGVtZW50cyBnaXZlbiBh
IGZpbGVuYW1lLCBhbiBvcHRpb25hbCBNSU1FIHR5cGUsIGFuZCBhIGRhdGEgYmxvYi4gQWxzbwor
ICAgICAgICBpbnRyb2R1Y2VzIHJlbGF0ZWQgYXR0YWNobWVudCBTUEkgaW50ZXJmYWNlcywgdG8g
YmUgdXNlZCBpbiBsYXRlciBwYXRjaGVzLgorCisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZSk6CisKKyAgICAgICAgSW50cm9k
dWNlIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBhIFNoYXJlZE1lbW9yeSB1c2luZyBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgYXR0YWNobWVudDp1cGRh
dGVEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgYXR0YWNobWVudDp1cGRhdGVEaXNwbGF5
T3B0aW9uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGF0dGFjaG1lbnQ6cmVxdWVzdERhdGFX
aXRoQ29tcGxldGlvbjpdKToKKworICAgICAgICBBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9y
IFdLV2ViVmlldyBhdHRhY2htZW50IFNQSSBob29rcy4KKworICAgICAgICAoLVtXS1dlYlZpZXcg
X2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOmNv
bXBsZXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXhlY3V0ZUVkaXRDb21tYW5kOmFy
Z3VtZW50OmNvbXBsZXRpb246XSk6CisKKyAgICAgICAgU3VwcG9ydCBwYXNzaW5nIGluIGEgbmls
IGNvbXBsZXRpb24gYmxvY2suCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRl
LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tOiBBZGRl
ZC4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgX1dLQXR0YWNobWVudCBTUEkgaGVhZGVyIGFs
bG93aW5nIHByaXZhdGUgY2xpZW50cyB0byBhZGQgYW5kIG1hbmlwdWxhdGUgYXR0YWNobWVudCBl
bGVtZW50cy4KKworICAgICAgICAoK1tfV0tBdHRhY2htZW50IGF0dGFjaG1lbnRXaXRoSWRlbnRp
ZmllcjpkZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBpbml0V2l0aElkZW50
aWZpZXI6ZGVsZWdhdGU6XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgdW5pcXVlSWRlbnRp
Zmllcl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IHJlcXVlc3REYXRhOl0pOgorICAgICAg
ICAoLVtfV0tBdHRhY2htZW50IHNldERhdGE6XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQg
c2V0RGlzcGxheU9wdGlvbnM6XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgY29weVdpdGha
b25lOl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IGlzRXF1YWw6XSk6CisgICAgICAgICgt
W19XS0F0dGFjaG1lbnQgaGFzaF0pOgorCisgICAgICAgIEFkZCBfV0tBdHRhY2htZW50LCBhIFdl
YktpdCBTUEkgb2JqZWN0IHRoYXQgd3JhcHMgYW4gYXR0YWNobWVudCBlbGVtZW50IHVuaXF1ZSBp
ZGVudGlmaWVyLCBhbmQgYWxzbyBwcm92aWRlcworICAgICAgICAoY3VycmVudGx5IHVuaW1wbGVt
ZW50ZWQpIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW5nIGFuZCByZXF1ZXN0
aW5nIGRhdGEgZnJvbSBhdHRhY2htZW50cy4gQWxzbywKKyAgICAgICAgYWxsb3cgX1dLQXR0YWNo
bWVudCB0byBiZSB1c2VkIGFzIGEgaGFzaGFibGUgTlNEaWN0aW9uYXJ5IGtleS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudEludGVybmFsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmguCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisKKyAgICAgICAgSW1wbGVtZW50IElQQyBzdXBw
b3J0IGZvciBpbnNlcnRpbmcgYW4gYXR0YWNobWVudC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisKIDIwMTctMTAtMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBbU2V0dGluZ3NdIEdlbmVyYXRlIG1vcmUgb2YgdGhlIFdlYktpdCBwcmVmZXJl
bmNlcyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZjUxYWRiMDA4MTAwYzJmZmVjZTI0MmU4OGFmZjU4NTg1ZGQ3OTgwZS4u
NDI3YWNiM2U0MTVkZDQ5Y2U0YWIwYzA4MDZkOWFlNzQ3MmNjOTkyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxLDYgKzE0
MSwxMSBAQAogCQlBM0FCNkU2NTFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5l
ck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
QUI2RTYzMUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tICovOyB9
OwogCQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RBMUY0NjJENkEwMDlF
NkVFOSAvKiBTZXNzaW9uSUQuY3BwICovOyB9OwogCQlBM0M2NkNERDFGNDYyRDZBMDA5RTZFRTkg
LyogU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi87IH07CisJCUY0
NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE1RDFGQTUyNDcz
MDAyQ0M5M0UgLyogTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oICovOyB9OworCQlGNDQyOTE2MDFG
QTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTVGMUZBNTI2MUUwMDJDQzkzRSAvKiBG
aWxlU2l6ZUZvcm1hdHRlci5oICovOyB9OworCQlGNDQyOTE2MzFGQTUyNjcwMDAyQ0M5M0UgLyog
RmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NDI5MTYxMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5o
ICovOyB9OworCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjkx
NjIxRkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCAqLzsgfTsKKwkJRjQ0
MjkxNjgxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE2NjFGQTUyNzA1
MDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSAqLzsgfTsKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLwpAQCAtMjgzLDYgKzI4OCwxMSBAQAogCQlBM0M2NkNEQTFGNDYyRDZBMDA5RTZFRTkg
LyogU2Vzc2lvbklELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNl
c3Npb25JRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQzY2Q0RCMUY0NjJE
NkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Vzc2lvbklELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMTQ3QTRBMUVG
RDBBQTYwMDA1NkZBNSAvKiBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxNUQxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmlsZVNpemVGb3Jt
YXR0ZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE1RjFGQTUyNjFFMDAyQ0M5M0UgLyogRmls
ZVNpemVGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxNjExRkE1MjY3MDAwMkNDOTNFIC8qIEZp
bGVTaXplRm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTaXplRm9ybWF0dGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBG
aWxlU2l6ZUZvcm1hdHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU2l6ZUZvcm1hdHRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTY2MUZBNTI3MDUwMDJD
QzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMzEzLDYgKzMyMyw4IEBACiAJCQkJMEMyREExMjAx
RjNCRTlFNzAwREJDMzE3IC8qIGNvY29hICovLAogCQkJCTBDNUFGOTBEMUY0M0E0QTQwMDJFQUMw
MiAvKiBpb3MgKi8sCiAJCQkJMEM3Nzg1NkUxRjQ1MTJFOTAwRjRFQkI2IC8qIG1hYyAqLywKKwkJ
CQlGNDQyOTE2MjFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAor
CQkJCUY0NDI5MTYxMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzYy
LDYgKzM3NCw3IEBACiAJCQkJMEMyREExMzExRjNCRUI0OTAwREJDMzE3IC8qIE5TQ29sb3JTUEku
aCAqLywKIAkJCQkwQzJEQTEzMjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAq
LywKIAkJCQkwQzJEQTEzMzFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICov
LAorCQkJCUY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggKi8sCiAJCQkJMEMyREExMzQxRjNCRUI0OTAwREJDMzE3IC8qIE5TU3RyaW5nU1BJLmggKi8s
CiAJCQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91Y2hCYXJTUEkuaCAqLywKIAkJ
CQkwQzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCkBA
IC00NzEsNiArNDg0LDcgQEAKIAkJCQlBMzc4OEU5RjFGMDVCN0NFMDA2Nzk0MjUgLyogc3lzdGVt
ICovLAogCQkJCUEzMEQ0MTFEMUYwREQwQUMwMEI3MTk1NCAvKiB0ZXh0ICovLAogCQkJCTBDMkQ5
RTcyMUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQlGNDQyOTE1RjFG
QTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCAqLywKIAkJCQlBMzlERTc0RDFG
N0M0NDNDMDA3QkNCMDAgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggKi8sCiAJCQkJMDcwOEFDMzIx
RjRDODc0QTAwMUY3ODhGIC8qIExvZ2dlci5oICovLAogCQkJCTA3Mzc3QURCMUY1Nzc3RDcwMDI3
RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCAqLywKQEAgLTUxNyw2ICs1MzEsNyBAQAogCQkxQzQ4NzZE
RTFGOEQ4MzEzMDBDQ0VFQkQgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZv
cm1hdHRlckNvY29hLm1tICovLAogCQkJCTFDNDg3NkRGMUY4RDgzNzUwMENDRUVCRCAvKiBMb2dn
aW5nQ29jb2EubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpAQCAtNjEyLDYgKzYyNyw4
IEBACiAJCQkJMEM1QUY5MUExRjQzQTRDNzAwMkVBQzAyIC8qIERhdGFEZXRlY3RvcnNVSVNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTExNzVCNTcxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRT
ZWFyY2hQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyRDlFNzMxRUVGNUFGNjAwREJD
MzE3IC8qIEV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ0MjkxNjMxRkE1MjY3
MDAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQy
OTE2MDFGQTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExMDI2NTg3MUY1Njc0NjEwMEI0Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwQzVBRjkxQjFGNDNBNEM3MDAyRUFDMDIgLyogR3JhcGhpY3NTZXJ2aWNl
c1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwMjY1OEUxRjU2N0U5RDAwQjRDODQ0IC8qIEhJ
U2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ3LDYgKzY2NCw3IEBACiAJCQkJMEM3
Nzg1OEYxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TRXZlbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBp
biBIZWFkZXJzICovLAorCQkJCUY0NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXpl
Rm9ybWF0dGVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MDFGNDUxMzBGMDBGNEVC
QjYgLyogTlNGb250U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGRTFGNThBNDMzMDA0
NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTExRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCBp
biBIZWFkZXJzICovLApAQCAtNzg0LDYgKzgwMiw4IEBACiAJCQkJMENGOTlDQTgxRjczODQzNzAw
N0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlE
MDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0Ug
LyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0MjkxNjgxRkE1
MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBMzBENDEyMjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXpl
Rm9ybWF0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWJiMDYyYzYwNTZlYmYzN2E2ZjkzZjNjY2YwZmM5OWI1NjY0MjQ2NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvRmlsZVNpemVGb3JtYXR0ZXIu
aApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK1N0cmluZyBm
aWxlU2l6ZURlc2NyaXB0aW9uKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGIwMzk0
MWEyYmY3OGU3ZmIxZjM5NTFjZWEwOTAyNjMyNWMwMmUzMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQpAQCAt
MCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZpbGVTaXplRm9ybWF0dGVyLmgiCisKKyNpbXBvcnQgIk5TRmlsZVNpemVGb3JtYXR0ZXJTUEku
aCIKKworU3RyaW5nIGZpbGVTaXplRGVzY3JpcHRpb24oc2l6ZV90IGZpbGVTaXplKQoreworICAg
IHJldHVybiBOU0xvY2FsaXplZEZpbGVTaXplRGVzY3JpcHRpb24oZmlsZVNpemUsIDAsIDApOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjgyMGRkZmQ0YmJiNWIwNzEzZjk4ZTQxM2ZmMjc2ZTkxNmQwYjViZTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9GaWxlU2l6ZUZvcm1h
dHRlci5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJGaWxlU2l6ZUZvcm1hdHRlci5oIgorCisjaWYgIVBMQVRGT1JNKENPQ09B
KQorCitTdHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbihzaXplX3Qgc2l6ZSkKK3sKKyAgICBpZiAo
c2l6ZSA8IDEgPDwgMTApCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXR1IGJ5dGVz
Iiwgc2l6ZSk7CisgICAgaWYgKHNpemUgPCAxIDw8IDIwKQorICAgICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIiUuMWYgS0IiLCBzaXplIC8gMTAyNC4pOworICAgIGlmIChzaXplIDwgMSA8PCAz
MCkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIE1CIiwgc2l6ZSAvICgxMDI0
LiAqIDEwMjQuKSk7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIEdCIiwgc2l6ZSAv
ICgxMDI0LiAqIDEwMjQuICogMTAyNC4pKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9GaWxlU2l6ZUZvcm1hdHRlci5oIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDdlNmNmYjc0
ZTYyOWZkZjM4OWFjN2RiNWFkOWFjNDE3NDY3MzY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCitQQUxfRVhQT1JUIFN0cmluZyBmaWxlU2l6ZURlc2NyaXB0aW9uKHNpemVfdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9y
bWF0dGVyU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXpl
Rm9ybWF0dGVyU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTBhM2I5NmNkNzU2NGU4Y2UyMjMzNDgyZGI5MzNj
ZWMzZWMwYjdmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL05TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaApAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1w
b3J0IDxGb3VuZGF0aW9uL05TRmlsZVNpemVGb3JtYXR0ZXIuaD4KKworI2Vsc2UKKwordHlwZWRl
ZiB1aW50NjRfdCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9uczsKK05TU3RyaW5nICpOU0xvY2Fs
aXplZEZpbGVTaXplRGVzY3JpcHRpb24odWludDY0X3Qgc2l6ZSwgdWludDY0X3QgbWF4aW11bURp
c3BsYXllZFZhbHVlLCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9ucyk7CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGJlM2RhOGVlMmY3NWViZTJlNzY3YmJhNmU3Nzdm
MDkxNWY5ODgyMjUuLmU2ODdhMjc1NWZhOWVkMTVmMGQ3ZDQ1NzdiYWJlN2E2ZmMwMDQ0ZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQ3LDEyICs0NywxNCBAQAogI2luY2x1ZGUg
IkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgpAQCAtOTgsNiArMTAwLDcgQEAK
ICNpbmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc2li
bGVVbml0cy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHBhbC9GaWxlU2l6ZUZv
cm1hdHRlci5oPgogI2luY2x1ZGUgPHBhbC9zeXN0ZW0vU291bmQuaD4KICNpbmNsdWRlIDxwYWwv
dGV4dC9LaWxsUmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+
CkBAIC0zNzI4LDYgKzM3MzEsMzkgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yVGV4
dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWwKICAgICByZXR1
cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQubG9jYXRpb24s
IHJlc3VsdC5sZW5ndGgpOwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwor
dm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gY29udGVudFR5cGUpCit7CisgICAgaWYgKCFjb250ZW50VHlwZSkKKyAgICAg
ICAgY29udGVudFR5cGUgPSBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoZmlsZW5hbWUpOworICAg
IGluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShpZGVudGlmaWVyLCBmaWxlbmFtZSwgKmNvbnRlbnRU
eXBlLCBGaWxlOjpjcmVhdGUoZmlsZXBhdGgpKTsKK30KKwordm9pZCBFZGl0b3I6Omluc2VydEF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50
VHlwZSkKK3sKKyAgICBpZiAoIWNvbnRlbnRUeXBlKQorICAgICAgICBjb250ZW50VHlwZSA9IEZp
bGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSk7CisgICAgaW5zZXJ0QXR0YWNobWVudEZy
b21GaWxlKGlkZW50aWZpZXIsIGZpbGVuYW1lLCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShC
bG9iOjpjcmVhdGUoZGF0YSwgKmNvbnRlbnRUeXBlKSwgZmlsZW5hbWUpKTsKK30KKwordm9pZCBF
ZGl0b3I6Omluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxG
aWxlPiYmIGZpbGUpCit7CisgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCgpLCBpZGVudGlm
aWVyKTsKKyAgICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0aXRsZUF0dHIs
IGZpbGVuYW1lKTsKKyAgICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdWJ0
aXRsZUF0dHIsIGZpbGVTaXplRGVzY3JpcHRpb24oZmlsZS0+c2l6ZSgpKSk7CisgICAgYXR0YWNo
bWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6dHlwZUF0dHIsIGNvbnRlbnRUeXBlKTsKKyAg
ICBhdHRhY2htZW50LT5zZXRVbmlxdWVJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgIGF0dGFj
aG1lbnQtPnNldEZpbGUoZmlsZS5wdHIoKSk7CisKKyAgICBhdXRvIGZyYWdtZW50VG9JbnNlcnQg
PSBkb2N1bWVudCgpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBmcmFnbWVudFRvSW5z
ZXJ0LT5hcHBlbmRDaGlsZChhdHRhY2htZW50LmdldCgpKTsKKworICAgIHJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoZnJhZ21lbnRUb0luc2VydC5nZXQoKSwgZmFsc2UsIGZhbHNlLCB0cnVl
KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKIHZvaWQgRWRp
dG9yOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShUZXh0Q2hlY2tpbmdSZXN1bHQgYWNjZXB0ZWRD
YW5kaWRhdGUpCiB7CiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gbV9m
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4
IGFhODg1ZmY1OTljMWEwNzVkM2RhMGQwN2NkZjIyNTg1MTZhZWEzN2QuLmZkZmEzZThhODA5YzVh
YjU4MTg2MzU2N2Q1ZThlOTBiZTIwM2Q4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAt
NjMsNyArNjMsOSBAQCBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9z
aXRpb247CiBjbGFzcyBFZGl0b3JDbGllbnQ7CiBjbGFzcyBFZGl0b3JJbnRlcm5hbENvbW1hbmQ7
CitjbGFzcyBGaWxlOwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQ7
CiBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBLZXlib2Fy
ZEV2ZW50OwpAQCAtNDk4LDkgKzUwMCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0dldHRp
bmdEaWN0aW9uYXJ5UG9wdXBJbmZvKGJvb2wgYikgeyBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1
cEluZm8gPSBiOyB9CiAgICAgYm9vbCBpc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKCkgY29u
c3QgeyByZXR1cm4gbV9pc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvOyB9CiAKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlw
ZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2ht
ZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUg
PSBzdGQ6Om51bGxvcHQpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3Vt
ZW50KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQg
aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZpbGU+JiYp
OworI2VuZGlmCisKICAgICBib29sIGNhbkRlbGV0ZVJhbmdlKFJhbmdlKikgY29uc3Q7CiAgICAg
Ym9vbCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CiAgICAgdm9p
ZCBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IGE2ZWQ5NjE1NmFj
ZGE3MjMzM2JiMzZmYTdiNWY1M2FhZmM5YTAyOWIuLjNiZmYwYzdiZjljMThmZjFlOGI2M2NjZDhk
OWRhYjYwYmMxNjMzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5jcHAKQEAgLTI4LDIwICsyOCwyOSBAQAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKIAorI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZpbGUuaCIKKyNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlckF0
dGFjaG1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxBdHRhY2htZW50RWxlbWVudDo6
SFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKK0hUTUxBdHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFjaG1lbnRFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1l
bnQpCisgICAgLCBtX3VuaXF1ZUlkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQo
aGFzVGFnTmFtZShhdHRhY2htZW50VGFnKSk7CiB9CiAKK0hUTUxBdHRhY2htZW50RWxlbWVudDo6
SFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKKyAgICA6IEhUTUxBdHRhY2htZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQoreworfQorCiBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6On5IVE1MQXR0YWNobWVudEVsZW1lbnQoKSA9IGRlZmF1bHQ7CiAKIFJlZjxIVE1M
QXR0YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ5LDYgKzU4LDEx
IEBAIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRN
TEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK1JlZjxIVE1MQXR0
YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxBdHRhY2htZW50RWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCwgaWRlbnRpZmllcikpOworfQorCiBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1
cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQXR0YWNobWVudD4oKnRoaXMsIFdURk1vdmUoc3R5bGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDlh
YzZiNmE4YjE3ODRkMDE2OGVkMDNhMGU5OTQzM2UzODY0ODM5ZTIuLjNhNDRhNWYxMTk5YzcyMDlj
M2IxYWU0OWJlZmJiODE2MTFhNjAzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaApAQCAtMzcsMTAgKzM3LDE0IEBAIGNsYXNzIFJlbmRlckF0dGFjaG1l
bnQ7CiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1l
bnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBjcmVh
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZjxIVE1M
QXR0YWNobWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRmlsZSog
ZmlsZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RmlsZShGaWxlKik7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgdW5pcXVlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5pcXVlSWRl
bnRpZmllcjsgfQorICAgIHZvaWQgc2V0VW5pcXVlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpIHsgbV91bmlxdWVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCiAgICAgV0VC
Q09SRV9FWFBPUlQgU3RyaW5nIGF0dGFjaG1lbnRUaXRsZSgpIGNvbnN0OwogICAgIFN0cmluZyBh
dHRhY2htZW50VHlwZSgpIGNvbnN0OwogCkBAIC00OCw2ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CisgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+SFRN
TEF0dGFjaG1lbnRFbGVtZW50KCk7CiAKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpIGZpbmFsOwpAQCAtNjMsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwog
ICAgIAogICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7CisgICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRp
ZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1No
YXJlZE1lbW9yeS5oCmluZGV4IGM3MmUwZDRiMGFiODcyMDZiY2Y1Mjc1NTM3OTlkYzNiZWZjYmEx
YzAuLmE0NDllNGU3MGQ2MzgzOGVhNzIyYzVlNWRhNzU2NmFkYmFmZmZkZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBFbmNvZGVy
OwogI2lmIE9TKERBUldJTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hY2hTZW5kUmln
aHQ7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiB9CiAjZW5kaWYKIApAQCAtODcsNiArODgsNyBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gYWxsb2NhdGUoc2l6ZV90
KTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRlKHZvaWQqLCBzaXplX3Qs
IFByb3RlY3Rpb24pOworICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjcmVhdGUoUmVm
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IG1hcChjb25zdCBIYW5kbGUmLCBQcm90ZWN0aW9uKTsKICNpZiBVU0UoVU5JWF9ET01BSU5f
U09DS0VUUykKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gd3JhcE1hcCh2b2lkKiwg
c2l6ZV90LCBpbnQgZmlsZURlc2NyaXB0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAppbmRleCBhZWE3OTg1MDQ0OWE4Yjg5Nzk4
ZTkwMzZkN2IwZTUzMDE4MDNhYTU0Li4zOThkNTVlN2MxOTRhYzY5ZjRkYjdhYzBmMmM5YmJhMTYz
ZTBhMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1l
bW9yeUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1l
bW9yeUNvY29hLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNYWNoUG9ydC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWFjaFNlbmRSaWdodC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX2Vy
cm9yLmg+CiAjaW5jbHVkZSA8bWFjaC9tYWNoX3BvcnQuaD4KICNpbmNsdWRlIDxtYWNoL3ZtX21h
cC5oPgpAQCAtMTU2LDYgKzE1NywxMyBAQCBzdGF0aWMgV2ViQ29yZTo6TWFjaFNlbmRSaWdodCBt
YWtlTWVtb3J5RW50cnkoc2l6ZV90IHNpemUsIHZtX29mZnNldF90IG9mZnNldCwgUwogICAgIHJl
dHVybiBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0OjphZG9wdChwb3J0KTsKIH0KIAorUmVmUHRyPFNo
YXJlZE1lbW9yeT4gU2hhcmVkTWVtb3J5OjpjcmVhdGUoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIpCit7CisgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6OmFsbG9jYXRlKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICBtZW1jcHkoc2hhcmVkTWVtb3J5QnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgcmV0dXJu
IHNoYXJlZE1lbW9yeUJ1ZmZlcjsKK30KKwogUmVmUHRyPFNoYXJlZE1lbW9yeT4gU2hhcmVkTWVt
b3J5OjpjcmVhdGUodm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIFByb3RlY3Rpb24gcHJvdGVjdGlv
bikKIHsKICAgICBBU1NFUlQoc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQppbmRleCAwZTZm
NjY5NjdhZTBlMTBmYjE0NmE3YjdlNjU4MDM0NGU4Y2ZkMTMwLi43ODlmMzg0NWY2ZGViNjQ2ZWVl
NzA1NzkzYTJkOGE2ZGM2OWNhYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
TWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKQEAgLTIyMiw2
ICsyMjIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dp
bmRvd0ZlYXR1cmVzLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mby5tbQorICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQogICAg
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb24ubW0KICAgICBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbQogICAgIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmgKaW5kZXggNGEzNTgwOTdj
N2M0Mjg1MmZlNmE1MGJkMWEwMzA0MDM0NGNmNzNiOS4uMThiZjBjNWQ4YTYzYWZlMzkwMzJmYjQ0
N2I1MjI1ZTUyMTg3NmJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dlYktpdFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V2ViS2l0UHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tBdHRhY2htZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRWxlbWVudEFj
dGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0ZvY3VzZWRFbGVtZW50SW5mby5oPgogI2ltcG9y
dCA8V2ViS2l0L19XS0Zvcm1JbnB1dFNlc3Npb24uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDE0NjgxMzFlYTFiNDAwZTAzODg1YmY2
NTcwY2M3ZmFhZWI0MGEyMDQuLmZkNzY4NWFmMDBkYTQ3MjUzN2Y3NGJjYmJkYmEwOWQ5OGE0OTg2
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtOTQsMTEgKzk0LDEzIEBACiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9KU0RPTUJpbmRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01FeGNl
cHRpb25IYW5kbGluZy5oPgorI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1l
QXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NldHRpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZpZXdwb3J0
QXJndW1lbnRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dyaXRpbmdNb2RlLmg+CkBAIC0xMTAsNiAr
MTEyLDcgQEAKICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CisjaW1wb3J0IDx3dGYvVVVJRC5oPgog
I2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4
dFN0cmVhbS5oPgogCkBAIC0xMTkxLDYgKzExOTQsMzcgQEAgLSAodm9pZClfZGlkQ2hhbmdlRWRp
dG9yU3RhdGUKICAgICAgICAgW3VpRGVsZWdhdGUgX3dlYlZpZXc6c2VsZiBlZGl0b3JTdGF0ZURp
ZENoYW5nZTpkaWN0aW9uYXJ5UmVwcmVzZW50YXRpb25Gb3JFZGl0b3JTdGF0ZShfcGFnZS0+ZWRp
dG9yU3RhdGUoKSldOwogfQogCisjcHJhZ21hIG1hcmsgLSBBdHRhY2htZW50IGVkaXRpbmcgc3Vw
cG9ydAorCistICh2b2lkKWF0dGFjaG1lbnQ6KF9XS0F0dGFjaG1lbnQgKilhdHRhY2htZW50IHVw
ZGF0ZURhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCist
ICh2b2lkKWF0dGFjaG1lbnQ6KF9XS0F0dGFjaG1lbnQgKilhdHRhY2htZW50IHVwZGF0ZURpc3Bs
YXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKK30KKworLSAodm9pZClhdHRhY2htZW50OihfV0tBdHRhY2htZW50
ICopYXR0YWNobWVudCByZXF1ZXN0RGF0YVdpdGhDb21wbGV0aW9uOihfV0tBdHRhY2htZW50RGF0
YUhhbmRsZXIpY29tcGxldGlvbgoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgY29tcGxl
dGlvbihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9tYWluIGNvZGU6V0tF
cnJvclVua25vd24gdXNlckluZm86bmlsXSk7Cit9CisKKy0gKF9XS0F0dGFjaG1lbnQgKilfaW5z
ZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50VHlw
ZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBkYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6KF9X
S0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShC
T09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCk7CisgICAgX3BhZ2UtPmluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllciwgZmlsZW5hbWUsIGNv
bnRlbnRUeXBlLmxlbmd0aCA/IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB7IGNvbnRlbnRUeXBlIH0g
OiBzdGQ6Om51bGxvcHQsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpLCBbY2Fw
dHVyZWRIYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAoY2FwdHVyZWRIYW5kbGVy
KQorICAgICAgICAgICAgY2FwdHVyZWRIYW5kbGVyKGVycm9yID09IFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvcjo6Tm9uZSk7CisgICAgfSk7CisgICAgcmV0dXJuIFtfV0tBdHRhY2htZW50IGF0
dGFjaG1lbnRXaXRoSWRlbnRpZmllcjppZGVudGlmaWVyIGRlbGVnYXRlOnNlbGZdOworI2VuZGlm
Cit9CisKKwogI3ByYWdtYSBtYXJrIGlPUy1zcGVjaWZpYyBtZXRob2RzCiAKICNpZiBQTEFURk9S
TShJT1MpCkBAIC02MDMzLDcgKzYwNjcsOCBAQCAtICh2b2lkKV9kaXNhYmxlQmFja0ZvcndhcmRT
bmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nCiAtICh2b2lkKV9leGVjdXRlRWRpdENvbW1hbmQ6
KE5TU3RyaW5nICopY29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVudCBjb21wbGV0
aW9uOih2b2lkICheKShCT09MKSljb21wbGV0aW9uCiB7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0
Q29tbWFuZChjb21tYW5kLCBhcmd1bWVudCwgW2NhcHR1cmVkQ29tcGxldGlvbkJsb2NrID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb24pXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKLSAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uQmxvY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yOjpOb25lKTsKKyAgICAgICAgaWYgKGNhcHR1cmVkQ29tcGxldGlvbkJs
b2NrKQorICAgICAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uQmxvY2soZXJyb3IgPT0gV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRl
eCBkMmQ2ZWI4ODU2ZGZiNWZjYzRkMDQxM2Y5MDYyYTEyN2Q5NTI1NTllLi45ZjVkOTJiYWZmNTY0
Y2Q1YjFiOTMwZjQ2YWJmZmRhMTcwZjIzMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtMjksNiArMjksNyBA
QAogCiAjaW1wb3J0ICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiX1dLQXR0YWNobWVudEludGVybmFsLmgi
CiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAg
LTQxLDExICs0MiwxMSBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1MpCi0jZGVmaW5lIFdL
X1dFQl9WSUVXX1BST1RPQ09MUyA8VUlTY3JvbGxWaWV3RGVsZWdhdGU+CisjZGVmaW5lIFdLX1dF
Ql9WSUVXX1BST1RPQ09MUyA8VUlTY3JvbGxWaWV3RGVsZWdhdGUsIF9XS0F0dGFjaG1lbnREZWxl
Z2F0ZT4KICNlbmRpZgogCiAjaWYgIWRlZmluZWQoV0tfV0VCX1ZJRVdfUFJPVE9DT0xTKQotI2Rl
ZmluZSBXS19XRUJfVklFV19QUk9UT0NPTFMKKyNkZWZpbmUgV0tfV0VCX1ZJRVdfUFJPVE9DT0xT
IDxfV0tBdHRhY2htZW50RGVsZWdhdGU+CiAjZW5kaWYKIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
T3BhcXVlV0tQYWdlKiBXS1BhZ2VSZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA1ZWQyYjJjMWIxYWYxNzU2ODM5
ODczYTQ1M2I3ODNhMzAxY2Q3YmFlLi45MjIwZTE2Nzg3NzQwYjE0NzA0ZWQ0ZDI2NGM0ODQxZjRh
MDRiMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBXS19BUElfRU5BQkxFRAog
CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaD4KKyNpbXBvcnQgPFdl
YktpdC9fV0tBdHRhY2htZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRmluZE9wdGlvbnMuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tMYXlvdXRNb2RlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLT3Zl
cmxheVNjcm9sbGJhclN0eWxlLmg+CkBAIC00NDcsNCArNDQ4LDggQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIAogQGVuZAogCitAaW50ZXJmYWNlIFdLV2Vi
VmlldyAoQXR0YWNobWVudFN1cHBvcnQpCistIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFj
aG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29udGVudFR5cGU6KE5TU3Ry
aW5nICopY29udGVudFR5cGUgZGF0YTooTlNEYXRhICopZGF0YSBvcHRpb25zOihfV0tBdHRhY2ht
ZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNj
ZXNzKSljb21wbGV0aW9uSGFuZGxlcjsKK0BlbmQKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYmUx
ZWJkMmEwYjIxZjgzNDU3NTViMjBkODdmMDMwZDJlYzY4ZjBkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9X
S0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3R5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSkgeworICAgIF9XS0F0dGFjaG1lbnRE
aXNwbGF5TW9kZUF1dG8gPSAxLAorICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUljb24sCisg
ICAgX1dLQXR0YWNobWVudERpc3BsYXlNb2RlSW1hZ2UKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKK3R5cGVkZWYgdm9pZCheX1dLQXR0
YWNobWVudERhdGFIYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAqKTsKKworV0tfQ0xBU1NfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBf
V0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9t
aWMpIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlOworQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgZXhwYW5kc0ltYWdlVG9NYXhpbXVtV2lkdGg7CitAZW5kCisKK1dLX0NMQVNTX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dL
QXR0YWNobWVudCA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSwgcmVhZG9ubHkpIE5TU3RyaW5nICp1bmlxdWVJZGVudGlmaWVyOworLSAodm9pZClyZXF1
ZXN0RGF0YTooX1dLQXR0YWNobWVudERhdGFIYW5kbGVyKWNvbXBsZXRpb247CistICh2b2lkKXNl
dERhdGE6KE5TRGF0YSAqKWRhdGE7CistICh2b2lkKXNldERpc3BsYXlPcHRpb25zOihfV0tBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zOworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZTM4NjA3YmIyZjliMTNmNjlhOTM4OTYyMjRhYTJhZDk0YmMxMDU4NQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50
Lm1tCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJfV0tBdHRhY2htZW50LmgiCisKKyNpbXBvcnQgIldLRXJyb3IuaCIKKyNpbXBvcnQg
IldLV2ViVmlldy5oIgorI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKKyNpbXBvcnQgIl9XS0F0dGFj
aG1lbnRJbnRlcm5hbC5oIgorI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW1w
bGVtZW50YXRpb24gX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zIDogTlNPYmplY3QKKworLSAo
aW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAg
ICAgICBfbW9kZSA9IF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUF1dG87CisgICAgICAgIF9leHBh
bmRzSW1hZ2VUb01heGltdW1XaWR0aCA9IE5POworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30K
KworQGVuZAorCitAaW1wbGVtZW50YXRpb24gX1dLQXR0YWNobWVudCB7CisgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfdW5pcXVlSWRlbnRpZmllcjsKKyAgICBXZWFrT2JqQ1B0cjxpZDxfV0tBdHRh
Y2htZW50RGVsZWdhdGU+PiBfZGVsZWdhdGU7Cit9CisKKysgKGluc3RhbmNldHlwZSlhdHRhY2ht
ZW50V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBkZWxlZ2F0ZTooaWQgPF9X
S0F0dGFjaG1lbnREZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxv
Y10gaW5pdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIgZGVsZWdhdGU6ZGVsZWdhdGVdIGF1dG9y
ZWxlYXNlXTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyIGRlbGVnYXRlOihpZDxfV0tBdHRhY2htZW50RGVsZWdhdGU+KWRlbGVn
YXRlCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIF91bmlxdWVJZGVu
dGlmaWVyID0gYWRvcHROUyhbaWRlbnRpZmllciBjb3B5XSk7CisgICAgcmV0dXJuIHNlbGY7Cit9
CisKKy0gKE5TU3RyaW5nICopdW5pcXVlSWRlbnRpZmllcgoreworICAgIHJldHVybiBfdW5pcXVl
SWRlbnRpZmllci5nZXQoKTsKK30KKworLSAodm9pZClyZXF1ZXN0RGF0YToodm9pZCheKShOU0Rh
dGEgKiwgTlNFcnJvciAqKSljb21wbGV0aW9uCit7CisgICAgaWYgKCFfZGVsZWdhdGUpIHsKKyAg
ICAgICAgY29tcGxldGlvbihuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9yRG9t
YWluIGNvZGU6V0tFcnJvclVua25vd24gdXNlckluZm86QHsgQCJyZWFzb24iIDogQCIlQCBpcyBu
byBsb25nZXIgY29ubmVjdGVkIHRvIGl0cyB3ZWIgdmlldy4iIH1dKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFtfZGVsZWdhdGUgYXR0YWNobWVudDpzZWxmIHJlcXVlc3REYXRhV2l0
aENvbXBsZXRpb246Y29tcGxldGlvbl07Cit9CisKKy0gKHZvaWQpc2V0RGF0YTooTlNEYXRhICop
ZGF0YQoreworICAgIFtfZGVsZWdhdGUgYXR0YWNobWVudDpzZWxmIHVwZGF0ZURhdGE6ZGF0YV07
Cit9CisKKy0gKHZvaWQpc2V0RGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0
aW9ucyAqKW9wdGlvbnMKK3sKKyAgICBbX2RlbGVnYXRlIGF0dGFjaG1lbnQ6c2VsZiB1cGRhdGVE
aXNwbGF5T3B0aW9uczpvcHRpb25zXTsKK30KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUg
Kil6b25lCit7CisgICAgcmV0dXJuIFtbX1dLQXR0YWNobWVudCBhbGxvY10gaW5pdFdpdGhJZGVu
dGlmaWVyOnNlbGYudW5pcXVlSWRlbnRpZmllciBkZWxlZ2F0ZTpfZGVsZWdhdGUuZ2V0QXV0b3Jl
bGVhc2VkKCldOworfQorCistIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAoreworICAgIHJldHVy
biBbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W19XS0F0dGFjaG1lbnQgY2xhc3NdXSAmJiBbX3VuaXF1
ZUlkZW50aWZpZXIgaXNFcXVhbDpbKF9XS0F0dGFjaG1lbnQgKilvYmplY3QgdW5pcXVlSWRlbnRp
Zmllcl1dOworfQorCistIChOU1VJbnRlZ2VyKWhhc2gKK3sKKyAgICByZXR1cm4gW191bmlxdWVJ
ZGVudGlmaWVyIGhhc2hdOworfQorCistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIGlkPSclQCcgZGVsZWdhdGU9
PCVAOiAlcD4+IiwgW3NlbGYgY2xhc3NdLCBzZWxmLnVuaXF1ZUlkZW50aWZpZXIsIFtfZGVsZWdh
dGUgY2xhc3NdLCBfZGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCldOworfQorCitAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudElu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVu
dEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUwMjJmMTliZTNlODU3OGE3ODNlODcyYjIyNTJmNjg2
OTdkMGZjYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdHRhY2htZW50SW50ZXJuYWwuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIl9XS0F0dGFjaG1lbnQuaCIKKworQHByb3RvY29s
IF9XS0F0dGFjaG1lbnREZWxlZ2F0ZSA8TlNPYmplY3Q+CistICh2b2lkKWF0dGFjaG1lbnQ6KF9X
S0F0dGFjaG1lbnQgKilhdHRhY2htZW50IHJlcXVlc3REYXRhV2l0aENvbXBsZXRpb246KF9XS0F0
dGFjaG1lbnREYXRhSGFuZGxlciljb21wbGV0aW9uOworLSAodm9pZClhdHRhY2htZW50OihfV0tB
dHRhY2htZW50ICopYXR0YWNobWVudCB1cGRhdGVEaXNwbGF5T3B0aW9uczooX1dLQXR0YWNobWVu
dERpc3BsYXlPcHRpb25zICopb3B0aW9uczsKKy0gKHZvaWQpYXR0YWNobWVudDooX1dLQXR0YWNo
bWVudCAqKWF0dGFjaG1lbnQgdXBkYXRlRGF0YTooTlNEYXRhICopZGF0YTsKK0BlbmQKKworQGlu
dGVyZmFjZSBfV0tBdHRhY2htZW50ICgpCisrIChpbnN0YW5jZXR5cGUpYXR0YWNobWVudFdpdGhJ
ZGVudGlmaWVyOihOU1N0cmluZyAqKWlkZW50aWZpZXIgZGVsZWdhdGU6KGlkIDxfV0tBdHRhY2ht
ZW50RGVsZWdhdGU+KWRlbGVnYXRlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmll
cjooTlNTdHJpbmcgKilpZGVudGlmaWVyIGRlbGVnYXRlOihpZCA8X1dLQXR0YWNobWVudERlbGVn
YXRlPilkZWxlZ2F0ZTsKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IGRjYmI1Mjg3YWU0YjA5YTZiZTM3ODBjYzAwODBkM2ZmMTRiYWQ5MGMuLjRmNWRh
MmJhZjE4OTgyMGQ2MjQ5OWM3NGUyMmQ0NGUzYWFlMmQ1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzEwNSw0ICs3MTA1LDI2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmlu
ZyYmIHRvcEZyYW1lCiAgICAgfSk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBj
b250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBGdW5jdGlvbjx2b2lkKENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0g
U2hhcmVkTWVtb3J5OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgaWYgKCFzaGFyZWRNZW1v
cnkpIHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7
CisgICAgaWYgKCFzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKSB7CisgICAgICAgIGNhbGxiYWNrKENhbGxiYWNrQmFz
ZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBmaWxl
bmFtZSwgY29udGVudFR5cGUsIGRhdGEtPnNpemUoKSwgaGFuZGxlLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDgxNjUyNTdlNWE1MmZmZjYzODBkNmRkM2Y1NWRkYjBmM2QzZTI3OTAuLmQyZDQzMjQ3Yzhi
MWE3MTE1ZTZhZTIxNWJmYmQyZGE0NjU5MTc1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCkBAIC0xMjExLDYgKzEyMTEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CiAKKyNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBjb250ZW50VHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBGdW5jdGlv
bjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAg
IFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFn
ZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUlu
aXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDU2YzljNGE4ZDJmNDQ2NmU1ZGVlNGJkNTVhZDAwOTNhNjIzYmM3MDcuLjRm
ZDM4ZmI3N2ZkZWQ0ZWFlOTU0N2RiODI0YjkyZjkxZGQyYjU2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjA4Miw2ICsyMDgyLDkg
QEAKIAkJRURDQTcxQjcxMjhEREE4QzAwMjAxQjI2IC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEyMkYxMDAx
Mjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwICovOyB9OwogCQlGMDM2
OTc4ODE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBF
IC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLzsgfTsKIAkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhF
IC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlGNDQyOTE5MjFGQTU5MUM5MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MjkxOTExRkE1
OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDQyOTE5NDFGQTU5MzExMDAyQ0M5M0UgLyogX1dL
QXR0YWNobWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NDI5MTkzMUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tICovOyB9Owor
CQlGNDQyOTE5NjFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE5NTFGQTU5
NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggKi87IH07CiAJCUY0NERGRUIy
MUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRERkVCMDFFOUU3NTJGMDAzOEQxOTYgLyog
V2ViSWNvblV0aWxpdGllcy5oICovOyB9OwogCQlGNDRERkVCMzFFOUU3NTJGMDAzOEQxOTYgLyog
V2ViSWNvblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLm1t
ICovOyB9OwogCQlGNDk2QTQzMTFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDk2QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmggKi87
IH07CkBAIC00NTI2LDYgKzQ1MjksOSBAQAogCQlFQ0JGQzFEQjFFNkE0RDY2MDAwMzAwQzcgLyog
RXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRyYVB1YmxpY1N5
bWJvbHNGb3JUQVBJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYwMzY5Nzg3MTVG
NEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJDb2xvclBpY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RyYWdEZXN0aW5hdGlv
bkFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE5MTFGQTU5MTA3
MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdHRhY2htZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTkzMUZBNTkzMTEwMDJDQzkz
RSAvKiBfV0tBdHRhY2htZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXR0YWNobWVu
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxOTUxRkE1OTQyQTAwMkND
OTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdHRhY2ht
ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0REZFQjAxRTlF
NzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViSWNvblV0aWxpdGllcy5oOyBwYXRoID0gaW9zL1dlYkljb25VdGlsaXRp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0REZFQjExRTlFNzUyRjAwMzhE
MTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXZWJJY29uVXRpbGl0aWVzLm1tOyBwYXRoID0gaW9zL1dlYkljb25VdGlsaXRp
ZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0OTZBNDJGMUY1OEEyNzIwMDRD
MTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLmg7IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzQ2LDYgKzU3NTIsOSBAQAogCQkJ
CTM3QTVFMDEyMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oICov
LAogCQkJCTM3QTVFMDExMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5m
by5tbSAqLywKIAkJCQkzNzlBODczNTE4QkJGQTQzMDA1ODhBRjIgLyogX1dLQWN0aXZhdGVkRWxl
bWVudEluZm9JbnRlcm5hbC5oICovLAorCQkJCUY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBf
V0tBdHRhY2htZW50LmggKi8sCisJCQkJRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0
dGFjaG1lbnQubW0gKi8sCisJCQkJRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFj
aG1lbnRJbnRlcm5hbC5oICovLAogCQkJCTk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tB
dXRvbWF0aW9uRGVsZWdhdGUuaCAqLywKIAkJCQk5OTBEMjhBNzFDNjQwNEIwMDA5ODY5NzcgLyog
X1dLQXV0b21hdGlvblNlc3Npb24uaCAqLywKIAkJCQk5OTBEMjhBRDFDNjUxOTA0MDA5ODY5Nzcg
LyogX1dLQXV0b21hdGlvblNlc3Npb24ubW0gKi8sCkBAIC04NDAzLDYgKzg0MTIsOCBAQAogCQkJ
ZmlsZXMgPSAoCiAJCQkJMzdBNUUwMTQxOEJCRjkzRjAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVs
ZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlBODczNjE4QkJGQTQzMDA1ODhBRjIg
LyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RjQ0MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY0NDI5MTk2MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTcxNEM1MUMxMjRBMDQwMDY2NUIzQSAvKiBfV0tBdXRv
bWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MEQyOEFCMUM2NDIwQzYwMDk4
Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk3ODhB
Q0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmlndXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMDA0Myw2ICsxMDA1NCw3IEBACiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMzdBNUUwMTMxOEJCRjkzNzAwMEEw
ODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0
MjkxOTQxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk5OTBEMjhCMjFDNjUyMDk0MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQk5OTc4OEFDQzFGNDIxREUyMDBDMDgwMDAgLyogX1dLQXV0b21h
dGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NzA0Rjcx
QkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggOWRhYTI4NzIyNWRhZmFjMzQwZTU4OWU2OTI4YzdiMjcxYzdhMGY0Mi4uZWExODY2MDM1YzFk
NmEwMTA3ZWY1NmVhZTQ3ZWIxNjYzNmJmZjQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE2Myw2ICsxNjMsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oPgpAQCAtNTc1Nyw0ICs1NzU4LDE5IEBAIHZvaWQgV2ViUGFnZTo6c3RvcmFnZUFj
Y2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQogICAgIGNh
bGxiYWNrKHdhc0dyYW50ZWQpOwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
Kwordm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRU
eXBlLCB1aW50NjRfdCBkYXRhTGVuZ3RoLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFu
ZGxlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7CisgICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5
ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KSkgeworICAgICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5LT5kYXRh
KCkpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0QXR0YWNobWVu
dChpZGVudGlmaWVyLCBmaWxlbmFtZSwgV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpOworICAg
IH0KKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxi
YWNrSUQpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDczZmRlMjgyMjQyZDNiMjZmM2YyYWRkMjI1NmFhM2ZkNTM3YzkwYTYuLjY5
ZDIwOGE2YTFlMTkzMjJmYTVkYjcwNDA2YjZiNWEzYjcwZTRkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk5OCw2ICs5OTgsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBT
dHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY2FsbGJh
Y2spOwogICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWlu
dDY0X3QgY29udGV4dElkKTsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAg
dm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCB1aW50NjRf
dCBkYXRhTGVuZ3RoLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIENhbGxiYWNrSUQpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ2MTA5OGIzNTQ5MmNiZjBmYjBh
ZGRhOTlmYmFkMDJhMGI2ZTkwZDMuLjIxNmM1OWQ4ZjM4ZWJhM2RiOWRmNjEyMjllYWI2MmU3Mjlj
MWQxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtNDg0LDQgKzQ4NCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgewogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCiAKICAgICBTdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFu
dGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQorICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBmaWxlbmFt
ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCB1aW50NjRfdCBkYXRhTGVuZ3Ro
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNzBhODU2ZmI1YzA3NTY2MDY2OGM1Y2IxYTlhNDQwZTY3NjIyNGRh
MS4uMGVlNDE2NDc0Y2UzYzE3MDAxMWYxYzU0OWQ5N2Y0NDExOGM4NjQ2YyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDE3LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNl
cnRpbmcgYXR0YWNobWVudCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRz
IGEgbmV3IEFQSSB0ZXN0IHN1aXRlIHRvIGV4ZXJjaXNlIGF0dGFjaG1lbnQgZWxlbWVudCBpbnNl
cnRpb24gYW5kIG1hbmlwdWxhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06IEFkZGVkLgorICAgICAg
ICAod2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cyk6CisgICAgICAgICh0ZXN0SFRNTERhdGEp
OgorICAgICAgICAodGVzdEltYWdlRGF0YSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3lu
Y2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpv
cHRpb25zOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6Zm9y
UXVlcnlTZWxlY3RvcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3
LTEwLTI4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbV1BFXSBCdWlsZCBnc3QtcGx1Z2lucy1iYXNlIHdpdGhvdXQgcGFuZ28gc3VwcG9ydApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMzYwMWFhZTVjOGEzYjEwOWFkZjUzNzcxYzNjOWU3
ODk3NDE3MDM1Li41YThmYjUzZDRhNzllMDM0NmIzYjMyMDk0ZGUzMWRlZDBkODQzOWVjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODksNiArODksNyBAQAogCQkyRTFERkRGMTFENDJFMUU0
MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXIt
ZW5kaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkUxREZERjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8t
YmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sICovOyB9OwogCQkyRTIwNUJBNDFG
NTI3NzQ2MDA1OTUyREQgLyogQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUyMDVCQTMxRjUyNzc0NjAwNTk1MkRE
IC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSAqLzsgfTsKIAkJMkU1NEY0MEQxRDdCQzg0MjAw
OTIxQURGIC8qIGxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNTRGNDBDMUQ3QkM4Mzkw
MDkyMUFERiAvKiBsYXJnZS12aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCAqLzsgfTsKKwkJMkU1
Qzc3MDcxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU1Qzc3MDYxRkE3MDEzNjAwNTkz
MkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1tICovOyB9OwogCQkyRTY5MUFFQTFENzhCNTM2MDAx
Mjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkx
QUU4MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNv
bnRyb2xzLmh0bWwgKi87IH07CiAJCTJFNjkxQUVCMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12
aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUU5MUQ3OEI1MkIwMDEy
OTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sICov
OyB9OwogCQkyRTY5MUFFRDFENzhCOTEwMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmct
bXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFQzFENzhCOTAyMDAxMjk0MDcgLyog
bGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLzsg
fTsKQEAgLTExNjgsNiArMTE2OSw3IEBACiAJCTJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBs
YXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmlu
Zy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFMjA1QkEzMUY1Mjc3NDYwMDU5NTJERCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNTRGNDBDMUQ3QkM4MzkwMDkyMUFERiAvKiBsYXJnZS12
aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJs
YXJnZS12aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJFNUM3NzA2MUZBNzAxMzYwMDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQXR0YWNobWVudFRlc3RzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTY5MUFFODFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9z
LXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjkxQUU5MUQ3OEI1MkIwMDEyOTQwNyAvKiBs
YXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRy
b2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTY5MUFFQzFENzhCOTAy
MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJv
bHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtcGxheWlu
Zy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNzQsNiArMjA3Niw3IEBACiAJCQkJNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0
IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbSAqLywKIAkJCQk1MTIwQzgzQzFFNjc1MDc5
MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tICovLAogCQkJCTVDOUU1
Njg0MURGOTE0M0QwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMubW0gKi8sCisJCQkJMkU1Qzc3
MDYxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1tICovLAogCQkJCTFGODM1
NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSAqLywKIAkJCQk1Q0Uz
NTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8sCiAJ
CQkJMkQ4MzhCMUUxRUVGM0E1QjAwOUI5ODBFIC8qIFdLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9u
cy5tbSAqLywKQEAgLTI0NDAsNyArMjQ0Myw2IEBACiAJCUJDOTA5NjQxMTI1NTYxNjAwMDA4Mzc1
NiAvKiBXZWJLaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCTA3RTQ5OTkwMUY5RTU2QTEwMDJGMUVGMyAvKiBHZXRVc2VyTWVkaWFSZXByb21wdC5tbSAq
LywKIAkJCQkwRjEzOUU3NDFBNDIzQTQ2MDBGNTkwRjUgLyogY29jb2EgKi8sCiAJCQkJQzBDNUQz
QkIxNDU5OEI2RjAwQTgwMkE2IC8qIG1hYyAqLywKIAkJCQlCQzkwOTc3QjEyNTU3MUFFMDAwODM3
NTYgLyogUmVzb3VyY2VzICovLApAQCAtMjQ3OCw2ICsyNDgwLDcgQEAKIAkJCQlGNjYwQUEwQzE1
QTVGMDYxMDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
Q2FsbGJhY2suY3BwICovLAogCQkJCUY2NjBBQTBGMTVBNUY2MjQwMDNBMTI0MyAvKiBHZXRJbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwICovLAog
CQkJCTA3Q0UxQ0YyMUYwNkE3RTAwMEJGODlGNSAvKiBHZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1t
ICovLAorCQkJCTA3RTQ5OTkwMUY5RTU2QTEwMDJGMUVGMyAvKiBHZXRVc2VyTWVkaWFSZXByb21w
dC5tbSAqLywKIAkJCQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5v
ZGVIYW5kbGUuY3BwICovLAogCQkJCTRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0
UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovLAogCQkJCUJDNTc1QUFDMTI2RTgzQjkwMDZG
MEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2ljLmNwcCAqLywKQEAgLTMyNzcsNyArMzI4MCw2IEBA
CiAJCQkJNDYzOTdCOTUxREMyQzg1MDAwOUE3OEFFIC8qIERPTU5vZGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VCQzFBNDExQTdFMDA0NDdDNEMgLyogRE9NTm9kZUZyb21KU09iamVjdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUJEMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01SYW5n
ZU9mU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMDdFNDk5OTExRjlFNTZERjAwMkYxRUYz
IC8qIEdldFVzZXJNZWRpYVJlcHJvbXB0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRUMx
QTQxMUFFNjAwNDQ3QzRDIC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUVEMUE0MTFBRTYwMDQ0N0M0QyAvKiBET01XaW5kb3dFeHRlbnNpb25O
b0NhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjIzMUE0MTFBRjYwMDQ0N0M0QyAv
KiBEb3dubG9hZC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzMyNCw2ICszMzI2LDcgQEAKIAkJCQk3
Q0NFN0VGOTFBNDExQUU2MDA0NDdDNEMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRTIxQTQxMUE5
QTAwNDQ3QzRDIC8qIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDdDRTFDRjMxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmln
YXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQkwN0U0OTk5MTFGOUU1NkRGMDAyRjFFRjMgLyog
R2V0VXNlck1lZGlhUmVwcm9tcHQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZCREJBQzFFNzIw
N0YxMDBERTBENUEgLyogR1BVQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE1MjMxQ0Ex
RUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTMxNjJBRTlDMUU2RjJGRjUwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gaW4gU291cmNlcyAqLywK
QEAgLTM1MjEsNiArMzUyNCw3IEBACiAJCQkJN0NDRTdGMUMxQTQxMUFFNjAwNDQ3QzRDIC8qIFdp
bGxTZW5kU3VibWl0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDgxQTQxMUE3
RTAwNDQ3QzRDIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VEOTFBNDExQTdFMDA0NDdDNEMgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0g
aW4gU291cmNlcyAqLywKKwkJCQkyRTVDNzcwNzFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2ht
ZW50VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjgzNTcxQjFEM0ZGQjIzMDBFMzk2N0Ig
LyogV0tCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyRTFBNDEx
QjEwMDA0NDdDNEMgLyogV0tCcm93c2luZ0NvbnRleHRHcm91cFRlc3QubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0YyRjFBNDExQjEwMDA0NDdDNEMgLyogV0tCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGVUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yZjI3Y2M0ODhhYmU3MmQ4MThlNmViYmQ0ZDM1MjFlNTk0NGU5Mjc5Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0
UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yVGVzdGluZ0F0
dGFjaG1lbnRzKCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRB
dHRhY2htZW50RWxlbWVudEVuYWJsZWQ6WUVTXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT48
L2JvZHk+PHNjcmlwdD5kb2N1bWVudC5ib2R5LmZvY3VzKCk7PC9zY3JpcHQ+Il07CisKKyAgICBy
ZXR1cm4gd2ViVmlldzsKK30KKworc3RhdGljIE5TRGF0YSAqdGVzdEhUTUxEYXRhKCkKK3sKKyAg
ICByZXR1cm4gW0AiPGEgaHJlZj0nIyc+VGhpcyBpcyBzb21lIEhUTUwgZGF0YTwvYT4iIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKK30KKworc3RhdGljIE5TRGF0YSAq
dGVzdEltYWdlRGF0YSgpCit7CisgICAgcmV0dXJuIFVJSW1hZ2VQTkdSZXByZXNlbnRhdGlvbihb
VUlJbWFnZSBpbWFnZU5hbWVkOkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMvaWNvbi5wbmciXSk7
Cit9CisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChBdHRhY2htZW50VGVzdGluZykK
KworLSAoX1dLQXR0YWNobWVudCAqKXN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRl
bnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlP
cHRpb25zICopb3B0aW9ucworeworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAg
X1dLQXR0YWNobWVudCAqYXR0YWNobWVudCA9IFtzZWxmIF9pbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVuYW1lOmZpbGVuYW1lIGNvbnRlbnRUeXBlOmNvbnRlbnRUeXBlIGRhdGE6ZGF0YSBvcHRpb25z
Om9wdGlvbnMgY29tcGxldGlvbjpeKEJPT0wpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICByZXR1cm4gYXR0
YWNobWVudDsKK30KKworLSAoTlNTdHJpbmcgKil2YWx1ZU9mQXR0cmlidXRlOihOU1N0cmluZyAq
KWF0dHJpYnV0ZU5hbWUgZm9yUXVlcnlTZWxlY3RvcjooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9y
Cit7CisgICAgcmV0dXJuIFtzZWxmIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCclQCcpLmdldEF0
dHJpYnV0ZSgnJUAnKSIsIHF1ZXJ5U2VsZWN0b3IsIGF0dHJpYnV0ZU5hbWVdXTsKK30KKworQGVu
ZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHMs
IEF0dGFjaG1lbnRFbGVtZW50SW5zZXJ0aW9uKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZp
ZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKworICAgIC8vIFVzZSB0aGUgZ2l2ZW4gY29udGVu
dCB0eXBlIGZvciB0aGUgYXR0YWNobWVudCBlbGVtZW50J3MgdHlwZS4KKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvbyIgY29udGVudFR5
cGU6QCJ0ZXh0L2h0bWwiIGRhdGE6dGVzdEhUTUxEYXRhKCkgb3B0aW9uczpuaWxdOworICAgIEVY
UEVDVF9XS19TVFJFUShAImZvbyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIg
Zm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAi
dGV4dC9odG1sIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2Vs
ZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIjM4IGJ5dGVzIiwg
W3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInN1YnRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAi
YXR0YWNobWVudCJdKTsKKworICAgIC8vIFNpbmNlIG5vIGNvbnRlbnQgdHlwZSBpcyBleHBsaWNp
dGx5IHNwZWNpZmllZCwgY29tcHV0ZSBpdCBmcm9tIHRoZSBmaWxlIGV4dGVuc2lvbi4KKyAgICBb
d2ViVmlldyBfZXhlY3V0ZUVkaXRDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5p
bCBjb21wbGV0aW9uOm5pbF07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFj
aG1lbnRXaXRoRmlsZW5hbWU6QCJiYXIucG5nIiBjb250ZW50VHlwZTpuaWwgZGF0YTp0ZXN0SW1h
Z2VEYXRhKCkgb3B0aW9uczpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUShAImJhci5wbmciLCBb
d2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRh
Y2htZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUShAImltYWdlL3BuZyIsIFt3ZWJWaWV3IHZh
bHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoQCI0MiBLQiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6
QCJzdWJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325378</attachid>
            <date>2017-10-30 14:32:27 -0700</date>
            <delta_ts>2017-10-30 17:08:08 -0700</delta_ts>
            <desc>Try to fix builds (and address some review feedback).</desc>
            <filename>bug-179013-20171030143227.patch</filename>
            <type>text/plain</type>
            <size>70206</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMzAwYmI1YmU2NzAwYzg1Mzk2N2Q1YjQ1YmFlNTkw
ODYzM2FlOWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uMmEwOThlNTkzZmRkOTliMTIxOWNiZTE1MDcyZTFjMmIxNmM3MThmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvRmlsZVNpemVGb3JtYXR0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKiBwYWwvY29jb2EvRmlsZVNp
emVGb3JtYXR0ZXJDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKGZpbGVTaXplRGVzY3JpcHRpb24pOgor
ICAgICAgICAqIHBhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoZmls
ZVNpemVEZXNjcmlwdGlvbik6CisgICAgICAgICogcGFsL3NwaS9GaWxlU2l6ZUZvcm1hdHRlci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0
ZS5oLgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5o
LgorCiAyMDE3LTEwLTI3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgaU9TIHNwZWNpZmljIHNvdXJjZXMgdG8gdW5pZmllZCBzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGI0MWZkNDUzZDJlOGEyNGZlN2VmZGU4NjRhODE2NzFmMDlmNDE3NDIuLjU2ODgx
YjhkYTdhNDQ5OWFjZjhiYTdmYjIyZWE4NDY0NzNmYzQ0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjkgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFdLV2ViVmlldyBTUEkg
Zm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgbmF0aXZlIFNQSSB0byBpbnNlcnQgYXR0YWNobWVudCBlbGVtZW50cyBnaXZlbiBh
IGZpbGVuYW1lLCBhbiBvcHRpb25hbCBNSU1FIHR5cGUsIGFuZCBhIGRhdGEgYmxvYi4gQWxzbwor
ICAgICAgICBpbnRyb2R1Y2VzIHJlbGF0ZWQgYXR0YWNobWVudCBTUEkgaW50ZXJmYWNlcywgdG8g
YmUgdXNlZCBpbiBsYXRlciBwYXRjaGVzLgorCisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZSk6CisKKyAgICAgICAgSW50cm9k
dWNlIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBhIFNoYXJlZE1lbW9yeSB1c2luZyBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgYXR0YWNobWVudDp1cGRh
dGVEYXRhOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgYXR0YWNobWVudDp1cGRhdGVEaXNwbGF5
T3B0aW9uczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGF0dGFjaG1lbnQ6cmVxdWVzdERhdGFX
aXRoQ29tcGxldGlvbjpdKToKKworICAgICAgICBBZGQgc3R1YiBpbXBsZW1lbnRhdGlvbnMgZm9y
IFdLV2ViVmlldyBhdHRhY2htZW50IFNQSSBob29rcy4KKworICAgICAgICAoLVtXS1dlYlZpZXcg
X2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOmNv
bXBsZXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZXhlY3V0ZUVkaXRDb21tYW5kOmFy
Z3VtZW50OmNvbXBsZXRpb246XSk6CisKKyAgICAgICAgU3VwcG9ydCBwYXNzaW5nIGluIGEgbmls
IGNvbXBsZXRpb24gYmxvY2suCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0ludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRl
LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tOiBBZGRl
ZC4KKworICAgICAgICBJbnRyb2R1Y2UgYSBuZXcgX1dLQXR0YWNobWVudCBTUEkgaGVhZGVyIGFs
bG93aW5nIHByaXZhdGUgY2xpZW50cyB0byBhZGQgYW5kIG1hbmlwdWxhdGUgYXR0YWNobWVudCBl
bGVtZW50cy4KKworICAgICAgICAoK1tfV0tBdHRhY2htZW50IGF0dGFjaG1lbnRXaXRoSWRlbnRp
ZmllcjpkZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBpbml0V2l0aElkZW50
aWZpZXI6ZGVsZWdhdGU6XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgdW5pcXVlSWRlbnRp
Zmllcl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IHJlcXVlc3REYXRhOl0pOgorICAgICAg
ICAoLVtfV0tBdHRhY2htZW50IHNldERhdGE6XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQg
c2V0RGlzcGxheU9wdGlvbnM6XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgY29weVdpdGha
b25lOl0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IGlzRXF1YWw6XSk6CisgICAgICAgICgt
W19XS0F0dGFjaG1lbnQgaGFzaF0pOgorCisgICAgICAgIEFkZCBfV0tBdHRhY2htZW50LCBhIFdl
YktpdCBTUEkgb2JqZWN0IHRoYXQgd3JhcHMgYW4gYXR0YWNobWVudCBlbGVtZW50IHVuaXF1ZSBp
ZGVudGlmaWVyLCBhbmQgYWxzbyBwcm92aWRlcworICAgICAgICAoY3VycmVudGx5IHVuaW1wbGVt
ZW50ZWQpIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW5nIGFuZCByZXF1ZXN0
aW5nIGRhdGEgZnJvbSBhdHRhY2htZW50cy4gQWxzbywKKyAgICAgICAgYWxsb3cgX1dLQXR0YWNo
bWVudCB0byBiZSB1c2VkIGFzIGEgaGFzaGFibGUgTlNEaWN0aW9uYXJ5IGtleS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudEludGVybmFsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmguCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisKKyAgICAgICAgSW1wbGVtZW50IElQQyBzdXBw
b3J0IGZvciBpbnNlcnRpbmcgYW4gYXR0YWNobWVudC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisKIDIwMTctMTAtMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBbU2V0dGluZ3NdIEdlbmVyYXRlIG1vcmUgb2YgdGhlIFdlYktpdCBwcmVmZXJl
bmNlcyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggZjUxYWRiMDA4MTAwYzJmZmVjZTI0MmU4OGFmZjU4NTg1ZGQ3OTgwZS4u
NDI3YWNiM2U0MTVkZDQ5Y2U0YWIwYzA4MDZkOWFlNzQ3MmNjOTkyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxLDYgKzE0
MSwxMSBAQAogCQlBM0FCNkU2NTFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5l
ck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
QUI2RTYzMUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tICovOyB9
OwogCQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RBMUY0NjJENkEwMDlF
NkVFOSAvKiBTZXNzaW9uSUQuY3BwICovOyB9OwogCQlBM0M2NkNERDFGNDYyRDZBMDA5RTZFRTkg
LyogU2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi87IH07CisJCUY0
NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE1RDFGQTUyNDcz
MDAyQ0M5M0UgLyogTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oICovOyB9OworCQlGNDQyOTE2MDFG
QTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTVGMUZBNTI2MUUwMDJDQzkzRSAvKiBG
aWxlU2l6ZUZvcm1hdHRlci5oICovOyB9OworCQlGNDQyOTE2MzFGQTUyNjcwMDAyQ0M5M0UgLyog
RmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NDI5MTYxMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5o
ICovOyB9OworCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjkx
NjIxRkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCAqLzsgfTsKKwkJRjQ0
MjkxNjgxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE2NjFGQTUyNzA1
MDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSAqLzsgfTsKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLwpAQCAtMjgzLDYgKzI4OCwxMSBAQAogCQlBM0M2NkNEQTFGNDYyRDZBMDA5RTZFRTkg
LyogU2Vzc2lvbklELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNl
c3Npb25JRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQzY2Q0RCMUY0NjJE
NkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2Vzc2lvbklELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMTQ3QTRBMUVG
RDBBQTYwMDA1NkZBNSAvKiBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxNUQxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmlsZVNpemVGb3Jt
YXR0ZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE1RjFGQTUyNjFFMDAyQ0M5M0UgLyogRmls
ZVNpemVGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxNjExRkE1MjY3MDAwMkNDOTNFIC8qIEZp
bGVTaXplRm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTaXplRm9ybWF0dGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBG
aWxlU2l6ZUZvcm1hdHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU2l6ZUZvcm1hdHRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTY2MUZBNTI3MDUwMDJD
QzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMzEzLDYgKzMyMyw4IEBACiAJCQkJMEMyREExMjAx
RjNCRTlFNzAwREJDMzE3IC8qIGNvY29hICovLAogCQkJCTBDNUFGOTBEMUY0M0E0QTQwMDJFQUMw
MiAvKiBpb3MgKi8sCiAJCQkJMEM3Nzg1NkUxRjQ1MTJFOTAwRjRFQkI2IC8qIG1hYyAqLywKKwkJ
CQlGNDQyOTE2MjFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAor
CQkJCUY0NDI5MTYxMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzYy
LDYgKzM3NCw3IEBACiAJCQkJMEMyREExMzExRjNCRUI0OTAwREJDMzE3IC8qIE5TQ29sb3JTUEku
aCAqLywKIAkJCQkwQzJEQTEzMjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAq
LywKIAkJCQkwQzJEQTEzMzFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICov
LAorCQkJCUY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggKi8sCiAJCQkJMEMyREExMzQxRjNCRUI0OTAwREJDMzE3IC8qIE5TU3RyaW5nU1BJLmggKi8s
CiAJCQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91Y2hCYXJTUEkuaCAqLywKIAkJ
CQkwQzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCkBA
IC00NzEsNiArNDg0LDcgQEAKIAkJCQlBMzc4OEU5RjFGMDVCN0NFMDA2Nzk0MjUgLyogc3lzdGVt
ICovLAogCQkJCUEzMEQ0MTFEMUYwREQwQUMwMEI3MTk1NCAvKiB0ZXh0ICovLAogCQkJCTBDMkQ5
RTcyMUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQlGNDQyOTE1RjFG
QTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCAqLywKIAkJCQlBMzlERTc0RDFG
N0M0NDNDMDA3QkNCMDAgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggKi8sCiAJCQkJMDcwOEFDMzIx
RjRDODc0QTAwMUY3ODhGIC8qIExvZ2dlci5oICovLAogCQkJCTA3Mzc3QURCMUY1Nzc3RDcwMDI3
RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCAqLywKQEAgLTUxNyw2ICs1MzEsNyBAQAogCQkxQzQ4NzZE
RTFGOEQ4MzEzMDBDQ0VFQkQgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZv
cm1hdHRlckNvY29hLm1tICovLAogCQkJCTFDNDg3NkRGMUY4RDgzNzUwMENDRUVCRCAvKiBMb2dn
aW5nQ29jb2EubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpAQCAtNjEyLDYgKzYyNyw4
IEBACiAJCQkJMEM1QUY5MUExRjQzQTRDNzAwMkVBQzAyIC8qIERhdGFEZXRlY3RvcnNVSVNQSS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTExNzVCNTcxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRT
ZWFyY2hQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyRDlFNzMxRUVGNUFGNjAwREJD
MzE3IC8qIEV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ0MjkxNjMxRkE1MjY3
MDAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQy
OTE2MDFGQTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExMDI2NTg3MUY1Njc0NjEwMEI0Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwQzVBRjkxQjFGNDNBNEM3MDAyRUFDMDIgLyogR3JhcGhpY3NTZXJ2aWNl
c1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwMjY1OEUxRjU2N0U5RDAwQjRDODQ0IC8qIEhJ
U2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ3LDYgKzY2NCw3IEBACiAJCQkJMEM3
Nzg1OEYxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TRXZlbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBp
biBIZWFkZXJzICovLAorCQkJCUY0NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXpl
Rm9ybWF0dGVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MDFGNDUxMzBGMDBGNEVC
QjYgLyogTlNGb250U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGRTFGNThBNDMzMDA0
NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTExRjQ1
MTMwRjAwRjRFQkI2IC8qIE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCBp
biBIZWFkZXJzICovLApAQCAtNzg0LDYgKzgwMiw4IEBACiAJCQkJMENGOTlDQTgxRjczODQzNzAw
N0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlE
MDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQ
cm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0Ug
LyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0MjkxNjgxRkE1
MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBMzBENDEyMjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXpl
Rm9ybWF0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWJiMDYyYzYwNTZlYmYzN2E2ZjkzZjNjY2YwZmM5OWI1NjY0MjQ2NQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvRmlsZVNpemVGb3JtYXR0ZXIu
aApAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK1N0cmluZyBm
aWxlU2l6ZURlc2NyaXB0aW9uKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE4NzI2
Y2VlOTE4OTI4MjUzMmUxODA0MmUyZWY5MzkyOGI4YTdiOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQpAQCAt
MCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZpbGVTaXplRm9ybWF0dGVyLmgiCisKKyNpbXBvcnQgIk5TRmlsZVNpemVGb3JtYXR0ZXJTUEku
aCIKKworU3RyaW5nIGZpbGVTaXplRGVzY3JpcHRpb24oc2l6ZV90IHNpemUpCit7CisgICAgcmV0
dXJuIE5TTG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbihzaXplLCAwLCAwKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL0ZpbGVTaXplRm9ybWF0dGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL0ZpbGVTaXplRm9ybWF0dGVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ODRlNWRhZDYyM2U3M2YzMDk1MjcxODk1MGI1MzI1MmE1ZmJjNzdkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3Bw
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRmlsZVNpemVGb3JtYXR0ZXIuaCIKKworI2lmICFQTEFURk9STShDT0NPQSkKKworU3Ry
aW5nIGZpbGVTaXplRGVzY3JpcHRpb24oc2l6ZV90IHNpemUpCit7CisgICAgLy8gRklYTUU6IFRo
ZXNlIHN0cmluZ3Mgc2hvdWxkIGJlIGxvY2FsaXplZCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBi
cmluZ2luZyBMb2NhbGl6ZWRTdHJpbmdzIGludG8gUEFMLgorICAgIC8vIFNlZSA8aHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAxOT4gZm9yIG1vcmUgZGV0YWlscy4K
KyAgICBpZiAoc2l6ZSA8IDEwMDApCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXR1
IGJ5dGVzIiwgc2l6ZSk7CisgICAgaWYgKHNpemUgPCAxMDAwMDAwKQorICAgICAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIiUuMWYgS0IiLCBzaXplIC8gMTAwMC4pOworICAgIGlmIChzaXplIDwg
MTAwMDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIE1CIiwgc2l6
ZSAvICgxMDAwMDAwLikpOworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJS4xZiBHQiIsIHNp
emUgLyAoMTAwMDAwMDAwMC4pKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3NwaS9GaWxlU2l6ZUZvcm1hdHRlci5oIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDdlNmNmYjc0ZTYyOWZk
ZjM4OWFjN2RiNWFkOWFjNDE3NDY3MzY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CitQQUxfRVhQT1JUIFN0cmluZyBmaWxlU2l6ZURlc2NyaXB0aW9uKHNpemVfdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9ybWF0dGVy
U1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9ybWF0
dGVyU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU1NzZmZDM0YzE1MGRlZjEwNWZmYjRkOWYyYWU3YjQwMjNm
ZGY2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29h
L05TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxG
b3VuZGF0aW9uL05TRmlsZVNpemVGb3JtYXR0ZXIuaD4KKworI2Vsc2UKKwordHlwZWRlZiB1aW50
NjRfdCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9uczsKK2V4dGVybiAiQyIgTlNTdHJpbmcgKk5T
TG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplLCB1aW50NjRfdCBtYXhp
bXVtRGlzcGxheWVkVmFsdWUsIE5TRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25zKTsKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYmUzZGE4ZWUyZjc1ZWJlMmU3NjdiYmE2
ZTc3N2YwOTE1Zjk4ODIyNS4uZTY4N2EyNzU1ZmE5ZWQxNWYwZDdkNDU3N2JhYmU3YTZmYzAwNDRm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDcsMTIgKzQ3LDE0IEBACiAjaW5j
bHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCkBAIC05OCw2ICsxMDAs
NyBAQAogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAi
VmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSA8cGFsL0ZpbGVT
aXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8cGFsL3N5c3RlbS9Tb3VuZC5oPgogI2luY2x1ZGUg
PHBhbC90ZXh0L0tpbGxSaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFt
ZXMuaD4KQEAgLTM3MjgsNiArMzczMSwzOSBAQCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VG
b3JUZXh0Q2hlY2tpbmdSZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bAogICAg
IHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5sb2Nh
dGlvbiwgcmVzdWx0Lmxlbmd0aCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIWNvbnRlbnRUeXBlKQor
ICAgICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSk7
CisgICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIGZpbGVuYW1lLCAqY29u
dGVudFR5cGUsIEZpbGU6OmNyZWF0ZShmaWxlcGF0aCkpOworfQorCit2b2lkIEVkaXRvcjo6aW5z
ZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNv
bnRlbnRUeXBlKQoreworICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgIGNvbnRlbnRUeXBl
ID0gRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKKyAgICBpbnNlcnRBdHRhY2ht
ZW50RnJvbUZpbGUoaWRlbnRpZmllciwgZmlsZW5hbWUsICpjb250ZW50VHlwZSwgRmlsZTo6Y3Jl
YXRlKEJsb2I6OmNyZWF0ZShkYXRhLCAqY29udGVudFR5cGUpLCBmaWxlbmFtZSkpOworfQorCit2
b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwg
UmVmPEZpbGU+JiYgZmlsZSkKK3sKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KCksIGlk
ZW50aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRpdGxl
QXR0ciwgZmlsZW5hbWUpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6
OnN1YnRpdGxlQXR0ciwgZmlsZVNpemVEZXNjcmlwdGlvbihmaWxlLT5zaXplKCkpKTsKKyAgICBh
dHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwgY29udGVudFR5cGUp
OworICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAg
YXR0YWNobWVudC0+c2V0RmlsZShmaWxlLnB0cigpKTsKKworICAgIGF1dG8gZnJhZ21lbnRUb0lu
c2VydCA9IGRvY3VtZW50KCkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgIGZyYWdtZW50
VG9JbnNlcnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQuZ2V0KCkpOworCisgICAgcmVwbGFjZVNl
bGVjdGlvbldpdGhGcmFnbWVudChmcmFnbWVudFRvSW5zZXJ0LmdldCgpLCBmYWxzZSwgZmFsc2Us
IHRydWUpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogdm9p
ZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleHRDaGVja2luZ1Jlc3VsdCBhY2Nl
cHRlZENhbmRpZGF0ZSkKIHsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24g
PSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
aW5kZXggYWE4ODVmZjU5OWMxYTA3NWQzZGEwZDA3Y2RmMjI1ODUxNmFlYTM3ZC4uZmRmYTNlOGE4
MDljNWFiNTgxODYzNTY3ZDVlOGU5MGJlMjAzZDgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
CkBAIC02Myw3ICs2Myw5IEBAIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRD
b21wb3NpdGlvbjsKIGNsYXNzIEVkaXRvckNsaWVudDsKIGNsYXNzIEVkaXRvckludGVybmFsQ29t
bWFuZDsKK2NsYXNzIEZpbGU7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxBdHRhY2htZW50RWxl
bWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEtl
eWJvYXJkRXZlbnQ7CkBAIC00OTgsOSArNTAwLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElz
R2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oYm9vbCBiKSB7IG1faXNHZXR0aW5nRGljdGlvbmFy
eVBvcHVwSW5mbyA9IGI7IH0KICAgICBib29sIGlzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8o
KSBjb25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm87IH0KIAorI2lm
IEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNl
cnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRl
bnRUeXBlID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50
VHlwZSA9IHN0ZDo6bnVsbG9wdCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBEb2N1bWVudCYg
ZG9jdW1lbnQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAg
dm9pZCBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8Rmls
ZT4mJik7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsK
ICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKICAg
ICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggYTZlZDk2
MTU2YWNkYTcyMzMzYmIzNmZhN2I1ZjUzYWFmYzlhMDI5Yi4uM2JmZjBjN2JmOWMxOGZmMWU4YjYz
Y2NkOGQ5ZGFiNjBiYzE2MzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcApAQCAtMjgsMjAgKzI4LDI5IEBACiAKICNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyQXR0YWNobWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQorSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVu
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCkKKyAgICAsIG1fdW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVyKQogewogICAgIEFT
U0VSVChoYXNUYWdOYW1lKGF0dGFjaG1lbnRUYWcpKTsKIH0KIAorSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogSFRNTEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCit7Cit9CisKIEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6fkhUTUxBdHRhY2htZW50RWxlbWVudCgpID0gZGVmYXVsdDsKIAogUmVm
PEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNDksNiAr
NTgsMTEgQEAgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBIVE1MQXR0YWNobWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorUmVmPEhU
TUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTEF0dGFjaG1lbnRF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBpZGVudGlmaWVyKSk7Cit9CisKIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJl
cihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAg
IHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJBdHRhY2htZW50PigqdGhpcywgV1RGTW92ZShz
dHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5k
ZXggOWFjNmI2YThiMTc4NGQwMTY4ZWQwM2EwZTk5NDMzZTM4NjQ4MzllMi4uM2E0NGE1ZjExOTlj
NzIwOWMzYjFhZTQ5YmVmYmI4MTYxMWE2MDMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zNywxMCArMzcsMTQgQEAgY2xhc3MgUmVuZGVyQXR0
YWNobWVudDsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1M
RWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVm
PEhUTUxBdHRhY2htZW50RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBG
aWxlKiBmaWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWxlKEZpbGUqKTsKIAorICAgIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyB1bmlxdWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV91bmlx
dWVJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRVbmlxdWVJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllcikgeyBtX3VuaXF1ZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisKICAg
ICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxlKCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGF0dGFjaG1lbnRUeXBlKCkgY29uc3Q7CiAKQEAgLTQ4LDYgKzUyLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIEhUTUxBdHRhY2htZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQmKTsKKyAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFs
IH5IVE1MQXR0YWNobWVudEVsZW1lbnQoKTsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgZmluYWw7CkBAIC02Myw2ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmlu
YWw7CiAgICAgCiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKKyAgICBTdHJpbmcgbV91bmlxdWVJ
ZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggYzcyZTBkNGIwYWI4NzIwNmJjZjUyNzU1Mzc5OWRjM2Jl
ZmNiYTFjMC4uMDE3YjQzNGVlNGE5MmRmN2FiOWQ1YzlmMjc3N2Q2ZmRjY2E0ZTI4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiAjaWYgVVNFKFVO
SVhfRE9NQUlOX1NPQ0tFVFMpCkBAIC00MCw2ICs0MSwxMCBAQCBjbGFzcyBEZWNvZGVyOwogY2xh
c3MgRW5jb2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVy
OworfQorCiAjaWYgT1MoREFSV0lOKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWFjaFNl
bmRSaWdodDsKQEAgLTg3LDYgKzkyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRN
ZW1vcnk+IGNyZWF0ZSh2b2lkKiwgc2l6ZV90LCBQcm90ZWN0aW9uKTsKKyAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwog
ICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJvdGVj
dGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9yKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29j
b2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5j
cHAKaW5kZXggYWVhNzk4NTA0NDlhOGI4OTc5OGU5MDM2ZDdiMGU1MzAxODAzYWE1NC4uMzk4ZDU1
ZTdjMTk0YWM2OWY0ZGI3YWMwZjJjOWJiYTE2M2UwYTE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFjaFBvcnQuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZl
ci5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF9w
b3J0Lmg+CiAjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KQEAgLTE1Niw2ICsxNTcsMTMgQEAgc3Rh
dGljIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgbWFrZU1lbW9yeUVudHJ5KHNpemVfdCBzaXplLCB2
bV9vZmZzZXRfdCBvZmZzZXQsIFMKICAgICByZXR1cm4gV2ViQ29yZTo6TWFjaFNlbmRSaWdodDo6
YWRvcHQocG9ydCk7CiB9CiAKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3Jl
YXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGF1dG8gc2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZmZXItPnNpemUoKSk7
CisgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwg
YnVmZmVyLT5zaXplKCkpOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXI7Cit9CisKIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGRhdGEsIHNpemVf
dCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgQVNTRVJUKHNpemUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMGU2ZjY2OTY3YWUwZTEwZmIxNDZhN2I3ZTY1ODAzNDRl
OGNmZDEzMC4uNzg5ZjM4NDVmNmRlYjY0NmVlZTcwNTc5M2EyZDhhNmRjNjljYWE5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yMjIsNiArMjIyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0
X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQog
ICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXaW5kb3dGZWF0dXJlcy5tbQogICAgIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KKyAgICBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnQubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9t
YXRpb25TZXNzaW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vz
c2lvbkNvbmZpZ3VyYXRpb24ubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRleHRN
ZW51RWxlbWVudEluZm8ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XZWJLaXRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2Vi
S2l0UHJpdmF0ZS5oCmluZGV4IDRhMzU4MDk3YzdjNDI4NTJmZTZhNTBiZDFhMDMwNDAzNDRjZjcz
YjkuLjE4YmYwYzVkOGE2M2FmZTM5MDMyZmI0NDdiNTIyNWU1MjE4NzZiZWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaApAQCAtMzAsNiArMzAs
NyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLQXR0YWNobWVudC5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS0VsZW1lbnRBY3Rpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tG
b2N1c2VkRWxlbWVudEluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGb3JtSW5wdXRTZXNzaW9u
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCAxNDY4MTMxZWExYjQwMGUwMzg4NWJmNjU3MGNjN2ZhYWViNDBhMjA0Li41Y2YzZGFhYjc5
MzhmM2ZkYWZjMzBmZjQ2MzQyODY3MWUwYTQ2YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTk0LDExICs5NCwxMyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01CaW5kaW5nLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4u
aD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY2hl
bWVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Xcml0aW5nTW9kZS5oPgpAQCAtMTEwLDYgKzExMiw3IEBACiAjaW1wb3J0IDx3dGYvT3B0aW9u
YWwuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29w
ZS5oPgorI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRT
UEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtMTE5MSw2ICsxMTk0
LDI0IEBAIC0gKHZvaWQpX2RpZENoYW5nZUVkaXRvclN0YXRlCiAgICAgICAgIFt1aURlbGVnYXRl
IF93ZWJWaWV3OnNlbGYgZWRpdG9yU3RhdGVEaWRDaGFuZ2U6ZGljdGlvbmFyeVJlcHJlc2VudGF0
aW9uRm9yRWRpdG9yU3RhdGUoX3BhZ2UtPmVkaXRvclN0YXRlKCkpXTsKIH0KIAorI3ByYWdtYSBt
YXJrIC0gQXR0YWNobWVudCBlZGl0aW5nIHN1cHBvcnQKKworLSAodm9pZClhdHRhY2htZW50Oihf
V0tBdHRhY2htZW50ICopYXR0YWNobWVudCB1cGRhdGVEYXRhOihOU0RhdGEgKilkYXRhCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworLSAodm9pZClhdHRhY2htZW50OihfV0tBdHRhY2ht
ZW50ICopYXR0YWNobWVudCB1cGRhdGVEaXNwbGF5T3B0aW9uczooX1dLQXR0YWNobWVudERpc3Bs
YXlPcHRpb25zICopb3B0aW9ucworeworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKy0gKHZv
aWQpYXR0YWNobWVudDooX1dLQXR0YWNobWVudCAqKWF0dGFjaG1lbnQgcmVxdWVzdERhdGFXaXRo
Q29tcGxldGlvbjooX1dLQXR0YWNobWVudERhdGFDb21wbGV0aW9uSGFuZGxlciljb21wbGV0aW9u
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBjb21wbGV0aW9uKG5pbCwgW05TRXJyb3Ig
ZXJyb3JXaXRoRG9tYWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5m
bzpuaWxdKTsKK30KKwogI3ByYWdtYSBtYXJrIGlPUy1zcGVjaWZpYyBtZXRob2RzCiAKICNpZiBQ
TEFURk9STShJT1MpCkBAIC00MTY4LDYgKzQxODksMjAgQEAgLSAodm9pZClfY2xvc2UKICAgICBf
cGFnZS0+Y2xvc2UoKTsKIH0KIAorLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50
V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAq
KWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERp
c3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2Vzcykp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKyAgICBfcGFn
ZS0+aW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBmaWxlbmFtZSwgY29udGVudFR5cGUubGVu
Z3RoID8gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHsgY29udGVudFR5cGUgfSA6IHN0ZDo6bnVsbG9w
dCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSksIFtjYXB0dXJlZEhhbmRsZXIg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChjYXB0dXJlZEhhbmRsZXIpCisgICAgICAgICAg
ICBjYXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lKTsKKyAgICB9KTsKKyAgICByZXR1cm4gW19XS0F0dGFjaG1lbnQgYXR0YWNobWVudFdpdGhJ
ZGVudGlmaWVyOmlkZW50aWZpZXIgZGVsZWdhdGU6c2VsZl07CisjZWxzZQorICAgIHJldHVybiBu
aWw7CisjZW5kaWYKK30KKwogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJH
ZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgW3NlbGYgX2V2
YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29t
cGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwpAQCAtNjAzMyw3ICs2MDY4LDggQEAg
LSAodm9pZClfZGlzYWJsZUJhY2tGb3J3YXJkU25hcHNob3RWb2xhdGlsaXR5Rm9yVGVzdGluZwog
LSAodm9pZClfZXhlY3V0ZUVkaXRDb21tYW5kOihOU1N0cmluZyAqKWNvbW1hbmQgYXJndW1lbnQ6
KE5TU3RyaW5nICopYXJndW1lbnQgY29tcGxldGlvbjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlv
bgogewogICAgIF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZCwgYXJndW1lbnQsIFtj
YXB0dXJlZENvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uKV0oV2ViS2l0
OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7Ci0gICAgICAgIGNhcHR1cmVkQ29tcGxldGlv
bkJsb2NrKGVycm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAg
ICAgIGlmIChjYXB0dXJlZENvbXBsZXRpb25CbG9jaykKKyAgICAgICAgICAgIGNhcHR1cmVkQ29t
cGxldGlvbkJsb2NrKGVycm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7
CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggZDJkNmViODg1NmRmYjVmY2M0ZDA0MTNmOTA2
MmExMjdkOTUyNTU5ZS4uN2RkNjFmMTkyMzU4MTFiNzdhZTQ1ZGIxNTZmMTYyNmY2Yjc4Y2Y2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0lu
dGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0ludGVybmFsLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2ltcG9ydCAiU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb24uaCIKKyNpbXBv
cnQgIl9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBAIC00MSwxMSArNDIsMTEgQEAKICNlbmRpZgogCiAj
aWYgUExBVEZPUk0oSU9TKQotI2RlZmluZSBXS19XRUJfVklFV19QUk9UT0NPTFMgPFVJU2Nyb2xs
Vmlld0RlbGVnYXRlPgorI2RlZmluZSBXS19XRUJfVklFV19QUk9UT0NPTFMgPFVJU2Nyb2xsVmll
d0RlbGVnYXRlLCBXS0F0dGFjaG1lbnREZWxlZ2F0ZT4KICNlbmRpZgogCiAjaWYgIWRlZmluZWQo
V0tfV0VCX1ZJRVdfUFJPVE9DT0xTKQotI2RlZmluZSBXS19XRUJfVklFV19QUk9UT0NPTFMKKyNk
ZWZpbmUgV0tfV0VCX1ZJRVdfUFJPVE9DT0xTIDxXS0F0dGFjaG1lbnREZWxlZ2F0ZT4KICNlbmRp
ZgogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1BhZ2UqIFdLUGFnZVJlZjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CmluZGV4IDVlZDJiMmMxYjFhZjE3NTY4Mzk4NzNhNDUzYjc4M2EzMDFjZDdiYWUuLmM5ZmQ1NDBi
MDZjZWUyYjYyNTAxNDY4OGJlYzYxMDEwZjZjMDZhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMjgsNiArMjgs
NyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRF
bGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0F0dGFjaG1lbnQuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tGaW5kT3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0xheW91dE1vZGUu
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaD4KQEAgLTE3Nyw2
ICsxNzgsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9u
ZFBhZ2U6KSBCT09MIF9iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyg4LjApKTsKIAorLSAoX1dLQXR0YWNobWVudCAqKV9p
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRU
eXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczoo
X1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4p
KEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAv
LyBERVJFQ0FURUQ6IFRoZSBzZXR0ZXJzIG9mIHRoZSB0aHJlZSBmb2xsb3dpbmcgZnVuY3Rpb24g
YXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzLgogLy8g
RGVmaW5lIHRoZSBzbWFsbGVzdCBzaXplIGEgcGFnZSB0YWtlIHdpdGggYSByZWd1bGFyIHZpZXdw
b3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmFjMjc5NmY1YWQ2MmQyNmJjZWJiZmE3MTgzMTJjODIwYmRhNWFj
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tBdHRhY2htZW50LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxF
RAorCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tBdHRhY2htZW50RGlzcGxheU1vZGUp
IHsKKyAgICBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBdXRvID0gMSwKKyAgICBfV0tBdHRhY2ht
ZW50RGlzcGxheU1vZGVJY29uLAorICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUltYWdlCit9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
Cit0eXBlZGVmIHZvaWQoXl9XS0F0dGFjaG1lbnREYXRhQ29tcGxldGlvbkhhbmRsZXIpKE5TRGF0
YSAqLCBOU0Vycm9yICopOworCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYykgX1dLQXR0YWNobWVudERpc3BsYXlN
b2RlIG1vZGU7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBleHBhbmRzSW1hZ2VUb01heGlt
dW1XaWR0aDsKK0BlbmQKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tBdHRhY2htZW50IDogTlNPYmplY3QgPE5T
Q29weWluZz4KKy0gKHZvaWQpcmVxdWVzdERhdGE6KF9XS0F0dGFjaG1lbnREYXRhQ29tcGxldGlv
bkhhbmRsZXIpY29tcGxldGlvbjsKKy0gKHZvaWQpc2V0RGF0YTooTlNEYXRhICopZGF0YTsKKy0g
KHZvaWQpc2V0RGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9w
dGlvbnM7CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzQxYTZmMjU2Njc1ZWQ4MmFk
OWQxYWUxNDk4MTc2MGZmYWIwNzg0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KQEAgLTAsMCArMSwxMTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0F0dGFjaG1lbnQuaCIK
KworI2ltcG9ydCAiV0tFcnJvci5oIgorI2ltcG9ydCAiV0tXZWJWaWV3LmgiCisjaW1wb3J0ICJX
ZWFrT2JqQ1B0ci5oIgorI2ltcG9ydCAiX1dLQXR0YWNobWVudEludGVybmFsLmgiCisjaW1wb3J0
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tBdHRhY2htZW50
RGlzcGxheU9wdGlvbnMgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAg
IGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgICAgIF9tb2RlID0gX1dLQXR0YWNobWVu
dERpc3BsYXlNb2RlQXV0bzsKKyAgICAgICAgX2V4cGFuZHNJbWFnZVRvTWF4aW11bVdpZHRoID0g
Tk87CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBfV0tBdHRhY2htZW50IHsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF91bmlxdWVJZGVudGlm
aWVyOworICAgIFdlYWtPYmpDUHRyPGlkIDxXS0F0dGFjaG1lbnREZWxlZ2F0ZT4+IF9kZWxlZ2F0
ZTsKK30KKworKyAoaW5zdGFuY2V0eXBlKWF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcjooTlNTdHJp
bmcgKilpZGVudGlmaWVyIGRlbGVnYXRlOihpZCA8V0tBdHRhY2htZW50RGVsZWdhdGU+KWRlbGVn
YXRlCit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjppZGVu
dGlmaWVyIGRlbGVnYXRlOmRlbGVnYXRlXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aElkZW50aWZpZXI6KE5TU3RyaW5nICopaWRlbnRpZmllciBkZWxlZ2F0ZToo
aWQgPFdLQXR0YWNobWVudERlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIGlmIChzZWxmID0gW3N1
cGVyIGluaXRdKSB7CisgICAgICAgIF91bmlxdWVJZGVudGlmaWVyID0gYWRvcHROUyhbaWRlbnRp
ZmllciBjb3B5XSk7CisgICAgICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH0KKyAgICBy
ZXR1cm4gc2VsZjsKK30KKworLSAoTlNTdHJpbmcgKil1bmlxdWVJZGVudGlmaWVyCit7CisgICAg
cmV0dXJuIF91bmlxdWVJZGVudGlmaWVyLmdldCgpOworfQorCistICh2b2lkKXJlcXVlc3REYXRh
Oih2b2lkKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWNvbXBsZXRpb24KK3sKKyAgICBpZiAoIV9k
ZWxlZ2F0ZSkgeworICAgICAgICBOU1N0cmluZyAqZXJyb3JSZWFzb24gPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIiVAIGlzIG5vIGxvbmdlciBjb25uZWN0ZWQgdG8gaXRzIHdlYiB2aWV3
LiIsIHNlbGZdOworICAgICAgICBjb21wbGV0aW9uKG5pbCwgW05TRXJyb3IgZXJyb3JXaXRoRG9t
YWluOldLRXJyb3JEb21haW4gY29kZTpXS0Vycm9yVW5rbm93biB1c2VySW5mbzpAeyBAInJlYXNv
biIgOiBlcnJvclJlYXNvbiB9XSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbX2Rl
bGVnYXRlIGF0dGFjaG1lbnQ6c2VsZiByZXF1ZXN0RGF0YVdpdGhDb21wbGV0aW9uOmNvbXBsZXRp
b25dOworfQorCistICh2b2lkKXNldERhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBbX2RlbGVn
YXRlIGF0dGFjaG1lbnQ6c2VsZiB1cGRhdGVEYXRhOmRhdGFdOworfQorCistICh2b2lkKXNldERp
c3BsYXlPcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zCit7Cisg
ICAgW19kZWxlZ2F0ZSBhdHRhY2htZW50OnNlbGYgdXBkYXRlRGlzcGxheU9wdGlvbnM6b3B0aW9u
c107Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQoreworICAgIHJldHVy
biBbW19XS0F0dGFjaG1lbnQgYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpzZWxmLnVuaXF1ZUlk
ZW50aWZpZXIgZGVsZWdhdGU6X2RlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpXTsKK30KKworLSAo
Qk9PTClpc0VxdWFsOihpZClvYmplY3QKK3sKKyAgICByZXR1cm4gW29iamVjdCBpc0tpbmRPZkNs
YXNzOltfV0tBdHRhY2htZW50IGNsYXNzXV0gJiYgW191bmlxdWVJZGVudGlmaWVyIGlzRXF1YWw6
WyhfV0tBdHRhY2htZW50ICopb2JqZWN0IHVuaXF1ZUlkZW50aWZpZXJdXTsKK30KKworLSAoTlNV
SW50ZWdlciloYXNoCit7CisgICAgcmV0dXJuIFtfdW5pcXVlSWRlbnRpZmllciBoYXNoXTsKK30K
KworLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIjwlQCBpZD0nJUAnIGRlbGVnYXRlPTwlQDogJXA+PiIsIFtzZWxmIGNs
YXNzXSwgc2VsZi51bmlxdWVJZGVudGlmaWVyLCBbX2RlbGVnYXRlIGNsYXNzXSwgX2RlbGVnYXRl
LmdldEF1dG9yZWxlYXNlZCgpXTsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcxN2RkOGIxNmQ3ZmFkNzYzOTUyYzQ4YWFlODkxZDZkMTcyOTY5MWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudElu
dGVybmFsLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW1wb3J0ICJfV0tBdHRhY2htZW50LmgiCisKK0Bwcm90b2NvbCBXS0F0dGFjaG1lbnREZWxlZ2F0
ZSA8TlNPYmplY3Q+CistICh2b2lkKWF0dGFjaG1lbnQ6KF9XS0F0dGFjaG1lbnQgKilhdHRhY2ht
ZW50IHJlcXVlc3REYXRhV2l0aENvbXBsZXRpb246KF9XS0F0dGFjaG1lbnREYXRhQ29tcGxldGlv
bkhhbmRsZXIpY29tcGxldGlvbjsKKy0gKHZvaWQpYXR0YWNobWVudDooX1dLQXR0YWNobWVudCAq
KWF0dGFjaG1lbnQgdXBkYXRlRGlzcGxheU9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0
aW9ucyAqKW9wdGlvbnM7CistICh2b2lkKWF0dGFjaG1lbnQ6KF9XS0F0dGFjaG1lbnQgKilhdHRh
Y2htZW50IHVwZGF0ZURhdGE6KE5TRGF0YSAqKWRhdGE7CitAZW5kCisKK0BpbnRlcmZhY2UgX1dL
QXR0YWNobWVudCAoKQorKyAoaW5zdGFuY2V0eXBlKWF0dGFjaG1lbnRXaXRoSWRlbnRpZmllcjoo
TlNTdHJpbmcgKilpZGVudGlmaWVyIGRlbGVnYXRlOihpZCA8V0tBdHRhY2htZW50RGVsZWdhdGU+
KWRlbGVnYXRlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSWRlbnRpZmllcjooTlNTdHJpbmcg
KilpZGVudGlmaWVyIGRlbGVnYXRlOihpZCA8V0tBdHRhY2htZW50RGVsZWdhdGU+KWRlbGVnYXRl
OworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGNi
YjUyODdhZTRiMDlhNmJlMzc4MGNjMDA4MGQzZmYxNGJhZDkwYy4uNGY1ZGEyYmFmMTg5ODIwZDYy
NDk5Yzc0ZTIyZDQ0ZTNhYWUyZDUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC03MTA1LDQgKzcxMDUsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWUK
ICAgICB9KTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgV2Vi
UGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6
OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeSkgeworICAgICAg
ICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIXNo
YXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSkpIHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5r
bm93bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBjb250ZW50
VHlwZSwgZGF0YS0+c2l6ZSgpLCBoYW5kbGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggODE2NTI1N2U1
YTUyZmZmNjM4MGQ2ZGQzZjU1ZGRiMGYzZDNlMjc5MC4uZDJkNDMyNDdjOGIxYTcxMTVlNmFlMjE1
YmZiZDJkYTQ2NTkxNzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTEyMTEsNiArMTIxMSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKTsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1F
TlQpCisgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBl
LCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NTZjOWM0YThkMmY0NDY2ZTVkZWU0YmQ1NWFkMDA5M2E2MjNiYzcwNy4uNGZkMzhmYjc3ZmRlZDRl
YWU5NTQ3ZGI4MjRiOTJmOTFkZDJiNTZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMDgyLDYgKzIwODIsOSBAQAogCQlFRENBNzFC
NzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTIyRjEwMDEyODlGQ0Q5MDA4NUU3
NEYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgKi87IH07CiAJCUYwMzY5Nzg4MTVGNEJGMDUw
MEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQ
aWNrZXIuY3BwICovOyB9OwogCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MDlCQTE3MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0
NDI5MTkyMUZBNTkxQzkwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE5MTFGQTU5MTA3MDAyQ0M5M0Ug
LyogX1dLQXR0YWNobWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUY0NDI5MTk0MUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MjkxOTMx
RkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gKi87IH07CisJCUY0NDI5MTk2MUZB
NTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAv
KiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJRjQ0REZFQjIxRTlFNzUyRjAwMzhE
MTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0
aWVzLmggKi87IH07CiAJCUY0NERGRUIzMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0
aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0
REZFQjExRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gKi87IH07CiAJCUY0
OTZBNDMxMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTZBNDJGMUY1OEEy
NzIwMDRDMTc1NyAvKiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCAqLzsgfTsKQEAgLTQ1MjYs
NiArNDUyOSw5IEBACiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1YmxpY1N5
bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBF
IC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQw
OUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBf
V0tBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFj
aG1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdHRhY2htZW50Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0
YWNobWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMDFFOUU3NTJGMDAzOEQxOTYg
LyogV2ViSWNvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJJY29uVXRpbGl0aWVzLmg7IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNv
blV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdl
Ykljb25VdGlsaXRpZXMubW07IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdE
cm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9u
U3RhdGUuaDsgcGF0aCA9IGlvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3NDYsNiArNTc1Miw5IEBACiAJCQkJMzdBNUUwMTIxOEJC
RjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNUUw
MTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovLAogCQkJ
CTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVy
bmFsLmggKi8sCisJCQkJRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQu
aCAqLywKKwkJCQlGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAq
LywKKwkJCQlGNDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFs
LmggKi8sCiAJCQkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxl
Z2F0ZS5oICovLAogCQkJCTk5MEQyOEE3MUM2NDA0QjAwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9u
U2Vzc2lvbi5oICovLAogCQkJCTk5MEQyOEFEMUM2NTE5MDQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0
aW9uU2Vzc2lvbi5tbSAqLywKQEAgLTg0MDMsNiArODQxMiw4IEBACiAJCQlmaWxlcyA9ICgKIAkJ
CQkzN0E1RTAxNDE4QkJGOTNGMDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCTM3OUE4NzM2MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0
ZWRFbGVtZW50SW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE5MjFGQTU5
MUM5MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ0Mjkx
OTYxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTlFNzE0QzUxQzEyNEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwRDI4QUIxQzY0MjBDNjAwOTg2OTc3IC8qIF9XS0F1
dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTc4OEFDQjFGNDIxRERBMDBD
MDgwMDAgLyogX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAq
LywKQEAgLTEwMDQzLDYgKzEwMDU0LDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkzN0E1RTAxMzE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0
aXZhdGVkRWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE5NDFGQTU5MzEx
MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5MEQyOEIy
MUM2NTIwOTQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTk5Nzg4QUNDMUY0MjFERTIwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNv
bmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU3MDRGNzFCRTAxRkY0MDA4NzRB
RjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5ZGFhMjg3MjI1
ZGFmYWMzNDBlNTg5ZTY5MjhjN2IyNzFjN2EwZjQyLi5lYTE4NjYwMzVjMWQ2YTAxMDdlZjU2ZWFl
NDdlYjE2NjM2YmZmNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtMTYzLDYgKzE2Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlw
ZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01vdXNlRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ29uZmln
dXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CkBA
IC01NzU3LDQgKzU3NTgsMTkgQEAgdm9pZCBXZWJQYWdlOjpzdG9yYWdlQWNjZXNzUmVzcG9uc2Uo
Ym9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgY2FsbGJhY2sod2FzR3Jh
bnRlZCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit2b2lkIFdlYlBh
Z2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIHVpbnQ2NF90
IGRhdGFMZW5ndGgsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1v
cnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKSB7Cisg
ICAgICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGRhdGFMZW5n
dGgpOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIs
IGZpbGVuYW1lLCBXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSk7CisgICAgfQorCisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
NzNmZGUyODIyNDJkM2IyNmYzZjJhZGQyMjU2YWEzZmQ1MzdjOTBhNi4uNjlkMjA4YTZhMWUxOTMy
MmZhNWRiNzA0MDZiNmI1YTNiNzBlNGRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTk4LDYgKzk5OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lSG9zdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CiAgICAgdm9p
ZCBzdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0
SWQpOwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICB2b2lkIGluc2VydEF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIHVpbnQ2NF90IGRhdGFMZW5ndGgs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgQ2FsbGJhY2tJRCk7CisjZW5kaWYKKwogcHJp
dmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNDYxMDk4YjM1NDkyY2JmMGZiMGFkZGE5OWZiYWQwMmEw
YjZlOTBkMy4uMjE2YzU5ZDhmMzhlYmEzZGI5ZGY2MTIyOWVhYjYyZTcyOWMxZDEyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC00ODQsNCArNDg0LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgVVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlm
aWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
cikKIAogICAgIFN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90
IGNvbnRleHRJZCkKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgSW5zZXJ0
QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5nIGZpbGVuYW1lLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gY29udGVudFR5cGUsIHVpbnQ2NF90IGRhdGFMZW5ndGgsIFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpIYW5kbGUgZGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA3MGE4NTZmYjVjMDc1NjYwNjY4YzVjYjFhOWE0NDBlNjc2MjI0ZGExLi4wZWU0MTY0NzRj
ZTNjMTcwMDExZjFjNTQ5ZDk3ZjQ0MTE4Yzg2NDZjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMTAtMzAgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1l
bnQgU3VwcG9ydF0gSW1wbGVtZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzkwMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBuZXcgQVBJIHRl
c3Qgc3VpdGUgdG8gZXhlcmNpc2UgYXR0YWNobWVudCBlbGVtZW50IGluc2VydGlvbiBhbmQgbWFu
aXB1bGF0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICh3ZWJWaWV3Rm9y
VGVzdGluZ0F0dGFjaG1lbnRzKToKKyAgICAgICAgKHRlc3RIVE1MRGF0YSk6CisgICAgICAgICh0
ZXN0SW1hZ2VEYXRhKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzeW5jaHJvbm91c2x5SW5z
ZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlvbnM6XSk6Cisg
ICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpmb3JRdWVyeVNlbGVjdG9y
Ol0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTctMTAtMjggIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEJ1
aWxkIGdzdC1wbHVnaW5zLWJhc2Ugd2l0aG91dCBwYW5nbyBzdXBwb3J0CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGQzNjAxYWFlNWM4YTNiMTA5YWRmNTM3NzFjM2M5ZTc4OTc0MTcwMzUuLjVh
OGZiNTNkNGE3OWUwMzQ2YjNiMzIwOTRkZTMxZGVkMGQ4NDM5ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC04OSw2ICs4OSw3IEBACiAJCTJFMURGREYxMUQ0MkUxRTQwMDcxNEEwMCAvKiBs
YXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFE
RkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5k
LXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi87IH07CiAJCTJFMjA1QkE0MUY1Mjc3NDYwMDU5NTJE
RCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTIwNUJBMzFGNTI3NzQ2MDA1OTUyREQgLyogQWNjZXNzaWJp
bGl0eVRlc3RzSU9TLm1tICovOyB9OwogCQkyRTU0RjQwRDFEN0JDODQyMDA5MjFBREYgLyogbGFy
Z2UtdmlkZW8tbXV0ZXMtb25wbGF5aW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU1NEY0MEMxRDdCQzgzOTAwOTIxQURGIC8qIGxh
cmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1sICovOyB9OworCQkyRTVDNzcwNzFGQTcwMTM2
MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTVDNzcwNjFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRh
Y2htZW50VGVzdHMubW0gKi87IH07CiAJCTJFNjkxQUVBMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJn
ZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRTgxRDc4QjUyQjAw
MTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAq
LzsgfTsKIAkJMkU2OTFBRUIxRDc4QjUzNjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5n
LXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdl
LXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCTJFNjkx
QUVEMUQ3OEI5MTAwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1o
aWRlcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJFNjkxQUVDMUQ3OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3Mt
cGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovOyB9OwpAQCAtMTE2OCw2
ICsxMTY5LDcgQEAKIAkJMkUxREZERjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNl
ZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFm
dGVyLWVuZGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUyMDVCQTMx
RjUyNzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkU1NEY0MEMxRDdCQzgzOTAwOTIxQURGIC8qIGxhcmdlLXZpZGVvLW11dGVzLW9u
cGxheWluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLW11
dGVzLW9ucGxheWluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU1Qzc3
MDYxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tBdHRhY2htZW50VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFNjkxQUU4MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVv
LWhpZGVzLWNvbnRyb2xzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2Ut
dmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1w
bGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSAibGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjkxQUVDMUQ3OEI5MDIwMDEyOTQwNyAvKiBs
YXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVv
LWhpZGVzLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA3
NCw2ICsyMDc2LDcgQEAKIAkJCQk1MTcxNEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2ViUHJvY2Vz
c0tpbGxJREJDbGVhbnVwLm1tICovLAogCQkJCTUxMjBDODNDMUU2NzUwNzkwMDI1QjI1MCAvKiBX
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gKi8sCiAJCQkJNUM5RTU2ODQxREY5MTQzRDAw
QzlFRTMzIC8qIFdlYnNpdGVQb2xpY2llcy5tbSAqLywKKwkJCQkyRTVDNzcwNjFGQTcwMTM2MDA1
OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gKi8sCiAJCQkJMUY4MzU3MUExRDNGRkIwRTAw
RTM5NjdCIC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tICovLAogCQkJCTVDRTM1NEQ4MUU3MEQ5QzMw
MEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLywKIAkJCQkyRDgzOEIxRTFF
RUYzQTVCMDA5Qjk4MEUgLyogV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tICovLApAQCAt
MjQ0MCw3ICsyNDQzLDYgQEAKIAkJQkM5MDk2NDExMjU1NjE2MDAwMDgzNzU2IC8qIFdlYktpdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdFNDk5OTAx
RjlFNTZBMTAwMkYxRUYzIC8qIEdldFVzZXJNZWRpYVJlcHJvbXB0Lm1tICovLAogCQkJCTBGMTM5
RTc0MUE0MjNBNDYwMEY1OTBGNSAvKiBjb2NvYSAqLywKIAkJCQlDMEM1RDNCQjE0NTk4QjZGMDBB
ODAyQTYgLyogbWFjICovLAogCQkJCUJDOTA5NzdCMTI1NTcxQUUwMDA4Mzc1NiAvKiBSZXNvdXJj
ZXMgKi8sCkBAIC0yNDc4LDYgKzI0ODAsNyBAQAogCQkJCUY2NjBBQTBDMTVBNUYwNjEwMDNBMTI0
MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAg
Ki8sCiAJCQkJRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5p
dGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgKi8sCiAJCQkJMDdDRTFDRjIx
RjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0gKi8sCisJCQkJMDdF
NDk5OTAxRjlFNTZBMTAwMkYxRUYzIC8qIEdldFVzZXJNZWRpYVJlcHJvbXB0Lm1tICovLAogCQkJ
CTRCRkRGRkE4MTMxNDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAg
Ki8sCiAJCQkJNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFu
ZGxlX0J1bmRsZS5jcHAgKi8sCiAJCQkJQkM1NzVBQUMxMjZFODNCOTAwNkYwRjEyIC8qIEluamVj
dGVkQnVuZGxlQmFzaWMuY3BwICovLApAQCAtMzI3Nyw3ICszMjgwLDYgQEAKIAkJCQk0NjM5N0I5
NTFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUJDMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01Ob2RlRnJvbUpTT2JqZWN0Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFQkQxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTVJhbmdlT2ZTdHJpbmcubW0g
aW4gU291cmNlcyAqLywKLQkJCQkwN0U0OTk5MTFGOUU1NkRGMDAyRjFFRjMgLyogR2V0VXNlck1l
ZGlhUmVwcm9tcHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFQzFBNDExQUU2MDA0NDdD
NEMgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFRUQxQTQxMUFFNjAwNDQ3QzRDIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjMxQTQxMUFGNjAwNDQ3QzRDIC8qIERvd25sb2FkLm1t
IGluIFNvdXJjZXMgKi8sCkBAIC0zMzI0LDYgKzMzMjYsNyBAQAogCQkJCTdDQ0U3RUY5MUE0MTFB
RTYwMDQ0N0M0QyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFMjFBNDExQTlBMDA0NDdDNEMgLyog
R2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
N0NFMUNGMzFGMDZBN0UwMDBCRjg5RjUgLyogR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTA3RTQ5OTkxMUY5RTU2REYwMDJGMUVGMyAvKiBHZXRVc2VyTWVkaWFS
ZXByb21wdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkJEQkFDMUU3MjA3RjEwMERFMEQ1QSAv
KiBHUFVCdWZmZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTUyMzFDQTFFQjNCM0M3MDBBMjJB
MTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2MkFFOUMxRTZG
MkZGNTAwMEU0REJDIC8qIEdQVURldmljZS5tbSBpbiBTb3VyY2VzICovLApAQCAtMzUyMSw2ICsz
NTI0LDcgQEAKIAkJCQk3Q0NFN0YxQzFBNDExQUU2MDA0NDdDNEMgLyogV2lsbFNlbmRTdWJtaXRF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEODFBNDExQTdFMDA0NDdDNEMgLyog
V2lsbFNlbmRTdWJtaXRFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQ5MUE0MTFB
N0UwMDQ0N0M0QyAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTJFNUM3NzA3MUZBNzAxMzYwMDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFGODM1NzFCMUQzRkZCMjMwMEUzOTY3QiAvKiBXS0JhY2tGb3J3
YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjJFMUE0MTFCMTAwMDQ0N0M0QyAv
KiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RjJGMUE0MTFCMTAwMDQ0N0M0QyAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3Qu
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMjdjYzQ4
OGFiZTcyZDgxOGU2ZWJiZDRkMzUyMWU1OTQ0ZTkyNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBA
IC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBv
cnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXRQcml2YXRlLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitzdGF0aWMg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKQor
eworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEF0dGFjaG1lbnRFbGVt
ZW50RW5hYmxlZDpZRVNdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPjwvYm9keT48c2NyaXB0
PmRvY3VtZW50LmJvZHkuZm9jdXMoKTs8L3NjcmlwdD4iXTsKKworICAgIHJldHVybiB3ZWJWaWV3
OworfQorCitzdGF0aWMgTlNEYXRhICp0ZXN0SFRNTERhdGEoKQoreworICAgIHJldHVybiBbQCI8
YSBocmVmPScjJz5UaGlzIGlzIHNvbWUgSFRNTCBkYXRhPC9hPiIgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOworfQorCitzdGF0aWMgTlNEYXRhICp0ZXN0SW1hZ2VEYXRh
KCkKK3sKKyAgICByZXR1cm4gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKFtVSUltYWdlIGltYWdl
TmFtZWQ6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcy9pY29uLnBuZyJdKTsKK30KKworQGltcGxl
bWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEF0dGFjaG1lbnRUZXN0aW5nKQorCistIChfV0tBdHRh
Y2htZW50ICopc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3Ry
aW5nICopZmlsZW5hbWUgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgZGF0YToo
TlNEYXRhICopZGF0YSBvcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRp
b25zCit7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBfV0tBdHRhY2htZW50
ICphdHRhY2htZW50ID0gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6ZmlsZW5h
bWUgY29udGVudFR5cGU6Y29udGVudFR5cGUgZGF0YTpkYXRhIG9wdGlvbnM6b3B0aW9ucyBjb21w
bGV0aW9uOl4oQk9PTCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIHJldHVybiBhdHRhY2htZW50OworfQor
CistIChOU1N0cmluZyAqKXZhbHVlT2ZBdHRyaWJ1dGU6KE5TU3RyaW5nICopYXR0cmlidXRlTmFt
ZSBmb3JRdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXF1ZXJ5U2VsZWN0b3IKK3sKKyAgICByZXR1
cm4gW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyVAJykuZ2V0QXR0cmlidXRlKCclQCcp
IiwgcXVlcnlTZWxlY3RvciwgYXR0cmlidXRlTmFtZV1dOworfQorCitAZW5kCisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudEVs
ZW1lbnRJbnNlcnRpb24pCit7CisgICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdB
dHRhY2htZW50cygpOworCisgICAgLy8gVXNlIHRoZSBnaXZlbiBjb250ZW50IHR5cGUgZm9yIHRo
ZSBhdHRhY2htZW50IGVsZW1lbnQncyB0eXBlLgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJ
bnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZm9vIiBjb250ZW50VHlwZTpAInRleHQvaHRt
bCIgZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRpb25zOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVR
KEAiZm9vIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVj
dG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXh0L2h0bWwiLCBb
d2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFj
aG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiMzggYnl0ZXMiLCBbd2ViVmlldyB2YWx1
ZU9mQXR0cmlidXRlOkAic3VidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0p
OworCisgICAgLy8gU2luY2Ugbm8gY29udGVudCB0eXBlIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVk
LCBjb21wdXRlIGl0IGZyb20gdGhlIGZpbGUgZXh0ZW5zaW9uLgorICAgIFt3ZWJWaWV3IF9leGVj
dXRlRWRpdENvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgYXJndW1lbnQ6bmlsIGNvbXBsZXRpb246
bmlsXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxl
bmFtZTpAImJhci5wbmciIGNvbnRlbnRUeXBlOm5pbCBkYXRhOnRlc3RJbWFnZURhdGEoKSBvcHRp
b25zOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiYmFyLnBuZyIsIFt3ZWJWaWV3IHZhbHVl
T2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKEAiaW1hZ2UvcG5nIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0
ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgIEVYUEVDVF9X
S19TVFJFUShAIjQyIEtCIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInN1YnRpdGxlIiBm
b3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325390</attachid>
            <date>2017-10-30 17:08:09 -0700</date>
            <delta_ts>2017-10-30 17:50:51 -0700</delta_ts>
            <desc>Back _WKAttachment with API::Attachment.</desc>
            <filename>bug-179013-20171030170808.patch</filename>
            <type>text/plain</type>
            <size>76611</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMzAwYmI1YmU2NzAwYzg1Mzk2N2Q1YjQ1YmFlNTkw
ODYzM2FlOWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uMmEwOThlNTkzZmRkOTliMTIxOWNiZTE1MDcyZTFjMmIxNmM3MThmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvRmlsZVNpemVGb3JtYXR0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKiBwYWwvY29jb2EvRmlsZVNp
emVGb3JtYXR0ZXJDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKGZpbGVTaXplRGVzY3JpcHRpb24pOgor
ICAgICAgICAqIHBhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoZmls
ZVNpemVEZXNjcmlwdGlvbik6CisgICAgICAgICogcGFsL3NwaS9GaWxlU2l6ZUZvcm1hdHRlci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0
ZS5oLgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5o
LgorCiAyMDE3LTEwLTI3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgaU9TIHNwZWNpZmljIHNvdXJjZXMgdG8gdW5pZmllZCBzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGI0MWZkNDUzZDJlOGEyNGZlN2VmZGU4NjRhODE2NzFmMDlmNDE3NDIuLjJlN2My
OTJlYjI1ODYzNDJhZTVkYWQwODRjODg5ZjZhMGExMzA4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzEgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFdLV2ViVmlldyBTUEkg
Zm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgbmF0aXZlIFNQSSB0byBpbnNlcnQgYXR0YWNobWVudCBlbGVtZW50cyBnaXZlbiBh
IGZpbGVuYW1lLCBhbiBvcHRpb25hbCBNSU1FIHR5cGUsIGFuZCBhIGRhdGEgYmxvYi4gU2VlCisg
ICAgICAgIGNoYW5nZS1ieS1jaGFuZ2UgY29tbWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLiBD
b3ZlcmVkIGJ5IGEgbmV3IEFQSSB0ZXN0LgorCisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZSk6CisKKyAgICAgICAgSW50cm9k
dWNlIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBhIFNoYXJlZE1lbW9yeSB1c2luZyBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XZWJL
aXRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUu
aC4KKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6On5BdHRhY2ht
ZW50KToKKworICAgICAgICBJbnRyb2R1Y2UgQVBJOjpBdHRhY2htZW50LCB3aGljaCByZXByZXNl
bnRzIGEgcGxhdGZvcm0tYWdub3N0aWMgQXR0YWNobWVudC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRo
RmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOmNvbXBsZXRpb246XSk6CisKKyAgICAg
ICAgQWRkcyBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYSBuZXcgYXR0YWNobWVudCBlbGVtZW50LiBD
YWxscyBvdXQgdG8gV2ViUGFnZVByb3h5IHRvIGluc2VydCB0aGUgYXR0YWNobWVudCBmcm9tIHRo
ZQorICAgICAgICBnaXZlbiBkYXRhIGJsb2IsIGFuZCBjcmVhdGVzIGEgbmV3IEFQSS1vYmplY3Qt
YmFja2VkIF9XS0F0dGFjaG1lbnQuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9leGVjdXRlRWRp
dENvbW1hbmQ6YXJndW1lbnQ6Y29tcGxldGlvbjpdKToKKworICAgICAgICBTdXBwb3J0IHBhc3Np
bmcgaW4gYSBuaWwgY29tcGxldGlvbiBibG9jay4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dl
YktpdFByaXZhdGUuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1l
bnQubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmguCisKKyAgICAgICAgSW50cm9kdWNlcyBfV0tBdHRhY2htZW50LCBhbiBPYmplY3RpdmUg
QyB3cmFwcGVyIGFyb3VuZCB0aGUgQVBJOjpBdHRhY2htZW50LgorCisgICAgICAgICgtW19XS0F0
dGFjaG1lbnQgX2FwaU9iamVjdF0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IGlzRXF1YWw6
XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgdW5pcXVlSWRlbnRpZmllcl0pOgorICAgICAg
ICAoLVtfV0tBdHRhY2htZW50IGhhc2hdKToKKworICAgICAgICBBZGQgX1dLQXR0YWNobWVudCwg
YSBXZWJLaXQgU1BJIG9iamVjdCB0aGF0IHdyYXBzIGFuIGF0dGFjaG1lbnQgZWxlbWVudCB1bmlx
dWUgaWRlbnRpZmllci4gQWxzbywgYWxsb3cKKyAgICAgICAgX1dLQXR0YWNobWVudCB0byBiZSB1
c2VkIGFzIGEgaGFzaGFibGUgTlNEaWN0aW9uYXJ5IGtleS4KKworICAgICAgICAoLVtfV0tBdHRh
Y2htZW50IGRlc2NyaXB0aW9uXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dHRhY2htZW50SW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKEFQSTo6d3JhcHBlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW5zZXJ0QXR0YWNobWVudCk6CisKKyAgICAgICAgSW1wbGVtZW50IElQQyBzdXBwb3J0
IGZvciBpbnNlcnRpbmcgYW4gYXR0YWNobWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTctMTAtMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbU2V0dGluZ3NdIEdlbmVyYXRlIG1vcmUgb2YgdGhlIFdlYktpdCBwcmVmZXJlbmNl
cyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZjUxYWRiMDA4MTAwYzJmZmVjZTI0MmU4OGFmZjU4NTg1ZGQ3OTgwZS4uNDI3
YWNiM2U0MTVkZDQ5Y2U0YWIwYzA4MDZkOWFlNzQ3MmNjOTkyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxLDYgKzE0MSwx
MSBAQAogCQlBM0FCNkU2NTFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUI2
RTYzMUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tICovOyB9Owog
CQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RBMUY0NjJENkEwMDlFNkVF
OSAvKiBTZXNzaW9uSUQuY3BwICovOyB9OwogCQlBM0M2NkNERDFGNDYyRDZBMDA5RTZFRTkgLyog
U2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi87IH07CisJCUY0NDI5
MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE1RDFGQTUyNDczMDAy
Q0M5M0UgLyogTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oICovOyB9OworCQlGNDQyOTE2MDFGQTUy
NjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTVGMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxl
U2l6ZUZvcm1hdHRlci5oICovOyB9OworCQlGNDQyOTE2MzFGQTUyNjcwMDAyQ0M5M0UgLyogRmls
ZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDI5MTYxMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICov
OyB9OworCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MjkxNjIx
RkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCAqLzsgfTsKKwkJRjQ0Mjkx
NjgxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE2NjFGQTUyNzA1MDAy
Q0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSAqLzsgfTsKIC8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlv
biAqLwpAQCAtMjgzLDYgKzI4OCwxMSBAQAogCQlBM0M2NkNEQTFGNDYyRDZBMDA5RTZFRTkgLyog
U2Vzc2lvbklELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlc3Np
b25JRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQzY2Q0RCMUY0NjJENkEw
MDlFNkVFOSAvKiBTZXNzaW9uSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2Vzc2lvbklELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMTQ3QTRBMUVGRDBB
QTYwMDA1NkZBNSAvKiBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjQ0MjkxNUQxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmlsZVNpemVGb3JtYXR0
ZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE1RjFGQTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNp
emVGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxNjExRkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVT
aXplRm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTaXplRm9ybWF0dGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxl
U2l6ZUZvcm1hdHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU2l6ZUZvcm1hdHRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkz
RSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmls
ZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVu
ZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMzEzLDYgKzMyMyw4IEBACiAJCQkJMEMyREExMjAxRjNC
RTlFNzAwREJDMzE3IC8qIGNvY29hICovLAogCQkJCTBDNUFGOTBEMUY0M0E0QTQwMDJFQUMwMiAv
KiBpb3MgKi8sCiAJCQkJMEM3Nzg1NkUxRjQ1MTJFOTAwRjRFQkI2IC8qIG1hYyAqLywKKwkJCQlG
NDQyOTE2MjFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAorCQkJ
CUY0NDI5MTYxMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAogCQkJ
KTsKIAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzYyLDYg
KzM3NCw3IEBACiAJCQkJMEMyREExMzExRjNCRUI0OTAwREJDMzE3IC8qIE5TQ29sb3JTUEkuaCAq
LywKIAkJCQkwQzJEQTEzMjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAqLywK
IAkJCQkwQzJEQTEzMzFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICovLAor
CQkJCUY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmgg
Ki8sCiAJCQkJMEMyREExMzQxRjNCRUI0OTAwREJDMzE3IC8qIE5TU3RyaW5nU1BJLmggKi8sCiAJ
CQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91Y2hCYXJTUEkuaCAqLywKIAkJCQkw
QzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCkBAIC00
NzEsNiArNDg0LDcgQEAKIAkJCQlBMzc4OEU5RjFGMDVCN0NFMDA2Nzk0MjUgLyogc3lzdGVtICov
LAogCQkJCUEzMEQ0MTFEMUYwREQwQUMwMEI3MTk1NCAvKiB0ZXh0ICovLAogCQkJCTBDMkQ5RTcy
MUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQlGNDQyOTE1RjFGQTUy
NjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCAqLywKIAkJCQlBMzlERTc0RDFGN0M0
NDNDMDA3QkNCMDAgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggKi8sCiAJCQkJMDcwOEFDMzIxRjRD
ODc0QTAwMUY3ODhGIC8qIExvZ2dlci5oICovLAogCQkJCTA3Mzc3QURCMUY1Nzc3RDcwMDI3RjE2
RCAvKiBMb2dnZXJIZWxwZXIuaCAqLywKQEAgLTUxNyw2ICs1MzEsNyBAQAogCQkxQzQ4NzZERTFG
OEQ4MzEzMDBDQ0VFQkQgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1h
dHRlckNvY29hLm1tICovLAogCQkJCTFDNDg3NkRGMUY4RDgzNzUwMENDRUVCRCAvKiBMb2dnaW5n
Q29jb2EubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpAQCAtNjEyLDYgKzYyNyw4IEBA
CiAJCQkJMEM1QUY5MUExRjQzQTRDNzAwMkVBQzAyIC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTExNzVCNTcxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFy
Y2hQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyRDlFNzMxRUVGNUFGNjAwREJDMzE3
IC8qIEV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ0MjkxNjMxRkE1MjY3MDAw
MkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE2
MDFGQTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExMDI2NTg3MUY1Njc0NjEwMEI0Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwQzVBRjkxQjFGNDNBNEM3MDAyRUFDMDIgLyogR3JhcGhpY3NTZXJ2aWNlc1NQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwMjY1OEUxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2Vy
dmljZXNTUEkuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ3LDYgKzY2NCw3IEBACiAJCQkJMEM3Nzg1
OEYxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TRXZlbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
MkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUY0NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9y
bWF0dGVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MDFGNDUxMzBGMDBGNEVCQjYg
LyogTlNGb250U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGRTFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTExRjQ1MTMw
RjAwRjRFQkI2IC8qIE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzg0LDYgKzgwMiw4IEBACiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VF
NzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlEMDU2
MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92
aWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyog
RmlsZVNpemVGb3JtYXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0MjkxNjgxRkE1Mjcw
NTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlBMzBENDEyMjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9y
bWF0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWJiMDYyYzYwNTZlYmYzN2E2ZjkzZjNjY2YwZmM5OWI1NjY0MjQ2NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvRmlsZVNpemVGb3JtYXR0ZXIuaApA
QCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK1N0cmluZyBmaWxl
U2l6ZURlc2NyaXB0aW9uKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE4NzI2Y2Vl
OTE4OTI4MjUzMmUxODA0MmUyZWY5MzkyOGI4YTdiOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQpAQCAtMCww
ICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZp
bGVTaXplRm9ybWF0dGVyLmgiCisKKyNpbXBvcnQgIk5TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaCIK
KworU3RyaW5nIGZpbGVTaXplRGVzY3JpcHRpb24oc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJu
IE5TTG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbihzaXplLCAwLCAwKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL0ZpbGVTaXplRm9ybWF0dGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL0ZpbGVTaXplRm9ybWF0dGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ODRlNWRhZDYyM2U3M2YzMDk1MjcxODk1MGI1MzI1MmE1ZmJjNzdkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3BwCkBA
IC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRmlsZVNpemVGb3JtYXR0ZXIuaCIKKworI2lmICFQTEFURk9STShDT0NPQSkKKworU3RyaW5n
IGZpbGVTaXplRGVzY3JpcHRpb24oc2l6ZV90IHNpemUpCit7CisgICAgLy8gRklYTUU6IFRoZXNl
IHN0cmluZ3Mgc2hvdWxkIGJlIGxvY2FsaXplZCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBicmlu
Z2luZyBMb2NhbGl6ZWRTdHJpbmdzIGludG8gUEFMLgorICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAxOT4gZm9yIG1vcmUgZGV0YWlscy4KKyAg
ICBpZiAoc2l6ZSA8IDEwMDApCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXR1IGJ5
dGVzIiwgc2l6ZSk7CisgICAgaWYgKHNpemUgPCAxMDAwMDAwKQorICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIiUuMWYgS0IiLCBzaXplIC8gMTAwMC4pOworICAgIGlmIChzaXplIDwgMTAw
MDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIE1CIiwgc2l6ZSAv
ICgxMDAwMDAwLikpOworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJS4xZiBHQiIsIHNpemUg
LyAoMTAwMDAwMDAwMC4pKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL3NwaS9GaWxlU2l6ZUZvcm1hdHRlci5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZDdlNmNmYjc0ZTYyOWZkZjM4
OWFjN2RiNWFkOWFjNDE3NDY3MzY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitQ
QUxfRVhQT1JUIFN0cmluZyBmaWxlU2l6ZURlc2NyaXB0aW9uKHNpemVfdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9ybWF0dGVy
U1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTU1NzZmZDM0YzE1MGRlZjEwNWZmYjRkOWYyYWU3YjQwMjNmZGY2
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NvY29hL05T
RmlsZVNpemVGb3JtYXR0ZXJTUEkuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TRmlsZVNpemVGb3JtYXR0ZXIuaD4KKworI2Vsc2UKKwordHlwZWRlZiB1aW50NjRf
dCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9uczsKK2V4dGVybiAiQyIgTlNTdHJpbmcgKk5TTG9j
YWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplLCB1aW50NjRfdCBtYXhpbXVt
RGlzcGxheWVkVmFsdWUsIE5TRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25zKTsKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYmUzZGE4ZWUyZjc1ZWJlMmU3NjdiYmE2ZTc3
N2YwOTE1Zjk4ODIyNS4uZTY4N2EyNzU1ZmE5ZWQxNWYwZDdkNDU3N2JhYmU3YTZmYzAwNDRmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDcsMTIgKzQ3LDE0IEBACiAjaW5jbHVk
ZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGb2N1c0NvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCkBAIC05OCw2ICsxMDAsNyBA
QAogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlz
aWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSA8cGFsL0ZpbGVTaXpl
Rm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8cGFsL3N5c3RlbS9Tb3VuZC5oPgogI2luY2x1ZGUgPHBh
bC90ZXh0L0tpbGxSaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMu
aD4KQEAgLTM3MjgsNiArMzczMSwzOSBAQCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VGb3JU
ZXh0Q2hlY2tpbmdSZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bAogICAgIHJl
dHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5sb2NhdGlv
biwgcmVzdWx0Lmxlbmd0aCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
Cit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIHN0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIWNvbnRlbnRUeXBlKQorICAg
ICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSk7Cisg
ICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIGZpbGVuYW1lLCAqY29udGVu
dFR5cGUsIEZpbGU6OmNyZWF0ZShmaWxlcGF0aCkpOworfQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0
QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRl
bnRUeXBlKQoreworICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgIGNvbnRlbnRUeXBlID0g
RmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKKyAgICBpbnNlcnRBdHRhY2htZW50
RnJvbUZpbGUoaWRlbnRpZmllciwgZmlsZW5hbWUsICpjb250ZW50VHlwZSwgRmlsZTo6Y3JlYXRl
KEJsb2I6OmNyZWF0ZShkYXRhLCAqY29udGVudFR5cGUpLCBmaWxlbmFtZSkpOworfQorCit2b2lk
IEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVm
PEZpbGU+JiYgZmlsZSkKK3sKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNobWVudEVs
ZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KCksIGlkZW50
aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRpdGxlQXR0
ciwgZmlsZW5hbWUpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN1
YnRpdGxlQXR0ciwgZmlsZVNpemVEZXNjcmlwdGlvbihmaWxlLT5zaXplKCkpKTsKKyAgICBhdHRh
Y2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwgY29udGVudFR5cGUpOwor
ICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgYXR0
YWNobWVudC0+c2V0RmlsZShmaWxlLnB0cigpKTsKKworICAgIGF1dG8gZnJhZ21lbnRUb0luc2Vy
dCA9IGRvY3VtZW50KCkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgIGZyYWdtZW50VG9J
bnNlcnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQuZ2V0KCkpOworCisgICAgcmVwbGFjZVNlbGVj
dGlvbldpdGhGcmFnbWVudChmcmFnbWVudFRvSW5zZXJ0LmdldCgpLCBmYWxzZSwgZmFsc2UsIHRy
dWUpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogdm9pZCBF
ZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleHRDaGVja2luZ1Jlc3VsdCBhY2NlcHRl
ZENhbmRpZGF0ZSkKIHsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24gPSBt
X2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5k
ZXggYWE4ODVmZjU5OWMxYTA3NWQzZGEwZDA3Y2RmMjI1ODUxNmFlYTM3ZC4uZmRmYTNlOGE4MDlj
NWFiNTgxODYzNTY3ZDVlOGU5MGJlMjAzZDgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBA
IC02Myw3ICs2Myw5IEBAIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1hbmRDb21w
b3NpdGlvbjsKIGNsYXNzIEVkaXRvckNsaWVudDsKIGNsYXNzIEVkaXRvckludGVybmFsQ29tbWFu
ZDsKK2NsYXNzIEZpbGU7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVu
dDsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNzIEtleWJv
YXJkRXZlbnQ7CkBAIC00OTgsOSArNTAwLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzR2V0
dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oYm9vbCBiKSB7IG1faXNHZXR0aW5nRGljdGlvbmFyeVBv
cHVwSW5mbyA9IGI7IH0KICAgICBib29sIGlzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oKSBj
b25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm87IH0KIAorI2lmIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRU
eXBlID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2VydEF0dGFj
aG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBS
ZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlw
ZSA9IHN0ZDo6bnVsbG9wdCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBEb2N1bWVudCYgZG9j
dW1lbnQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgdm9p
ZCBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8RmlsZT4m
Jik7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25zdDsKICAg
ICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsKICAgICB2
b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggYTZlZDk2MTU2
YWNkYTcyMzMzYmIzNmZhN2I1ZjUzYWFmYzlhMDI5Yi4uM2JmZjBjN2JmOWMxOGZmMWU4YjYzY2Nk
OGQ5ZGFiNjBiYzE2MzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1l
bnRFbGVtZW50LmNwcApAQCAtMjgsMjAgKzI4LDI5IEBACiAKICNpZiBFTkFCTEUoQVRUQUNITUVO
VF9FTEVNRU5UKQogCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVy
QXR0YWNobWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQorSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkKKyAgICAsIG1fdW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVyKQogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKGF0dGFjaG1lbnRUYWcpKTsKIH0KIAorSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQmIGRvY3VtZW50KQorICAgIDogSFRNTEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCit7Cit9CisKIEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6fkhUTUxBdHRhY2htZW50RWxlbWVudCgpID0gZGVmYXVsdDsKIAogUmVmPEhU
TUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNDksNiArNTgs
MTEgQEAgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGEKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBI
VE1MQXR0YWNobWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorUmVmPEhUTUxB
dHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50LCBpZGVudGlmaWVyKSk7Cit9CisKIFJlbmRlclB0cjxSZW5k
ZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihS
ZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewogICAgIHJl
dHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJBdHRhY2htZW50PigqdGhpcywgV1RGTW92ZShzdHls
ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKaW5kZXgg
OWFjNmI2YThiMTc4NGQwMTY4ZWQwM2EwZTk5NDMzZTM4NjQ4MzllMi4uM2E0NGE1ZjExOTljNzIw
OWMzYjFhZTQ5YmVmYmI4MTYxMWE2MDMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxB
dHRhY2htZW50RWxlbWVudC5oCkBAIC0zNywxMCArMzcsMTQgQEAgY2xhc3MgUmVuZGVyQXR0YWNo
bWVudDsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxl
bWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgUmVmPEhU
TUxBdHRhY2htZW50RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBGaWxl
KiBmaWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWxlKEZpbGUqKTsKIAorICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB1bmlxdWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV91bmlxdWVJ
ZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRVbmlxdWVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikgeyBtX3VuaXF1ZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxlKCkgY29uc3Q7CiAgICAgU3RyaW5n
IGF0dGFjaG1lbnRUeXBlKCkgY29uc3Q7CiAKQEAgLTQ4LDYgKzUyLDcgQEAgcHVibGljOgogCiBw
cml2YXRlOgogICAgIEhUTUxBdHRhY2htZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQmKTsKKyAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5I
VE1MQXR0YWNobWVudEVsZW1lbnQoKTsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBj
cmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikgZmluYWw7CkBAIC02Myw2ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7
CiAgICAgCiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKKyAgICBTdHJpbmcgbV91bmlxdWVJZGVu
dGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
U2hhcmVkTWVtb3J5LmgKaW5kZXggYzcyZTBkNGIwYWI4NzIwNmJjZjUyNzU1Mzc5OWRjM2JlZmNi
YTFjMC4uMDE3YjQzNGVlNGE5MmRmN2FiOWQ1YzlmMjc3N2Q2ZmRjY2E0ZTI4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiAjaWYgVVNFKFVOSVhf
RE9NQUlOX1NPQ0tFVFMpCkBAIC00MCw2ICs0MSwxMCBAQCBjbGFzcyBEZWNvZGVyOwogY2xhc3Mg
RW5jb2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVmZmVyOwor
fQorCiAjaWYgT1MoREFSV0lOKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWFjaFNlbmRS
aWdodDsKQEAgLTg3LDYgKzkyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7CiAgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IGNyZWF0ZSh2b2lkKiwgc2l6ZV90LCBQcm90ZWN0aW9uKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFNoYXJlZE1lbW9yeT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwogICAg
IHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJvdGVjdGlv
bik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9yKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2Eu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAK
aW5kZXggYWVhNzk4NTA0NDlhOGI4OTc5OGU5MDM2ZDdiMGU1MzAxODAzYWE1NC4uMzk4ZDU1ZTdj
MTk0YWM2OWY0ZGI3YWMwZjJjOWJiYTE2M2UwYTE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFjaFBvcnQuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5o
PgogI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF9wb3J0
Lmg+CiAjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KQEAgLTE1Niw2ICsxNTcsMTMgQEAgc3RhdGlj
IFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgbWFrZU1lbW9yeUVudHJ5KHNpemVfdCBzaXplLCB2bV9v
ZmZzZXRfdCBvZmZzZXQsIFMKICAgICByZXR1cm4gV2ViQ29yZTo6TWFjaFNlbmRSaWdodDo6YWRv
cHQocG9ydCk7CiB9CiAKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRl
KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGF1dG8gc2hhcmVk
TWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZmZXItPnNpemUoKSk7Cisg
ICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5zaXplKCkpOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXI7Cit9CisKIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGRhdGEsIHNpemVfdCBz
aXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgQVNTRVJUKHNpemUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1NYWMuY21ha2UKaW5kZXggMGU2ZjY2OTY3YWUwZTEwZmIxNDZhN2I3ZTY1ODAzNDRlOGNm
ZDEzMC4uNzg5ZjM4NDVmNmRlYjY0NmVlZTcwNTc5M2EyZDhhNmRjNjljYWE5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtTWFjLmNtYWtlCkBAIC0yMjIsNiArMjIyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0X1NP
VVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQogICAg
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXaW5kb3dGZWF0dXJlcy5tbQogICAgIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KKyAgICBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F0dGFjaG1lbnQubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1dG9tYXRp
b25TZXNzaW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lv
bkNvbmZpZ3VyYXRpb24ubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRleHRNZW51
RWxlbWVudEluZm8ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElP
YmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCA5NjI4
NjRmNzI3OTM5YTMxODU1YmE0NDRkZjcxOWQ2ZjYxZTJkYzE4Li5mNmY5OWZhZGY0M2UzNGI3MjNl
OGFkYjZjOTQ1NmRhOTE2N2Y1YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5o
CkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8vIFVJUHJvY2Vz
cyB0eXBlcwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwKKyAgICAgICAgQXR0YWNo
bWVudCwKICAgICAgICAgQXV0b21hdGlvblNlc3Npb24sCiAgICAgICAgIEJhY2tGb3J3YXJkTGlz
dCwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0SXRlbSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IDRhMzU4MDk3YzdjNDI4NTJmZTZhNTBi
ZDFhMDMwNDAzNDRjZjczYjkuLjE4YmYwYzVkOGE2M2FmZTM5MDMyZmI0NDdiNTIyNWU1MjE4NzZi
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUu
aApAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRp
b25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
QXR0YWNobWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0VsZW1lbnRBY3Rpb24uaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tGb2N1c2VkRWxlbWVudEluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tG
b3JtSW5wdXRTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0
YWNobWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdiMzE0MDcxZWExNWNlNmVjOTA4NzhiNGVjYjI5ZmZl
ZWYwZmFlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKKworI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgQVBJIHsKKworUmVmPEF0dGFjaG1lbnQ+IEF0
dGFjaG1lbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFn
ZVByb3h5JiB3ZWJQYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF0dGFjaG1lbnQo
aWRlbnRpZmllciwgd2ViUGFnZSkpOworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50KGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCisgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlLmNyZWF0
ZVdlYWtQdHIoKSkKK3sKK30KKworQXR0YWNobWVudDo6fkF0dGFjaG1lbnQoKQoreworfQorCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNDNkMGRlOThmMjc4NmQ0MTNhZWFjNjg1YmM4ZWQ3OWI4M2YxMzQ1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dlYlBh
Z2VQcm94eS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUGFnZVByb3h5Owor
fQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgQXR0YWNobWVudCBmaW5hbCA6IHB1YmxpYyBP
YmplY3RJbXBsPE9iamVjdDo6VHlwZTo6QXR0YWNobWVudD4geworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8QXR0YWNobWVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0
OjpXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5BdHRhY2htZW50KCk7CisKKyAgICBTdHJp
bmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXZWJL
aXQ6OldlYlBhZ2VQcm94eSYpOworCisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKKyAgICBXZWFr
UHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IDE0NjgxMzFlYTFiNDAwZTAzODg1YmY2NTcwY2M3ZmFhZWI0MGEyMDQuLmVkYWY0ZDg5
ZWM3Njk1ZDU0YWI1MTM0MDEzNjI2ZDhlNzBlOWQxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTQsMTEgKzk0LDEzIEBACiAjaW1w
b3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0RPTUJpbmRpbmcu
aD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPgorI2ltcG9ydCA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVl
bi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Nj
aGVtZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxl
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1dyaXRpbmdNb2RlLmg+CkBAIC0xMTAsNiArMTEyLDcgQEAKICNpbXBvcnQgPHd0Zi9PcHRp
b25hbC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNj
b3BlLmg+CisjaW1wb3J0IDx3dGYvVVVJRC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHls
ZFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC00MTY4LDYgKzQx
NzEsMjMgQEAgLSAodm9pZClfY2xvc2UKICAgICBfcGFnZS0+Y2xvc2UoKTsKIH0KIAorLSAoX1dL
QXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZp
bGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAq
KWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21w
bGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNh
bm9uaWNhbFVVSURTdHJpbmcoKTsKKworICAgIF9wYWdlLT5pbnNlcnRBdHRhY2htZW50KGlkZW50
aWZpZXIsIGZpbGVuYW1lLCBjb250ZW50VHlwZS5sZW5ndGggPyBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4geyBjb250ZW50VHlwZSB9IDogc3RkOjpudWxsb3B0LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmNyZWF0ZShkYXRhKSwgW2NhcHR1cmVkSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAg
aWYgKGNhcHR1cmVkSGFuZGxlcikKKyAgICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcihlcnJvciA9
PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgIH0pOworCisgICAgYXV0
byBhdHRhY2htZW50ID0gQVBJOjpBdHRhY2htZW50OjpjcmVhdGUoQVBJOjpTdHJpbmc6OmNyZWF0
ZShpZGVudGlmaWVyKSwgKl9wYWdlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIoYXR0YWNobWVudCkg
YXV0b3JlbGVhc2VdOworI2Vsc2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisKIC0gKHZv
aWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZh
U2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSlj
b21wbGV0aW9uSGFuZGxlcgogewogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNj
cmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRp
b25IYW5kbGVyXTsKQEAgLTYwMzMsNyArNjA1Myw4IEBAIC0gKHZvaWQpX2Rpc2FibGVCYWNrRm9y
d2FyZFNuYXBzaG90Vm9sYXRpbGl0eUZvclRlc3RpbmcKIC0gKHZvaWQpX2V4ZWN1dGVFZGl0Q29t
bWFuZDooTlNTdHJpbmcgKiljb21tYW5kIGFyZ3VtZW50OihOU1N0cmluZyAqKWFyZ3VtZW50IGNv
bXBsZXRpb246KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb24KIHsKICAgICBfcGFnZS0+ZXhlY3V0
ZUVkaXRDb21tYW5kKGNvbW1hbmQsIGFyZ3VtZW50LCBbY2FwdHVyZWRDb21wbGV0aW9uQmxvY2sg
PSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgewotICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9jayhlcnJvciA9PSBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgICAgICBpZiAoY2FwdHVyZWRDb21wbGV0
aW9uQmxvY2spCisgICAgICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9jayhlcnJvciA9PSBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwogICAgIH0pOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CmluZGV4IGQyZDZlYjg4NTZkZmI1ZmNjNGQwNDEzZjkwNjJhMTI3ZDk1MjU1OWUuLjEyZWE2ZjU5
YzNmMzBlM2Q4OGNmM2NiNjBlNWY4MjY3MDZjMGZkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNpbXBvcnQgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJfV0tBdHRhY2htZW50SW50ZXJu
YWwuaCIKICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKaW5kZXggNWVkMmIyYzFiMWFmMTc1NjgzOTg3M2E0NTNiNzgzYTMwMWNkN2JhZS4u
YzlmZDU0MGIwNmNlZTJiNjI1MDE0Njg4YmVjNjEwMTBmNmMwNmFiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCA8V2ViS2l0L19XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLQXR0YWNobWVudC5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS0ZpbmRPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLTGF5
b3V0TW9kZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oPgpA
QCAtMTc3LDYgKzE3OCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU0ludGVnZXIsIF9XS1JlY3RF
ZGdlKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tncm91bmRFeHRl
bmRzQmV5b25kUGFnZTopIEJPT0wgX2JhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKDguMCkpOwogCistIChfV0tBdHRhY2ht
ZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUg
Y29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgZGF0YTooTlNEYXRhICopZGF0YSBv
cHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246
KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogI2lmIFRBUkdFVF9PU19J
UEhPTkUKIC8vIERFUkVDQVRFRDogVGhlIHNldHRlcnMgb2YgdGhlIHRocmVlIGZvbGxvd2luZyBm
dW5jdGlvbiBhcmUgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBvdmVycmlkZUxheW91dFBhcmFtZXRl
cnMuCiAvLyBEZWZpbmUgdGhlIHNtYWxsZXN0IHNpemUgYSBwYWdlIHRha2Ugd2l0aCBhIHJlZ3Vs
YXIgdmlld3BvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0F0dGFjaG1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTdjYjVjNjE5ZDNhZjJiMDgwMzNlNjY0M2JiNjcx
YTJmYmY2NWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0F0dGFjaG1lbnREaXNw
bGF5TW9kZSkgeworICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUF1dG8gPSAxLAorICAgIF9X
S0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxhY2UsCisgICAgX1dLQXR0YWNobWVudERpc3BsYXlN
b2RlQXNJY29uCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworCit0eXBlZGVmIHZvaWQoXl9XS0F0dGFjaG1lbnREYXRhQ29tcGxldGlvbkhh
bmRsZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopOworCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYykgX1dLQXR0YWNo
bWVudERpc3BsYXlNb2RlIG1vZGU7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBleHBhbmRz
SW1hZ2VUb01heGltdW1XaWR0aDsKK0BlbmQKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tBdHRhY2htZW50IDog
TlNPYmplY3QKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YTFhNzY0YTBhNTMzZjRj
MTJkMjY4YTgyMTU1MGEyNGI3ZTNlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tBdHRhY2htZW50Lmgi
CisKKyNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKKyNpbXBvcnQgIl9XS0F0dGFjaG1lbnRJbnRl
cm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW1wbGVtZW50YXRpb24gX1dL
QXR0YWNobWVudERpc3BsYXlPcHRpb25zIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWlu
aXQKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAgICAgICBfbW9kZSA9IF9X
S0F0dGFjaG1lbnREaXNwbGF5TW9kZUF1dG87CisgICAgICAgIF9leHBhbmRzSW1hZ2VUb01heGlt
dW1XaWR0aCA9IE5POworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gX1dLQXR0YWNobWVudAorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAor
eworICAgIHJldHVybiAqX2F0dGFjaG1lbnQ7Cit9CisKKy0gKEJPT0wpaXNFcXVhbDooaWQpb2Jq
ZWN0Cit7CisgICAgcmV0dXJuIFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbX1dLQXR0YWNobWVudCBj
bGFzc11dICYmIFtzZWxmLnVuaXF1ZUlkZW50aWZpZXIgaXNFcXVhbDpbKF9XS0F0dGFjaG1lbnQg
KilvYmplY3QgdW5pcXVlSWRlbnRpZmllcl1dOworfQorCistIChOU1N0cmluZyAqKXVuaXF1ZUlk
ZW50aWZpZXIKK3sKKyAgICByZXR1cm4gX2F0dGFjaG1lbnQtPmlkZW50aWZpZXIoKS5zdHJpbmco
KTsKK30KKworLSAoTlNVSW50ZWdlciloYXNoCit7CisgICAgcmV0dXJuIFtzZWxmLnVuaXF1ZUlk
ZW50aWZpZXIgaGFzaF07Cit9CisKKy0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KK3sKKyAgICBy
ZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgaWQ9JyVAJz4iLCBbc2VsZiBj
bGFzc10sIHNlbGYudW5pcXVlSWRlbnRpZmllcl07Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50SW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50SW50ZXJuYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hOTgzMDU3ODA1ZGY2OTc3ZDQ0NWFjODNjMGI0N2RkZTUzZjZlMjFhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2ltcG9ydCAiQVBJQXR0YWNobWVudC5oIgorI2ltcG9ydCAiX1dLQXR0YWNobWVu
dC5oIgorCituYW1lc3BhY2UgQVBJIHsKKworaW5saW5lIF9XS0F0dGFjaG1lbnQgKndyYXBwZXIo
QVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50KQoreworICAgIEFTU0VSVChbYXR0YWNobWVudC53
cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLQXR0YWNobWVudCBjbGFzc11dKTsKKyAgICByZXR1
cm4gKF9XS0F0dGFjaG1lbnQgKilhdHRhY2htZW50LndyYXBwZXIoKTsKK30KKworfQorCitAaW50
ZXJmYWNlIF9XS0F0dGFjaG1lbnQgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6
T2JqZWN0U3RvcmFnZTxBUEk6OkF0dGFjaG1lbnQ+IF9hdHRhY2htZW50OworfQorQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGNiYjUyODdhZTRiMDlh
NmJlMzc4MGNjMDA4MGQzZmYxNGJhZDkwYy4uNGY1ZGEyYmFmMTg5ODIwZDYyNDk5Yzc0ZTIyZDQ0
ZTNhYWUyZDUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC03MTA1LDQgKzcxMDUsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWUKICAgICB9KTsKIH0K
IAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpp
bnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2spCit7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNyZWF0ZShXVEZN
b3ZlKGRhdGEpKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeSkgeworICAgICAgICBjYWxsYmFjayhD
YWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeS0+
Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSkp
IHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBjb250ZW50VHlwZSwgZGF0YS0+
c2l6ZSgpLCBoYW5kbGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggODE2NTI1N2U1YTUyZmZmNjM4MGQ2
ZGQzZjU1ZGRiMGYzZDNlMjc5MC4uZDJkNDMyNDdjOGIxYTcxMTVlNmFlMjE1YmZiZDJkYTQ2NTkx
NzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEyMTEsNiAr
MTIxMSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmlu
ZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCB3ZWJQcm9j
ZXNzQ29udGV4dElkKTsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgdm9p
ZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
LCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1
cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTZjOWM0YThkMmY0
NDY2ZTVkZWU0YmQ1NWFkMDA5M2E2MjNiYzcwNy4uZjkyMjM5NWY2NWVhMGZjZjkyM2U5ZDEwNThj
Zjg1YWNkOTQzNDQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC03MjAsNiArNzIwLDggQEAKIAkJMkRGQzdEQkIxQkNDQzE5NTAwQzE1
NDhDIC8qIFdlYlZpZXdJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREZDN0RCOTFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwuaCAqLzsg
fTsKIAkJMkRGQzdEQkMxQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGQzdEQkExQkNDQzE5NTAw
QzE1NDhDIC8qIFdlYlZpZXdJbXBsLm1tICovOyB9OwogCQkyREZGN0I2RjFEQTRDRkFGMDA4MTQ2
MTQgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGRjdCNkUxREE0Q0ZBRjAwODE0NjE0IC8qIFdL
QmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkyRTVDNzcwRTFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0
YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkU1Qzc3MEMxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCAqLzsgfTsKKwkJMkU1
Qzc3MEYxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU1Qzc3MEQxRkE3RDQyOTAwNTkzMkMz
IC8qIEFQSUF0dGFjaG1lbnQuY3BwICovOyB9OwogCQkyRTdBOTQ0QTFCQkQ5N0MzMDA5NDU1NDcg
LyogX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRm9jdXNlZEVs
ZW1lbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTA5OTk3
MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLzsgfTsKIAkJ
MzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5NjgxNDZDNzFG
NTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovOyB9OwpAQCAtMjA4Miw2ICsy
MDg0LDkgQEAKIAkJRURDQTcxQjcxMjhEREE4QzAwMjAxQjI2IC8qIFdLQnVuZGxlUGFnZU92ZXJs
YXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEy
MkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwICovOyB9Owog
CQlGMDM2OTc4ODE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjAzNjk3ODcxNUY0QkYwNTAw
QzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLzsgfTsKIAkJRjQwOUJBMTgxRTZFNjRCQzAw
OURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUgLyogV0tE
cmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlGNDQyOTE5MjFGQTU5MUM5MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjkx
OTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDQyOTE5NDFGQTU5MzExMDAyQ0M5M0Ug
LyogX1dLQXR0YWNobWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NDI5MTkzMUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tICov
OyB9OworCQlGNDQyOTE5NjFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE5
NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggKi87IH07CiAJCUY0
NERGRUIyMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRERkVCMDFFOUU3NTJGMDAzOEQx
OTYgLyogV2ViSWNvblV0aWxpdGllcy5oICovOyB9OwogCQlGNDRERkVCMzFFOUU3NTJGMDAzOEQx
OTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0
aWVzLm1tICovOyB9OwogCQlGNDk2QTQzMTFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRl
cmFjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDk2QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
LmggKi87IH07CkBAIC0zMDE5LDYgKzMwMjQsOCBAQAogCQkyREZDN0RCOTFCQ0NDMTk1MDBDMTU0
OEMgLyogV2ViVmlld0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Vmlld0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGQzdEQkExQkNDQzE5
NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2ViVmlld0ltcGwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJERkY3QjZFMURBNENGQUYwMDgxNDYxNCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFja0ZvcndhcmRMaXN0SXRl
bVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU1Qzc3MEMxRkE3RDQy
OTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXR0YWNobWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTVDNzcwRDFGQTdENDI5MDA1OTMy
QzMgLyogQVBJQXR0YWNobWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElBdHRhY2htZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3QTk0NDkxQkJEOTVDNjAwOTQ1
NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tGb2N1c2Vk
RWxlbWVudEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5NjgxNDZD
NzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEw
OTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUyNiw2ICs0NTMzLDkgQEAKIAkJRUNC
RkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQaWNrZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDA5QkExNzFFNkU2NEIzMDA5REEy
OEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLQXR0YWNobWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gX1dLQXR0YWNobWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkljb25VdGlsaXRpZXMuaDsg
cGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSWNvblV0aWxpdGllcy5tbTsg
cGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGNDk2QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOyBwYXRoID0gaW9z
L0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTc0Niw2ICs1NzU2LDkgQEAKIAkJCQkzN0E1RTAxMjE4QkJGOTM3MDAwQTA4MUUgLyogX1dL
QWN0aXZhdGVkRWxlbWVudEluZm8uaCAqLywKIAkJCQkzN0E1RTAxMTE4QkJGOTM3MDAwQTA4MUUg
LyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi8sCiAJCQkJMzc5QTg3MzUxOEJCRkE0MzAw
NTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywKKwkJCQlGNDQy
OTE5MTFGQTU5MTA3MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5oICovLAorCQkJCUY0NDI5MTkz
MUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tICovLAorCQkJCUY0NDI5MTk1MUZB
NTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAqLywKIAkJCQk5OUU3MTRD
MTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJOTkw
RDI4QTcxQzY0MDRCMDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLmggKi8sCiAJCQkJ
OTkwRDI4QUQxQzY1MTkwNDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLm1tICovLApA
QCAtNzE0MCw2ICs3MTUzLDggQEAKIAkJCQkzN0M0QzA4MzE4MTQ5QzJBMDAzNjg4QjkgLyogQ29j
b2EgKi8sCiAJCQkJQkM4QTUwMTMxMTc2NUY0NTAwNzU3NTczIC8qIGNwcCAqLywKIAkJCQlCQzEx
MUI0NzExMkY2MTY5MDAzMzdCQUIgLyogbWFjICovLAorCQkJCTJFNUM3NzBEMUZBN0Q0MjkwMDU5
MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCAqLywKKwkJCQkyRTVDNzcwQzFGQTdENDI5MDA1OTMy
QzMgLyogQVBJQXR0YWNobWVudC5oICovLAogCQkJCTk5QzgxRDVCMUMyMEU4MTcwMDVDNEM4MiAv
KiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjMxQzY1MjZENDAwOTg2OTc3
IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJN0M4OUQyQjExQTZCMDY4
QzAwM0E1RkRFIC8qIEFQSUNvbnRlbnRSdWxlTGlzdC5jcHAgKi8sCkBAIC04NDAzLDYgKzg0MTgs
OCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJMzdBNUUwMTQxOEJCRjkzRjAwMEEwODFFIC8qIF9XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlBODczNjE4QkJGQTQz
MDA1ODhBRjIgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRjQ0MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUY0NDI5MTk2MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTcxNEM1MUMxMjRBMDQwMDY2NUIzQSAv
KiBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MEQyOEFCMUM2
NDIwQzYwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDc3LDYgKzg0OTQsNyBAQAogCQkJCUExODJE
NUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBN0Q3OTJEODE3NjdDQ0EzMDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNjQ2OTcwMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMkU1Qzc3MEUxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QzgxRDVEMUMyMUYzOEIwMDVDNEM4MiAvKiBBUElB
dXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTBEMjhDMDFDNjU1M0YxMDA5
ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBM0REMjA2MTI1RTVBMkYwMDQ1MTVFNiAvKiBBUElDbGllbnQuaCBpbiBIZWFkZXJzICovLApA
QCAtMTAwNDMsNiArMTAwNjEsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAogCQkJCTM3QTVFMDEzMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0
ZWRFbGVtZW50SW5mby5tbSBpbiBTb3VyY2VzICovLAorCQkJCUY0NDI5MTk0MUZBNTkzMTEwMDJD
QzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTkwRDI4QjIxQzY1
MjA5NDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTk3ODhBQ0MxRjQyMURFMjAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uQ29uZmln
dXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNTcwNEY3MUJFMDFGRjQwMDg3NEFGMSAv
KiBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xMDA3NSw2
ICsxMDA5NCw3IEBACiAJCQkJQTE4MkQ1QjQxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxp
dHlJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0Q3OTJENjE3NjdDQjZFMDA4ODFDQkUgLyog
QWN0aXZpdHlBc3NlcnRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NDY5NkYxMURCRTYw
MzAwNjQ1NUIwIC8qIEFQSUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJFNUM3NzBGMUZB
N0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdD
ODlEMkIzMUE2QjA2OEMwMDNBNUZERSAvKiBBUElDb250ZW50UnVsZUxpc3QuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0MzQTA2QTcxQUFCOTAzRTAwOUQ3NEJBIC8qIEFQSUNvbnRlbnRSdWxlTGlz
dFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRUZBOTYyMUFDMDk5OTMwMEI5MTBGRCAv
KiBBUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDlkYWEyODcyMjVk
YWZhYzM0MGU1ODllNjkyOGM3YjI3MWM3YTBmNDIuLmVhMTg2NjAzNWMxZDZhMDEwN2VmNTZlYWU0
N2ViMTY2MzZiZmY0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC0xNjMsNiArMTYzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01JTUVUeXBl
UmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTW91c2VFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VDb25maWd1
cmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KQEAg
LTU3NTcsNCArNTc1OCwxOSBAQCB2b2lkIFdlYlBhZ2U6OnN0b3JhZ2VBY2Nlc3NSZXNwb25zZShi
b29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBjYWxsYmFjayh3YXNHcmFu
dGVkKTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgV2ViUGFn
ZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgdWludDY0X3Qg
ZGF0YUxlbmd0aCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgQ2FsbGJhY2tJ
RCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9y
eTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSkpIHsKKyAg
ICAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpOworICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgZGF0YUxlbmd0
aCk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllciwg
ZmlsZW5hbWUsIFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKTsKKyAgICB9CisKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7Cit9CisK
KyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3
M2ZkZTI4MjI0MmQzYjI2ZjNmMmFkZDIyNTZhYTNmZDUzN2M5MGE2Li42OWQyMDhhNmExZTE5MzIy
ZmE1ZGI3MDQwNmI2YjVhM2I3MGU0ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC05OTgsNiArOTk4LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJh
bWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lk
IHN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJ
ZCk7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQgaW5zZXJ0QXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgdWludDY0X3QgZGF0YUxlbmd0aCwg
Y29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBDYWxsYmFja0lEKTsKKyNlbmRpZgorCiBwcml2
YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCA0NjEwOThiMzU0OTJjYmYwZmIwYWRkYTk5ZmJhZDAyYTBi
NmU5MGQzLi4yMTZjNTlkOGYzOGViYTNkYjlkZjYxMjI5ZWFiNjJlNzI5YzFkMTJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTQ4NCw0ICs0ODQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
KQogCiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3Qg
Y29udGV4dElkKQorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBJbnNlcnRB
dHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgZmlsZW5hbWUsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBjb250ZW50VHlwZSwgdWludDY0X3QgZGF0YUxlbmd0aCwgV2ViS2l0OjpTaGFy
ZWRNZW1vcnk6OkhhbmRsZSBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDcwYTg1NmZiNWMwNzU2NjA2NjhjNWNiMWE5YTQ0MGU2NzYyMjRkYTEuLjBlZTQxNjQ3NGNl
M2MxNzAwMTFmMWM1NDlkOTdmNDQxMThjODY0NmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0xMC0zMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVu
dCBTdXBwb3J0XSBJbXBsZW1lbnQgV0tXZWJWaWV3IFNQSSBmb3IgaW5zZXJ0aW5nIGF0dGFjaG1l
bnQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3OTAxMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyNDk2Njg+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyBBUEkgdGVz
dCBzdWl0ZSB0byBleGVyY2lzZSBhdHRhY2htZW50IGVsZW1lbnQgaW5zZXJ0aW9uIGFuZCBtYW5p
cHVsYXRpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOiBBZGRlZC4KKyAgICAgICAgKHdlYlZpZXdGb3JU
ZXN0aW5nQXR0YWNobWVudHMpOgorICAgICAgICAodGVzdEhUTUxEYXRhKToKKyAgICAgICAgKHRl
c3RJbWFnZURhdGEpOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNl
cnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNvbnRlbnRUeXBlOmRhdGE6b3B0aW9uczpdKToKKyAg
ICAgICAgKC1bVGVzdFdLV2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOmZvclF1ZXJ5U2VsZWN0b3I6
XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0xMC0yOCAgTWljaGFl
bCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV0gQnVp
bGQgZ3N0LXBsdWdpbnMtYmFzZSB3aXRob3V0IHBhbmdvIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZDM2MDFhYWU1YzhhM2IxMDlhZGY1Mzc3MWMzYzllNzg5NzQxNzAzNS4uNWE4
ZmI1M2Q0YTc5ZTAzNDZiM2IzMjA5NGRlMzFkZWQwZDg0MzllYyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTg5LDYgKzg5LDcgQEAKIAkJMkUxREZERjExRDQyRTFFNDAwNzE0QTAwIC8qIGxh
cmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMURG
REYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQt
cGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLzsgfTsKIAkJMkUyMDVCQTQxRjUyNzc0NjAwNTk1MkRE
IC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFMjA1QkEzMUY1Mjc3NDYwMDU5NTJERCAvKiBBY2Nlc3NpYmls
aXR5VGVzdHNJT1MubW0gKi87IH07CiAJCTJFNTRGNDBEMUQ3QkM4NDIwMDkyMUFERiAvKiBsYXJn
ZS12aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTU0RjQwQzFEN0JDODM5MDA5MjFBREYgLyogbGFy
Z2UtdmlkZW8tbXV0ZXMtb25wbGF5aW5nLmh0bWwgKi87IH07CisJCTJFNUM3NzA3MUZBNzAxMzYw
MDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNUM3NzA2MUZBNzAxMzYwMDU5MzJDMyAvKiBXS0F0dGFj
aG1lbnRUZXN0cy5tbSAqLzsgfTsKIAkJMkU2OTFBRUExRDc4QjUzNjAwMTI5NDA3IC8qIGxhcmdl
LXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFODFENzhCNTJCMDAx
Mjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICov
OyB9OwogCQkyRTY5MUFFQjFENzhCNTM2MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmct
dmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFOTFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2Ut
dmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAqLzsgfTsKIAkJMkU2OTFB
RUQxRDc4QjkxMDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhp
ZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU2OTFBRUMxRDc4QjkwMjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1w
bGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi87IH07CkBAIC0xMTY4LDYg
KzExNjksNyBAQAogCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vl
ay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0
ZXItZW5kaW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTIwNUJBMzFG
NTI3NzQ2MDA1OTUyREQgLyogQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRTU0RjQwQzFEN0JDODM5MDA5MjFBREYgLyogbGFyZ2UtdmlkZW8tbXV0ZXMtb25w
bGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tbXV0
ZXMtb25wbGF5aW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTVDNzcw
NjFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS0F0dGFjaG1lbnRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8t
aGlkZXMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12
aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRTY5MUFFOTFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBs
YXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2OTFBRUMxRDc4QjkwMjAwMTI5NDA3IC8qIGxh
cmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8t
aGlkZXMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDc0
LDYgKzIwNzYsNyBAQAogCQkJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNz
S2lsbElEQkNsZWFudXAubW0gKi8sCiAJCQkJNTEyMEM4M0MxRTY3NTA3OTAwMjVCMjUwIC8qIFdl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSAqLywKIAkJCQk1QzlFNTY4NDFERjkxNDNEMDBD
OUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovLAorCQkJCTJFNUM3NzA2MUZBNzAxMzYwMDU5
MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSAqLywKIAkJCQkxRjgzNTcxQTFEM0ZGQjBFMDBF
Mzk2N0IgLyogV0tCYWNrRm9yd2FyZExpc3QubW0gKi8sCiAJCQkJNUNFMzU0RDgxRTcwRDlDMzAw
QkVGRTNCIC8qIFdLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tICovLAogCQkJCTJEODM4QjFFMUVF
RjNBNUIwMDlCOTgwRSAvKiBXS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMubW0gKi8sCkBAIC0y
NDQwLDcgKzI0NDMsNiBAQAogCQlCQzkwOTY0MTEyNTU2MTYwMDAwODM3NTYgLyogV2ViS2l0ICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwN0U0OTk5MDFG
OUU1NkExMDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gKi8sCiAJCQkJMEYxMzlF
NzQxQTQyM0E0NjAwRjU5MEY1IC8qIGNvY29hICovLAogCQkJCUMwQzVEM0JCMTQ1OThCNkYwMEE4
MDJBNiAvKiBtYWMgKi8sCiAJCQkJQkM5MDk3N0IxMjU1NzFBRTAwMDgzNzU2IC8qIFJlc291cmNl
cyAqLywKQEAgLTI0NzgsNiArMjQ4MCw3IEBACiAJCQkJRjY2MEFBMEMxNUE1RjA2MTAwM0ExMjQz
IC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrLmNwcCAq
LywKIAkJCQlGNjYwQUEwRjE1QTVGNjI0MDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCAqLywKIAkJCQkwN0NFMUNGMjFG
MDZBN0UwMDBCRjg5RjUgLyogR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSAqLywKKwkJCQkwN0U0
OTk5MDFGOUU1NkExMDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gKi8sCiAJCQkJ
NEJGREZGQTgxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCAq
LywKIAkJCQk0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5k
bGVfQnVuZGxlLmNwcCAqLywKIAkJCQlCQzU3NUFBQzEyNkU4M0I5MDA2RjBGMTIgLyogSW5qZWN0
ZWRCdW5kbGVCYXNpYy5jcHAgKi8sCkBAIC0zMjc3LDcgKzMyODAsNiBAQAogCQkJCTQ2Mzk3Qjk1
MURDMkM4NTAwMDlBNzhBRSAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdF
QkMxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTU5vZGVGcm9tSlNPYmplY3QubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VCRDFBNDExQTdFMDA0NDdDNEMgLyogRE9NUmFuZ2VPZlN0cmluZy5tbSBp
biBTb3VyY2VzICovLAotCQkJCTA3RTQ5OTkxMUY5RTU2REYwMDJGMUVGMyAvKiBHZXRVc2VyTWVk
aWFSZXByb21wdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUVDMUE0MTFBRTYwMDQ0N0M0
QyAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VFRDFBNDExQUU2MDA0NDdDNEMgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0YyMzFBNDExQUY2MDA0NDdDNEMgLyogRG93bmxvYWQubW0g
aW4gU291cmNlcyAqLywKQEAgLTMzMjQsNiArMzMyNiw3IEBACiAJCQkJN0NDRTdFRjkxQTQxMUFF
NjAwNDQ3QzRDIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUUyMUE0MTFBOUEwMDQ0N0M0QyAvKiBH
ZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3
Q0UxQ0YzMUYwNkE3RTAwMEJGODlGNSAvKiBHZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJMDdFNDk5OTExRjlFNTZERjAwMkYxRUYzIC8qIEdldFVzZXJNZWRpYVJl
cHJvbXB0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2QkRCQUMxRTcyMDdGMTAwREUwRDVBIC8q
IEdQVUJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNTIzMUNBMUVCM0IzQzcwMEEyMkEx
NiAvKiBHUFVDb21tYW5kUXVldWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTYyQUU5QzFFNkYy
RkY1MDAwRTREQkMgLyogR1BVRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zNTIxLDYgKzM1
MjQsNyBAQAogCQkJCTdDQ0U3RjFDMUE0MTFBRTYwMDQ0N0M0QyAvKiBXaWxsU2VuZFN1Ym1pdEV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQ4MUE0MTFBN0UwMDQ0N0M0QyAvKiBX
aWxsU2VuZFN1Ym1pdEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDkxQTQxMUE3
RTAwNDQ3QzRDIC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJMkU1Qzc3MDcxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUY4MzU3MUIxRDNGRkIyMzAwRTM5NjdCIC8qIFdLQmFja0Zvcndh
cmRMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMkUxQTQxMUIxMDAwNDQ3QzRDIC8q
IFdLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdG
MkYxQTQxMUIxMDAwNDQ3QzRDIC8qIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlVGVzdC5t
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU5OTYyZmEx
NzdkZTA4NmIxZDdiN2Q1OTUwOTYxNDNhZTYxZGUyNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KQEAg
LTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9y
dCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdFByaXZhdGUuaD4KKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0YXRpYyBS
ZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpCit7
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0QXR0YWNobWVudEVsZW1l
bnRFbmFibGVkOllFU107CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU+PC9ib2R5PjxzY3JpcHQ+
ZG9jdW1lbnQuYm9keS5mb2N1cygpOzwvc2NyaXB0PiJdOworCisgICAgcmV0dXJuIHdlYlZpZXc7
Cit9CisKK3N0YXRpYyBOU0RhdGEgKnRlc3RIVE1MRGF0YSgpCit7CisgICAgcmV0dXJuIFtAIjxh
IGhyZWY9JyMnPlRoaXMgaXMgc29tZSBIVE1MIGRhdGE8L2E+IiBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ107Cit9CisKK3N0YXRpYyBOU0RhdGEgKnRlc3RJbWFnZURhdGEo
KQoreworICAgIE5TVVJMICp1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXTsKKyAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZV
Ukw6dXJsXTsKK30KKworQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEF0dGFjaG1lbnRU
ZXN0aW5nKQorCistIChfV0tBdHRhY2htZW50ICopc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1l
bnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29udGVudFR5cGU6KE5TU3RyaW5n
ICopY29udGVudFR5cGUgZGF0YTooTlNEYXRhICopZGF0YSBvcHRpb25zOihfV0tBdHRhY2htZW50
RGlzcGxheU9wdGlvbnMgKilvcHRpb25zCit7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxz
ZTsKKyAgICBfV0tBdHRhY2htZW50ICphdHRhY2htZW50ID0gW3NlbGYgX2luc2VydEF0dGFjaG1l
bnRXaXRoRmlsZW5hbWU6ZmlsZW5hbWUgY29udGVudFR5cGU6Y29udGVudFR5cGUgZGF0YTpkYXRh
IG9wdGlvbnM6b3B0aW9ucyBjb21wbGV0aW9uOl4oQk9PTCkgeworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIHJl
dHVybiBhdHRhY2htZW50OworfQorCistIChOU1N0cmluZyAqKXZhbHVlT2ZBdHRyaWJ1dGU6KE5T
U3RyaW5nICopYXR0cmlidXRlTmFtZSBmb3JRdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXF1ZXJ5
U2VsZWN0b3IKK3sKKyAgICByZXR1cm4gW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyVA
JykuZ2V0QXR0cmlidXRlKCclQCcpIiwgcXVlcnlTZWxlY3RvciwgYXR0cmlidXRlTmFtZV1dOwor
fQorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXS0F0dGFjaG1l
bnRUZXN0cywgQXR0YWNobWVudEVsZW1lbnRJbnNlcnRpb24pCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworCisgICAgLy8gVXNlIHRoZSBnaXZl
biBjb250ZW50IHR5cGUgZm9yIHRoZSBhdHRhY2htZW50IGVsZW1lbnQncyB0eXBlLgorICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiZm9vIiBj
b250ZW50VHlwZTpAInRleHQvaHRtbCIgZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRpb25zOm5pbF07
CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZm9vIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpA
InRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJ0ZXh0L2h0bWwiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9y
UXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiMzgg
Ynl0ZXMiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAic3VidGl0bGUiIGZvclF1ZXJ5U2Vs
ZWN0b3I6QCJhdHRhY2htZW50Il0pOworCisgICAgLy8gU2luY2Ugbm8gY29udGVudCB0eXBlIGlz
IGV4cGxpY2l0bHkgc3BlY2lmaWVkLCBjb21wdXRlIGl0IGZyb20gdGhlIGZpbGUgZXh0ZW5zaW9u
LgorICAgIFt3ZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxldGVCYWNrd2FyZCIgYXJn
dW1lbnQ6bmlsIGNvbXBsZXRpb246bmlsXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5z
ZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImJhci5wbmciIGNvbnRlbnRUeXBlOm5pbCBkYXRh
OnRlc3RJbWFnZURhdGEoKSBvcHRpb25zOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiYmFy
LnBuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3Rv
cjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiaW1hZ2UvcG5nIiwgW3dl
YlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2ht
ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIjM3IEtCIiwgW3dlYlZpZXcgdmFsdWVPZkF0
dHJpYnV0ZTpAInN1YnRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325393</attachid>
            <date>2017-10-30 17:50:52 -0700</date>
            <delta_ts>2017-10-30 18:15:43 -0700</delta_ts>
            <desc>Fix 32-bit Mac build</desc>
            <filename>bug-179013-20171030175051.patch</filename>
            <type>text/plain</type>
            <size>76617</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMzAwYmI1YmU2NzAwYzg1Mzk2N2Q1YjQ1YmFlNTkw
ODYzM2FlOWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uMmEwOThlNTkzZmRkOTliMTIxOWNiZTE1MDcyZTFjMmIxNmM3MThmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvRmlsZVNpemVGb3JtYXR0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKiBwYWwvY29jb2EvRmlsZVNp
emVGb3JtYXR0ZXJDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKGZpbGVTaXplRGVzY3JpcHRpb24pOgor
ICAgICAgICAqIHBhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoZmls
ZVNpemVEZXNjcmlwdGlvbik6CisgICAgICAgICogcGFsL3NwaS9GaWxlU2l6ZUZvcm1hdHRlci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0
ZS5oLgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5o
LgorCiAyMDE3LTEwLTI3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgaU9TIHNwZWNpZmljIHNvdXJjZXMgdG8gdW5pZmllZCBzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGI0MWZkNDUzZDJlOGEyNGZlN2VmZGU4NjRhODE2NzFmMDlmNDE3NDIuLjJlN2My
OTJlYjI1ODYzNDJhZTVkYWQwODRjODg5ZjZhMGExMzA4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzEgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFdLV2ViVmlldyBTUEkg
Zm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgbmF0aXZlIFNQSSB0byBpbnNlcnQgYXR0YWNobWVudCBlbGVtZW50cyBnaXZlbiBh
IGZpbGVuYW1lLCBhbiBvcHRpb25hbCBNSU1FIHR5cGUsIGFuZCBhIGRhdGEgYmxvYi4gU2VlCisg
ICAgICAgIGNoYW5nZS1ieS1jaGFuZ2UgY29tbWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLiBD
b3ZlcmVkIGJ5IGEgbmV3IEFQSSB0ZXN0LgorCisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZSk6CisKKyAgICAgICAgSW50cm9k
dWNlIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBhIFNoYXJlZE1lbW9yeSB1c2luZyBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XZWJL
aXRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUu
aC4KKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6On5BdHRhY2ht
ZW50KToKKworICAgICAgICBJbnRyb2R1Y2UgQVBJOjpBdHRhY2htZW50LCB3aGljaCByZXByZXNl
bnRzIGEgcGxhdGZvcm0tYWdub3N0aWMgQXR0YWNobWVudC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRo
RmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOmNvbXBsZXRpb246XSk6CisKKyAgICAg
ICAgQWRkcyBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYSBuZXcgYXR0YWNobWVudCBlbGVtZW50LiBD
YWxscyBvdXQgdG8gV2ViUGFnZVByb3h5IHRvIGluc2VydCB0aGUgYXR0YWNobWVudCBmcm9tIHRo
ZQorICAgICAgICBnaXZlbiBkYXRhIGJsb2IsIGFuZCBjcmVhdGVzIGEgbmV3IEFQSS1vYmplY3Qt
YmFja2VkIF9XS0F0dGFjaG1lbnQuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9leGVjdXRlRWRp
dENvbW1hbmQ6YXJndW1lbnQ6Y29tcGxldGlvbjpdKToKKworICAgICAgICBTdXBwb3J0IHBhc3Np
bmcgaW4gYSBuaWwgY29tcGxldGlvbiBibG9jay4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dl
YktpdFByaXZhdGUuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1l
bnQubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmguCisKKyAgICAgICAgSW50cm9kdWNlcyBfV0tBdHRhY2htZW50LCBhbiBPYmplY3RpdmUg
QyB3cmFwcGVyIGFyb3VuZCB0aGUgQVBJOjpBdHRhY2htZW50LgorCisgICAgICAgICgtW19XS0F0
dGFjaG1lbnQgX2FwaU9iamVjdF0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IGlzRXF1YWw6
XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgdW5pcXVlSWRlbnRpZmllcl0pOgorICAgICAg
ICAoLVtfV0tBdHRhY2htZW50IGhhc2hdKToKKworICAgICAgICBBZGQgX1dLQXR0YWNobWVudCwg
YSBXZWJLaXQgU1BJIG9iamVjdCB0aGF0IHdyYXBzIGFuIGF0dGFjaG1lbnQgZWxlbWVudCB1bmlx
dWUgaWRlbnRpZmllci4gQWxzbywgYWxsb3cKKyAgICAgICAgX1dLQXR0YWNobWVudCB0byBiZSB1
c2VkIGFzIGEgaGFzaGFibGUgTlNEaWN0aW9uYXJ5IGtleS4KKworICAgICAgICAoLVtfV0tBdHRh
Y2htZW50IGRlc2NyaXB0aW9uXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dHRhY2htZW50SW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKEFQSTo6d3JhcHBlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW5zZXJ0QXR0YWNobWVudCk6CisKKyAgICAgICAgSW1wbGVtZW50IElQQyBzdXBwb3J0
IGZvciBpbnNlcnRpbmcgYW4gYXR0YWNobWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTctMTAtMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbU2V0dGluZ3NdIEdlbmVyYXRlIG1vcmUgb2YgdGhlIFdlYktpdCBwcmVmZXJlbmNl
cyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZjUxYWRiMDA4MTAwYzJmZmVjZTI0MmU4OGFmZjU4NTg1ZGQ3OTgwZS4uNDI3
YWNiM2U0MTVkZDQ5Y2U0YWIwYzA4MDZkOWFlNzQ3MmNjOTkyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxLDYgKzE0MSwx
MSBAQAogCQlBM0FCNkU2NTFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUI2
RTYzMUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tICovOyB9Owog
CQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RBMUY0NjJENkEwMDlFNkVF
OSAvKiBTZXNzaW9uSUQuY3BwICovOyB9OwogCQlBM0M2NkNERDFGNDYyRDZBMDA5RTZFRTkgLyog
U2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi87IH07CisJCUY0NDI5
MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE1RDFGQTUyNDczMDAy
Q0M5M0UgLyogTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oICovOyB9OworCQlGNDQyOTE2MDFGQTUy
NjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTVGMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxl
U2l6ZUZvcm1hdHRlci5oICovOyB9OworCQlGNDQyOTE2MzFGQTUyNjcwMDAyQ0M5M0UgLyogRmls
ZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDI5MTYxMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICov
OyB9OworCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MjkxNjIx
RkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCAqLzsgfTsKKwkJRjQ0Mjkx
NjgxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE2NjFGQTUyNzA1MDAy
Q0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSAqLzsgfTsKIC8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlv
biAqLwpAQCAtMjgzLDYgKzI4OCwxMSBAQAogCQlBM0M2NkNEQTFGNDYyRDZBMDA5RTZFRTkgLyog
U2Vzc2lvbklELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlc3Np
b25JRC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzQzY2Q0RCMUY0NjJENkEw
MDlFNkVFOSAvKiBTZXNzaW9uSUQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2Vzc2lvbklELmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMTQ3QTRBMUVGRDBB
QTYwMDA1NkZBNSAvKiBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBDb3B5UEFMSGVhZGVycy54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjQ0MjkxNUQxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmlsZVNpemVGb3JtYXR0
ZXJTUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE1RjFGQTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNp
emVGb3JtYXR0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxNjExRkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVT
aXplRm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTaXplRm9ybWF0dGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxl
U2l6ZUZvcm1hdHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU2l6ZUZvcm1hdHRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkz
RSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmls
ZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVu
ZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMzEzLDYgKzMyMyw4IEBACiAJCQkJMEMyREExMjAxRjNC
RTlFNzAwREJDMzE3IC8qIGNvY29hICovLAogCQkJCTBDNUFGOTBEMUY0M0E0QTQwMDJFQUMwMiAv
KiBpb3MgKi8sCiAJCQkJMEM3Nzg1NkUxRjQ1MTJFOTAwRjRFQkI2IC8qIG1hYyAqLywKKwkJCQlG
NDQyOTE2MjFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAorCQkJ
CUY0NDI5MTYxMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAogCQkJ
KTsKIAkJCXBhdGggPSBzcGk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzYyLDYg
KzM3NCw3IEBACiAJCQkJMEMyREExMzExRjNCRUI0OTAwREJDMzE3IC8qIE5TQ29sb3JTUEkuaCAq
LywKIAkJCQkwQzJEQTEzMjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAqLywK
IAkJCQkwQzJEQTEzMzFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICovLAor
CQkJCUY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmgg
Ki8sCiAJCQkJMEMyREExMzQxRjNCRUI0OTAwREJDMzE3IC8qIE5TU3RyaW5nU1BJLmggKi8sCiAJ
CQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91Y2hCYXJTUEkuaCAqLywKIAkJCQkw
QzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCkBAIC00
NzEsNiArNDg0LDcgQEAKIAkJCQlBMzc4OEU5RjFGMDVCN0NFMDA2Nzk0MjUgLyogc3lzdGVtICov
LAogCQkJCUEzMEQ0MTFEMUYwREQwQUMwMEI3MTk1NCAvKiB0ZXh0ICovLAogCQkJCTBDMkQ5RTcy
MUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQlGNDQyOTE1RjFGQTUy
NjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCAqLywKIAkJCQlBMzlERTc0RDFGN0M0
NDNDMDA3QkNCMDAgLyogSHlzdGVyZXNpc0FjdGl2aXR5LmggKi8sCiAJCQkJMDcwOEFDMzIxRjRD
ODc0QTAwMUY3ODhGIC8qIExvZ2dlci5oICovLAogCQkJCTA3Mzc3QURCMUY1Nzc3RDcwMDI3RjE2
RCAvKiBMb2dnZXJIZWxwZXIuaCAqLywKQEAgLTUxNyw2ICs1MzEsNyBAQAogCQkxQzQ4NzZERTFG
OEQ4MzEzMDBDQ0VFQkQgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1h
dHRlckNvY29hLm1tICovLAogCQkJCTFDNDg3NkRGMUY4RDgzNzUwMENDRUVCRCAvKiBMb2dnaW5n
Q29jb2EubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpAQCAtNjEyLDYgKzYyNyw4IEBA
CiAJCQkJMEM1QUY5MUExRjQzQTRDNzAwMkVBQzAyIC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTExNzVCNTcxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFy
Y2hQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyRDlFNzMxRUVGNUFGNjAwREJDMzE3
IC8qIEV4cG9ydE1hY3Jvcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ0MjkxNjMxRkE1MjY3MDAw
MkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE2
MDFGQTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUExMDI2NTg3MUY1Njc0NjEwMEI0Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwQzVBRjkxQjFGNDNBNEM3MDAyRUFDMDIgLyogR3JhcGhpY3NTZXJ2aWNlc1NQ
SS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwMjY1OEUxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2Vy
dmljZXNTUEkuaCBpbiBIZWFkZXJzICovLApAQCAtNjQ3LDYgKzY2NCw3IEBACiAJCQkJMEM3Nzg1
OEYxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TRXZlbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBD
MkRBMTRFMUYzQkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEMyREExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUY0NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9y
bWF0dGVyU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MDFGNDUxMzBGMDBGNEVCQjYg
LyogTlNGb250U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGRTFGNThBNDMzMDA0Nzcy
QUMgLyogTlNHcmFwaGljc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTExRjQ1MTMw
RjAwRjRFQkI2IC8qIE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCBpbiBI
ZWFkZXJzICovLApAQCAtNzg0LDYgKzgwMiw4IEBACiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VF
NzkzIC8qIENvcmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlEMDU2
MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92
aWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyog
RmlsZVNpemVGb3JtYXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0MjkxNjgxRkE1Mjcw
NTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlBMzBENDEyMjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTMwRDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9y
bWF0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWJiMDYyYzYwNTZlYmYzN2E2ZjkzZjNjY2YwZmM5OWI1NjY0MjQ2NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvRmlsZVNpemVGb3JtYXR0ZXIuaApA
QCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK1N0cmluZyBmaWxl
U2l6ZURlc2NyaXB0aW9uKHNpemVfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcwOTViYWY1
NDBjZTY5ZDBkNjE5NGVhOWE1YTdhMmY5MGI2YmJhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQpAQCAtMCww
ICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZp
bGVTaXplRm9ybWF0dGVyLmgiCisKKyNpbXBvcnQgIk5TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaCIK
KworU3RyaW5nIGZpbGVTaXplRGVzY3JpcHRpb24odWludDY0X3Qgc2l6ZSkKK3sKKyAgICByZXR1
cm4gTlNMb2NhbGl6ZWRGaWxlU2l6ZURlc2NyaXB0aW9uKHNpemUsIDAsIDApOworfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUzZmIyMjMzMjI5NDI4M2Y0NDdhMDU1MTQ5NjZkNjQ3N2M3ZWRjNmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9GaWxlU2l6ZUZvcm1hdHRlci5jcHAK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGaWxlU2l6ZUZvcm1hdHRlci5oIgorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorCitTdHJp
bmcgZmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplKQoreworICAgIC8vIEZJWE1FOiBU
aGVzZSBzdHJpbmdzIHNob3VsZCBiZSBsb2NhbGl6ZWQsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUg
YnJpbmdpbmcgTG9jYWxpemVkU3RyaW5ncyBpbnRvIFBBTC4KKyAgICAvLyBTZWUgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTk+IGZvciBtb3JlIGRldGFpbHMu
CisgICAgaWYgKHNpemUgPCAxMDAwKQorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiV0
dSBieXRlcyIsIHNpemUpOworICAgIGlmIChzaXplIDwgMTAwMDAwMCkKKyAgICAgICAgcmV0dXJu
IFN0cmluZzo6Zm9ybWF0KCIlLjFmIEtCIiwgc2l6ZSAvIDEwMDAuKTsKKyAgICBpZiAoc2l6ZSA8
IDEwMDAwMDAwMDApCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJS4xZiBNQiIsIHNp
emUgLyAoMTAwMDAwMC4pKTsKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiUuMWYgR0IiLCBz
aXplIC8gKDEwMDAwMDAwMDAuKSk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL0ZpbGVTaXplRm9ybWF0dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNhZjBjNjk4MDk4ZDVl
OGZjNGM0YWE1NmI0OTMyZDc2Y2M2YjBhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL0ZpbGVTaXplRm9ybWF0dGVyLmgKQEAgLTAsMCArMSwzMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworUEFMX0VYUE9SVCBTdHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9ybWF0
dGVyU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9y
bWF0dGVyU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU1NzZmZDM0YzE1MGRlZjEwNWZmYjRkOWYyYWU3YjQw
MjNmZGY2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nv
Y29hL05TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW1wb3J0
IDxGb3VuZGF0aW9uL05TRmlsZVNpemVGb3JtYXR0ZXIuaD4KKworI2Vsc2UKKwordHlwZWRlZiB1
aW50NjRfdCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9uczsKK2V4dGVybiAiQyIgTlNTdHJpbmcg
Kk5TTG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplLCB1aW50NjRfdCBt
YXhpbXVtRGlzcGxheWVkVmFsdWUsIE5TRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25zKTsKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYmUzZGE4ZWUyZjc1ZWJlMmU3Njdi
YmE2ZTc3N2YwOTE1Zjk4ODIyNS4uZTY4N2EyNzU1ZmE5ZWQxNWYwZDdkNDU3N2JhYmU3YTZmYzAw
NDRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDcsMTIgKzQ3LDE0IEBACiAj
aW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCiAjaW5j
bHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRlICJGb2N1c0Nv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCkBAIC05OCw2ICsx
MDAsNyBAQAogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVk
ZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVkZSA8cGFsL0Zp
bGVTaXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8cGFsL3N5c3RlbS9Tb3VuZC5oPgogI2luY2x1
ZGUgPHBhbC90ZXh0L0tpbGxSaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVy
TmFtZXMuaD4KQEAgLTM3MjgsNiArMzczMSwzOSBAQCBSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFu
Z2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0JiByZXN1bAog
ICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2UsIHJlc3VsdC5s
b2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIWNvbnRlbnRUeXBl
KQorICAgICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFt
ZSk7CisgICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIGZpbGVuYW1lLCAq
Y29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShmaWxlcGF0aCkpOworfQorCit2b2lkIEVkaXRvcjo6
aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+
IGNvbnRlbnRUeXBlKQoreworICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAgIGNvbnRlbnRU
eXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKKyAgICBpbnNlcnRBdHRh
Y2htZW50RnJvbUZpbGUoaWRlbnRpZmllciwgZmlsZW5hbWUsICpjb250ZW50VHlwZSwgRmlsZTo6
Y3JlYXRlKEJsb2I6OmNyZWF0ZShkYXRhLCAqY29udGVudFR5cGUpLCBmaWxlbmFtZSkpOworfQor
Cit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSwgUmVmPEZpbGU+JiYgZmlsZSkKK3sKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBIVE1MQXR0YWNo
bWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRvY3VtZW50KCks
IGlkZW50aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnRp
dGxlQXR0ciwgZmlsZW5hbWUpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1MTmFt
ZXM6OnN1YnRpdGxlQXR0ciwgZmlsZVNpemVEZXNjcmlwdGlvbihmaWxlLT5zaXplKCkpKTsKKyAg
ICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwgY29udGVudFR5
cGUpOworICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRlbnRpZmllcik7Cisg
ICAgYXR0YWNobWVudC0+c2V0RmlsZShmaWxlLnB0cigpKTsKKworICAgIGF1dG8gZnJhZ21lbnRU
b0luc2VydCA9IGRvY3VtZW50KCkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgIGZyYWdt
ZW50VG9JbnNlcnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQuZ2V0KCkpOworCisgICAgcmVwbGFj
ZVNlbGVjdGlvbldpdGhGcmFnbWVudChmcmFnbWVudFRvSW5zZXJ0LmdldCgpLCBmYWxzZSwgZmFs
c2UsIHRydWUpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwog
dm9pZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleHRDaGVja2luZ1Jlc3VsdCBh
Y2NlcHRlZENhbmRpZGF0ZSkKIHsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKaW5kZXggYWE4ODVmZjU5OWMxYTA3NWQzZGEwZDA3Y2RmMjI1ODUxNmFlYTM3ZC4uZmRmYTNl
OGE4MDljNWFiNTgxODYzNTY3ZDVlOGU5MGJlMjAzZDgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC02Myw3ICs2Myw5IEBAIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3MgRWRpdENvbW1h
bmRDb21wb3NpdGlvbjsKIGNsYXNzIEVkaXRvckNsaWVudDsKIGNsYXNzIEVkaXRvckludGVybmFs
Q29tbWFuZDsKK2NsYXNzIEZpbGU7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxBdHRhY2htZW50
RWxlbWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlc3VsdDsKIGNsYXNz
IEtleWJvYXJkRXZlbnQ7CkBAIC00OTgsOSArNTAwLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oYm9vbCBiKSB7IG1faXNHZXR0aW5nRGljdGlv
bmFyeVBvcHVwSW5mbyA9IGI7IH0KICAgICBib29sIGlzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cElu
Zm8oKSBjb25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm87IH0KIAor
I2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBp
bnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNv
bnRlbnRUeXBlID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluc2Vy
dEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250
ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBEb2N1bWVu
dCYgZG9jdW1lbnQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisg
ICAgdm9pZCBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBSZWY8
RmlsZT4mJik7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFuZ2UqKSBjb25z
dDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQmKTsK
ICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKaW5kZXggYTZl
ZDk2MTU2YWNkYTcyMzMzYmIzNmZhN2I1ZjUzYWFmYzlhMDI5Yi4uM2JmZjBjN2JmOWMxOGZmMWU4
YjYzY2NkOGQ5ZGFiNjBiYzE2MzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0
dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjgsMjAgKzI4LDI5IEBACiAKICNpZiBFTkFCTEUoQVRU
QUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRmlsZS5o
IgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
UmVuZGVyQXR0YWNobWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNo
bWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKKyAgICAsIG1fdW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVyKQogewogICAg
IEFTU0VSVChoYXNUYWdOYW1lKGF0dGFjaG1lbnRUYWcpKTsKIH0KIAorSFRNTEF0dGFjaG1lbnRF
bGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogSFRNTEF0dGFjaG1lbnRFbGVtZW50KHRhZ05h
bWUsIGRvY3VtZW50LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCit7Cit9CisKIEhUTUxB
dHRhY2htZW50RWxlbWVudDo6fkhUTUxBdHRhY2htZW50RWxlbWVudCgpID0gZGVmYXVsdDsKIAog
UmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNDks
NiArNTgsMTEgQEAgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGEKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBIVE1MQXR0YWNobWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAorUmVm
PEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTEF0dGFjaG1l
bnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBpZGVudGlmaWVyKSk7Cit9CisKIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQogewog
ICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJBdHRhY2htZW50PigqdGhpcywgV1RGTW92
ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgK
aW5kZXggOWFjNmI2YThiMTc4NGQwMTY4ZWQwM2EwZTk5NDMzZTM4NjQ4MzllMi4uM2E0NGE1ZjEx
OTljNzIwOWMzYjFhZTQ5YmVmYmI4MTYxMWE2MDMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zNywxMCArMzcsMTQgQEAgY2xhc3MgUmVuZGVy
QXR0YWNobWVudDsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6IHB1YmxpYyBI
VE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQXR0YWNobWVudEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMg
UmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBGaWxlKiBmaWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWxlKEZpbGUqKTsKIAorICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyB1bmlxdWVJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV91
bmlxdWVJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRVbmlxdWVJZGVudGlmaWVyKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikgeyBtX3VuaXF1ZUlkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxlKCkgY29uc3Q7CiAgICAg
U3RyaW5nIGF0dGFjaG1lbnRUeXBlKCkgY29uc3Q7CiAKQEAgLTQ4LDYgKzUyLDcgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIEhUTUxBdHRhY2htZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQmKTsKKyAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICB2aXJ0
dWFsIH5IVE1MQXR0YWNobWVudEVsZW1lbnQoKTsKIAogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVt
ZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJl
ZVBvc2l0aW9uJikgZmluYWw7CkBAIC02Myw2ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikg
ZmluYWw7CiAgICAgCiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKKyAgICBTdHJpbmcgbV91bmlx
dWVJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggYzcyZTBkNGIwYWI4NzIwNmJjZjUyNzU1Mzc5OWRj
M2JlZmNiYTFjMC4uMDE3YjQzNGVlNGE5MmRmN2FiOWQ1YzlmMjc3N2Q2ZmRjY2E0ZTI4YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiAjaWYgVVNF
KFVOSVhfRE9NQUlOX1NPQ0tFVFMpCkBAIC00MCw2ICs0MSwxMCBAQCBjbGFzcyBEZWNvZGVyOwog
Y2xhc3MgRW5jb2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2hhcmVkQnVm
ZmVyOworfQorCiAjaWYgT1MoREFSV0lOKQogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWFj
aFNlbmRSaWdodDsKQEAgLTg3LDYgKzkyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7CiAgICAgc3RhdGljIFJlZlB0cjxTaGFy
ZWRNZW1vcnk+IGNyZWF0ZSh2b2lkKiwgc2l6ZV90LCBQcm90ZWN0aW9uKTsKKyAgICBzdGF0aWMg
UmVmUHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYp
OwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFuZGxlJiwgUHJv
dGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3RhdGljIFJlZlB0
cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVEZXNjcmlwdG9y
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5
Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2Nv
YS5jcHAKaW5kZXggYWVhNzk4NTA0NDlhOGI4OTc5OGU5MDM2ZDdiMGU1MzAxODAzYWE1NC4uMzk4
ZDU1ZTdjMTk0YWM2OWY0ZGI3YWMwZjJjOWJiYTE2M2UwYTE0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFjaFBvcnQuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1
ZmZlci5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgogI2luY2x1ZGUgPG1hY2gvbWFj
aF9wb3J0Lmg+CiAjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KQEAgLTE1Niw2ICsxNTcsMTMgQEAg
c3RhdGljIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgbWFrZU1lbW9yeUVudHJ5KHNpemVfdCBzaXpl
LCB2bV9vZmZzZXRfdCBvZmZzZXQsIFMKICAgICByZXR1cm4gV2ViQ29yZTo6TWFjaFNlbmRSaWdo
dDo6YWRvcHQocG9ydCk7CiB9CiAKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6
Y3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQoreworICAgIGF1dG8g
c2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZmZXItPnNpemUo
KSk7CisgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCkpOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZmZXI7Cit9CisK
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQqIGRhdGEsIHNp
emVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgQVNTRVJUKHNpemUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMGU2ZjY2OTY3YWUwZTEwZmIxNDZhN2I3ZTY1ODAz
NDRlOGNmZDEzMC4uNzg5ZjM4NDVmNmRlYjY0NmVlZTcwNTc5M2EyZDhhNmRjNjljYWE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yMjIsNiArMjIyLDcgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXaW5kb3dGZWF0dXJlcy5tbQogICAgIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KKyAgICBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F1
dG9tYXRpb25TZXNzaW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9u
U2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRl
eHRNZW51RWxlbWVudEluZm8ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRl
eCA5NjI4NjRmNzI3OTM5YTMxODU1YmE0NDRkZjcxOWQ2ZjYxZTJkYzE4Li5mNmY5OWZhZGY0M2Uz
NGI3MjNlOGFkYjZjOTQ1NmRhOTE2N2Y1YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIC8vIFVJ
UHJvY2VzcyB0eXBlcwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwKKyAgICAgICAg
QXR0YWNobWVudCwKICAgICAgICAgQXV0b21hdGlvblNlc3Npb24sCiAgICAgICAgIEJhY2tGb3J3
YXJkTGlzdCwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0SXRlbSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IDRhMzU4MDk3YzdjNDI4NTJm
ZTZhNTBiZDFhMDMwNDAzNDRjZjczYjkuLjE4YmYwYzVkOGE2M2FmZTM5MDMyZmI0NDdiNTIyNWU1
MjE4NzZiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJL
aXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdFBy
aXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJL
aXQvX1dLQXR0YWNobWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0VsZW1lbnRBY3Rpb24uaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tGb2N1c2VkRWxlbWVudEluZm8uaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tGb3JtSW5wdXRTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdiMzE0MDcxZWExNWNlNmVjOTA4NzhiNGVj
YjI5ZmZlZWYwZmFlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKKworI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgQVBJIHsKKworUmVmPEF0dGFjaG1l
bnQ+IEF0dGFjaG1lbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6
V2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF0dGFj
aG1lbnQoaWRlbnRpZmllciwgd2ViUGFnZSkpOworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHdlYlBhZ2Up
CisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fd2ViUGFnZSh3ZWJQYWdl
LmNyZWF0ZVdlYWtQdHIoKSkKK3sKK30KKworQXR0YWNobWVudDo6fkF0dGFjaG1lbnQoKQorewor
fQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNDNkMGRlOThmMjc4NmQ0MTNhZWFjNjg1YmM4ZWQ3OWI4M2YxMzQ1Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaApA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJB
UElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dlYlBhZ2VQcm94eS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUGFnZVBy
b3h5OworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgQXR0YWNobWVudCBmaW5hbCA6IHB1
YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6QXR0YWNobWVudD4geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8QXR0YWNobWVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
V2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5BdHRhY2htZW50KCk7CisKKyAg
ICBTdHJpbmcgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitw
cml2YXRlOgorICAgIGV4cGxpY2l0IEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOworCisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKKyAg
ICBXZWFrUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2U7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IDE0NjgxMzFlYTFiNDAwZTAzODg1YmY2NTcwY2M3ZmFhZWI0MGEyMDQuLmVk
YWY0ZDg5ZWM3Njk1ZDU0YWI1MTM0MDEzNjI2ZDhlNzBlOWQxNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTQsMTEgKzk0LDEzIEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0lPU3VyZmFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9KU0RPTUJp
bmRpbmcuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01FeGNlcHRpb25IYW5kbGluZy5oPgorI2lt
cG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bVNjcmVlbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1NjaGVtZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGF0aW9u
QnViYmxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1dyaXRpbmdNb2RlLmg+CkBAIC0xMTAsNiArMTEyLDcgQEAKICNpbXBvcnQgPHd0
Zi9PcHRpb25hbC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1Nl
dEZvclNjb3BlLmg+CisjaW1wb3J0IDx3dGYvVVVJRC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3
aW4vZHlsZFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC00MTY4
LDYgKzQxNzEsMjMgQEAgLSAodm9pZClfY2xvc2UKICAgICBfcGFnZS0+Y2xvc2UoKTsKIH0KIAor
LSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmlu
ZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5T
RGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9u
cyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGF1dG8gaWRlbnRpZmllciA9IGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKTsKKworICAgIF9wYWdlLT5pbnNlcnRBdHRhY2htZW50
KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBjb250ZW50VHlwZS5sZW5ndGggPyBzdGQ6Om9wdGlvbmFs
PFN0cmluZz4geyBjb250ZW50VHlwZSB9IDogc3RkOjpudWxsb3B0LCBXZWJDb3JlOjpTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhKSwgW2NhcHR1cmVkSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21w
bGV0aW9uSGFuZGxlcildIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAg
ICAgICAgaWYgKGNhcHR1cmVkSGFuZGxlcikKKyAgICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcihl
cnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgIH0pOworCisg
ICAgYXV0byBhdHRhY2htZW50ID0gQVBJOjpBdHRhY2htZW50OjpjcmVhdGUoQVBJOjpTdHJpbmc6
OmNyZWF0ZShpZGVudGlmaWVyKSwgKl9wYWdlKTsKKyAgICByZXR1cm4gW3dyYXBwZXIoYXR0YWNo
bWVudCkgYXV0b3JlbGVhc2VdOworI2Vsc2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisK
IC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcg
KilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJv
ciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6
amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNv
bXBsZXRpb25IYW5kbGVyXTsKQEAgLTYwMzMsNyArNjA1Myw4IEBAIC0gKHZvaWQpX2Rpc2FibGVC
YWNrRm9yd2FyZFNuYXBzaG90Vm9sYXRpbGl0eUZvclRlc3RpbmcKIC0gKHZvaWQpX2V4ZWN1dGVF
ZGl0Q29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIGFyZ3VtZW50OihOU1N0cmluZyAqKWFyZ3Vt
ZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb24KIHsKICAgICBfcGFnZS0+
ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmQsIGFyZ3VtZW50LCBbY2FwdHVyZWRDb21wbGV0aW9u
QmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbildKFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgewotICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9jayhlcnJvciA9PSBX
ZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgICAgICBpZiAoY2FwdHVyZWRD
b21wbGV0aW9uQmxvY2spCisgICAgICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9jayhlcnJv
ciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRl
cm5hbC5oCmluZGV4IGQyZDZlYjg4NTZkZmI1ZmNjNGQwNDEzZjkwNjJhMTI3ZDk1MjU1OWUuLjEy
ZWE2ZjU5YzNmMzBlM2Q4OGNmM2NiNjBlNWY4MjY3MDZjMGZkYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAj
aW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJfV0tBdHRhY2htZW50
SW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggNWVkMmIyYzFiMWFmMTc1NjgzOTg3M2E0NTNiNzgzYTMwMWNk
N2JhZS4uYzlmZDU0MGIwNmNlZTJiNjI1MDE0Njg4YmVjNjEwMTBmNmMwNmFiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCA8V2ViS2l0
L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLQXR0YWNobWVu
dC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0ZpbmRPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLTGF5b3V0TW9kZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS092ZXJsYXlTY3JvbGxiYXJTdHls
ZS5oPgpAQCAtMTc3LDYgKzE3OCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU0ludGVnZXIsIF9X
S1JlY3RFZGdlKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEJhY2tncm91
bmRFeHRlbmRzQmV5b25kUGFnZTopIEJPT0wgX2JhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKDguMCkpOwogCistIChfV0tB
dHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmls
ZW5hbWUgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgZGF0YTooTlNEYXRhICop
ZGF0YSBvcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zIGNvbXBs
ZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogI2lmIFRBUkdF
VF9PU19JUEhPTkUKIC8vIERFUkVDQVRFRDogVGhlIHNldHRlcnMgb2YgdGhlIHRocmVlIGZvbGxv
d2luZyBmdW5jdGlvbiBhcmUgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBvdmVycmlkZUxheW91dFBh
cmFtZXRlcnMuCiAvLyBEZWZpbmUgdGhlIHNtYWxsZXN0IHNpemUgYSBwYWdlIHRha2Ugd2l0aCBh
IHJlZ3VsYXIgdmlld3BvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F0dGFjaG1lbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZTdjYjVjNjE5ZDNhZjJiMDgwMzNlNjY0
M2JiNjcxYTJmYmY2NWI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lm
IFdLX0FQSV9FTkFCTEVECisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0F0dGFjaG1l
bnREaXNwbGF5TW9kZSkgeworICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUF1dG8gPSAxLAor
ICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxhY2UsCisgICAgX1dLQXR0YWNobWVudERp
c3BsYXlNb2RlQXNJY29uCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCit0eXBlZGVmIHZvaWQoXl9XS0F0dGFjaG1lbnREYXRhQ29tcGxl
dGlvbkhhbmRsZXIpKE5TRGF0YSAqLCBOU0Vycm9yICopOworCitXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0F0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5vbmF0b21pYykgX1dL
QXR0YWNobWVudERpc3BsYXlNb2RlIG1vZGU7CitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBl
eHBhbmRzSW1hZ2VUb01heGltdW1XaWR0aDsKK0BlbmQKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tBdHRhY2ht
ZW50IDogTlNPYmplY3QKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE2YTFhNzY0YTBh
NTMzZjRjMTJkMjY4YTgyMTU1MGEyNGI3ZTNlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tBdHRhY2ht
ZW50LmgiCisKKyNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKKyNpbXBvcnQgIl9XS0F0dGFjaG1l
bnRJbnRlcm5hbC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW1wbGVtZW50YXRp
b24gX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0
eXBlKWluaXQKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAgICAgICBfbW9k
ZSA9IF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUF1dG87CisgICAgICAgIF9leHBhbmRzSW1hZ2VU
b01heGltdW1XaWR0aCA9IE5POworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAor
CitAaW1wbGVtZW50YXRpb24gX1dLQXR0YWNobWVudAorCistIChBUEk6Ok9iamVjdCYpX2FwaU9i
amVjdAoreworICAgIHJldHVybiAqX2F0dGFjaG1lbnQ7Cit9CisKKy0gKEJPT0wpaXNFcXVhbDoo
aWQpb2JqZWN0Cit7CisgICAgcmV0dXJuIFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbX1dLQXR0YWNo
bWVudCBjbGFzc11dICYmIFtzZWxmLnVuaXF1ZUlkZW50aWZpZXIgaXNFcXVhbDpbKF9XS0F0dGFj
aG1lbnQgKilvYmplY3QgdW5pcXVlSWRlbnRpZmllcl1dOworfQorCistIChOU1N0cmluZyAqKXVu
aXF1ZUlkZW50aWZpZXIKK3sKKyAgICByZXR1cm4gX2F0dGFjaG1lbnQtPmlkZW50aWZpZXIoKS5z
dHJpbmcoKTsKK30KKworLSAoTlNVSW50ZWdlciloYXNoCit7CisgICAgcmV0dXJuIFtzZWxmLnVu
aXF1ZUlkZW50aWZpZXIgaGFzaF07Cit9CisKKy0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KK3sK
KyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgaWQ9JyVAJz4iLCBb
c2VsZiBjbGFzc10sIHNlbGYudW5pcXVlSWRlbnRpZmllcl07Cit9CisKK0BlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50SW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50SW50
ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hOTgzMDU3ODA1ZGY2OTc3ZDQ0NWFjODNjMGI0N2RkZTUzZjZl
MjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJQXR0YWNobWVudC5oIgorI2ltcG9ydCAiX1dLQXR0
YWNobWVudC5oIgorCituYW1lc3BhY2UgQVBJIHsKKworaW5saW5lIF9XS0F0dGFjaG1lbnQgKndy
YXBwZXIoQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50KQoreworICAgIEFTU0VSVChbYXR0YWNo
bWVudC53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLQXR0YWNobWVudCBjbGFzc11dKTsKKyAg
ICByZXR1cm4gKF9XS0F0dGFjaG1lbnQgKilhdHRhY2htZW50LndyYXBwZXIoKTsKK30KKworfQor
CitAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnQgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAg
IEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OkF0dGFjaG1lbnQ+IF9hdHRhY2htZW50OworfQorQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGNiYjUyODdh
ZTRiMDlhNmJlMzc4MGNjMDA4MGQzZmYxNGJhZDkwYy4uNGY1ZGEyYmFmMTg5ODIwZDYyNDk5Yzc0
ZTIyZDQ0ZTNhYWUyZDUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC03MTA1LDQgKzcxMDUsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWUKICAgICB9
KTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYg
Y2FsbGJhY2spCit7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeSkgeworICAgICAgICBjYWxs
YmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAoIXNoYXJlZE1l
bW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFk
T25seSkpIHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBjb250ZW50VHlwZSwg
ZGF0YS0+c2l6ZSgpLCBoYW5kbGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cit9CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggODE2NTI1N2U1YTUyZmZm
NjM4MGQ2ZGQzZjU1ZGRiMGYzZDNlMjc5MC4uZDJkNDMyNDdjOGIxYTcxMTVlNmFlMjE1YmZiZDJk
YTQ2NTkxNzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEy
MTEsNiArMTIxMSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCB3
ZWJQcm9jZXNzQ29udGV4dElkKTsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisg
ICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCBSZWY8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VD
bGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTZjOWM0
YThkMmY0NDY2ZTVkZWU0YmQ1NWFkMDA5M2E2MjNiYzcwNy4uZjkyMjM5NWY2NWVhMGZjZjkyM2U5
ZDEwNThjZjg1YWNkOTQzNDQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MjAsNiArNzIwLDggQEAKIAkJMkRGQzdEQkIxQkNDQzE5
NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREZDN0RCOTFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwu
aCAqLzsgfTsKIAkJMkRGQzdEQkMxQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGQzdEQkExQkND
QzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLm1tICovOyB9OwogCQkyREZGN0I2RjFEQTRDRkFG
MDA4MTQ2MTQgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGRjdCNkUxREE0Q0ZBRjAwODE0NjE0
IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyRTVDNzcwRTFGQTdENDI5MDA1OTMyQzMgLyog
QVBJQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU1Qzc3MEMxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCAqLzsgfTsK
KwkJMkU1Qzc3MEYxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU1Qzc3MEQxRkE3RDQyOTAw
NTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwICovOyB9OwogCQkyRTdBOTQ0QTFCQkQ5N0MzMDA5
NDU1NDcgLyogX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRm9j
dXNlZEVsZW1lbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNs
aWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTA5OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcCAqLzsg
fTsKIAkJMzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5Njgx
NDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovOyB9OwpAQCAtMjA4
Miw2ICsyMDg0LDkgQEAKIAkJRURDQTcxQjcxMjhEREE4QzAwMjAxQjI2IC8qIFdLQnVuZGxlUGFn
ZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJsYXkuY3BwICov
OyB9OwogCQlGMDM2OTc4ODE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjAzNjk3ODcxNUY0
QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLzsgfTsKIAkJRjQwOUJBMTgxRTZF
NjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDA5QkExNzFFNkU2NEIzMDA5REEyOEUg
LyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlGNDQyOTE5MjFGQTU5MUM5MDAyQ0M5M0UgLyogX1dLQXR0
YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDQyOTE5NDFGQTU5MzExMDAy
Q0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NDI5MTkzMUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50
Lm1tICovOyB9OworCQlGNDQyOTE5NjFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggKi87IH07
CiAJCUY0NERGRUIyMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRERkVCMDFFOUU3NTJG
MDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oICovOyB9OwogCQlGNDRERkVCMzFFOUU3NTJG
MDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29u
VXRpbGl0aWVzLm1tICovOyB9OwogCQlGNDk2QTQzMTFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ry
b3BJbnRlcmFjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDk2QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLmggKi87IH07CkBAIC0zMDE5LDYgKzMwMjQsOCBAQAogCQkyREZDN0RCOTFCQ0NDMTk1
MDBDMTU0OEMgLyogV2ViVmlld0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViVmlld0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGQzdEQkEx
QkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0ltcGwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJERkY3QjZFMURBNENGQUYwMDgxNDYxNCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Q
cml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFja0ZvcndhcmRM
aXN0SXRlbVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU1Qzc3MEMx
RkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQXR0
YWNobWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTVDNzcwRDFGQTdENDI5
MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElBdHRh
Y2htZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3QTk0NDkxQkJEOTVD
NjAwOTQ1NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tG
b2N1c2VkRWxlbWVudEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwOTk5
NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGll
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUyNiw2ICs0NTMzLDkgQEAK
IAkJRUNCRkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQ
aWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29sb3JQ
aWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDA5QkExNzFFNkU2NEIz
MDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLQXR0YWNobWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXR0YWNobWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRp
bGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkljb25VdGlsaXRp
ZXMuaDsgcGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSWNvblV0aWxpdGll
cy5tbTsgcGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDk2QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJbnRlcmFjdGlv
blN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOyBwYXRo
ID0gaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTc0Niw2ICs1NzU2LDkgQEAKIAkJCQkzN0E1RTAxMjE4QkJGOTM3MDAwQTA4MUUg
LyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCAqLywKIAkJCQkzN0E1RTAxMTE4QkJGOTM3MDAw
QTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi8sCiAJCQkJMzc5QTg3MzUxOEJC
RkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywKKwkJ
CQlGNDQyOTE5MTFGQTU5MTA3MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5oICovLAorCQkJCUY0
NDI5MTkzMUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tICovLAorCQkJCUY0NDI5
MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAqLywKIAkJCQk5
OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggKi8sCiAJ
CQkJOTkwRDI4QTcxQzY0MDRCMDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLmggKi8s
CiAJCQkJOTkwRDI4QUQxQzY1MTkwNDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLm1t
ICovLApAQCAtNzE0MCw2ICs3MTUzLDggQEAKIAkJCQkzN0M0QzA4MzE4MTQ5QzJBMDAzNjg4Qjkg
LyogQ29jb2EgKi8sCiAJCQkJQkM4QTUwMTMxMTc2NUY0NTAwNzU3NTczIC8qIGNwcCAqLywKIAkJ
CQlCQzExMUI0NzExMkY2MTY5MDAzMzdCQUIgLyogbWFjICovLAorCQkJCTJFNUM3NzBEMUZBN0Q0
MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCAqLywKKwkJCQkyRTVDNzcwQzFGQTdENDI5
MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5oICovLAogCQkJCTk5QzgxRDVCMUMyMEU4MTcwMDVD
NEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjMxQzY1MjZENDAw
OTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJN0M4OUQyQjEx
QTZCMDY4QzAwM0E1RkRFIC8qIEFQSUNvbnRlbnRSdWxlTGlzdC5jcHAgKi8sCkBAIC04NDAzLDYg
Kzg0MTgsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJMzdBNUUwMTQxOEJCRjkzRjAwMEEwODFFIC8q
IF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlBODczNjE4
QkJGQTQzMDA1ODhBRjIgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjQ0MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUY0NDI5MTk2MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRh
Y2htZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTcxNEM1MUMxMjRBMDQwMDY2
NUIzQSAvKiBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MEQy
OEFCMUM2NDIwQzYwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9u
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDc3LDYgKzg0OTQsNyBAQAogCQkJ
CUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBN0Q3OTJEODE3NjdDQ0EzMDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2OTcwMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkU1Qzc3MEUxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0
dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QzgxRDVEMUMyMUYzOEIwMDVDNEM4MiAv
KiBBUElBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTBEMjhDMDFDNjU1
M0YxMDA5ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBM0REMjA2MTI1RTVBMkYwMDQ1MTVFNiAvKiBBUElDbGllbnQuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTAwNDMsNiArMTAwNjEsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTM3QTVFMDEzMThCQkY5MzcwMDBBMDgxRSAvKiBfV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mby5tbSBpbiBTb3VyY2VzICovLAorCQkJCUY0NDI5MTk0MUZBNTkz
MTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTkwRDI4
QjIxQzY1MjA5NDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTk3ODhBQ0MxRjQyMURFMjAwQzA4MDAwIC8qIF9XS0F1dG9tYXRpb25TZXNzaW9u
Q29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNTcwNEY3MUJFMDFGRjQwMDg3
NEFGMSAvKiBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0x
MDA3NSw2ICsxMDA5NCw3IEBACiAJCQkJQTE4MkQ1QjQxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vz
c2liaWxpdHlJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0Q3OTJENjE3NjdDQjZFMDA4ODFD
QkUgLyogQWN0aXZpdHlBc3NlcnRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2NDY5NkYx
MURCRTYwMzAwNjQ1NUIwIC8qIEFQSUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJFNUM3
NzBGMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDODlEMkIzMUE2QjA2OEMwMDNBNUZERSAvKiBBUElDb250ZW50UnVsZUxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0MzQTA2QTcxQUFCOTAzRTAwOUQ3NEJBIC8qIEFQSUNvbnRlbnRS
dWxlTGlzdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRUZBOTYyMUFDMDk5OTMwMEI5
MTBGRCAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDlkYWEy
ODcyMjVkYWZhYzM0MGU1ODllNjkyOGM3YjI3MWM3YTBmNDIuLmVhMTg2NjAzNWMxZDZhMDEwN2Vm
NTZlYWU0N2ViMTY2MzZiZmY0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0xNjMsNiArMTYzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01J
TUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTW91c2VFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50
ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VD
b25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQu
aD4KQEAgLTU3NTcsNCArNTc1OCwxOSBAQCB2b2lkIFdlYlBhZ2U6OnN0b3JhZ2VBY2Nlc3NSZXNw
b25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBjYWxsYmFjayh3
YXNHcmFudGVkKTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQg
V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgdWlu
dDY0X3QgZGF0YUxlbmd0aCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhhbmRsZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJl
ZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSkp
IHsKKyAgICAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3Vz
ZWRPck1haW5GcmFtZSgpOworICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgZGF0
YUxlbmd0aCk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2VydEF0dGFjaG1lbnQoaWRlbnRp
ZmllciwgZmlsZW5hbWUsIFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKTsKKyAgICB9CisKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxsYmFja0lEKSk7
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCA3M2ZkZTI4MjI0MmQzYjI2ZjNmMmFkZDIyNTZhYTNmZDUzN2M5MGE2Li42OWQyMDhhNmEx
ZTE5MzIyZmE1ZGI3MDQwNmI2YjVhM2I3MGU0ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05OTgsNiArOTk4LDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAg
ICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQgaW5z
ZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgdWludDY0X3QgZGF0YUxl
bmd0aCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBDYWxsYmFja0lEKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA0NjEwOThiMzU0OTJjYmYwZmIwYWRkYTk5ZmJh
ZDAyYTBiNmU5MGQzLi4yMTZjNTlkOGYzOGViYTNkYjlkZjYxMjI5ZWFiNjJlNzI5YzFkMTJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTQ4NCw0ICs0ODQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklk
ZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yKQogCiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWlu
dDY0X3QgY29udGV4dElkKQorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBJ
bnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgZmlsZW5hbWUsIHN0ZDo6
b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgdWludDY0X3QgZGF0YUxlbmd0aCwgV2ViS2l0
OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDcwYTg1NmZiNWMwNzU2NjA2NjhjNWNiMWE5YTQ0MGU2NzYyMjRkYTEuLjBlZTQx
NjQ3NGNlM2MxNzAwMTFmMWM1NDlkOTdmNDQxMThjODY0NmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0xMC0z
MCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0
YWNobWVudCBTdXBwb3J0XSBJbXBsZW1lbnQgV0tXZWJWaWV3IFNQSSBmb3IgaW5zZXJ0aW5nIGF0
dGFjaG1lbnQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3OTAxMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyNDk2Njg+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhIG5ldyBB
UEkgdGVzdCBzdWl0ZSB0byBleGVyY2lzZSBhdHRhY2htZW50IGVsZW1lbnQgaW5zZXJ0aW9uIGFu
ZCBtYW5pcHVsYXRpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOiBBZGRlZC4KKyAgICAgICAgKHdlYlZp
ZXdGb3JUZXN0aW5nQXR0YWNobWVudHMpOgorICAgICAgICAodGVzdEhUTUxEYXRhKToKKyAgICAg
ICAgKHRlc3RJbWFnZURhdGEpOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5bmNocm9ub3Vz
bHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNvbnRlbnRUeXBlOmRhdGE6b3B0aW9uczpd
KToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOmZvclF1ZXJ5U2Vs
ZWN0b3I6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0xMC0yOCAg
TWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQ
RV0gQnVpbGQgZ3N0LXBsdWdpbnMtYmFzZSB3aXRob3V0IHBhbmdvIHN1cHBvcnQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZDM2MDFhYWU1YzhhM2IxMDlhZGY1Mzc3MWMzYzllNzg5NzQxNzAz
NS4uNWE4ZmI1M2Q0YTc5ZTAzNDZiM2IzMjA5NGRlMzFkZWQwZDg0MzllYyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTg5LDYgKzg5LDcgQEAKIAkJMkUxREZERjExRDQyRTFFNDAwNzE0QTAw
IC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmlu
Zy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLzsgfTsKIAkJMkUyMDVCQTQxRjUyNzc0NjAw
NTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMjA1QkEzMUY1Mjc3NDYwMDU5NTJERCAvKiBBY2Nl
c3NpYmlsaXR5VGVzdHNJT1MubW0gKi87IH07CiAJCTJFNTRGNDBEMUQ3QkM4NDIwMDkyMUFERiAv
KiBsYXJnZS12aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTU0RjQwQzFEN0JDODM5MDA5MjFBREYg
LyogbGFyZ2UtdmlkZW8tbXV0ZXMtb25wbGF5aW5nLmh0bWwgKi87IH07CisJCTJFNUM3NzA3MUZB
NzAxMzYwMDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNUM3NzA2MUZBNzAxMzYwMDU5MzJDMyAvKiBX
S0F0dGFjaG1lbnRUZXN0cy5tbSAqLzsgfTsKIAkJMkU2OTFBRUExRDc4QjUzNjAwMTI5NDA3IC8q
IGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFODFENzhC
NTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5o
dG1sICovOyB9OwogCQkyRTY5MUFFQjFENzhCNTM2MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBs
YXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFOTFENzhCNTJCMDAxMjk0MDcgLyog
bGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAqLzsgfTsKIAkJ
MkU2OTFBRUQxRDc4QjkxMDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZp
ZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRUMxRDc4QjkwMjAwMTI5NDA3IC8qIGxhcmdlLXZp
ZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi87IH07CkBAIC0x
MTY4LDYgKzExNjksNyBAQAogCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2Utdmlk
ZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBs
YXktYWZ0ZXItZW5kaW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTIw
NUJBMzFGNTI3NzQ2MDA1OTUyREQgLyogQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRTU0RjQwQzFEN0JDODM5MDA5MjFBREYgLyogbGFyZ2UtdmlkZW8tbXV0
ZXMtb25wbGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2Utdmlk
ZW8tbXV0ZXMtb25wbGF5aW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
RTVDNzcwNjFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS0F0dGFjaG1lbnRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQt
dmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJs
YXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyRTY5MUFFOTFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2Utdmlk
ZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2OTFBRUMxRDc4QjkwMjAwMTI5NDA3
IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQt
dmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMDc0LDYgKzIwNzYsNyBAQAogCQkJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQ
cm9jZXNzS2lsbElEQkNsZWFudXAubW0gKi8sCiAJCQkJNTEyMEM4M0MxRTY3NTA3OTAwMjVCMjUw
IC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSAqLywKIAkJCQk1QzlFNTY4NDFERjkx
NDNEMDBDOUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovLAorCQkJCTJFNUM3NzA2MUZBNzAx
MzYwMDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSAqLywKIAkJCQkxRjgzNTcxQTFEM0ZG
QjBFMDBFMzk2N0IgLyogV0tCYWNrRm9yd2FyZExpc3QubW0gKi8sCiAJCQkJNUNFMzU0RDgxRTcw
RDlDMzAwQkVGRTNCIC8qIFdLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tICovLAogCQkJCTJEODM4
QjFFMUVFRjNBNUIwMDlCOTgwRSAvKiBXS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMubW0gKi8s
CkBAIC0yNDQwLDcgKzI0NDMsNiBAQAogCQlCQzkwOTY0MTEyNTU2MTYwMDAwODM3NTYgLyogV2Vi
S2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkwN0U0
OTk5MDFGOUU1NkExMDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gKi8sCiAJCQkJ
MEYxMzlFNzQxQTQyM0E0NjAwRjU5MEY1IC8qIGNvY29hICovLAogCQkJCUMwQzVEM0JCMTQ1OThC
NkYwMEE4MDJBNiAvKiBtYWMgKi8sCiAJCQkJQkM5MDk3N0IxMjU1NzFBRTAwMDgzNzU2IC8qIFJl
c291cmNlcyAqLywKQEAgLTI0NzgsNiArMjQ4MCw3IEBACiAJCQkJRjY2MEFBMEMxNUE1RjA2MTAw
M0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNr
LmNwcCAqLywKIAkJCQlGNjYwQUEwRjE1QTVGNjI0MDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCAqLywKIAkJCQkwN0NF
MUNGMjFGMDZBN0UwMDBCRjg5RjUgLyogR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSAqLywKKwkJ
CQkwN0U0OTk5MDFGOUU1NkExMDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gKi8s
CiAJCQkJNEJGREZGQTgxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxl
LmNwcCAqLywKIAkJCQk0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5v
ZGVIYW5kbGVfQnVuZGxlLmNwcCAqLywKIAkJCQlCQzU3NUFBQzEyNkU4M0I5MDA2RjBGMTIgLyog
SW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAgKi8sCkBAIC0zMjc3LDcgKzMyODAsNiBAQAogCQkJCTQ2
Mzk3Qjk1MURDMkM4NTAwMDlBNzhBRSAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFQkMxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTU5vZGVGcm9tSlNPYmplY3QubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0VCRDFBNDExQTdFMDA0NDdDNEMgLyogRE9NUmFuZ2VPZlN0cmlu
Zy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTA3RTQ5OTkxMUY5RTU2REYwMDJGMUVGMyAvKiBHZXRV
c2VyTWVkaWFSZXByb21wdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUVDMUE0MTFBRTYw
MDQ0N0M0QyAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0VFRDFBNDExQUU2MDA0NDdDNEMgLyogRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyMzFBNDExQUY2MDA0NDdDNEMgLyogRG93bmxv
YWQubW0gaW4gU291cmNlcyAqLywKQEAgLTMzMjQsNiArMzMyNiw3IEBACiAJCQkJN0NDRTdFRjkx
QTQxMUFFNjAwNDQ3QzRDIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUUyMUE0MTFBOUEwMDQ0N0M0
QyAvKiBHZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTA3Q0UxQ0YzMUYwNkE3RTAwMEJGODlGNSAvKiBHZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMDdFNDk5OTExRjlFNTZERjAwMkYxRUYzIC8qIEdldFVzZXJN
ZWRpYVJlcHJvbXB0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2QkRCQUMxRTcyMDdGMTAwREUw
RDVBIC8qIEdQVUJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNTIzMUNBMUVCM0IzQzcw
MEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTYyQUU5
QzFFNkYyRkY1MDAwRTREQkMgLyogR1BVRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zNTIx
LDYgKzM1MjQsNyBAQAogCQkJCTdDQ0U3RjFDMUE0MTFBRTYwMDQ0N0M0QyAvKiBXaWxsU2VuZFN1
Ym1pdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQ4MUE0MTFBN0UwMDQ0N0M0
QyAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDkx
QTQxMUE3RTAwNDQ3QzRDIC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMkU1Qzc3MDcxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3Rz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUY4MzU3MUIxRDNGRkIyMzAwRTM5NjdCIC8qIFdLQmFj
a0ZvcndhcmRMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMkUxQTQxMUIxMDAwNDQ3
QzRDIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdGMkYxQTQxMUIxMDAwNDQ3QzRDIC8qIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
VGVzdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzU5
OTYyZmExNzdkZTA4NmIxZDdiN2Q1OTUwOTYxNDNhZTYxZGUyNgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMu
bW0KQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgor
I2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdFByaXZhdGUu
aD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0
YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50
cygpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0QXR0YWNobWVu
dEVsZW1lbnRFbmFibGVkOllFU107CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU+PC9ib2R5Pjxz
Y3JpcHQ+ZG9jdW1lbnQuYm9keS5mb2N1cygpOzwvc2NyaXB0PiJdOworCisgICAgcmV0dXJuIHdl
YlZpZXc7Cit9CisKK3N0YXRpYyBOU0RhdGEgKnRlc3RIVE1MRGF0YSgpCit7CisgICAgcmV0dXJu
IFtAIjxhIGhyZWY9JyMnPlRoaXMgaXMgc29tZSBIVE1MIGRhdGE8L2E+IiBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Cit9CisKK3N0YXRpYyBOU0RhdGEgKnRlc3RJbWFn
ZURhdGEoKQoreworICAgIE5TVVJMICp1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0aENvbnRl
bnRzT2ZVUkw6dXJsXTsKK30KKworQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZpZXcgKEF0dGFj
aG1lbnRUZXN0aW5nKQorCistIChfV0tBdHRhY2htZW50ICopc3luY2hyb25vdXNseUluc2VydEF0
dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29udGVudFR5cGU6KE5T
U3RyaW5nICopY29udGVudFR5cGUgZGF0YTooTlNEYXRhICopZGF0YSBvcHRpb25zOihfV0tBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zCit7CisgICAgX19ibG9jayBib29sIGRvbmUg
PSBmYWxzZTsKKyAgICBfV0tBdHRhY2htZW50ICphdHRhY2htZW50ID0gW3NlbGYgX2luc2VydEF0
dGFjaG1lbnRXaXRoRmlsZW5hbWU6ZmlsZW5hbWUgY29udGVudFR5cGU6Y29udGVudFR5cGUgZGF0
YTpkYXRhIG9wdGlvbnM6b3B0aW9ucyBjb21wbGV0aW9uOl4oQk9PTCkgeworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIHJldHVybiBhdHRhY2htZW50OworfQorCistIChOU1N0cmluZyAqKXZhbHVlT2ZBdHRyaWJ1
dGU6KE5TU3RyaW5nICopYXR0cmlidXRlTmFtZSBmb3JRdWVyeVNlbGVjdG9yOihOU1N0cmluZyAq
KXF1ZXJ5U2VsZWN0b3IKK3sKKyAgICByZXR1cm4gW3NlbGYgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoJyVAJykuZ2V0QXR0cmlidXRlKCclQCcpIiwgcXVlcnlTZWxlY3RvciwgYXR0cmlidXRlTmFt
ZV1dOworfQorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXS0F0
dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudEVsZW1lbnRJbnNlcnRpb24pCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworCisgICAgLy8gVXNlIHRo
ZSBnaXZlbiBjb250ZW50IHR5cGUgZm9yIHRoZSBhdHRhY2htZW50IGVsZW1lbnQncyB0eXBlLgor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAi
Zm9vIiBjb250ZW50VHlwZTpAInRleHQvaHRtbCIgZGF0YTp0ZXN0SFRNTERhdGEoKSBvcHRpb25z
Om5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZm9vIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJp
YnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoQCJ0ZXh0L2h0bWwiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlw
ZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KEAiMzggYnl0ZXMiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAic3VidGl0bGUiIGZvclF1
ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworCisgICAgLy8gU2luY2Ugbm8gY29udGVudCB0
eXBlIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLCBjb21wdXRlIGl0IGZyb20gdGhlIGZpbGUgZXh0
ZW5zaW9uLgorICAgIFt3ZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxldGVCYWNrd2Fy
ZCIgYXJndW1lbnQ6bmlsIGNvbXBsZXRpb246bmlsXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImJhci5wbmciIGNvbnRlbnRUeXBlOm5p
bCBkYXRhOnRlc3RJbWFnZURhdGEoKSBvcHRpb25zOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVR
KEAiYmFyLnBuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlT
ZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiaW1hZ2UvcG5n
IiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJh
dHRhY2htZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIjM3IEtCIiwgW3dlYlZpZXcgdmFs
dWVPZkF0dHJpYnV0ZTpAInN1YnRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJd
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gV0tfQVBJ
X0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325400</attachid>
            <date>2017-10-30 18:15:44 -0700</date>
            <delta_ts>2017-10-30 18:39:09 -0700</delta_ts>
            <desc>Fix 32-bit Mac build (v2)</desc>
            <filename>bug-179013-20171030181544.patch</filename>
            <type>text/plain</type>
            <size>74263</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMzAwYmI1YmU2NzAwYzg1Mzk2N2Q1YjQ1YmFlNTkw
ODYzM2FlOWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uMmEwOThlNTkzZmRkOTliMTIxOWNiZTE1MDcyZTFjMmIxNmM3MThmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvRmlsZVNpemVGb3JtYXR0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKiBwYWwvY29jb2EvRmlsZVNp
emVGb3JtYXR0ZXJDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKGZpbGVTaXplRGVzY3JpcHRpb24pOgor
ICAgICAgICAqIHBhbC9zcGkvRmlsZVNpemVGb3JtYXR0ZXIuY3BwOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoZmls
ZVNpemVEZXNjcmlwdGlvbik6CisgICAgICAgICogcGFsL3NwaS9GaWxlU2l6ZUZvcm1hdHRlci5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0
ZS5oLgorICAgICAgICAqIHBhbC9zcGkvY29jb2EvTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5o
LgorCiAyMDE3LTEwLTI3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgaU9TIHNwZWNpZmljIHNvdXJjZXMgdG8gdW5pZmllZCBzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGI0MWZkNDUzZDJlOGEyNGZlN2VmZGU4NjRhODE2NzFmMDlmNDE3NDIuLjJlN2My
OTJlYjI1ODYzNDJhZTVkYWQwODRjODg5ZjZhMGExMzA4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NzEgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFdLV2ViVmlldyBTUEkg
Zm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgbmF0aXZlIFNQSSB0byBpbnNlcnQgYXR0YWNobWVudCBlbGVtZW50cyBnaXZlbiBh
IGZpbGVuYW1lLCBhbiBvcHRpb25hbCBNSU1FIHR5cGUsIGFuZCBhIGRhdGEgYmxvYi4gU2VlCisg
ICAgICAgIGNoYW5nZS1ieS1jaGFuZ2UgY29tbWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLiBD
b3ZlcmVkIGJ5IGEgbmV3IEFQSSB0ZXN0LgorCisgICAgICAgICogUGxhdGZvcm0vU2hhcmVkTWVt
b3J5Lmg6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmNyZWF0ZSk6CisKKyAgICAgICAgSW50cm9k
dWNlIGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBhIFNoYXJlZE1lbW9yeSB1c2luZyBh
IFNoYXJlZEJ1ZmZlci4KKworICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAq
IFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9Db2NvYS9XZWJL
aXRQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUu
aC4KKyAgICAgICAgKEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKToKKyAgICAgICAgKEFQSTo6QXR0
YWNobWVudDo6QXR0YWNobWVudCk6CisgICAgICAgIChBUEk6OkF0dGFjaG1lbnQ6On5BdHRhY2ht
ZW50KToKKworICAgICAgICBJbnRyb2R1Y2UgQVBJOjpBdHRhY2htZW50LCB3aGljaCByZXByZXNl
bnRzIGEgcGxhdGZvcm0tYWdub3N0aWMgQXR0YWNobWVudC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2luc2VydEF0dGFjaG1lbnRXaXRo
RmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOmNvbXBsZXRpb246XSk6CisKKyAgICAg
ICAgQWRkcyBzdXBwb3J0IGZvciBpbnNlcnRpbmcgYSBuZXcgYXR0YWNobWVudCBlbGVtZW50LiBD
YWxscyBvdXQgdG8gV2ViUGFnZVByb3h5IHRvIGluc2VydCB0aGUgYXR0YWNobWVudCBmcm9tIHRo
ZQorICAgICAgICBnaXZlbiBkYXRhIGJsb2IsIGFuZCBjcmVhdGVzIGEgbmV3IEFQSS1vYmplY3Qt
YmFja2VkIF9XS0F0dGFjaG1lbnQuCisKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9leGVjdXRlRWRp
dENvbW1hbmQ6YXJndW1lbnQ6Y29tcGxldGlvbjpdKToKKworICAgICAgICBTdXBwb3J0IHBhc3Np
bmcgaW4gYSBuaWwgY29tcGxldGlvbiBibG9jay4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dl
YktpdFByaXZhdGUuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1l
bnQubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmguCisKKyAgICAgICAgSW50cm9kdWNlcyBfV0tBdHRhY2htZW50LCBhbiBPYmplY3RpdmUg
QyB3cmFwcGVyIGFyb3VuZCB0aGUgQVBJOjpBdHRhY2htZW50LgorCisgICAgICAgICgtW19XS0F0
dGFjaG1lbnQgX2FwaU9iamVjdF0pOgorICAgICAgICAoLVtfV0tBdHRhY2htZW50IGlzRXF1YWw6
XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgdW5pcXVlSWRlbnRpZmllcl0pOgorICAgICAg
ICAoLVtfV0tBdHRhY2htZW50IGhhc2hdKToKKworICAgICAgICBBZGQgX1dLQXR0YWNobWVudCwg
YSBXZWJLaXQgU1BJIG9iamVjdCB0aGF0IHdyYXBzIGFuIGF0dGFjaG1lbnQgZWxlbWVudCB1bmlx
dWUgaWRlbnRpZmllci4gQWxzbywgYWxsb3cKKyAgICAgICAgX1dLQXR0YWNobWVudCB0byBiZSB1
c2VkIGFzIGEgaGFzaGFibGUgTlNEaWN0aW9uYXJ5IGtleS4KKworICAgICAgICAoLVtfV0tBdHRh
Y2htZW50IGRlc2NyaXB0aW9uXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dHRhY2htZW50SW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1dlYktpdFByaXZhdGUuaC4KKyAgICAgICAgKEFQSTo6d3JhcHBlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6aW5zZXJ0QXR0YWNobWVudCk6CisKKyAgICAgICAgSW1wbGVtZW50IElQQyBzdXBwb3J0
IGZvciBpbnNlcnRpbmcgYW4gYXR0YWNobWVudC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTctMTAtMjcgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBbU2V0dGluZ3NdIEdlbmVyYXRlIG1vcmUgb2YgdGhlIFdlYktpdCBwcmVmZXJlbmNl
cyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZjUxYWRiMDA4MTAwYzJmZmVjZTI0MmU4OGFmZjU4NTg1ZGQ3OTgwZS4uMzdm
MTVlOTc1ZTM3MjZiNDkyMmJjZmY3ZjQ0ZjM5ODIzZDdlY2RkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxLDYgKzE0MSwx
MCBAQAogCQlBM0FCNkU2NTFGM0QyMTdGMDA5QzE0QjEgLyogU3lzdGVtU2xlZXBMaXN0ZW5lck1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQUI2
RTYzMUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tICovOyB9Owog
CQlBM0M2NkNEQzFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RBMUY0NjJENkEwMDlFNkVF
OSAvKiBTZXNzaW9uSUQuY3BwICovOyB9OwogCQlBM0M2NkNERDFGNDYyRDZBMDA5RTZFRTkgLyog
U2Vzc2lvbklELmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi87IH07CisJCUY0NDI5
MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE1RDFGQTUyNDczMDAy
Q0M5M0UgLyogTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oICovOyB9OworCQlGNDQyOTE2MDFGQTUy
NjFFMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTVGMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxl
U2l6ZUZvcm1hdHRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUY0NDI5MTY0MUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE2
MjFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovOyB9OworCQlGNDQy
OTE2ODFGQTUyNzA1MDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTY2MUZBNTI3MDUw
MDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovOyB9OwogLyogRW5kIFBCWEJ1
aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0
aW9uICovCkBAIC0yODMsNiArMjg3LDEwIEBACiAJCUEzQzY2Q0RBMUY0NjJENkEwMDlFNkVFOSAv
KiBTZXNzaW9uSUQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Vz
c2lvbklELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNDNjZDREIxRjQ2MkQ2
QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTZXNzaW9uSUQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIxNDdBNEExRUZE
MEFBNjAwMDU2RkE1IC8qIENvcHlQQUxIZWFkZXJzLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54
Y2NvbmZpZzsgcGF0aCA9IENvcHlQQUxIZWFkZXJzLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDQyOTE1RDFGQTUyNDczMDAyQ0M5M0UgLyogTlNGaWxlU2l6ZUZvcm1h
dHRlclNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTVGMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxl
U2l6ZUZvcm1hdHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU2l6ZUZvcm1hdHRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE2MjFGQTUyNjcwMDAyQ0M5M0UgLyogRmls
ZVNpemVGb3JtYXR0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE2NjFGQTUyNzA1MDAyQ0M5
M0UgLyogRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZp
bGVTaXplRm9ybWF0dGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBF
bmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTM2Miw2ICszNzAsNyBAQAogCQkJCTBDMkRBMTMxMUYz
QkVCNDkwMERCQzMxNyAvKiBOU0NvbG9yU1BJLmggKi8sCiAJCQkJMEMyREExMzIxRjNCRUI0OTAw
REJDMzE3IC8qIE5TRXh0ZW5zaW9uU1BJLmggKi8sCiAJCQkJMEMyREExMzMxRjNCRUI0OTAwREJD
MzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCAqLywKKwkJCQlGNDQyOTE1RDFGQTUyNDczMDAyQ0M5
M0UgLyogTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oICovLAogCQkJCTBDMkRBMTM0MUYzQkVCNDkw
MERCQzMxNyAvKiBOU1N0cmluZ1NQSS5oICovLAogCQkJCTBDMkRBMTM1MUYzQkVCNDkwMERCQzMx
NyAvKiBOU1RvdWNoQmFyU1BJLmggKi8sCiAJCQkJMEMyREExMzYxRjNCRUI0OTAwREJDMzE3IC8q
IE5TVVJMQ29ubmVjdGlvblNQSS5oICovLApAQCAtNDcxLDYgKzQ4MCw4IEBACiAJCQkJQTM3ODhF
OUYxRjA1QjdDRTAwNjc5NDI1IC8qIHN5c3RlbSAqLywKIAkJCQlBMzBENDExRDFGMEREMEFDMDBC
NzE5NTQgLyogdGV4dCAqLywKIAkJCQkwQzJEOUU3MjFFRUY1QUY2MDBEQkMzMTcgLyogRXhwb3J0
TWFjcm9zLmggKi8sCisJCQkJRjQ0MjkxNjIxRkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVTaXplRm9y
bWF0dGVyLmNwcCAqLywKKwkJCQlGNDQyOTE1RjFGQTUyNjFFMDAyQ0M5M0UgLyogRmlsZVNpemVG
b3JtYXR0ZXIuaCAqLywKIAkJCQlBMzlERTc0RDFGN0M0NDNDMDA3QkNCMDAgLyogSHlzdGVyZXNp
c0FjdGl2aXR5LmggKi8sCiAJCQkJMDcwOEFDMzIxRjRDODc0QTAwMUY3ODhGIC8qIExvZ2dlci5o
ICovLAogCQkJCTA3Mzc3QURCMUY1Nzc3RDcwMDI3RjE2RCAvKiBMb2dnZXJIZWxwZXIuaCAqLywK
QEAgLTUxNyw2ICs1MjgsNyBAQAogCQkxQzQ4NzZERTFGOEQ4MzEzMDBDQ0VFQkQgLyogY29jb2Eg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUY0NDI5MTY2
MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovLAogCQkJCTFD
NDg3NkRGMUY4RDgzNzUwMENDRUVCRCAvKiBMb2dnaW5nQ29jb2EubW0gKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGNvY29hOwpAQCAtNjEyLDYgKzYyNCw3IEBACiAJCQkJMEM1QUY5MUExRjQzQTRDNzAw
MkVBQzAyIC8qIERhdGFEZXRlY3RvcnNVSVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTExNzVC
NTcxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEMyRDlFNzMxRUVGNUFGNjAwREJDMzE3IC8qIEV4cG9ydE1hY3Jvcy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRjQ0MjkxNjAxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0
dGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTAyNjU4NzFGNTY3NDYxMDBCNEM4NDQgLyogRm91
bmRhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM1QUY5MUIxRjQzQTRDNzAwMkVBQzAy
IC8qIEdyYXBoaWNzU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDI2NThFMUY1
NjdFOUQwMEI0Qzg0NCAvKiBISVNlcnZpY2VzU1BJLmggaW4gSGVhZGVycyAqLywKQEAgLTY0Nyw2
ICs2NjAsNyBAQAogCQkJCTBDNzc4NThGMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0V2ZW50U1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwQzJEQTE0RTFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNp
b25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTRGMUYzQkVCNDkwMERCQzMxNyAvKiBO
U0ZpbGVNYW5hZ2VyU1BJLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE1RTFGQTUyNDczMDAy
Q0M5M0UgLyogTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3
Nzg1OTAxRjQ1MTMwRjAwRjRFQkI2IC8qIE5TRm9udFNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTEwODI2RkUxRjU4QTQzMzAwNDc3MkFDIC8qIE5TR3JhcGhpY3NTUEkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBDNzc4NTkxMUY0NTEzMEYwMEY0RUJCNiAvKiBOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1
cmVSZWNvZ25pemVyU1BJLmggaW4gSGVhZGVycyAqLywKQEAgLTc4NCw2ICs3OTgsOCBAQAogCQkJ
CTBDRjk5Q0E4MUY3Mzg0MzcwMDdFRTc5MyAvKiBDb3JlTWVkaWFTb2Z0TGluay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQzA5RDA1NjFFMzFDNDY1MDA3MjVGMTggLyogQ3J5cHRvRGlnZXN0Q29t
bW9uQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExMTc1QjU4MUY2QjQ3MDUwMEM0QjlG
MCAvKiBEZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0Mjkx
NjQxRkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUY0NDI5MTY4MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29h
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMwRDQxMjIxRjBERDBFQTAwQjcxOTU0IC8qIEtpbGxS
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEzMEQ0MTI1MUYwREQxMkQwMEI3MTk1NCAvKiBL
aWxsUmluZ01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFDNDg3NkQ4MUY4RDdGNEUwMENDRUVC
RCAvKiBMb2dnaW5nLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9GaWxlU2l6ZUZvcm1hdHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L0ZpbGVTaXplRm9ybWF0dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2ZiMjIzMzIyOTQyODNmNDQ3YTA1
NTE0OTY2ZDY0NzdjN2VkYzZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9GaWxlU2l6ZUZvcm1hdHRlci5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGaWxlU2l6ZUZvcm1hdHRlci5oIgorCisj
aWYgIVBMQVRGT1JNKENPQ09BKQorCitTdHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRf
dCBzaXplKQoreworICAgIC8vIEZJWE1FOiBUaGVzZSBzdHJpbmdzIHNob3VsZCBiZSBsb2NhbGl6
ZWQsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgYnJpbmdpbmcgTG9jYWxpemVkU3RyaW5ncyBpbnRv
IFBBTC4KKyAgICAvLyBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzkwMTk+IGZvciBtb3JlIGRldGFpbHMuCisgICAgaWYgKHNpemUgPCAxMDAwKQorICAgICAg
ICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiV0dSBieXRlcyIsIHNpemUpOworICAgIGlmIChzaXpl
IDwgMTAwMDAwMCkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIEtCIiwgc2l6
ZSAvIDEwMDAuKTsKKyAgICBpZiAoc2l6ZSA8IDEwMDAwMDAwMDApCisgICAgICAgIHJldHVybiBT
dHJpbmc6OmZvcm1hdCgiJS4xZiBNQiIsIHNpemUgLyAoMTAwMDAwMC4pKTsKKyAgICByZXR1cm4g
U3RyaW5nOjpmb3JtYXQoIiUuMWYgR0IiLCBzaXplIC8gKDEwMDAwMDAwMDAuKSk7Cit9CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9GaWxlU2l6ZUZvcm1hdHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9GaWxlU2l6ZUZvcm1hdHRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRjYWYwYzY5ODA5OGQ1ZThmYzRjNGFhNTZiNDkzMmQ3NmNjNmIwYWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmgKQEAgLTAs
MCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworUEFMX0VYUE9SVCBTdHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbih1
aW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0ZpbGVT
aXplRm9ybWF0dGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0ZpbGVT
aXplRm9ybWF0dGVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDcwOTViYWY1NDBjZTY5ZDBkNjE5NGVh
OWE1YTdhMmY5MGI2YmJhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQpAQCAtMCwwICsxLDM0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbGVTaXplRm9ybWF0dGVy
LmgiCisKKyNpbXBvcnQgIk5TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaCIKKworU3RyaW5nIGZpbGVT
aXplRGVzY3JpcHRpb24odWludDY0X3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gTlNMb2NhbGl6ZWRG
aWxlU2l6ZURlc2NyaXB0aW9uKHNpemUsIDAsIDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk1NTc2ZmQzNGMxNTBkZWYxMDVmZmI0ZDlmMmFlN2I0MDIzZmRmNjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9y
bWF0dGVyU1BJLmgKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0Zp
bGVTaXplRm9ybWF0dGVyLmg+CisKKyNlbHNlCisKK3R5cGVkZWYgdWludDY0X3QgTlNGaWxlU2l6
ZUZvcm1hdHRlck9wdGlvbnM7CitleHRlcm4gIkMiIE5TU3RyaW5nICpOU0xvY2FsaXplZEZpbGVT
aXplRGVzY3JpcHRpb24odWludDY0X3Qgc2l6ZSwgdWludDY0X3QgbWF4aW11bURpc3BsYXllZFZh
bHVlLCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9ucyk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IGJlM2RhOGVlMmY3NWViZTJlNzY3YmJhNmU3NzdmMDkxNWY5ODgy
MjUuLmU2ODdhMjc1NWZhOWVkMTVmMGQ3ZDQ1NzdiYWJlN2E2ZmMwMDQ0ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQ3LDEyICs0NywxNCBAQAogI2luY2x1ZGUgIkVkaXRvckNs
aWVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMu
aCIKKyNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1l
VHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxD
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgpAQCAtOTgsNiArMTAwLDcgQEAKICNpbmNsdWRl
ICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5o
IgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1ZGUgPHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5o
PgogI2luY2x1ZGUgPHBhbC9zeXN0ZW0vU291bmQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9LaWxs
UmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CkBAIC0zNzI4
LDYgKzM3MzEsMzkgQEAgUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yVGV4dENoZWNraW5n
UmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWwKICAgICByZXR1cm4gVGV4dEl0
ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5s
ZW5ndGgpOwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordm9pZCBFZGl0
b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZpbGVwYXRoLCBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gY29udGVudFR5cGUpCit7CisgICAgaWYgKCFjb250ZW50VHlwZSkKKyAgICAgICAgY29udGVu
dFR5cGUgPSBGaWxlOjpjb250ZW50VHlwZUZvckZpbGUoZmlsZW5hbWUpOworICAgIGluc2VydEF0
dGFjaG1lbnRGcm9tRmlsZShpZGVudGlmaWVyLCBmaWxlbmFtZSwgKmNvbnRlbnRUeXBlLCBGaWxl
OjpjcmVhdGUoZmlsZXBhdGgpKTsKK30KKwordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBSZWY8U2hh
cmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKK3sK
KyAgICBpZiAoIWNvbnRlbnRUeXBlKQorICAgICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRl
bnRUeXBlRm9yRmlsZShmaWxlbmFtZSk7CisgICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlk
ZW50aWZpZXIsIGZpbGVuYW1lLCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVh
dGUoZGF0YSwgKmNvbnRlbnRUeXBlKSwgZmlsZW5hbWUpKTsKK30KKwordm9pZCBFZGl0b3I6Omlu
c2VydEF0dGFjaG1lbnRGcm9tRmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGaWxlPiYmIGZp
bGUpCit7CisgICAgYXV0byBhdHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVh
dGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBkb2N1bWVudCgpLCBpZGVudGlmaWVyKTsKKyAg
ICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0aXRsZUF0dHIsIGZpbGVuYW1l
KTsKKyAgICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdWJ0aXRsZUF0dHIs
IGZpbGVTaXplRGVzY3JpcHRpb24oZmlsZS0+c2l6ZSgpKSk7CisgICAgYXR0YWNobWVudC0+c2V0
QXR0cmlidXRlKEhUTUxOYW1lczo6dHlwZUF0dHIsIGNvbnRlbnRUeXBlKTsKKyAgICBhdHRhY2ht
ZW50LT5zZXRVbmlxdWVJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNl
dEZpbGUoZmlsZS5wdHIoKSk7CisKKyAgICBhdXRvIGZyYWdtZW50VG9JbnNlcnQgPSBkb2N1bWVu
dCgpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICBmcmFnbWVudFRvSW5zZXJ0LT5hcHBl
bmRDaGlsZChhdHRhY2htZW50LmdldCgpKTsKKworICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJh
Z21lbnQoZnJhZ21lbnRUb0luc2VydC5nZXQoKSwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKIHZvaWQgRWRpdG9yOjpoYW5k
bGVBY2NlcHRlZENhbmRpZGF0ZShUZXh0Q2hlY2tpbmdSZXN1bHQgYWNjZXB0ZWRDYW5kaWRhdGUp
CiB7CiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gbV9mcmFtZS5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGFhODg1ZmY1
OTljMWEwNzVkM2RhMGQwN2NkZjIyNTg1MTZhZWEzN2QuLmZkZmEzZThhODA5YzVhYjU4MTg2MzU2
N2Q1ZThlOTBiZTIwM2Q4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNjMsNyArNjMs
OSBAQCBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CiBj
bGFzcyBFZGl0b3JDbGllbnQ7CiBjbGFzcyBFZGl0b3JJbnRlcm5hbENvbW1hbmQ7CitjbGFzcyBG
aWxlOwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQ7CiBjbGFzcyBI
VE1MRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwpA
QCAtNDk4LDkgKzUwMCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0dldHRpbmdEaWN0aW9u
YXJ5UG9wdXBJbmZvKGJvb2wgYikgeyBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8gPSBi
OyB9CiAgICAgYm9vbCBpc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKCkgY29uc3QgeyByZXR1
cm4gbV9pc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvOyB9CiAKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0
cmluZyYgZmlsZXBhdGgsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUgPSBzdGQ6Om51
bGxvcHQpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29u
c3Q7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQgaW5zZXJ0QXR0
YWNobWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgUmVmPEZpbGU+JiYpOworI2VuZGlm
CisKICAgICBib29sIGNhbkRlbGV0ZVJhbmdlKFJhbmdlKikgY29uc3Q7CiAgICAgYm9vbCBjYW5T
bWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0ZWJvYXJkJik7CiAgICAgdm9pZCBwYXN0ZUFz
UGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IGE2ZWQ5NjE1NmFjZGE3MjMzM2Ji
MzZmYTdiNWY1M2FhZmM5YTAyOWIuLjNiZmYwYzdiZjljMThmZjFlOGI2M2NjZDhkOWRhYjYwYmMx
NjMzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHAKQEAgLTI4LDIwICsyOCwyOSBAQAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
IAorI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZpbGUuaCIKKyNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlckF0dGFjaG1lbnQu
aCIKKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxBdHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFj
aG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKK0hUTUxBdHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAg
LCBtX3VuaXF1ZUlkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFt
ZShhdHRhY2htZW50VGFnKSk7CiB9CiAKK0hUTUxBdHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFj
aG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1
bWVudCkKKyAgICA6IEhUTUxBdHRhY2htZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQoreworfQorCiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
On5IVE1MQXR0YWNobWVudEVsZW1lbnQoKSA9IGRlZmF1bHQ7CiAKIFJlZjxIVE1MQXR0YWNobWVu
dEVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQ5LDYgKzU4LDExIEBAIFJlZjxI
VE1MQXR0YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTEF0dGFjaG1l
bnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKK1JlZjxIVE1MQXR0YWNobWVudEVs
ZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhUTUxBdHRhY2htZW50RWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCwgaWRlbnRpZmllcikpOworfQorCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4g
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUm
JiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRl
UmVuZGVyZXI8UmVuZGVyQXR0YWNobWVudD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDlhYzZiNmE4YjE3
ODRkMDE2OGVkMDNhMGU5OTQzM2UzODY0ODM5ZTIuLjNhNDRhNWYxMTk5YzcyMDljM2IxYWU0OWJl
ZmJiODE2MTFhNjAzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuaApAQCAtMzcsMTAgKzM3LDE0IEBAIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFz
cyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgc3RhdGljIFJlZjxIVE1MQXR0YWNobWVu
dEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRmlsZSogZmlsZSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0RmlsZShGaWxlKik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgdW5pcXVlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcjsg
fQorICAgIHZvaWQgc2V0VW5pcXVlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
IHsgbV91bmlxdWVJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nIGF0dGFjaG1lbnRUaXRsZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50
VHlwZSgpIGNvbnN0OwogCkBAIC00OCw2ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7
CisgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+SFRNTEF0dGFjaG1l
bnRFbGVtZW50KCk7CiAKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFs
OwpAQCAtNjMsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIAogICAg
IFJlZlB0cjxGaWxlPiBtX2ZpbGU7CisgICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9y
eS5oCmluZGV4IGM3MmUwZDRiMGFiODcyMDZiY2Y1Mjc1NTM3OTlkYzNiZWZjYmExYzAuLjAxN2I0
MzRlZTRhOTJkZjdhYjlkNWM5ZjI3NzdkNmZkY2NhNGUyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9TaGFyZWRNZW1vcnkuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NL
RVRTKQpAQCAtNDAsNiArNDEsMTAgQEAgY2xhc3MgRGVjb2RlcjsKIGNsYXNzIEVuY29kZXI7CiB9
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK30KKwogI2lmIE9T
KERBUldJTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC04
Nyw2ICs5Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBh
bGxvY2F0ZShzaXplX3QpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBjcmVhdGUo
dm9pZCosIHNpemVfdCwgUHJvdGVjdGlvbik7CisgICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1v
cnk+IGNyZWF0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKICAgICBzdGF0aWMgUmVm
UHRyPFNoYXJlZE1lbW9yeT4gbWFwKGNvbnN0IEhhbmRsZSYsIFByb3RlY3Rpb24pOwogI2lmIFVT
RShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiB3
cmFwTWFwKHZvaWQqLCBzaXplX3QsIGludCBmaWxlRGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCmluZGV4IGFlYTc5
ODUwNDQ5YThiODk3OThlOTAzNmQ3YjBlNTMwMTgwM2FhNTQuLjM5OGQ1NWU3YzE5NGFjNjlmNGRi
N2FjMGYyYzliYmExNjNlMGExNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIk1hY2hQb3J0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NYWNo
U2VuZFJpZ2h0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRl
IDxtYWNoL21hY2hfZXJyb3IuaD4KICNpbmNsdWRlIDxtYWNoL21hY2hfcG9ydC5oPgogI2luY2x1
ZGUgPG1hY2gvdm1fbWFwLmg+CkBAIC0xNTYsNiArMTU3LDEzIEBAIHN0YXRpYyBXZWJDb3JlOjpN
YWNoU2VuZFJpZ2h0IG1ha2VNZW1vcnlFbnRyeShzaXplX3Qgc2l6ZSwgdm1fb2Zmc2V0X3Qgb2Zm
c2V0LCBTCiAgICAgcmV0dXJuIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQ6OmFkb3B0KHBvcnQpOwog
fQogCitSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sKKyAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZl
ciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVmZmVyLT5zaXplKCkpOworICAgIG1lbWNweShz
aGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSwgYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgp
KTsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVmZmVyOworfQorCiBSZWZQdHI8U2hhcmVkTWVt
b3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZSh2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgUHJvdGVj
dGlvbiBwcm90ZWN0aW9uKQogewogICAgIEFTU0VSVChzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNt
YWtlCmluZGV4IDBlNmY2Njk2N2FlMGUxMGZiMTQ2YTdiN2U2NTgwMzQ0ZThjZmQxMzAuLjc4OWYz
ODQ1ZjZkZWI2NDZlZWU3MDU3OTNhMmQ4YTZkYzY5Y2FhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5j
bWFrZQpAQCAtMjIyLDYgKzIyMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KICAgICBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2luZG93RmVhdHVyZXMubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tCisgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRh
Y2htZW50Lm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5t
bQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0
aW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZv
Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggOTYyODY0ZjcyNzkzOWEz
MTg1NWJhNDQ0ZGY3MTlkNmY2MWUyZGMxOC4uZjZmOTlmYWRmNDNlMzRiNzIzZThhZGI2Yzk0NTZk
YTkxNjdmNWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtOTcsNiAr
OTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICAvLyBVSVByb2Nlc3MgdHlwZXMKICAg
ICAgICAgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIsCisgICAgICAgIEF0dGFjaG1lbnQsCiAgICAg
ICAgIEF1dG9tYXRpb25TZXNzaW9uLAogICAgICAgICBCYWNrRm9yd2FyZExpc3QsCiAgICAgICAg
IEJhY2tGb3J3YXJkTGlzdEl0ZW0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dlYktpdFByaXZhdGUuaAppbmRleCA0YTM1ODA5N2M3YzQyODUyZmU2YTUwYmQxYTAzMDQwMzQ0
Y2Y3M2I5Li4xOGJmMGM1ZDhhNjNhZmUzOTAzMmZiNDQ3YjUyMjVlNTIxODc2YmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmgKQEAgLTMwLDYg
KzMwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0F0dGFjaG1lbnQu
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tFbGVtZW50QWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLRm9jdXNlZEVsZW1lbnRJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRm9ybUlucHV0U2Vz
c2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM3YjMxNDA3MWVhMTVjZTZlYzkwODc4YjRlY2IyOWZmZWVmMGZhZTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVu
dC5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJBUElBdHRhY2htZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK1JlZjxBdHRhY2htZW50PiBBdHRhY2htZW50Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYgd2Vi
UGFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdHRhY2htZW50KGlkZW50aWZpZXIs
IHdlYlBhZ2UpKTsKK30KKworQXR0YWNobWVudDo6QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDogbV9pZGVudGlm
aWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZS5jcmVhdGVXZWFrUHRyKCkp
Cit7Cit9CisKK0F0dGFjaG1lbnQ6On5BdHRhY2htZW50KCkKK3sKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTQzZDBkZTk4
ZjI3ODZkNDEzYWVhYzY4NWJjOGVkNzliODNmMTM0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmgKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XZWJQYWdlUHJveHkuaD4K
KyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK30KKworbmFtZXNw
YWNlIEFQSSB7CisKK2NsYXNzIEF0dGFjaG1lbnQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxP
YmplY3Q6OlR5cGU6OkF0dGFjaG1lbnQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF0dGFj
aG1lbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVBy
b3h5Jik7CisgICAgdmlydHVhbCB+QXR0YWNobWVudCgpOworCisgICAgU3RyaW5nIGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdl
UHJveHkmKTsKKworICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgV2Vha1B0cjxXZWJLaXQ6
OldlYlBhZ2VQcm94eT4gbV93ZWJQYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAxNDY4
MTMxZWExYjQwMGUwMzg4NWJmNjU3MGNjN2ZhYWViNDBhMjA0Li5lZGFmNGQ4OWVjNzY5NWQ1NGFi
NTEzNDAxMzYyNmQ4ZTcwZTlkMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTk0LDExICs5NCwxMyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01CaW5kaW5nLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBv
cnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY2hlbWVSZWdpc3Ry
eS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Xcml0aW5n
TW9kZS5oPgpAQCAtMTEwLDYgKzExMiw3IEBACiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2lt
cG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KICNp
bXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtNDE2OCw2ICs0MTcxLDIzIEBAIC0g
KHZvaWQpX2Nsb3NlCiAgICAgX3BhZ2UtPmNsb3NlKCk7CiB9CiAKKy0gKF9XS0F0dGFjaG1lbnQg
KilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250
ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBkYXRhOihOU0RhdGEgKilkYXRhIG9wdGlv
bnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9p
ZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlE
U3RyaW5nKCk7CisKKyAgICBfcGFnZS0+aW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBmaWxl
bmFtZSwgY29udGVudFR5cGUubGVuZ3RoID8gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHsgY29udGVu
dFR5cGUgfSA6IHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0
YSksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChjYXB0dXJl
ZEhhbmRsZXIpCisgICAgICAgICAgICBjYXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpD
YWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKKyAgICB9KTsKKworICAgIGF1dG8gYXR0YWNobWVu
dCA9IEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKEFQSTo6U3RyaW5nOjpjcmVhdGUoaWRlbnRpZmll
ciksICpfcGFnZSk7CisgICAgcmV0dXJuIFt3cmFwcGVyKGF0dGFjaG1lbnQpIGF1dG9yZWxlYXNl
XTsKKyNlbHNlCisgICAgcmV0dXJuIG5pbDsKKyNlbmRpZgorfQorCiAtICh2b2lkKV9ldmFsdWF0
ZUphdmFTY3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmlu
ZyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhh
bmRsZXIKIHsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcg
Zm9yY2VVc2VyR2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07
CkBAIC02MDMzLDcgKzYwNTMsOCBAQCAtICh2b2lkKV9kaXNhYmxlQmFja0ZvcndhcmRTbmFwc2hv
dFZvbGF0aWxpdHlGb3JUZXN0aW5nCiAtICh2b2lkKV9leGVjdXRlRWRpdENvbW1hbmQ6KE5TU3Ry
aW5nICopY29tbWFuZCBhcmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVudCBjb21wbGV0aW9uOih2
b2lkICheKShCT09MKSljb21wbGV0aW9uCiB7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFu
ZChjb21tYW5kLCBhcmd1bWVudCwgW2NhcHR1cmVkQ29tcGxldGlvbkJsb2NrID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb24pXShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAg
ICAgICAgY2FwdHVyZWRDb21wbGV0aW9uQmxvY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jh
c2U6OkVycm9yOjpOb25lKTsKKyAgICAgICAgaWYgKGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKQor
ICAgICAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uQmxvY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxs
YmFja0Jhc2U6OkVycm9yOjpOb25lKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCBkMmQ2
ZWI4ODU2ZGZiNWZjYzRkMDQxM2Y5MDYyYTEyN2Q5NTI1NTllLi4xMmVhNmY1OWMzZjMwZTNkODhj
ZjNjYjYwZTVmODI2NzA2YzBmZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW1wb3J0ICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiX1dLQXR0YWNobWVudEludGVybmFsLmgiCiAjaW1w
b3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmlu
ZGV4IDVlZDJiMmMxYjFhZjE3NTY4Mzk4NzNhNDUzYjc4M2EzMDFjZDdiYWUuLmM5ZmQ1NDBiMDZj
ZWUyYjYyNTAxNDY4OGJlYzYxMDEwZjZjMDZhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBA
QAogI2lmIFdLX0FQSV9FTkFCTEVECiAKICNpbXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0F0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tGaW5kT3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0xheW91dE1vZGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaD4KQEAgLTE3Nyw2ICsx
NzgsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBh
Z2U6KSBCT09MIF9iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSksIGlvcyg4LjApKTsKIAorLSAoX1dLQXR0YWNobWVudCAqKV9pbnNl
cnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBl
OihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dL
QXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJP
T0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAvLyBE
RVJFQ0FURUQ6IFRoZSBzZXR0ZXJzIG9mIHRoZSB0aHJlZSBmb2xsb3dpbmcgZnVuY3Rpb24gYXJl
IGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ugb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzLgogLy8gRGVm
aW5lIHRoZSBzbWFsbGVzdCBzaXplIGEgcGFnZSB0YWtlIHdpdGggYSByZWd1bGFyIHZpZXdwb3J0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFj
aG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWU3Y2I1YzYxOWQzYWYyYjA4MDMzZTY2NDNiYjY3MWEyZmJmNjViNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dHRhY2htZW50LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAor
Cit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tBdHRhY2htZW50RGlzcGxheU1vZGUpIHsK
KyAgICBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBdXRvID0gMSwKKyAgICBfV0tBdHRhY2htZW50
RGlzcGxheU1vZGVJblBsYWNlLAorICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUFzSWNvbgor
fSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
KwordHlwZWRlZiB2b2lkKF5fV0tBdHRhY2htZW50RGF0YUNvbXBsZXRpb25IYW5kbGVyKShOU0Rh
dGEgKiwgTlNFcnJvciAqKTsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tBdHRhY2htZW50RGlzcGxheU9wdGlv
bnMgOiBOU09iamVjdAorQHByb3BlcnR5IChub25hdG9taWMpIF9XS0F0dGFjaG1lbnREaXNwbGF5
TW9kZSBtb2RlOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgZXhwYW5kc0ltYWdlVG9NYXhp
bXVtV2lkdGg7CitAZW5kCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLQXR0YWNobWVudCA6IE5TT2JqZWN0CitA
ZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F0dGFjaG1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmExYTc2NGEwYTUzM2Y0YzEyZDI2OGE4MjE1
NTBhMjRiN2UzZWFjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLQXR0YWNobWVudC5oIgorCisjaW1wb3J0
ICJBUElBdHRhY2htZW50LmgiCisjaW1wb3J0ICJfV0tBdHRhY2htZW50SW50ZXJuYWwuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAg
aWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX21vZGUgPSBfV0tBdHRhY2htZW50
RGlzcGxheU1vZGVBdXRvOworICAgICAgICBfZXhwYW5kc0ltYWdlVG9NYXhpbXVtV2lkdGggPSBO
TzsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IF9XS0F0dGFjaG1lbnQKKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1
cm4gKl9hdHRhY2htZW50OworfQorCistIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAoreworICAg
IHJldHVybiBbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W19XS0F0dGFjaG1lbnQgY2xhc3NdXSAmJiBb
c2VsZi51bmlxdWVJZGVudGlmaWVyIGlzRXF1YWw6WyhfV0tBdHRhY2htZW50ICopb2JqZWN0IHVu
aXF1ZUlkZW50aWZpZXJdXTsKK30KKworLSAoTlNTdHJpbmcgKil1bmlxdWVJZGVudGlmaWVyCit7
CisgICAgcmV0dXJuIF9hdHRhY2htZW50LT5pZGVudGlmaWVyKCkuc3RyaW5nKCk7Cit9CisKKy0g
KE5TVUludGVnZXIpaGFzaAoreworICAgIHJldHVybiBbc2VsZi51bmlxdWVJZGVudGlmaWVyIGhh
c2hdOworfQorCistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIGlkPSclQCc+IiwgW3NlbGYgY2xhc3NdLCBzZWxm
LnVuaXF1ZUlkZW50aWZpZXJdOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudEludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudEludGVybmFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTk4MzA1NzgwNWRmNjk3N2Q0NDVhYzgzYzBiNDdkZGU1M2Y2ZTIxYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50SW50
ZXJuYWwuaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKKyNpbXBvcnQgIl9XS0F0dGFjaG1lbnQuaCIKKworbmFt
ZXNwYWNlIEFQSSB7CisKK2lubGluZSBfV0tBdHRhY2htZW50ICp3cmFwcGVyKEFQSTo6QXR0YWNo
bWVudCYgYXR0YWNobWVudCkKK3sKKyAgICBBU1NFUlQoW2F0dGFjaG1lbnQud3JhcHBlcigpIGlz
S2luZE9mQ2xhc3M6W19XS0F0dGFjaG1lbnQgY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tBdHRh
Y2htZW50ICopYXR0YWNobWVudC53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVyZmFjZSBfV0tB
dHRhY2htZW50ICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3Jh
Z2U8QVBJOjpBdHRhY2htZW50PiBfYXR0YWNobWVudDsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGRjYmI1Mjg3YWU0YjA5YTZiZTM3ODBjYzAw
ODBkM2ZmMTRiYWQ5MGMuLjRmNWRhMmJhZjE4OTgyMGQ2MjQ5OWM3NGUyMmQ0NGUzYWFlMmQ1MGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzEwNSw0ICs3
MTA1LDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcm
JiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lCiAgICAgfSk7CiB9CiAKKyNpZiBFTkFC
TEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNo
bWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRh
LCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAg
IGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7
CisgICAgaWYgKCFzaGFyZWRNZW1vcnkpIHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGU7CisgICAgaWYgKCFzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRs
ZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKSB7CisgICAgICAg
IGNhbGxiYWNrKENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNo
bWVudChpZGVudGlmaWVyLCBmaWxlbmFtZSwgY29udGVudFR5cGUsIGRhdGEtPnNpemUoKSwgaGFu
ZGxlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDgxNjUyNTdlNWE1MmZmZjYzODBkNmRkM2Y1NWRkYjBm
M2QzZTI3OTAuLmQyZDQzMjQ3YzhiMWE3MTE1ZTZhZTIxNWJmYmQyZGE0NjU5MTc1NWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMjExLDYgKzEyMTEsMTAgQEAg
cHVibGljOgogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFt
ZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJ
ZCk7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQgaW5zZXJ0QXR0
YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4mJiBkYXRhLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU2YzljNGE4ZDJmNDQ2NmU1ZGVlNGJk
NTVhZDAwOTNhNjIzYmM3MDcuLmY5MjIzOTVmNjVlYTBmY2Y5MjNlOWQxMDU4Y2Y4NWFjZDk0MzQ0
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNzIwLDYgKzcyMCw4IEBACiAJCTJERkM3REJCMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJW
aWV3SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRGQzdEQjkxQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLmggKi87IH07CiAJCTJERkM3
REJDMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERkM3REJBMUJDQ0MxOTUwMEMxNTQ4QyAvKiBX
ZWJWaWV3SW1wbC5tbSAqLzsgfTsKIAkJMkRGRjdCNkYxREE0Q0ZBRjAwODE0NjE0IC8qIFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJERkY3QjZFMURBNENGQUYwMDgxNDYxNCAvKiBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMkU1Qzc3MEUxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNUM3NzBDMUZB
N0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggKi87IH07CisJCTJFNUM3NzBGMUZBN0Q0
MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNUM3NzBEMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRh
Y2htZW50LmNwcCAqLzsgfTsKIAkJMkU3QTk0NEExQkJEOTdDMzAwOTQ1NTQ3IC8qIF9XS0ZvY3Vz
ZWRFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU3QTk0NDkxQkJEOTVDNjAwOTQ1NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMDk5
OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5NzExNDZDNzU5QjAw
MjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi87IH07CiAJCTMxMDk5OUM3MTQ2
QzlFM0QwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAv
KiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLzsgfTsKQEAgLTIwODIsNiArMjA4NCw5IEBACiAJ
CUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjJGMTAwMTI4OUZD
RDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJRjAzNjk3ODgx
NUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBX
ZWJDb2xvclBpY2tlci5jcHAgKi87IH07CiAJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAvKiBX
S0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJRjQ0MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTkxMUZBNTkxMDcw
MDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxOTQxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFj
aG1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLzsgfTsKKwkJRjQ0
MjkxOTYxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MjkxOTUxRkE1OTQyQTAw
MkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oICovOyB9OwogCQlGNDRERkVCMjFFOUU3
NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0REZFQjAxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYklj
b25VdGlsaXRpZXMuaCAqLzsgfTsKIAkJRjQ0REZFQjMxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYklj
b25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSAqLzsg
fTsKIAkJRjQ5NkE0MzExRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ5NkE0
MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovOyB9OwpA
QCAtMzAxOSw2ICszMDI0LDggQEAKIAkJMkRGQzdEQjkxQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZp
ZXdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdJbXBsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERkM3REJBMUJDQ0MxOTUwMEMxNTQ4QyAv
KiBXZWJWaWV3SW1wbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdlYlZpZXdJbXBsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREZGN0I2RTFE
QTRDRkFGMDA4MTQ2MTQgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNUM3NzBDMUZBN0Q0MjkwMDU5MzJDMyAv
KiBBUElBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUF0dGFjaG1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU1Qzc3MEQxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0
dGFjaG1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJQXR0YWNobWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBfV0tG
b2N1c2VkRWxlbWVudEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRm9jdXNlZEVsZW1lbnRJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVC
OSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTcxMTQ2Qzc1
OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MjYsNiArNDUzMyw5IEBACiAJCUVDQkZDMURCMUU2QTRE
NjYwMDAzMDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS0F0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxOTMx
RkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBfV0tBdHRhY2htZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE5
NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDRERkVCMDFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJY29uVXRpbGl0aWVzLmg7IHBhdGggPSBpb3Mv
V2ViSWNvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVC
MTFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkljb25VdGlsaXRpZXMubW07IHBhdGggPSBpb3Mv
V2ViSWNvblV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NkE0
MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsgcGF0aCA9IGlvcy9EcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3NDYsNiAr
NTc1Niw5IEBACiAJCQkJMzdBNUUwMTIxOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVs
ZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2
YXRlZEVsZW1lbnRJbmZvLm1tICovLAogCQkJCTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmggKi8sCisJCQkJRjQ0MjkxOTExRkE1OTEw
NzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLywKKwkJCQlGNDQyOTE5MzFGQTU5MzExMDAy
Q0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLywKKwkJCQlGNDQyOTE5NTFGQTU5NDJBMDAyQ0M5
M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggKi8sCiAJCQkJOTlFNzE0QzExQzEyNDlFNjAw
NjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oICovLAogCQkJCTk5MEQyOEE3MUM2NDA0
QjAwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5oICovLAogCQkJCTk5MEQyOEFEMUM2
NTE5MDQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSAqLywKQEAgLTcxNDAsNiAr
NzE1Myw4IEBACiAJCQkJMzdDNEMwODMxODE0OUMyQTAwMzY4OEI5IC8qIENvY29hICovLAogCQkJ
CUJDOEE1MDEzMTE3NjVGNDUwMDc1NzU3MyAvKiBjcHAgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2
OTAwMzM3QkFCIC8qIG1hYyAqLywKKwkJCQkyRTVDNzcwRDFGQTdENDI5MDA1OTMyQzMgLyogQVBJ
QXR0YWNobWVudC5jcHAgKi8sCisJCQkJMkU1Qzc3MEMxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0
dGFjaG1lbnQuaCAqLywKIAkJCQk5OUM4MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21h
dGlvbkNsaWVudC5oICovLAogCQkJCTk5MEQyOEIzMUM2NTI2RDQwMDk4Njk3NyAvKiBBUElBdXRv
bWF0aW9uU2Vzc2lvbkNsaWVudC5oICovLAogCQkJCTdDODlEMkIxMUE2QjA2OEMwMDNBNUZERSAv
KiBBUElDb250ZW50UnVsZUxpc3QuY3BwICovLApAQCAtODQwMyw2ICs4NDE4LDggQEAKIAkJCWZp
bGVzID0gKAogCQkJCTM3QTVFMDE0MThCQkY5M0YwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3MzYxOEJCRkE0MzAwNTg4QUYyIC8q
IF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0
NDI5MTkyMUZBNTkxQzkwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGNDQyOTE5NjFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5OUU3MTRDNTFDMTI0QTA0MDA2NjVCM0EgLyogX1dLQXV0b21h
dGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTBEMjhBQjFDNjQyMEM2MDA5ODY5
NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Nzg4QUNC
MUY0MjFEREEwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCBp
biBIZWFkZXJzICovLApAQCAtODQ3Nyw2ICs4NDk0LDcgQEAKIAkJCQlBMTgyRDVCNTFCRTZCRDI1
MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdENzky
RDgxNzY3Q0NBMzAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzY0Njk3MDExREJFNjAzMDA2NDU1QjAgLyogQVBJQXJyYXkuaCBpbiBIZWFkZXJzICov
LAorCQkJCTJFNUM3NzBFMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OUM4MUQ1RDFDMjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwRDI4QzAxQzY1NTNGMTAwOTg2OTc3IC8qIEFQ
SUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNERDIwNjEy
NUU1QTJGMDA0NTE1RTYgLyogQVBJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDQzLDYg
KzEwMDYxLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9
ICgKIAkJCQkzN0E1RTAxMzE4QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudElu
Zm8ubW0gaW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE5NDFGQTU5MzExMDAyQ0M5M0UgLyogX1dL
QXR0YWNobWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5MEQyOEIyMUM2NTIwOTQwMDk4Njk3
NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5Nzg4QUND
MUY0MjFERTIwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQkxQTU3MDRGNzFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4
dE1lbnVFbGVtZW50SW5mby5tbSBpbiBTb3VyY2VzICovLApAQCAtMTAwNzUsNiArMTAwOTQsNyBA
QAogCQkJCUExODJENUI0MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTdENzkyRDYxNzY3Q0I2RTAwODgxQ0JFIC8qIEFjdGl2aXR5QXNz
ZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjQ2OTZGMTFEQkU2MDMwMDY0NTVCMCAv
KiBBUElBcnJheS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRTVDNzcwRjFGQTdENDI5MDA1OTMy
QzMgLyogQVBJQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzg5RDJCMzFBNkIw
NjhDMDAzQTVGREUgLyogQVBJQ29udGVudFJ1bGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDM0EwNkE3MUFBQjkwM0UwMDlENzRCQSAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Q0VGQTk2MjFBQzA5OTkzMDBCOTEwRkQgLyogQVBJQ29udGVu
dFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5ZGFhMjg3MjI1ZGFmYWMzNDBlNTg5
ZTY5MjhjN2IyNzFjN2EwZjQyLi5lYTE4NjYwMzVjMWQ2YTAxMDdlZjU2ZWFlNDdlYjE2NjM2YmZm
NDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMTYzLDYgKzE2Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vdXNl
RXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CkBAIC01NzU3LDQgKzU3
NTgsMTkgQEAgdm9pZCBXZWJQYWdlOjpzdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFu
dGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgY2FsbGJhY2sod2FzR3JhbnRlZCk7CiB9CiAK
KyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit2b2lkIFdlYlBhZ2U6Omluc2VydEF0
dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIHVpbnQ2NF90IGRhdGFMZW5ndGgs
IGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiBoYW5kbGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKK3sKKyAgICBpZiAoYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5k
bGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpKSB7CisgICAgICAgIGF1dG8m
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
KyAgICAgICAgYXV0byBkYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgY2hhciAqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIGRhdGFMZW5ndGgpOworICAgICAg
ICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBX
VEZNb3ZlKGRhdGEpLCBjb250ZW50VHlwZSk7CisgICAgfQorCisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2FsbGJhY2tJRCkpOworfQorCisjZW5kaWYgLy8g
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzNmZGUyODIyNDJk
M2IyNmYzZjJhZGQyMjU2YWEzZmQ1MzdjOTBhNi4uNjlkMjA4YTZhMWUxOTMyMmZhNWRiNzA0MDZi
NmI1YTNiNzBlNGRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtOTk4LDYgKzk5OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RG
OjpGdW5jdGlvbjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdG9yYWdlQWNj
ZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpOwogCisjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlv
bmFsPFN0cmluZz4gY29udGVudFR5cGUsIHVpbnQ2NF90IGRhdGFMZW5ndGgsIGNvbnN0IFNoYXJl
ZE1lbW9yeTo6SGFuZGxlJiwgQ2FsbGJhY2tJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggNDYxMDk4YjM1NDkyY2JmMGZiMGFkZGE5OWZiYWQwMmEwYjZlOTBkMy4uMjE2
YzU5ZDhmMzhlYmEzZGI5ZGY2MTIyOWVhYjYyZTcyOWMxZDEyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00ODQs
NCArNDg0LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVVJM
U2NoZW1lVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRf
dCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAogICAgIFN0
b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkK
KworI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgSW5zZXJ0QXR0YWNobWVudChT
dHJpbmcgaWRlbnRpZmllciwgU3RyaW5nIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Y29udGVudFR5cGUsIHVpbnQ2NF90IGRhdGFMZW5ndGgsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpI
YW5kbGUgZGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MGE4NTZm
YjVjMDc1NjYwNjY4YzVjYjFhOWE0NDBlNjc2MjI0ZGExLi4wZWU0MTY0NzRjZTNjMTcwMDExZjFj
NTQ5ZDk3ZjQ0MTE4Yzg2NDZjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0g
SW1wbGVtZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgYSBuZXcgQVBJIHRlc3Qgc3VpdGUgdG8g
ZXhlcmNpc2UgYXR0YWNobWVudCBlbGVtZW50IGluc2VydGlvbiBhbmQgbWFuaXB1bGF0aW9uLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0
dGFjaG1lbnRUZXN0cy5tbTogQWRkZWQuCisgICAgICAgICh3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFj
aG1lbnRzKToKKyAgICAgICAgKHRlc3RIVE1MRGF0YSk6CisgICAgICAgICh0ZXN0SW1hZ2VEYXRh
KToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVu
dFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlvbnM6XSk6CisgICAgICAgICgtW1Rl
c3RXS1dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpmb3JRdWVyeVNlbGVjdG9yOl0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTctMTAtMjggIE1pY2hhZWwgQ2F0YW56YXJv
ICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEJ1aWxkIGdzdC1wbHVn
aW5zLWJhc2Ugd2l0aG91dCBwYW5nbyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQzNjAxYWFlNWM4YTNiMTA5YWRmNTM3NzFjM2M5ZTc4OTc0MTcwMzUuLjVhOGZiNTNkNGE3OWUw
MzQ2YjNiMzIwOTRkZTMxZGVkMGQ4NDM5ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04
OSw2ICs4OSw3IEBACiAJCTJFMURGREYxMUQ0MkUxRTQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1z
ZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRGMDFENDJFMTQ0
MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXIt
ZW5kaW5nLmh0bWwgKi87IH07CiAJCTJFMjA1QkE0MUY1Mjc3NDYwMDU5NTJERCAvKiBBY2Nlc3Np
YmlsaXR5VGVzdHNJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRTIwNUJBMzFGNTI3NzQ2MDA1OTUyREQgLyogQWNjZXNzaWJpbGl0eVRlc3RzSU9T
Lm1tICovOyB9OwogCQkyRTU0RjQwRDFEN0JDODQyMDA5MjFBREYgLyogbGFyZ2UtdmlkZW8tbXV0
ZXMtb25wbGF5aW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU1NEY0MEMxRDdCQzgzOTAwOTIxQURGIC8qIGxhcmdlLXZpZGVvLW11
dGVzLW9ucGxheWluZy5odG1sICovOyB9OworCQkyRTVDNzcwNzFGQTcwMTM2MDA1OTMyQzMgLyog
V0tBdHRhY2htZW50VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRTVDNzcwNjFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMu
bW0gKi87IH07CiAJCTJFNjkxQUVBMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1
c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxh
cmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLzsgfTsKIAkJMkU2
OTFBRUIxRDc4QjUzNjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBz
LWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5
aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCTJFNjkxQUVEMUQ3OEI5MTAw
MDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9s
cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFNjkxQUVDMUQ3OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRl
ZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovOyB9OwpAQCAtMTE2OCw2ICsxMTY5LDcgQEAK
IAkJMkUxREZERjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5u
aW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUyMDVCQTMxRjUyNzc0NjAwNTk1
MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFj
Y2Vzc2liaWxpdHlUZXN0c0lPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU1
NEY0MEMxRDdCQzgzOTAwOTIxQURGIC8qIGxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWlu
Zy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU1Qzc3MDYxRkE3MDEzNjAw
NTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tB
dHRhY2htZW50VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjkxQUU4
MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRy
b2xzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBhdXNl
ZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkU2OTFBRTkxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVv
LWtlZXBzLWNvbnRyb2xzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2Ut
dmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJFNjkxQUVDMUQ3OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3Mt
cGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRy
b2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA3NCw2ICsyMDc2LDcg
QEAKIAkJCQk1MTcxNEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVh
bnVwLm1tICovLAogCQkJCTUxMjBDODNDMUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0
b3JlQ3VzdG9tUGF0aHMubW0gKi8sCiAJCQkJNUM5RTU2ODQxREY5MTQzRDAwQzlFRTMzIC8qIFdl
YnNpdGVQb2xpY2llcy5tbSAqLywKKwkJCQkyRTVDNzcwNjFGQTcwMTM2MDA1OTMyQzMgLyogV0tB
dHRhY2htZW50VGVzdHMubW0gKi8sCiAJCQkJMUY4MzU3MUExRDNGRkIwRTAwRTM5NjdCIC8qIFdL
QmFja0ZvcndhcmRMaXN0Lm1tICovLAogCQkJCTVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBX
S0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLywKIAkJCQkyRDgzOEIxRTFFRUYzQTVCMDA5Qjk4
MEUgLyogV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tICovLApAQCAtMjQ0MCw3ICsyNDQz
LDYgQEAKIAkJQkM5MDk2NDExMjU1NjE2MDAwMDgzNzU2IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDdFNDk5OTAxRjlFNTZBMTAwMkYx
RUYzIC8qIEdldFVzZXJNZWRpYVJlcHJvbXB0Lm1tICovLAogCQkJCTBGMTM5RTc0MUE0MjNBNDYw
MEY1OTBGNSAvKiBjb2NvYSAqLywKIAkJCQlDMEM1RDNCQjE0NTk4QjZGMDBBODAyQTYgLyogbWFj
ICovLAogCQkJCUJDOTA5NzdCMTI1NTcxQUUwMDA4Mzc1NiAvKiBSZXNvdXJjZXMgKi8sCkBAIC0y
NDc4LDYgKzI0ODAsNyBAQAogCQkJCUY2NjBBQTBDMTVBNUYwNjEwMDNBMTI0MyAvKiBHZXRJbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAgKi8sCiAJCQkJRjY2
MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25V
c2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAgKi8sCiAJCQkJMDdDRTFDRjIxRjA2QTdFMDAwQkY4
OUY1IC8qIEdldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0gKi8sCisJCQkJMDdFNDk5OTAxRjlFNTZB
MTAwMkYxRUYzIC8qIEdldFVzZXJNZWRpYVJlcHJvbXB0Lm1tICovLAogCQkJCTRCRkRGRkE4MTMx
NDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi8sCiAJCQkJNEJG
REZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5j
cHAgKi8sCiAJCQkJQkM1NzVBQUMxMjZFODNCOTAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlQmFz
aWMuY3BwICovLApAQCAtMzI3Nyw3ICszMjgwLDYgQEAKIAkJCQk0NjM5N0I5NTFEQzJDODUwMDA5
QTc4QUUgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUJDMUE0MTFBN0Uw
MDQ0N0M0QyAvKiBET01Ob2RlRnJvbUpTT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFQkQxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTVJhbmdlT2ZTdHJpbmcubW0gaW4gU291cmNlcyAq
LywKLQkJCQkwN0U0OTk5MTFGOUU1NkRGMDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFQzFBNDExQUU2MDA0NDdDNEMgLyogRE9NV2lu
ZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRUQxQTQxMUFF
NjAwNDQ3QzRDIC8qIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdGMjMxQTQxMUFGNjAwNDQ3QzRDIC8qIERvd25sb2FkLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC0zMzI0LDYgKzMzMjYsNyBAQAogCQkJCTdDQ0U3RUY5MUE0MTFBRTYwMDQ0N0M0QyAv
KiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VFMjFBNDExQTlBMDA0NDdDNEMgLyogR2V0UElEQWZ0ZXJB
Ym9ydGVkUHJvY2Vzc0xhdW5jaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwN0NFMUNGMzFGMDZB
N0UwMDBCRjg5RjUgLyogR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTA3RTQ5OTkxMUY5RTU2REYwMDJGMUVGMyAvKiBHZXRVc2VyTWVkaWFSZXByb21wdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTMxNkJEQkFDMUU3MjA3RjEwMERFMEQ1QSAvKiBHUFVCdWZmZXIu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTUyMzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29t
bWFuZFF1ZXVlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2MkFFOUMxRTZGMkZGNTAwMEU0REJD
IC8qIEdQVURldmljZS5tbSBpbiBTb3VyY2VzICovLApAQCAtMzUyMSw2ICszNTI0LDcgQEAKIAkJ
CQk3Q0NFN0YxQzFBNDExQUU2MDA0NDdDNEMgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VEODFBNDExQTdFMDA0NDdDNEMgLyogV2lsbFNlbmRTdWJt
aXRFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQ5MUE0MTFBN0UwMDQ0N0M0QyAv
KiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJFNUM3
NzA3MUZBNzAxMzYwMDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTFGODM1NzFCMUQzRkZCMjMwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjJFMUE0MTFCMTAwMDQ0N0M0QyAvKiBXS0Jyb3dzaW5n
Q29udGV4dEdyb3VwVGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjJGMUE0MTFCMTAw
MDQ0N0M0QyAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tBdHRhY2htZW50VGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLQXR0YWNobWVudFRlc3RzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1OTk2MmZhMTc3ZGUwODZiMWQ3
YjdkNTk1MDk2MTQzYWU2MWRlMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tCkBAIC0wLDAgKzEsOTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9X
ZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXRQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitzdGF0aWMgUmV0YWluUHRyPFRl
c3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKQoreworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gX3NldEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDpZ
RVNdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPjwvYm9keT48c2NyaXB0PmRvY3VtZW50LmJv
ZHkuZm9jdXMoKTs8L3NjcmlwdD4iXTsKKworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitzdGF0
aWMgTlNEYXRhICp0ZXN0SFRNTERhdGEoKQoreworICAgIHJldHVybiBbQCI8YSBocmVmPScjJz5U
aGlzIGlzIHNvbWUgSFRNTCBkYXRhPC9hPiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddOworfQorCitzdGF0aWMgTlNEYXRhICp0ZXN0SW1hZ2VEYXRhKCkKK3sKKyAgICBO
U1VSTCAqdXJsID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24i
IHdpdGhFeHRlbnNpb246QCJwbmciIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3Vy
Y2VzIl07CisgICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOnVybF07Cit9
CisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0V0tXZWJWaWV3IChBdHRhY2htZW50VGVzdGluZykKKwor
LSAoX1dLQXR0YWNobWVudCAqKXN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVu
YW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRU
eXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRp
b25zICopb3B0aW9ucworeworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgX1dL
QXR0YWNobWVudCAqYXR0YWNobWVudCA9IFtzZWxmIF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVu
YW1lOmZpbGVuYW1lIGNvbnRlbnRUeXBlOmNvbnRlbnRUeXBlIGRhdGE6ZGF0YSBvcHRpb25zOm9w
dGlvbnMgY29tcGxldGlvbjpeKEJPT0wpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICByZXR1cm4gYXR0YWNo
bWVudDsKK30KKworLSAoTlNTdHJpbmcgKil2YWx1ZU9mQXR0cmlidXRlOihOU1N0cmluZyAqKWF0
dHJpYnV0ZU5hbWUgZm9yUXVlcnlTZWxlY3RvcjooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yCit7
CisgICAgcmV0dXJuIFtzZWxmIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6W05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCclQCcpLmdldEF0dHJp
YnV0ZSgnJUAnKSIsIHF1ZXJ5U2VsZWN0b3IsIGF0dHJpYnV0ZU5hbWVdXTsKK30KKworQGVuZAor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0
dGFjaG1lbnRFbGVtZW50SW5zZXJ0aW9uKQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdG
b3JUZXN0aW5nQXR0YWNobWVudHMoKTsKKworICAgIC8vIFVzZSB0aGUgZ2l2ZW4gY29udGVudCB0
eXBlIGZvciB0aGUgYXR0YWNobWVudCBlbGVtZW50J3MgdHlwZS4KKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImZvbyIgY29udGVudFR5cGU6
QCJ0ZXh0L2h0bWwiIGRhdGE6dGVzdEhUTUxEYXRhKCkgb3B0aW9uczpuaWxdOworICAgIEVYUEVD
VF9XS19TVFJFUShAImZvbyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9y
UXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAidGV4
dC9odG1sIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0
b3I6QCJhdHRhY2htZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIjM4IGJ5dGVzIiwgW3dl
YlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInN1YnRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0
YWNobWVudCJdKTsKKworICAgIC8vIFNpbmNlIG5vIGNvbnRlbnQgdHlwZSBpcyBleHBsaWNpdGx5
IHNwZWNpZmllZCwgY29tcHV0ZSBpdCBmcm9tIHRoZSBmaWxlIGV4dGVuc2lvbi4KKyAgICBbd2Vi
VmlldyBfZXhlY3V0ZUVkaXRDb21tYW5kOkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbCBj
b21wbGV0aW9uOm5pbF07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1l
bnRXaXRoRmlsZW5hbWU6QCJiYXIucG5nIiBjb250ZW50VHlwZTpuaWwgZGF0YTp0ZXN0SW1hZ2VE
YXRhKCkgb3B0aW9uczpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUShAImJhci5wbmciLCBbd2Vi
VmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2ht
ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUShAImltYWdlL3BuZyIsIFt3ZWJWaWV3IHZhbHVl
T2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoQCIzNyBLQiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJz
dWJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325405</attachid>
            <date>2017-10-30 18:39:10 -0700</date>
            <delta_ts>2017-10-30 19:08:18 -0700</delta_ts>
            <desc>Fix 32-bit Mac build (v3)</desc>
            <filename>bug-179013-20171030183910.patch</filename>
            <type>text/plain</type>
            <size>73954</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMzAwYmI1YmU2NzAwYzg1Mzk2N2Q1YjQ1YmFlNTkw
ODYzM2FlOWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uMWMzMmQzZTlhNTA4M2Q2NDkzNGMzMTAyNGU0ODBjZWYyZmEwOTY2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvRmlsZVNpemVGb3JtYXR0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGZpbGVTaXplRGVz
Y3JpcHRpb24pOgorICAgICAgICAqIHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTogQWRkZWQuCisgICAg
ICAgIChmaWxlU2l6ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL05TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaDogQWRkZWQuCisKIDIwMTctMTAtMjcgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBpT1Mgc3BlY2lmaWMgc291
cmNlcyB0byB1bmlmaWVkIHNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjQxZmQ0NTNkMmU4YTI0ZmU3ZWZk
ZTg2NGE4MTY3MWYwOWY0MTc0Mi4uMmU3YzI5MmViMjU4NjM0MmFlNWRhZDA4NGM4ODlmNmEwYTEz
MDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxNy0xMC0zMCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0
XSBJbXBsZW1lbnQgV0tXZWJWaWV3IFNQSSBmb3IgaW5zZXJ0aW5nIGF0dGFjaG1lbnQgZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAx
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyNDk2Njg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuYXRpdmUgU1BJIHRvIGluc2VydCBh
dHRhY2htZW50IGVsZW1lbnRzIGdpdmVuIGEgZmlsZW5hbWUsIGFuIG9wdGlvbmFsIE1JTUUgdHlw
ZSwgYW5kIGEgZGF0YSBibG9iLiBTZWUKKyAgICAgICAgY2hhbmdlLWJ5LWNoYW5nZSBjb21tZW50
cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuIENvdmVyZWQgYnkgYSBuZXcgQVBJIHRlc3QuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRNZW1vcnlDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKToKKworICAgICAgICBJbnRyb2R1Y2UgYSBjb252ZW5pZW5jZSBtZXRob2QgdG8gY3Jl
YXRlIGEgU2hhcmVkTWVtb3J5IHVzaW5nIGEgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogUGxh
dGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGUpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6fkF0dGFjaG1lbnQpOgorCisgICAgICAgIEludHJvZHVjZSBBUEk6
OkF0dGFjaG1lbnQsIHdoaWNoIHJlcHJlc2VudHMgYSBwbGF0Zm9ybS1hZ25vc3RpYyBBdHRhY2ht
ZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlv
bnM6Y29tcGxldGlvbjpdKToKKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGluc2VydGluZyBh
IG5ldyBhdHRhY2htZW50IGVsZW1lbnQuIENhbGxzIG91dCB0byBXZWJQYWdlUHJveHkgdG8gaW5z
ZXJ0IHRoZSBhdHRhY2htZW50IGZyb20gdGhlCisgICAgICAgIGdpdmVuIGRhdGEgYmxvYiwgYW5k
IGNyZWF0ZXMgYSBuZXcgQVBJLW9iamVjdC1iYWNrZWQgX1dLQXR0YWNobWVudC4KKworICAgICAg
ICAoLVtXS1dlYlZpZXcgX2V4ZWN1dGVFZGl0Q29tbWFuZDphcmd1bWVudDpjb21wbGV0aW9uOl0p
OgorCisgICAgICAgIFN1cHBvcnQgcGFzc2luZyBpbiBhIG5pbCBjb21wbGV0aW9uIGJsb2NrLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaC4KKworICAgICAgICBJbnRyb2R1Y2VzIF9X
S0F0dGFjaG1lbnQsIGFuIE9iamVjdGl2ZSBDIHdyYXBwZXIgYXJvdW5kIHRoZSBBUEk6OkF0dGFj
aG1lbnQuCisKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBfYXBpT2JqZWN0XSk6CisgICAgICAg
ICgtW19XS0F0dGFjaG1lbnQgaXNFcXVhbDpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCB1
bmlxdWVJZGVudGlmaWVyXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgaGFzaF0pOgorCisg
ICAgICAgIEFkZCBfV0tBdHRhY2htZW50LCBhIFdlYktpdCBTUEkgb2JqZWN0IHRoYXQgd3JhcHMg
YW4gYXR0YWNobWVudCBlbGVtZW50IHVuaXF1ZSBpZGVudGlmaWVyLiBBbHNvLCBhbGxvdworICAg
ICAgICBfV0tBdHRhY2htZW50IHRvIGJlIHVzZWQgYXMgYSBoYXNoYWJsZSBOU0RpY3Rpb25hcnkg
a2V5LgorCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgZGVzY3JpcHRpb25dKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAg
ICAoQVBJOjp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KToKKworICAg
ICAgICBJbXBsZW1lbnQgSVBDIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbiBhdHRhY2htZW50Lgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0yNyAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtTZXR0aW5nc10gR2VuZXJhdGUgbW9y
ZSBvZiB0aGUgV2ViS2l0IHByZWZlcmVuY2VzIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNTFhZGIwMDgxMDBjMmZmZWNl
MjQyZTg4YWZmNTg1ODVkZDc5ODBlLi4zN2YxNWU5NzVlMzcyNmI0OTIyYmNmZjdmNDRmMzk4MjNk
N2VjZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDEsNiArMTQxLDEwIEBACiAJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRC
MSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBQjZFNjMxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNs
ZWVwTGlzdGVuZXJNYWMubW0gKi87IH07CiAJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBT
ZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTNDNjZDREExRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi87IH07CiAJCUEz
QzY2Q0REMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RCMUY0NjJENkEwMDlFNkVFOSAvKiBT
ZXNzaW9uSUQuaCAqLzsgfTsKKwkJRjQ0MjkxNUUxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmlsZVNp
emVGb3JtYXR0ZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggKi87IH07CisJCUY0NDI5MTYwMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjkx
NUYxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxNjQxRkE1MjY3MDAwMkND
OTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZv
cm1hdHRlci5jcHAgKi87IH07CisJCUY0NDI5MTY4MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6
ZUZvcm1hdHRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29j
b2EubW0gKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTI4Myw2ICsyODcsMTAgQEAKIAkJ
QTNDNjZDREExRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXNzaW9uSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlc3Npb25JRC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjE0N0E0QTFFRkQwQUE2MDAwNTZGQTUgLyogQ29weVBBTEhlYWRlcnMu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29weVBBTEhlYWRlcnMu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTVEMUZBNTI0NzMw
MDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0Mjkx
NUYxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbGVTaXplRm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5
MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaWxlU2l6ZUZvcm1hdHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMzYyLDYg
KzM3MCw3IEBACiAJCQkJMEMyREExMzExRjNCRUI0OTAwREJDMzE3IC8qIE5TQ29sb3JTUEkuaCAq
LywKIAkJCQkwQzJEQTEzMjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAqLywK
IAkJCQkwQzJEQTEzMzFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICovLAor
CQkJCUY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmgg
Ki8sCiAJCQkJMEMyREExMzQxRjNCRUI0OTAwREJDMzE3IC8qIE5TU3RyaW5nU1BJLmggKi8sCiAJ
CQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91Y2hCYXJTUEkuaCAqLywKIAkJCQkw
QzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCkBAIC00
NzEsNiArNDgwLDggQEAKIAkJCQlBMzc4OEU5RjFGMDVCN0NFMDA2Nzk0MjUgLyogc3lzdGVtICov
LAogCQkJCUEzMEQ0MTFEMUYwREQwQUMwMEI3MTk1NCAvKiB0ZXh0ICovLAogCQkJCTBDMkQ5RTcy
MUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQlGNDQyOTE2MjFGQTUy
NjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAorCQkJCUY0NDI5MTVGMUZB
NTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAogCQkJCUEzOURFNzREMUY3
QzQ0M0MwMDdCQ0IwMCAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLywKIAkJCQkwNzA4QUMzMjFG
NEM4NzRBMDAxRjc4OEYgLyogTG9nZ2VyLmggKi8sCiAJCQkJMDczNzdBREIxRjU3NzdENzAwMjdG
MTZEIC8qIExvZ2dlckhlbHBlci5oICovLApAQCAtNTE3LDYgKzUyOCw3IEBACiAJCTFDNDg3NkRF
MUY4RDgzMTMwMENDRUVCRCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9y
bWF0dGVyQ29jb2EubW0gKi8sCiAJCQkJMUM0ODc2REYxRjhEODM3NTAwQ0NFRUJEIC8qIExvZ2dp
bmdDb2NvYS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CkBAIC02MTIsNiArNjI0LDcg
QEAKIAkJCQkwQzVBRjkxQTFGNDNBNEM3MDAyRUFDMDIgLyogRGF0YURldGVjdG9yc1VJU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNl
YXJjaFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEOUU3MzFFRUY1QUY2MDBEQkMz
MTcgLyogRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE2MDFGQTUyNjFF
MDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDI2
NTg3MUY1Njc0NjEwMEI0Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwQzVBRjkxQjFGNDNBNEM3MDAyRUFDMDIgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTEwMjY1OEUxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEku
aCBpbiBIZWFkZXJzICovLApAQCAtNjQ3LDYgKzY2MCw3IEBACiAJCQkJMEM3Nzg1OEYxRjQ1MTMw
RjAwRjRFQkI2IC8qIE5TRXZlbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTRFMUYz
QkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMy
REExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY0NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MDFGNDUxMzBGMDBGNEVCQjYgLyogTlNGb250
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGRTFGNThBNDMzMDA0NzcyQUMgLyogTlNH
cmFwaGljc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTExRjQ1MTMwRjAwRjRFQkI2
IC8qIE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCBpbiBIZWFkZXJzICov
LApAQCAtNzg0LDYgKzc5OCw4IEBACiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkzIC8qIENv
cmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlEMDU2MUUzMUM0NjUw
MDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVG
b3JtYXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0MjkxNjgxRkE1MjcwNTAwMkNDOTNF
IC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMzBENDEy
MjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMw
RDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvRmlsZVNpemVGb3JtYXR0ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUzZmIyMjMzMjI5NDI4M2Y0NDdhMDU1MTQ5NjZkNjQ3N2M3ZWRjNmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmNwcApAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZpbGVTaXplRm9ybWF0dGVyLmgiCisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK1N0cmluZyBm
aWxlU2l6ZURlc2NyaXB0aW9uKHVpbnQ2NF90IHNpemUpCit7CisgICAgLy8gRklYTUU6IFRoZXNl
IHN0cmluZ3Mgc2hvdWxkIGJlIGxvY2FsaXplZCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBicmlu
Z2luZyBMb2NhbGl6ZWRTdHJpbmdzIGludG8gUEFMLgorICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAxOT4gZm9yIG1vcmUgZGV0YWlscy4KKyAg
ICBpZiAoc2l6ZSA8IDEwMDApCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXR1IGJ5
dGVzIiwgc2l6ZSk7CisgICAgaWYgKHNpemUgPCAxMDAwMDAwKQorICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIiUuMWYgS0IiLCBzaXplIC8gMTAwMC4pOworICAgIGlmIChzaXplIDwgMTAw
MDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIE1CIiwgc2l6ZSAv
ICgxMDAwMDAwLikpOworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJS4xZiBHQiIsIHNpemUg
LyAoMTAwMDAwMDAwMC4pKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0Zp
bGVTaXplRm9ybWF0dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNhZjBjNjk4MDk4ZDVlOGZjNGM0YWE1NmI0
OTMyZDc2Y2M2YjBhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
RmlsZVNpemVGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitQQUxfRVhQT1JUIFN0
cmluZyBmaWxlU2l6ZURlc2NyaXB0aW9uKHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NzA5NWJhZjU0MGNlNjlkMGQ2MTk0ZWE5YTVhN2EyZjkwYjZiYmFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9GaWxlU2l6ZUZvcm1hdHRlckNvY29h
Lm1tCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRmlsZVNpemVGb3JtYXR0ZXIuaCIKKworI2ltcG9ydCAiTlNGaWxlU2l6ZUZvcm1h
dHRlclNQSS5oIgorCitTdHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplKQor
eworICAgIHJldHVybiBOU0xvY2FsaXplZEZpbGVTaXplRGVzY3JpcHRpb24oc2l6ZSwgMCwgMCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVT
aXplRm9ybWF0dGVyU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0Zp
bGVTaXplRm9ybWF0dGVyU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU1NzZmZDM0YzE1MGRlZjEwNWZmYjRk
OWYyYWU3YjQwMjNmZGY2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL05TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaApAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TRmlsZVNpemVGb3JtYXR0ZXIuaD4KKworI2Vsc2UKKwor
dHlwZWRlZiB1aW50NjRfdCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9uczsKK2V4dGVybiAiQyIg
TlNTdHJpbmcgKk5TTG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplLCB1
aW50NjRfdCBtYXhpbXVtRGlzcGxheWVkVmFsdWUsIE5TRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25z
KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYmUzZGE4ZWUyZjc1
ZWJlMmU3NjdiYmE2ZTc3N2YwOTE1Zjk4ODIyNS4uZTY4N2EyNzU1ZmE5ZWQxNWYwZDdkNDU3N2Jh
YmU3YTZmYzAwNDRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDcsMTIgKzQ3
LDE0IEBACiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRl
ICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCkBA
IC05OCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVk
ZSA8cGFsL0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8cGFsL3N5c3RlbS9Tb3VuZC5o
PgogI2luY2x1ZGUgPHBhbC90ZXh0L0tpbGxSaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
Q2hhcmFjdGVyTmFtZXMuaD4KQEAgLTM3MjgsNiArMzczMSwzOSBAQCBSZWZQdHI8UmFuZ2U+IEVk
aXRvcjo6cmFuZ2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0
JiByZXN1bAogICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2Us
IHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmls
ZXBhdGgsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIWNv
bnRlbnRUeXBlKQorICAgICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmls
ZShmaWxlbmFtZSk7CisgICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIGZp
bGVuYW1lLCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShmaWxlcGF0aCkpOworfQorCit2b2lk
IEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGNvbnRlbnRUeXBlKQoreworICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAg
IGNvbnRlbnRUeXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKKyAgICBp
bnNlcnRBdHRhY2htZW50RnJvbUZpbGUoaWRlbnRpZmllciwgZmlsZW5hbWUsICpjb250ZW50VHlw
ZSwgRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShkYXRhLCAqY29udGVudFR5cGUpLCBmaWxlbmFt
ZSkpOworfQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgUmVmPEZpbGU+JiYgZmlsZSkKK3sKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRv
Y3VtZW50KCksIGlkZW50aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OnRpdGxlQXR0ciwgZmlsZW5hbWUpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OnN1YnRpdGxlQXR0ciwgZmlsZVNpemVEZXNjcmlwdGlvbihmaWxlLT5zaXpl
KCkpKTsKKyAgICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwg
Y29udGVudFR5cGUpOworICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRlbnRp
Zmllcik7CisgICAgYXR0YWNobWVudC0+c2V0RmlsZShmaWxlLnB0cigpKTsKKworICAgIGF1dG8g
ZnJhZ21lbnRUb0luc2VydCA9IGRvY3VtZW50KCkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwor
ICAgIGZyYWdtZW50VG9JbnNlcnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQuZ2V0KCkpOworCisg
ICAgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChmcmFnbWVudFRvSW5zZXJ0LmdldCgpLCBm
YWxzZSwgZmFsc2UsIHRydWUpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKwogdm9pZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleHRDaGVja2lu
Z1Jlc3VsdCBhY2NlcHRlZENhbmRpZGF0ZSkKIHsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKaW5kZXggYWE4ODVmZjU5OWMxYTA3NWQzZGEwZDA3Y2RmMjI1ODUxNmFlYTM3
ZC4uZmRmYTNlOGE4MDljNWFiNTgxODYzNTY3ZDVlOGU5MGJlMjAzZDgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCkBAIC02Myw3ICs2Myw5IEBAIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3Mg
RWRpdENvbW1hbmRDb21wb3NpdGlvbjsKIGNsYXNzIEVkaXRvckNsaWVudDsKIGNsYXNzIEVkaXRv
ckludGVybmFsQ29tbWFuZDsKK2NsYXNzIEZpbGU7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxB
dHRhY2htZW50RWxlbWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlc3Vs
dDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CkBAIC00OTgsOSArNTAwLDE4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oYm9vbCBiKSB7IG1faXNHZXR0
aW5nRGljdGlvbmFyeVBvcHVwSW5mbyA9IGI7IH0KICAgICBib29sIGlzR2V0dGluZ0RpY3Rpb25h
cnlQb3B1cEluZm8oKSBjb25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cElu
Zm87IH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGNvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBjb250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8RmlsZT4mJik7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFu
Z2UqKSBjb25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBhc3Rl
Ym9hcmQmKTsKICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJv
YXJkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAK
aW5kZXggYTZlZDk2MTU2YWNkYTcyMzMzYmIzNmZhN2I1ZjUzYWFmYzlhMDI5Yi4uM2JmZjBjN2Jm
OWMxOGZmMWU4YjYzY2NkOGQ5ZGFiNjBiYzE2MzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjgsMjAgKzI4LDI5IEBACiAKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVk
ZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpI
VE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBIVE1MRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1fdW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVy
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGF0dGFjaG1lbnRUYWcpKTsKIH0KIAorSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogSFRNTEF0dGFjaG1lbnRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCit7Cit9
CisKIEhUTUxBdHRhY2htZW50RWxlbWVudDo6fkhUTUxBdHRhY2htZW50RWxlbWVudCgpID0gZGVm
YXVsdDsKIAogUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQpAQCAtNDksNiArNTgsMTEgQEAgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFj
aG1lbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGEKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBIVE1MQXR0YWNobWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAorUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRN
TEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBpZGVudGlmaWVyKSk7Cit9CisK
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJBdHRhY2htZW50PigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmgKaW5kZXggOWFjNmI2YThiMTc4NGQwMTY4ZWQwM2EwZTk5NDMzZTM4NjQ4MzllMi4u
M2E0NGE1ZjExOTljNzIwOWMzYjFhZTQ5YmVmYmI4MTYxMWE2MDMzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zNywxMCArMzcsMTQgQEAgY2xh
c3MgUmVuZGVyQXR0YWNobWVudDsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQXR0YWNo
bWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAg
ICBzdGF0aWMgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBGaWxlKiBmaWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWxlKEZpbGUqKTsK
IAorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1bmlxdWVJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRVbmlxdWVJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgeyBtX3VuaXF1ZUlkZW50aWZpZXIgPSBpZGVudGlm
aWVyOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxlKCkgY29u
c3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlKCkgY29uc3Q7CiAKQEAgLTQ4LDYgKzUyLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxBdHRhY2htZW50RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsK
ICAgICB2aXJ0dWFsIH5IVE1MQXR0YWNobWVudEVsZW1lbnQoKTsKIAogICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CkBAIC02Myw2ICs2OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgZmluYWw7CiAgICAgCiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKKyAgICBTdHJp
bmcgbV91bmlxdWVJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggYzcyZTBkNGIwYWI4NzIwNmJjZjUy
NzU1Mzc5OWRjM2JlZmNiYTFjMC4uMDE3YjQzNGVlNGE5MmRmN2FiOWQ1YzlmMjc3N2Q2ZmRjY2E0
ZTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCkBAIC00MCw2ICs0MSwxMCBAQCBjbGFzcyBE
ZWNvZGVyOwogY2xhc3MgRW5jb2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
U2hhcmVkQnVmZmVyOworfQorCiAjaWYgT1MoREFSV0lOKQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTg3LDYgKzkyLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7CiAgICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IGNyZWF0ZSh2b2lkKiwgc2l6ZV90LCBQcm90ZWN0aW9uKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFu
ZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVE
ZXNjcmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hh
cmVkTWVtb3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRN
ZW1vcnlDb2NvYS5jcHAKaW5kZXggYWVhNzk4NTA0NDlhOGI4OTc5OGU5MDM2ZDdiMGU1MzAxODAz
YWE1NC4uMzk4ZDU1ZTdjMTk0YWM2OWY0ZGI3YWMwZjJjOWJiYTE2M2UwYTE0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFjaFBvcnQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgogI2luY2x1ZGUg
PG1hY2gvbWFjaF9wb3J0Lmg+CiAjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KQEAgLTE1Niw2ICsx
NTcsMTMgQEAgc3RhdGljIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgbWFrZU1lbW9yeUVudHJ5KHNp
emVfdCBzaXplLCB2bV9vZmZzZXRfdCBvZmZzZXQsIFMKICAgICByZXR1cm4gV2ViQ29yZTo6TWFj
aFNlbmRSaWdodDo6YWRvcHQocG9ydCk7CiB9CiAKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJl
ZE1lbW9yeTo6Y3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorewor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZm
ZXItPnNpemUoKSk7CisgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZm
ZXI7Cit9CisKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQq
IGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgQVNTRVJU
KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMGU2ZjY2OTY3YWUwZTEwZmIxNDZh
N2I3ZTY1ODAzNDRlOGNmZDEzMC4uNzg5ZjM4NDVmNmRlYjY0NmVlZTcwNTc5M2EyZDhhNmRjNjlj
YWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yMjIsNiArMjIyLDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXaW5kb3dGZWF0dXJlcy5tbQog
ICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KKyAgICBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KICAgICBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAppbmRleCA5NjI4NjRmNzI3OTM5YTMxODU1YmE0NDRkZjcxOWQ2ZjYxZTJkYzE4Li5mNmY5
OWZhZGY0M2UzNGI3MjNlOGFkYjZjOTQ1NmRhOTE2N2Y1YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAg
ICAgIC8vIFVJUHJvY2VzcyB0eXBlcwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwK
KyAgICAgICAgQXR0YWNobWVudCwKICAgICAgICAgQXV0b21hdGlvblNlc3Npb24sCiAgICAgICAg
IEJhY2tGb3J3YXJkTGlzdCwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0SXRlbSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IDRhMzU4MDk3
YzdjNDI4NTJmZTZhNTBiZDFhMDMwNDAzNDRjZjczYjkuLjE4YmYwYzVkOGE2M2FmZTM5MDMyZmI0
NDdiNTIyNWU1MjE4NzZiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dlYktpdFByaXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLQXR0YWNobWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0VsZW1lbnRB
Y3Rpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGb2N1c2VkRWxlbWVudEluZm8uaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tGb3JtSW5wdXRTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdiMzE0MDcxZWExNWNlNmVj
OTA4NzhiNGVjYjI5ZmZlZWYwZmFlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgQVBJIHsKKworUmVm
PEF0dGFjaG1lbnQ+IEF0dGFjaG1lbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYktpdDo6V2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEF0dGFjaG1lbnQoaWRlbnRpZmllciwgd2ViUGFnZSkpOworfQorCitBdHRhY2htZW50OjpB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHdlYlBhZ2UpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fd2ViUGFn
ZSh3ZWJQYWdlLmNyZWF0ZVdlYWtQdHIoKSkKK3sKK30KKworQXR0YWNobWVudDo6fkF0dGFjaG1l
bnQoKQoreworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1l
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mY2NhNmI0ODEzNmZlNjFjNzI3M2RlYjA3YTcyZWE3NjVlNzU0ODBk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVk
ZSA8V2ViS2l0L1dlYlBhZ2VQcm94eS5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3Mg
V2ViUGFnZVByb3h5OworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgQXR0YWNobWVudCBm
aW5hbCA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6QXR0YWNobWVudD4geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8QXR0YWNobWVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0dWFsIH5BdHRhY2htZW50
KCk7CisKKyAgICBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKKworICAgIFN0cmluZyBt
X2lkZW50aWZpZXI7CisgICAgV2Vha1B0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV93ZWJQYWdl
OworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAxNDY4MTMxZWExYjQwMGUwMzg4NWJmNjU3MGNj
N2ZhYWViNDBhMjA0Li5lZGFmNGQ4OWVjNzY5NWQ1NGFiNTEzNDAxMzYyNmQ4ZTcwZTlkMTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTk0LDExICs5NCwxMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvSlNET01CaW5kaW5nLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxp
Y2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9T
ZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdl
YkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaWV3cG9ydEFyZ3Vt
ZW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Xcml0aW5nTW9kZS5oPgpAQCAtMTEwLDYgKzExMiw3
IEBACiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
ICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBv
cnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJl
YW0uaD4KIApAQCAtNDE2OCw2ICs0MTcxLDIzIEBAIC0gKHZvaWQpX2Nsb3NlCiAgICAgX3BhZ2Ut
PmNsb3NlKCk7CiB9CiAKKy0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhG
aWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250
ZW50VHlwZSBkYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5
T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBhdXRv
IGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisKKyAgICBfcGFnZS0+
aW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBmaWxlbmFtZSwgY29udGVudFR5cGUubGVuZ3Ro
ID8gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHsgY29udGVudFR5cGUgfSA6IHN0ZDo6bnVsbG9wdCwg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSksIFtjYXB0dXJlZEhhbmRsZXIgPSBt
YWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgICAgIGlmIChjYXB0dXJlZEhhbmRsZXIpCisgICAgICAgICAgICBj
YXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KTsKKyAgICB9KTsKKworICAgIGF1dG8gYXR0YWNobWVudCA9IEFQSTo6QXR0YWNobWVudDo6Y3Jl
YXRlKEFQSTo6U3RyaW5nOjpjcmVhdGUoaWRlbnRpZmllciksICpfcGFnZSk7CisgICAgcmV0dXJu
IFt3cmFwcGVyKGF0dGFjaG1lbnQpIGF1dG9yZWxlYXNlXTsKKyNlbHNlCisgICAgcmV0dXJuIG5p
bDsKKyNlbmRpZgorfQorCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNlckdl
c3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBbc2VsZiBfZXZh
bHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVyZTpOTyBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CkBAIC02MDMzLDcgKzYwNTMsOCBAQCAt
ICh2b2lkKV9kaXNhYmxlQmFja0ZvcndhcmRTbmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nCiAt
ICh2b2lkKV9leGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICopY29tbWFuZCBhcmd1bWVudDoo
TlNTdHJpbmcgKilhcmd1bWVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MKSljb21wbGV0aW9u
CiB7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kLCBhcmd1bWVudCwgW2Nh
cHR1cmVkQ29tcGxldGlvbkJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24pXShXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9u
QmxvY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKKyAgICAg
ICAgaWYgKGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKQorICAgICAgICAgICAgY2FwdHVyZWRDb21w
bGV0aW9uQmxvY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsK
ICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCBkMmQ2ZWI4ODU2ZGZiNWZjYzRkMDQxM2Y5MDYy
YTEyN2Q5NTI1NTllLi4xMmVhNmY1OWMzZjMwZTNkODhjZjNjYjYwZTVmODI2NzA2YzBmZGI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oIgorI2ltcG9y
dCAiX1dLQXR0YWNobWVudEludGVybmFsLmgiCiAjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDVlZDJiMmMxYjFhZjE3NTY4Mzk4
NzNhNDUzYjc4M2EzMDFjZDdiYWUuLmM5ZmQ1NDBiMDZjZWUyYjYyNTAxNDY4OGJlYzYxMDEwZjZj
MDZhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAK
ICNpbXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS0F0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGaW5kT3B0aW9ucy5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS0xheW91dE1vZGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tPdmVy
bGF5U2Nyb2xsYmFyU3R5bGUuaD4KQEAgLTE3Nyw2ICsxNzgsOCBAQCB0eXBlZGVmIE5TX09QVElP
TlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0
dGVyPV9zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6KSBCT09MIF9iYWNrZ3JvdW5kRXh0
ZW5kc0JleW9uZFBhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyg4
LjApKTsKIAorLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1l
OihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBl
IGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25z
ICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAvLyBERVJFQ0FURUQ6IFRoZSBzZXR0ZXJzIG9m
IHRoZSB0aHJlZSBmb2xsb3dpbmcgZnVuY3Rpb24gYXJlIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2Ug
b3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzLgogLy8gRGVmaW5lIHRoZSBzbWFsbGVzdCBzaXplIGEg
cGFnZSB0YWtlIHdpdGggYSByZWd1bGFyIHZpZXdwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWU3Y2I1YzYx
OWQzYWYyYjA4MDMzZTY2NDNiYjY3MWEyZmJmNjViNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJLaXQvV0tGb3Vu
ZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBfV0tBdHRhY2htZW50RGlzcGxheU1vZGUpIHsKKyAgICBfV0tBdHRhY2htZW50RGlzcGxh
eU1vZGVBdXRvID0gMSwKKyAgICBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBsYWNlLAorICAg
IF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUFzSWNvbgorfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
eChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwordHlwZWRlZiB2b2lkKF5fV0tBdHRh
Y2htZW50RGF0YUNvbXBsZXRpb25IYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAqKTsKKworV0tf
Q0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGlu
dGVyZmFjZSBfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgOiBOU09iamVjdAorQHByb3BlcnR5
IChub25hdG9taWMpIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlOworQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgZXhwYW5kc0ltYWdlVG9NYXhpbXVtV2lkdGg7CitAZW5kCisKK1dLX0NM
QVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRl
cmZhY2UgX1dLQXR0YWNobWVudCA6IE5TT2JqZWN0CitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hNmExYTc2NGEwYTUzM2Y0YzEyZDI2OGE4MjE1NTBhMjRiN2UzZWFjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQu
bW0KQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiX1dLQXR0YWNobWVudC5oIgorCisjaW1wb3J0ICJBUElBdHRhY2htZW50LmgiCisjaW1w
b3J0ICJfV0tBdHRhY2htZW50SW50ZXJuYWwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
KworQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyA6IE5TT2JqZWN0
CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0p
IHsKKyAgICAgICAgX21vZGUgPSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBdXRvOworICAgICAg
ICBfZXhwYW5kc0ltYWdlVG9NYXhpbXVtV2lkdGggPSBOTzsKKyAgICB9CisgICAgcmV0dXJuIHNl
bGY7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnQKKworLSAoQVBJ
OjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9hdHRhY2htZW50OworfQorCist
IChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAoreworICAgIHJldHVybiBbb2JqZWN0IGlzS2luZE9m
Q2xhc3M6W19XS0F0dGFjaG1lbnQgY2xhc3NdXSAmJiBbc2VsZi51bmlxdWVJZGVudGlmaWVyIGlz
RXF1YWw6WyhfV0tBdHRhY2htZW50ICopb2JqZWN0IHVuaXF1ZUlkZW50aWZpZXJdXTsKK30KKwor
LSAoTlNTdHJpbmcgKil1bmlxdWVJZGVudGlmaWVyCit7CisgICAgcmV0dXJuIF9hdHRhY2htZW50
LT5pZGVudGlmaWVyKCkuc3RyaW5nKCk7Cit9CisKKy0gKE5TVUludGVnZXIpaGFzaAoreworICAg
IHJldHVybiBbc2VsZi51bmlxdWVJZGVudGlmaWVyIGhhc2hdOworfQorCistIChOU1N0cmluZyAq
KWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
PCVAIGlkPSclQCc+IiwgW3NlbGYgY2xhc3NdLCBzZWxmLnVuaXF1ZUlkZW50aWZpZXJdOworfQor
CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXR0YWNobWVudEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk4MzA1NzgwNWRmNjk3N2Q0NDVh
YzgzYzBiNDdkZGU1M2Y2ZTIxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50SW50ZXJuYWwuaApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIK
KyNpbXBvcnQgIl9XS0F0dGFjaG1lbnQuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK2lubGluZSBf
V0tBdHRhY2htZW50ICp3cmFwcGVyKEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCkKK3sKKyAg
ICBBU1NFUlQoW2F0dGFjaG1lbnQud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS0F0dGFjaG1l
bnQgY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tBdHRhY2htZW50ICopYXR0YWNobWVudC53cmFw
cGVyKCk7Cit9CisKK30KKworQGludGVyZmFjZSBfV0tBdHRhY2htZW50ICgpIDxXS09iamVjdD4g
eworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpBdHRhY2htZW50PiBfYXR0
YWNobWVudDsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGRjYmI1Mjg3YWU0YjA5YTZiZTM3ODBjYzAwODBkM2ZmMTRiYWQ5MGMuLjRmNWRhMmJh
ZjE4OTgyMGQ2MjQ5OWM3NGUyMmQ0NGUzYWFlMmQ1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzEwNSw0ICs3MTA1LDI2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYm
IHRvcEZyYW1lCiAgICAgfSk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250
ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnkp
IHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7Cisg
ICAgaWYgKCFzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpKSB7CisgICAgICAgIGNhbGxiYWNrKENhbGxiYWNrQmFzZTo6
RXJyb3I6OlVua25vd24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBmaWxlbmFt
ZSwgY29udGVudFR5cGUsIGRhdGEtPnNpemUoKSwgaGFuZGxlLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDgxNjUyNTdlNWE1MmZmZjYzODBkNmRkM2Y1NWRkYjBmM2QzZTI3OTAuLmQyZDQzMjQ3YzhiMWE3
MTE1ZTZhZTIxNWJmYmQyZGE0NjU5MTc1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0xMjExLDYgKzEyMTEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1l
SG9zdCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CiAKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBj
b250ZW50VHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBGdW5jdGlvbjx2
b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlE
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDU2YzljNGE4ZDJmNDQ2NmU1ZGVlNGJkNTVhZDAwOTNhNjIzYmM3MDcuLmY5MjIz
OTVmNjVlYTBmY2Y5MjNlOWQxMDU4Y2Y4NWFjZDk0MzQ0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzIwLDYgKzcyMCw4IEBACiAJ
CTJERkM3REJCMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGQzdEQjkxQkNDQzE5NTAwQzE1NDhD
IC8qIFdlYlZpZXdJbXBsLmggKi87IH07CiAJCTJERkM3REJDMUJDQ0MxOTUwMEMxNTQ4QyAvKiBX
ZWJWaWV3SW1wbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJERkM3REJBMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSAqLzsgfTsKIAkJ
MkRGRjdCNkYxREE0Q0ZBRjAwODE0NjE0IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERkY3QjZF
MURBNENGQUYwMDgxNDYxNCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkU1Qzc3MEUxRkE3
RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNUM3NzBDMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRh
Y2htZW50LmggKi87IH07CisJCTJFNUM3NzBGMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2ht
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
NUM3NzBEMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkU3
QTk0NEExQkJEOTdDMzAwOTQ1NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3QTk0NDkxQkJEOTVDNjAw
OTQ1NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBX
ZWJOb3RpZmljYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlv
bkNsaWVudC5jcHAgKi87IH07CiAJCTMxMDk5OUM3MTQ2QzlFM0QwMDI5REVCOSAvKiBXZWJOb3Rp
ZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
aCAqLzsgfTsKQEAgLTIwODIsNiArMjA4NCw5IEBACiAJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIy
NiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNv
bG9yUGlja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi87IH07
CiAJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOUJBMTcx
RTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxOTIxRkE1OTFDOTAw
MkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0
MjkxOTQxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0Ug
LyogX1dLQXR0YWNobWVudC5tbSAqLzsgfTsKKwkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNFIC8q
IF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJ
bnRlcm5hbC5oICovOyB9OwogCQlGNDRERkVCMjFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ0REZFQjAxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCAqLzsgfTsKIAkJ
RjQ0REZFQjMxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRERkVCMTFFOUU3NTJGMDAz
OEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSAqLzsgfTsKIAkJRjQ5NkE0MzExRjU4QTI3MjAw
NEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERy
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovOyB9OwpAQCAtMzAxOSw2ICszMDI0LDggQEAKIAkJ
MkRGQzdEQjkxQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJERkM3REJBMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdJbXBsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREZGN0I2RTFEQTRDRkFGMDA4MTQ2MTQgLyogV0tCYWNr
Rm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJFNUM3NzBDMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFQSUF0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkU1Qzc3MEQxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQVBJQXR0YWNobWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmlj
YXRpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1
MjYsNiArNDUzMyw5IEBACiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1Ymxp
Y1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0ZvclRB
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNB
ODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAv
KiBfV0tBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0
dGFjaG1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdHRhY2htZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dL
QXR0YWNobWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnRJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMDFFOUU3NTJGMDAzOEQx
OTYgLyogV2ViSWNvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJJY29uVXRpbGl0aWVzLmg7IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2Vi
SWNvblV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdlYkljb25VdGlsaXRpZXMubW07IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERy
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUuaDsgcGF0aCA9IGlvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3NDYsNiArNTc1Niw5IEBACiAJCQkJMzdBNUUwMTIx
OEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdB
NUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovLAog
CQkJCTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0lu
dGVybmFsLmggKi8sCisJCQkJRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1l
bnQuaCAqLywKKwkJCQlGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5t
bSAqLywKKwkJCQlGNDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVy
bmFsLmggKi8sCiAJCQkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZS5oICovLAogCQkJCTk5MEQyOEE3MUM2NDA0QjAwMDk4Njk3NyAvKiBfV0tBdXRvbWF0
aW9uU2Vzc2lvbi5oICovLAogCQkJCTk5MEQyOEFEMUM2NTE5MDQwMDk4Njk3NyAvKiBfV0tBdXRv
bWF0aW9uU2Vzc2lvbi5tbSAqLywKQEAgLTcxNDAsNiArNzE1Myw4IEBACiAJCQkJMzdDNEMwODMx
ODE0OUMyQTAwMzY4OEI5IC8qIENvY29hICovLAogCQkJCUJDOEE1MDEzMTE3NjVGNDUwMDc1NzU3
MyAvKiBjcHAgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3QkFCIC8qIG1hYyAqLywKKwkJ
CQkyRTVDNzcwRDFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAgKi8sCisJCQkJ
MkU1Qzc3MEMxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCAqLywKIAkJCQk5OUM4
MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovLAogCQkJCTk5
MEQyOEIzMUM2NTI2RDQwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oICov
LAogCQkJCTdDODlEMkIxMUE2QjA2OEMwMDNBNUZERSAvKiBBUElDb250ZW50UnVsZUxpc3QuY3Bw
ICovLApAQCAtODQwMyw2ICs4NDE4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCTM3QTVFMDE0MThC
QkY5M0YwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzc5QTg3MzYxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0NDI5MTkyMUZBNTkxQzkwMDJDQzkzRSAv
KiBfV0tBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE5NjFGQTU5NDJBMDAy
Q0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU3
MTRDNTFDMTI0QTA0MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OTBEMjhBQjFDNjQyMEM2MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Nzg4QUNCMUY0MjFEREEwMEMwODAwMCAvKiBfV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtODQ3Nyw2
ICs4NDk0LDcgQEAKIAkJCQlBMTgyRDVCNTFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0
eUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdENzkyRDgxNzY3Q0NBMzAwODgxQ0JFIC8qIEFj
dGl2aXR5QXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0Njk3MDExREJFNjAzMDA2
NDU1QjAgLyogQVBJQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFNUM3NzBFMUZBN0Q0Mjkw
MDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUM4MUQ1RDFD
MjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTkwRDI4QzAxQzY1NTNGMTAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNERDIwNjEyNUU1QTJGMDA0NTE1RTYgLyogQVBJQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDQzLDYgKzEwMDYxLDcgQEAKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkzN0E1RTAxMzE4QkJGOTM3
MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlGNDQyOTE5NDFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5MEQyOEIyMUM2NTIwOTQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5Nzg4QUNDMUY0MjFERTIwMEMwODAwMCAvKiBfV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU3
MDRGNzFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSBpbiBT
b3VyY2VzICovLApAQCAtMTAwNzUsNiArMTAwOTQsNyBAQAogCQkJCUExODJENUI0MUJFNkJEMjUw
MDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdENzky
RDYxNzY3Q0I2RTAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDNjQ2OTZGMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkyRTVDNzcwRjFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Qzg5RDJCMzFBNkIwNjhDMDAzQTVGREUgLyogQVBJQ29udGVu
dFJ1bGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDM0EwNkE3MUFBQjkwM0UwMDlENzRC
QSAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0VG
QTk2MjFBQzA5OTkzMDBCOTEwRkQgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA5ZGFhMjg3MjI1ZGFmYWMzNDBlNTg5ZTY5MjhjN2IyNzFjN2EwZjQyLi5lYTE4
NjYwMzVjMWQ2YTAxMDdlZjU2ZWFlNDdlYjE2NjM2YmZmNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTYzLDYgKzE2Myw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWlu
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1LZXlib2FyZEV2ZW50Lmg+CkBAIC01NzU3LDQgKzU3NTgsMTkgQEAgdm9pZCBXZWJQYWdlOjpz
dG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgY2FsbGJhY2sod2FzR3JhbnRlZCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorCit2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Y29udGVudFR5cGUsIHVpbnQ2NF90IGRhdGFMZW5ndGgsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiBoYW5kbGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpKSB7CisgICAgICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1v
cnktPmRhdGEoKSksIGRhdGFMZW5ndGgpOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRB
dHRhY2htZW50KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlw
ZSk7CisgICAgfQorCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJh
Y2soY2FsbGJhY2tJRCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggNzNmZGUyODIyNDJkM2IyNmYzZjJhZGQyMjU2YWEzZmQ1Mzdj
OTBhNi4uNjlkMjA4YTZhMWUxOTMyMmZhNWRiNzA0MDZiNmI1YTNiNzBlNGRmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTk4LDYgKzk5OCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFt
ZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4m
JiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFu
dGVkLCB1aW50NjRfdCBjb250ZXh0SWQpOwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUs
IHVpbnQ2NF90IGRhdGFMZW5ndGgsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgQ2FsbGJh
Y2tJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNDYxMDk4YjM1NDky
Y2JmMGZiMGFkZGE5OWZiYWQwMmEwYjZlOTBkMy4uMjE2YzU5ZDhmMzhlYmEzZGI5ZGY2MTIyOWVh
YjYyZTcyOWMxZDEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00ODQsNCArNDg0LDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKHVp
bnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAogICAgIFN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29s
IHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCisgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5n
IGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIHVpbnQ2NF90IGRh
dGFMZW5ndGgsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgZGF0YSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MGE4NTZmYjVjMDc1NjYwNjY4YzVjYjFhOWE0NDBl
Njc2MjI0ZGExLi4wZWU0MTY0NzRjZTNjMTcwMDExZjFjNTQ5ZDk3ZjQ0MTE4Yzg2NDZjIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFdLV2ViVmlldyBTUEkg
Zm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgYSBuZXcgQVBJIHRlc3Qgc3VpdGUgdG8gZXhlcmNpc2UgYXR0YWNobWVudCBlbGVt
ZW50IGluc2VydGlvbiBhbmQgbWFuaXB1bGF0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbTogQWRkZWQu
CisgICAgICAgICh3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKToKKyAgICAgICAgKHRlc3RI
VE1MRGF0YSk6CisgICAgICAgICh0ZXN0SW1hZ2VEYXRhKToKKyAgICAgICAgKC1bVGVzdFdLV2Vi
VmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlw
ZTpkYXRhOm9wdGlvbnM6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgdmFsdWVPZkF0dHJp
YnV0ZTpmb3JRdWVyeVNlbGVjdG9yOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMTctMTAtMjggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtXUEVdIEJ1aWxkIGdzdC1wbHVnaW5zLWJhc2Ugd2l0aG91dCBwYW5nbyBz
dXBwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQzNjAxYWFlNWM4YTNiMTA5YWRmNTM3
NzFjM2M5ZTc4OTc0MTcwMzUuLjVhOGZiNTNkNGE3OWUwMzQ2YjNiMzIwOTRkZTMxZGVkMGQ4NDM5
ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2ICs4OSw3IEBACiAJCTJFMURGREYx
MUQ0MkUxRTQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxh
eS1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8t
c2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi87IH07CiAJCTJF
MjA1QkE0MUY1Mjc3NDYwMDU5NTJERCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTIwNUJBMzFGNTI3NzQ2
MDA1OTUyREQgLyogQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tICovOyB9OwogCQkyRTU0RjQwRDFE
N0JDODQyMDA5MjFBREYgLyogbGFyZ2UtdmlkZW8tbXV0ZXMtb25wbGF5aW5nLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU1NEY0MEMx
RDdCQzgzOTAwOTIxQURGIC8qIGxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1sICovOyB9
OworCQkyRTVDNzcwNzFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTVDNzcwNjFGQTcw
MTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gKi87IH07CiAJCTJFNjkxQUVBMUQ3
OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xz
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8t
aGlkZXMtY29udHJvbHMuaHRtbCAqLzsgfTsKIAkJMkU2OTFBRUIxRDc4QjUzNjAwMTI5NDA3IC8q
IGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRTkxRDc4
QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xz
Lmh0bWwgKi87IH07CiAJCTJFNjkxQUVEMUQ3OEI5MTAwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3Mt
cGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUVDMUQ3OEI5MDIwMDEy
OTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5o
dG1sICovOyB9OwpAQCAtMTE2OCw2ICsxMTY5LDcgQEAKIAkJMkUxREZERjAxRDQyRTE0NDAwNzE0
QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGlu
Zy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLXNlZWstdG8t
YmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkUyMDVCQTMxRjUyNzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0
c0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU1NEY0MEMxRDdCQzgzOTAwOTIxQURGIC8q
IGxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkU1Qzc3MDYxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRl
c3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBdHRhY2htZW50VGVzdHMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjkxQUU4MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJn
ZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2OTFBRTkxRDc4QjUyQjAwMTI5
NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2Vl
cHMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjkxQUVD
MUQ3OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRl
cy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVv
cy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3NCw2ICsyMDc2LDcgQEAKIAkJCQk1MTcxNEVCNjFDRjhDN0E0
MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tICovLAogCQkJCTUxMjBDODND
MUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gKi8sCiAJ
CQkJNUM5RTU2ODQxREY5MTQzRDAwQzlFRTMzIC8qIFdlYnNpdGVQb2xpY2llcy5tbSAqLywKKwkJ
CQkyRTVDNzcwNjFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gKi8sCiAJ
CQkJMUY4MzU3MUExRDNGRkIwRTAwRTM5NjdCIC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tICovLAog
CQkJCTVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5t
bSAqLywKIAkJCQkyRDgzOEIxRTFFRUYzQTVCMDA5Qjk4MEUgLyogV0tDb250ZW50Vmlld0VkaXRp
bmdBY3Rpb25zLm1tICovLApAQCAtMjQ0MCw3ICsyNDQzLDYgQEAKIAkJQkM5MDk2NDExMjU1NjE2
MDAwMDgzNzU2IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMDdFNDk5OTAxRjlFNTZBMTAwMkYxRUYzIC8qIEdldFVzZXJNZWRpYVJlcHJv
bXB0Lm1tICovLAogCQkJCTBGMTM5RTc0MUE0MjNBNDYwMEY1OTBGNSAvKiBjb2NvYSAqLywKIAkJ
CQlDMEM1RDNCQjE0NTk4QjZGMDBBODAyQTYgLyogbWFjICovLAogCQkJCUJDOTA5NzdCMTI1NTcx
QUUwMDA4Mzc1NiAvKiBSZXNvdXJjZXMgKi8sCkBAIC0yNDc4LDYgKzI0ODAsNyBAQAogCQkJCUY2
NjBBQTBDMTVBNUYwNjEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFjay5jcHAgKi8sCiAJCQkJRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8q
IEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5j
cHAgKi8sCiAJCQkJMDdDRTFDRjIxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmln
YXRpb24ubW0gKi8sCisJCQkJMDdFNDk5OTAxRjlFNTZBMTAwMkYxRUYzIC8qIEdldFVzZXJNZWRp
YVJlcHJvbXB0Lm1tICovLAogCQkJCTRCRkRGRkE4MTMxNDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0
UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi8sCiAJCQkJNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8q
IEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgKi8sCiAJCQkJQkM1NzVBQUMxMjZF
ODNCOTAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlQmFzaWMuY3BwICovLApAQCAtMzI3Nyw3ICsz
MjgwLDYgQEAKIAkJCQk0NjM5N0I5NTFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RUJDMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01Ob2RlRnJvbUpT
T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQkQxQTQxMUE3RTAwNDQ3QzRDIC8q
IERPTVJhbmdlT2ZTdHJpbmcubW0gaW4gU291cmNlcyAqLywKLQkJCQkwN0U0OTk5MTFGOUU1NkRG
MDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VFQzFBNDExQUU2MDA0NDdDNEMgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRUQxQTQxMUFFNjAwNDQ3QzRDIC8qIERPTVdpbmRvd0V4
dGVuc2lvbk5vQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjMxQTQxMUFGNjAw
NDQ3QzRDIC8qIERvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMzI0LDYgKzMzMjYsNyBA
QAogCQkJCTdDQ0U3RUY5MUE0MTFBRTYwMDQ0N0M0QyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VF
MjFBNDExQTlBMDA0NDdDNEMgLyogR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwN0NFMUNGMzFGMDZBN0UwMDBCRjg5RjUgLyogR2V0VXNlck1l
ZGlhTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3RTQ5OTkxMUY5RTU2REYwMDJG
MUVGMyAvKiBHZXRVc2VyTWVkaWFSZXByb21wdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkJE
QkFDMUU3MjA3RjEwMERFMEQ1QSAvKiBHUFVCdWZmZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkz
MTUyMzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE2MkFFOUMxRTZGMkZGNTAwMEU0REJDIC8qIEdQVURldmljZS5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMzUyMSw2ICszNTI0LDcgQEAKIAkJCQk3Q0NFN0YxQzFBNDExQUU2MDA0NDdD
NEMgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VE
ODFBNDExQTdFMDA0NDdDNEMgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RUQ5MUE0MTFBN0UwMDQ0N0M0QyAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhN
ZWRpYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJFNUM3NzA3MUZBNzAxMzYwMDU5MzJDMyAvKiBX
S0F0dGFjaG1lbnRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFGODM1NzFCMUQzRkZCMjMw
MEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RjJFMUE0MTFCMTAwMDQ0N0M0QyAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjJGMUE0MTFCMTAwMDQ0N0M0QyAvKiBXS0Jyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZVRlc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc1OTk2MmZhMTc3ZGUwODZiMWQ3YjdkNTk1MDk2MTQzYWU2MWRlMjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRl
c3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktp
dC9XZWJLaXRQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19B
UElfRU5BQkxFRAorCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JU
ZXN0aW5nQXR0YWNobWVudHMoKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRp
b24gX3NldEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDpZRVNdOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Cisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVk
aXRhYmxlPjwvYm9keT48c2NyaXB0PmRvY3VtZW50LmJvZHkuZm9jdXMoKTs8L3NjcmlwdD4iXTsK
KworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitzdGF0aWMgTlNEYXRhICp0ZXN0SFRNTERhdGEo
KQoreworICAgIHJldHVybiBbQCI8YSBocmVmPScjJz5UaGlzIGlzIHNvbWUgSFRNTCBkYXRhPC9h
PiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworfQorCitzdGF0aWMg
TlNEYXRhICp0ZXN0SW1hZ2VEYXRhKCkKK3sKKyAgICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgcmV0dXJuIFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mVVJMOnVybF07Cit9CisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0
V0tXZWJWaWV3IChBdHRhY2htZW50VGVzdGluZykKKworLSAoX1dLQXR0YWNobWVudCAqKXN5bmNo
cm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1l
IGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEg
b3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucworeworICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgX1dLQXR0YWNobWVudCAqYXR0YWNobWVudCA9
IFtzZWxmIF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmZpbGVuYW1lIGNvbnRlbnRUeXBl
OmNvbnRlbnRUeXBlIGRhdGE6ZGF0YSBvcHRpb25zOm9wdGlvbnMgY29tcGxldGlvbjpeKEJPT0wp
IHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKyAgICByZXR1cm4gYXR0YWNobWVudDsKK30KKworLSAoTlNTdHJpbmcg
Kil2YWx1ZU9mQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJpYnV0ZU5hbWUgZm9yUXVlcnlTZWxl
Y3RvcjooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yCit7CisgICAgcmV0dXJuIFtzZWxmIHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCclQCcpLmdldEF0dHJpYnV0ZSgnJUAnKSIsIHF1ZXJ5U2VsZWN0
b3IsIGF0dHJpYnV0ZU5hbWVdXTsKK30KKworQGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnRFbGVtZW50SW5zZXJ0aW9u
KQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsK
KworICAgIC8vIFVzZSB0aGUgZ2l2ZW4gY29udGVudCB0eXBlIGZvciB0aGUgYXR0YWNobWVudCBl
bGVtZW50J3MgdHlwZS4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVu
dFdpdGhGaWxlbmFtZTpAImZvbyIgY29udGVudFR5cGU6QCJ0ZXh0L2h0bWwiIGRhdGE6dGVzdEhU
TUxEYXRhKCkgb3B0aW9uczpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUShAImZvbyIsIFt3ZWJW
aWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1l
bnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAidGV4dC9odG1sIiwgW3dlYlZpZXcgdmFsdWVP
ZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAg
IEVYUEVDVF9XS19TVFJFUShAIjM4IGJ5dGVzIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpA
InN1YnRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKworICAgIC8vIFNp
bmNlIG5vIGNvbnRlbnQgdHlwZSBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY29tcHV0ZSBpdCBm
cm9tIHRoZSBmaWxlIGV4dGVuc2lvbi4KKyAgICBbd2ViVmlldyBfZXhlY3V0ZUVkaXRDb21tYW5k
OkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbCBjb21wbGV0aW9uOm5pbF07CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJiYXIucG5n
IiBjb250ZW50VHlwZTpuaWwgZGF0YTp0ZXN0SW1hZ2VEYXRhKCkgb3B0aW9uczpuaWxdOworICAg
IEVYUEVDVF9XS19TVFJFUShAImJhci5wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAi
dGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgIEVYUEVDVF9XS19T
VFJFUShAImltYWdlL3BuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JR
dWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCIzNyBL
QiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzdWJ0aXRsZSIgZm9yUXVlcnlTZWxlY3Rv
cjpAImF0dGFjaG1lbnQiXSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwor
I2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325410</attachid>
            <date>2017-10-30 19:08:19 -0700</date>
            <delta_ts>2017-10-30 19:48:14 -0700</delta_ts>
            <desc>Another attempt to fix 32-bit Mac build</desc>
            <filename>bug-179013-20171030190819.patch</filename>
            <type>text/plain</type>
            <size>73954</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMzAwYmI1YmU2NzAwYzg1Mzk2N2Q1YjQ1YmFlNTkw
ODYzM2FlOWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uMWMzMmQzZTlhNTA4M2Q2NDkzNGMzMTAyNGU0ODBjZWYyZmEwOTY2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvRmlsZVNpemVGb3JtYXR0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGZpbGVTaXplRGVz
Y3JpcHRpb24pOgorICAgICAgICAqIHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTogQWRkZWQuCisgICAg
ICAgIChmaWxlU2l6ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL05TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaDogQWRkZWQuCisKIDIwMTctMTAtMjcgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBpT1Mgc3BlY2lmaWMgc291
cmNlcyB0byB1bmlmaWVkIHNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjQxZmQ0NTNkMmU4YTI0ZmU3ZWZk
ZTg2NGE4MTY3MWYwOWY0MTc0Mi4uMmU3YzI5MmViMjU4NjM0MmFlNWRhZDA4NGM4ODlmNmEwYTEz
MDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxNy0xMC0zMCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0
XSBJbXBsZW1lbnQgV0tXZWJWaWV3IFNQSSBmb3IgaW5zZXJ0aW5nIGF0dGFjaG1lbnQgZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAx
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyNDk2Njg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuYXRpdmUgU1BJIHRvIGluc2VydCBh
dHRhY2htZW50IGVsZW1lbnRzIGdpdmVuIGEgZmlsZW5hbWUsIGFuIG9wdGlvbmFsIE1JTUUgdHlw
ZSwgYW5kIGEgZGF0YSBibG9iLiBTZWUKKyAgICAgICAgY2hhbmdlLWJ5LWNoYW5nZSBjb21tZW50
cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuIENvdmVyZWQgYnkgYSBuZXcgQVBJIHRlc3QuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRNZW1vcnlDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKToKKworICAgICAgICBJbnRyb2R1Y2UgYSBjb252ZW5pZW5jZSBtZXRob2QgdG8gY3Jl
YXRlIGEgU2hhcmVkTWVtb3J5IHVzaW5nIGEgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogUGxh
dGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGUpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6fkF0dGFjaG1lbnQpOgorCisgICAgICAgIEludHJvZHVjZSBBUEk6
OkF0dGFjaG1lbnQsIHdoaWNoIHJlcHJlc2VudHMgYSBwbGF0Zm9ybS1hZ25vc3RpYyBBdHRhY2ht
ZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlv
bnM6Y29tcGxldGlvbjpdKToKKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGluc2VydGluZyBh
IG5ldyBhdHRhY2htZW50IGVsZW1lbnQuIENhbGxzIG91dCB0byBXZWJQYWdlUHJveHkgdG8gaW5z
ZXJ0IHRoZSBhdHRhY2htZW50IGZyb20gdGhlCisgICAgICAgIGdpdmVuIGRhdGEgYmxvYiwgYW5k
IGNyZWF0ZXMgYSBuZXcgQVBJLW9iamVjdC1iYWNrZWQgX1dLQXR0YWNobWVudC4KKworICAgICAg
ICAoLVtXS1dlYlZpZXcgX2V4ZWN1dGVFZGl0Q29tbWFuZDphcmd1bWVudDpjb21wbGV0aW9uOl0p
OgorCisgICAgICAgIFN1cHBvcnQgcGFzc2luZyBpbiBhIG5pbCBjb21wbGV0aW9uIGJsb2NrLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaC4KKworICAgICAgICBJbnRyb2R1Y2VzIF9X
S0F0dGFjaG1lbnQsIGFuIE9iamVjdGl2ZSBDIHdyYXBwZXIgYXJvdW5kIHRoZSBBUEk6OkF0dGFj
aG1lbnQuCisKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBfYXBpT2JqZWN0XSk6CisgICAgICAg
ICgtW19XS0F0dGFjaG1lbnQgaXNFcXVhbDpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCB1
bmlxdWVJZGVudGlmaWVyXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgaGFzaF0pOgorCisg
ICAgICAgIEFkZCBfV0tBdHRhY2htZW50LCBhIFdlYktpdCBTUEkgb2JqZWN0IHRoYXQgd3JhcHMg
YW4gYXR0YWNobWVudCBlbGVtZW50IHVuaXF1ZSBpZGVudGlmaWVyLiBBbHNvLCBhbGxvdworICAg
ICAgICBfV0tBdHRhY2htZW50IHRvIGJlIHVzZWQgYXMgYSBoYXNoYWJsZSBOU0RpY3Rpb25hcnkg
a2V5LgorCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgZGVzY3JpcHRpb25dKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAg
ICAoQVBJOjp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KToKKworICAg
ICAgICBJbXBsZW1lbnQgSVBDIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbiBhdHRhY2htZW50Lgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0yNyAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtTZXR0aW5nc10gR2VuZXJhdGUgbW9y
ZSBvZiB0aGUgV2ViS2l0IHByZWZlcmVuY2VzIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNTFhZGIwMDgxMDBjMmZmZWNl
MjQyZTg4YWZmNTg1ODVkZDc5ODBlLi4zN2YxNWU5NzVlMzcyNmI0OTIyYmNmZjdmNDRmMzk4MjNk
N2VjZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDEsNiArMTQxLDEwIEBACiAJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRC
MSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBQjZFNjMxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNs
ZWVwTGlzdGVuZXJNYWMubW0gKi87IH07CiAJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBT
ZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTNDNjZDREExRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi87IH07CiAJCUEz
QzY2Q0REMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RCMUY0NjJENkEwMDlFNkVFOSAvKiBT
ZXNzaW9uSUQuaCAqLzsgfTsKKwkJRjQ0MjkxNUUxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmlsZVNp
emVGb3JtYXR0ZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggKi87IH07CisJCUY0NDI5MTYwMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjkx
NUYxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxNjQxRkE1MjY3MDAwMkND
OTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZv
cm1hdHRlci5jcHAgKi87IH07CisJCUY0NDI5MTY4MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6
ZUZvcm1hdHRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29j
b2EubW0gKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTI4Myw2ICsyODcsMTAgQEAKIAkJ
QTNDNjZDREExRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXNzaW9uSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlc3Npb25JRC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjE0N0E0QTFFRkQwQUE2MDAwNTZGQTUgLyogQ29weVBBTEhlYWRlcnMu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29weVBBTEhlYWRlcnMu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTVEMUZBNTI0NzMw
MDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0Mjkx
NUYxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbGVTaXplRm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5
MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaWxlU2l6ZUZvcm1hdHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMzYyLDYg
KzM3MCw3IEBACiAJCQkJMEMyREExMzExRjNCRUI0OTAwREJDMzE3IC8qIE5TQ29sb3JTUEkuaCAq
LywKIAkJCQkwQzJEQTEzMjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAqLywK
IAkJCQkwQzJEQTEzMzFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICovLAor
CQkJCUY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmgg
Ki8sCiAJCQkJMEMyREExMzQxRjNCRUI0OTAwREJDMzE3IC8qIE5TU3RyaW5nU1BJLmggKi8sCiAJ
CQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91Y2hCYXJTUEkuaCAqLywKIAkJCQkw
QzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCkBAIC00
NzEsNiArNDgwLDggQEAKIAkJCQlBMzc4OEU5RjFGMDVCN0NFMDA2Nzk0MjUgLyogc3lzdGVtICov
LAogCQkJCUEzMEQ0MTFEMUYwREQwQUMwMEI3MTk1NCAvKiB0ZXh0ICovLAogCQkJCTBDMkQ5RTcy
MUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQlGNDQyOTE2MjFGQTUy
NjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAorCQkJCUY0NDI5MTVGMUZB
NTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAogCQkJCUEzOURFNzREMUY3
QzQ0M0MwMDdCQ0IwMCAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLywKIAkJCQkwNzA4QUMzMjFG
NEM4NzRBMDAxRjc4OEYgLyogTG9nZ2VyLmggKi8sCiAJCQkJMDczNzdBREIxRjU3NzdENzAwMjdG
MTZEIC8qIExvZ2dlckhlbHBlci5oICovLApAQCAtNTE3LDYgKzUyOCw3IEBACiAJCTFDNDg3NkRF
MUY4RDgzMTMwMENDRUVCRCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9y
bWF0dGVyQ29jb2EubW0gKi8sCiAJCQkJMUM0ODc2REYxRjhEODM3NTAwQ0NFRUJEIC8qIExvZ2dp
bmdDb2NvYS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CkBAIC02MTIsNiArNjI0LDcg
QEAKIAkJCQkwQzVBRjkxQTFGNDNBNEM3MDAyRUFDMDIgLyogRGF0YURldGVjdG9yc1VJU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNl
YXJjaFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEOUU3MzFFRUY1QUY2MDBEQkMz
MTcgLyogRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE2MDFGQTUyNjFF
MDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDI2
NTg3MUY1Njc0NjEwMEI0Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwQzVBRjkxQjFGNDNBNEM3MDAyRUFDMDIgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTEwMjY1OEUxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEku
aCBpbiBIZWFkZXJzICovLApAQCAtNjQ3LDYgKzY2MCw3IEBACiAJCQkJMEM3Nzg1OEYxRjQ1MTMw
RjAwRjRFQkI2IC8qIE5TRXZlbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTRFMUYz
QkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMy
REExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY0NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MDFGNDUxMzBGMDBGNEVCQjYgLyogTlNGb250
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGRTFGNThBNDMzMDA0NzcyQUMgLyogTlNH
cmFwaGljc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTExRjQ1MTMwRjAwRjRFQkI2
IC8qIE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCBpbiBIZWFkZXJzICov
LApAQCAtNzg0LDYgKzc5OCw4IEBACiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkzIC8qIENv
cmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlEMDU2MUUzMUM0NjUw
MDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVG
b3JtYXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0MjkxNjgxRkE1MjcwNTAwMkNDOTNF
IC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMzBENDEy
MjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMw
RDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvRmlsZVNpemVGb3JtYXR0ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUzZmIyMjMzMjI5NDI4M2Y0NDdhMDU1MTQ5NjZkNjQ3N2M3ZWRjNmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmNwcApAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZpbGVTaXplRm9ybWF0dGVyLmgiCisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK1N0cmluZyBm
aWxlU2l6ZURlc2NyaXB0aW9uKHVpbnQ2NF90IHNpemUpCit7CisgICAgLy8gRklYTUU6IFRoZXNl
IHN0cmluZ3Mgc2hvdWxkIGJlIGxvY2FsaXplZCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBicmlu
Z2luZyBMb2NhbGl6ZWRTdHJpbmdzIGludG8gUEFMLgorICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAxOT4gZm9yIG1vcmUgZGV0YWlscy4KKyAg
ICBpZiAoc2l6ZSA8IDEwMDApCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXR1IGJ5
dGVzIiwgc2l6ZSk7CisgICAgaWYgKHNpemUgPCAxMDAwMDAwKQorICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIiUuMWYgS0IiLCBzaXplIC8gMTAwMC4pOworICAgIGlmIChzaXplIDwgMTAw
MDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIE1CIiwgc2l6ZSAv
ICgxMDAwMDAwLikpOworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJS4xZiBHQiIsIHNpemUg
LyAoMTAwMDAwMDAwMC4pKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0Zp
bGVTaXplRm9ybWF0dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNhZjBjNjk4MDk4ZDVlOGZjNGM0YWE1NmI0
OTMyZDc2Y2M2YjBhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
RmlsZVNpemVGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitQQUxfRVhQT1JUIFN0
cmluZyBmaWxlU2l6ZURlc2NyaXB0aW9uKHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NzA5NWJhZjU0MGNlNjlkMGQ2MTk0ZWE5YTVhN2EyZjkwYjZiYmFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9GaWxlU2l6ZUZvcm1hdHRlckNvY29h
Lm1tCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRmlsZVNpemVGb3JtYXR0ZXIuaCIKKworI2ltcG9ydCAiTlNGaWxlU2l6ZUZvcm1h
dHRlclNQSS5oIgorCitTdHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplKQor
eworICAgIHJldHVybiBOU0xvY2FsaXplZEZpbGVTaXplRGVzY3JpcHRpb24oc2l6ZSwgMCwgMCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVT
aXplRm9ybWF0dGVyU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0Zp
bGVTaXplRm9ybWF0dGVyU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU1NzZmZDM0YzE1MGRlZjEwNWZmYjRk
OWYyYWU3YjQwMjNmZGY2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL05TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaApAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TRmlsZVNpemVGb3JtYXR0ZXIuaD4KKworI2Vsc2UKKwor
dHlwZWRlZiB1aW50NjRfdCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9uczsKK2V4dGVybiAiQyIg
TlNTdHJpbmcgKk5TTG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplLCB1
aW50NjRfdCBtYXhpbXVtRGlzcGxheWVkVmFsdWUsIE5TRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25z
KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYmUzZGE4ZWUyZjc1
ZWJlMmU3NjdiYmE2ZTc3N2YwOTE1Zjk4ODIyNS4uZTY4N2EyNzU1ZmE5ZWQxNWYwZDdkNDU3N2Jh
YmU3YTZmYzAwNDRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDcsMTIgKzQ3
LDE0IEBACiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRl
ICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCkBA
IC05OCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVk
ZSA8cGFsL0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8cGFsL3N5c3RlbS9Tb3VuZC5o
PgogI2luY2x1ZGUgPHBhbC90ZXh0L0tpbGxSaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
Q2hhcmFjdGVyTmFtZXMuaD4KQEAgLTM3MjgsNiArMzczMSwzOSBAQCBSZWZQdHI8UmFuZ2U+IEVk
aXRvcjo6cmFuZ2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0
JiByZXN1bAogICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2Us
IHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmls
ZXBhdGgsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIWNv
bnRlbnRUeXBlKQorICAgICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmls
ZShmaWxlbmFtZSk7CisgICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIGZp
bGVuYW1lLCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShmaWxlcGF0aCkpOworfQorCit2b2lk
IEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGNvbnRlbnRUeXBlKQoreworICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAg
IGNvbnRlbnRUeXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKKyAgICBp
bnNlcnRBdHRhY2htZW50RnJvbUZpbGUoaWRlbnRpZmllciwgZmlsZW5hbWUsICpjb250ZW50VHlw
ZSwgRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShkYXRhLCAqY29udGVudFR5cGUpLCBmaWxlbmFt
ZSkpOworfQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgUmVmPEZpbGU+JiYgZmlsZSkKK3sKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRv
Y3VtZW50KCksIGlkZW50aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OnRpdGxlQXR0ciwgZmlsZW5hbWUpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OnN1YnRpdGxlQXR0ciwgZmlsZVNpemVEZXNjcmlwdGlvbihmaWxlLT5zaXpl
KCkpKTsKKyAgICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwg
Y29udGVudFR5cGUpOworICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRlbnRp
Zmllcik7CisgICAgYXR0YWNobWVudC0+c2V0RmlsZShmaWxlLnB0cigpKTsKKworICAgIGF1dG8g
ZnJhZ21lbnRUb0luc2VydCA9IGRvY3VtZW50KCkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwor
ICAgIGZyYWdtZW50VG9JbnNlcnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQuZ2V0KCkpOworCisg
ICAgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChmcmFnbWVudFRvSW5zZXJ0LmdldCgpLCBm
YWxzZSwgZmFsc2UsIHRydWUpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKwogdm9pZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleHRDaGVja2lu
Z1Jlc3VsdCBhY2NlcHRlZENhbmRpZGF0ZSkKIHsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKaW5kZXggYWE4ODVmZjU5OWMxYTA3NWQzZGEwZDA3Y2RmMjI1ODUxNmFlYTM3
ZC4uZmRmYTNlOGE4MDljNWFiNTgxODYzNTY3ZDVlOGU5MGJlMjAzZDgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCkBAIC02Myw3ICs2Myw5IEBAIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3Mg
RWRpdENvbW1hbmRDb21wb3NpdGlvbjsKIGNsYXNzIEVkaXRvckNsaWVudDsKIGNsYXNzIEVkaXRv
ckludGVybmFsQ29tbWFuZDsKK2NsYXNzIEZpbGU7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxB
dHRhY2htZW50RWxlbWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlc3Vs
dDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CkBAIC00OTgsOSArNTAwLDE4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oYm9vbCBiKSB7IG1faXNHZXR0
aW5nRGljdGlvbmFyeVBvcHVwSW5mbyA9IGI7IH0KICAgICBib29sIGlzR2V0dGluZ0RpY3Rpb25h
cnlQb3B1cEluZm8oKSBjb25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cElu
Zm87IH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGNvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBjb250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8RmlsZT4mJik7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFu
Z2UqKSBjb25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBhc3Rl
Ym9hcmQmKTsKICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJv
YXJkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAK
aW5kZXggYTZlZDk2MTU2YWNkYTcyMzMzYmIzNmZhN2I1ZjUzYWFmYzlhMDI5Yi4uM2JmZjBjN2Jm
OWMxOGZmMWU4YjYzY2NkOGQ5ZGFiNjBiYzE2MzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjgsMjAgKzI4LDI5IEBACiAKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVk
ZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpI
VE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBIVE1MRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1fdW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVy
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGF0dGFjaG1lbnRUYWcpKTsKIH0KIAorSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogSFRNTEF0dGFjaG1lbnRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCit7Cit9
CisKIEhUTUxBdHRhY2htZW50RWxlbWVudDo6fkhUTUxBdHRhY2htZW50RWxlbWVudCgpID0gZGVm
YXVsdDsKIAogUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQpAQCAtNDksNiArNTgsMTEgQEAgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFj
aG1lbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGEKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBIVE1MQXR0YWNobWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAorUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRN
TEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBpZGVudGlmaWVyKSk7Cit9CisK
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJBdHRhY2htZW50PigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmgKaW5kZXggOWFjNmI2YThiMTc4NGQwMTY4ZWQwM2EwZTk5NDMzZTM4NjQ4MzllMi4u
M2E0NGE1ZjExOTljNzIwOWMzYjFhZTQ5YmVmYmI4MTYxMWE2MDMzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zNywxMCArMzcsMTQgQEAgY2xh
c3MgUmVuZGVyQXR0YWNobWVudDsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQXR0YWNo
bWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAg
ICBzdGF0aWMgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBGaWxlKiBmaWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWxlKEZpbGUqKTsK
IAorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1bmlxdWVJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRVbmlxdWVJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgeyBtX3VuaXF1ZUlkZW50aWZpZXIgPSBpZGVudGlm
aWVyOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxlKCkgY29u
c3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlKCkgY29uc3Q7CiAKQEAgLTQ4LDYgKzUyLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxBdHRhY2htZW50RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsK
ICAgICB2aXJ0dWFsIH5IVE1MQXR0YWNobWVudEVsZW1lbnQoKTsKIAogICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CkBAIC02Myw2ICs2OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgZmluYWw7CiAgICAgCiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKKyAgICBTdHJp
bmcgbV91bmlxdWVJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggYzcyZTBkNGIwYWI4NzIwNmJjZjUy
NzU1Mzc5OWRjM2JlZmNiYTFjMC4uMDE3YjQzNGVlNGE5MmRmN2FiOWQ1YzlmMjc3N2Q2ZmRjY2E0
ZTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCkBAIC00MCw2ICs0MSwxMCBAQCBjbGFzcyBE
ZWNvZGVyOwogY2xhc3MgRW5jb2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
U2hhcmVkQnVmZmVyOworfQorCiAjaWYgT1MoREFSV0lOKQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTg3LDYgKzkyLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7CiAgICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IGNyZWF0ZSh2b2lkKiwgc2l6ZV90LCBQcm90ZWN0aW9uKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFu
ZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVE
ZXNjcmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hh
cmVkTWVtb3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRN
ZW1vcnlDb2NvYS5jcHAKaW5kZXggYWVhNzk4NTA0NDlhOGI4OTc5OGU5MDM2ZDdiMGU1MzAxODAz
YWE1NC4uMzk4ZDU1ZTdjMTk0YWM2OWY0ZGI3YWMwZjJjOWJiYTE2M2UwYTE0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFjaFBvcnQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgogI2luY2x1ZGUg
PG1hY2gvbWFjaF9wb3J0Lmg+CiAjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KQEAgLTE1Niw2ICsx
NTcsMTMgQEAgc3RhdGljIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgbWFrZU1lbW9yeUVudHJ5KHNp
emVfdCBzaXplLCB2bV9vZmZzZXRfdCBvZmZzZXQsIFMKICAgICByZXR1cm4gV2ViQ29yZTo6TWFj
aFNlbmRSaWdodDo6YWRvcHQocG9ydCk7CiB9CiAKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJl
ZE1lbW9yeTo6Y3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorewor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZm
ZXItPnNpemUoKSk7CisgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZm
ZXI7Cit9CisKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQq
IGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgQVNTRVJU
KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMGU2ZjY2OTY3YWUwZTEwZmIxNDZh
N2I3ZTY1ODAzNDRlOGNmZDEzMC4uNzg5ZjM4NDVmNmRlYjY0NmVlZTcwNTc5M2EyZDhhNmRjNjlj
YWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yMjIsNiArMjIyLDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXaW5kb3dGZWF0dXJlcy5tbQog
ICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KKyAgICBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KICAgICBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAppbmRleCA5NjI4NjRmNzI3OTM5YTMxODU1YmE0NDRkZjcxOWQ2ZjYxZTJkYzE4Li5mNmY5
OWZhZGY0M2UzNGI3MjNlOGFkYjZjOTQ1NmRhOTE2N2Y1YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAg
ICAgIC8vIFVJUHJvY2VzcyB0eXBlcwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwK
KyAgICAgICAgQXR0YWNobWVudCwKICAgICAgICAgQXV0b21hdGlvblNlc3Npb24sCiAgICAgICAg
IEJhY2tGb3J3YXJkTGlzdCwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0SXRlbSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IDRhMzU4MDk3
YzdjNDI4NTJmZTZhNTBiZDFhMDMwNDAzNDRjZjczYjkuLjE4YmYwYzVkOGE2M2FmZTM5MDMyZmI0
NDdiNTIyNWU1MjE4NzZiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dlYktpdFByaXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLQXR0YWNobWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0VsZW1lbnRB
Y3Rpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGb2N1c2VkRWxlbWVudEluZm8uaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tGb3JtSW5wdXRTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFlYzBiN2ViYzA0ZmM2NmQ4
OGViMDU1ZjhkNWQ2NjNmOGFlMmExNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgQVBJIHsKKworUmVm
PEF0dGFjaG1lbnQ+IEF0dGFjaG1lbnQ6OmNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQXR0YWNobWVudChpZGVudGlmaWVyLCB3ZWJQYWdlKSk7Cit9CisKK0F0dGFjaG1l
bnQ6OkF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAg
LCBtX3dlYlBhZ2Uod2ViUGFnZS5jcmVhdGVXZWFrUHRyKCkpCit7Cit9CisKK0F0dGFjaG1lbnQ6
On5BdHRhY2htZW50KCkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ1NTkwZWZkZTc5YjA5YTA3YjQwNDgyYzA3MGQ5
ZjE2MjhkNWQzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5o
PgorI2luY2x1ZGUgPFdlYktpdC9XZWJQYWdlUHJveHkuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEF0
dGFjaG1lbnQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OkF0dGFjaG1l
bnQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF0dGFjaG1lbnQ+IGNyZWF0ZShjb25zdCBX
VEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0
dWFsIH5BdHRhY2htZW50KCk7CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFn
ZVByb3h5Jik7CisKKyAgICBXVEY6OlN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgV2Vha1B0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV93ZWJQYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCAxNDY4MTMxZWExYjQwMGUwMzg4NWJmNjU3MGNjN2ZhYWViNDBhMjA0Li45NDVmODk3ZTM1MjBh
ZmVkYjM4NmFlMWEzZjAxMTVlNDMxYzU1N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTk0LDExICs5NCwxMyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9JT1N1cmZhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvSlNET01CaW5kaW5nLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0pTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY2hlbWVS
ZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
cml0aW5nTW9kZS5oPgpAQCAtMTEwLDYgKzExMiw3IEBACiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5o
PgorI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEku
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtNDE2OCw2ICs0MTcxLDIz
IEBAIC0gKHZvaWQpX2Nsb3NlCiAgICAgX3BhZ2UtPmNsb3NlKCk7CiB9CiAKKy0gKF9XS0F0dGFj
aG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFt
ZSBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBkYXRhOihOU0RhdGEgKilkYXRh
IG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlv
bjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CisKKyAgICBfcGFnZS0+aW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVy
LCBmaWxlbmFtZSwgY29udGVudFR5cGUubGVuZ3RoID8gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHsg
Y29udGVudFR5cGUgfSA6IHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChj
YXB0dXJlZEhhbmRsZXIpCisgICAgICAgICAgICBjYXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKKyAgICB9KTsKKworICAgIGF1dG8gYXR0
YWNobWVudCA9IEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSk7Cisg
ICAgcmV0dXJuIFt3cmFwcGVyKGF0dGFjaG1lbnQpIGF1dG9yZWxlYXNlXTsKKyNlbHNlCisgICAg
cmV0dXJuIG5pbDsKKyNlbmRpZgorfQorCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRo
b3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBb
c2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVy
ZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CkBAIC02MDMzLDcgKzYw
NTMsOCBAQCAtICh2b2lkKV9kaXNhYmxlQmFja0ZvcndhcmRTbmFwc2hvdFZvbGF0aWxpdHlGb3JU
ZXN0aW5nCiAtICh2b2lkKV9leGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICopY29tbWFuZCBh
cmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MKSlj
b21wbGV0aW9uCiB7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kLCBhcmd1
bWVudCwgW2NhcHR1cmVkQ29tcGxldGlvbkJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24p
XShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY2FwdHVyZWRD
b21wbGV0aW9uQmxvY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KTsKKyAgICAgICAgaWYgKGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKQorICAgICAgICAgICAgY2Fw
dHVyZWRDb21wbGV0aW9uQmxvY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCBkMmQ2ZWI4ODU2ZGZiNWZjYzRk
MDQxM2Y5MDYyYTEyN2Q5NTI1NTllLi4xMmVhNmY1OWMzZjMwZTNkODhjZjNjYjYwZTVmODI2NzA2
YzBmZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5o
IgorI2ltcG9ydCAiX1dLQXR0YWNobWVudEludGVybmFsLmgiCiAjaW1wb3J0IDx3dGYvUmVmUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDVlZDJiMmMxYjFh
ZjE3NTY4Mzk4NzNhNDUzYjc4M2EzMDFjZDdiYWUuLmM5ZmQ1NDBiMDZjZWUyYjYyNTAxNDY4OGJl
YzYxMDEwZjZjMDZhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFdLX0FQSV9F
TkFCTEVECiAKICNpbXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS0F0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGaW5kT3B0
aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0xheW91dE1vZGUuaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaD4KQEAgLTE3Nyw2ICsxNzgsOCBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6KSBCT09MIF9iYWNr
Z3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyg4LjApKTsKIAorLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0
aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNv
bnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3Bs
YXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAvLyBERVJFQ0FURUQ6IFRoZSBz
ZXR0ZXJzIG9mIHRoZSB0aHJlZSBmb2xsb3dpbmcgZnVuY3Rpb24gYXJlIGRlcHJlY2F0ZWQsIHBs
ZWFzZSB1c2Ugb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzLgogLy8gRGVmaW5lIHRoZSBzbWFsbGVz
dCBzaXplIGEgcGFnZSB0YWtlIHdpdGggYSByZWd1bGFyIHZpZXdwb3J0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWU3Y2I1YzYxOWQzYWYyYjA4MDMzZTY2NDNiYjY3MWEyZmJmNjViNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJL
aXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCit0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBfV0tBdHRhY2htZW50RGlzcGxheU1vZGUpIHsKKyAgICBfV0tBdHRhY2ht
ZW50RGlzcGxheU1vZGVBdXRvID0gMSwKKyAgICBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBs
YWNlLAorICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUFzSWNvbgorfSBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwordHlwZWRlZiB2b2lk
KF5fV0tBdHRhY2htZW50RGF0YUNvbXBsZXRpb25IYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAq
KTsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQorQGludGVyZmFjZSBfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgOiBOU09iamVjdAor
QHByb3BlcnR5IChub25hdG9taWMpIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlOworQHBy
b3BlcnR5IChub25hdG9taWMpIEJPT0wgZXhwYW5kc0ltYWdlVG9NYXhpbXVtV2lkdGg7CitAZW5k
CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSkKK0BpbnRlcmZhY2UgX1dLQXR0YWNobWVudCA6IE5TT2JqZWN0CitAZW5kCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hNTM5ZGVmMDI2YTA5MWY0YTMyYjAxOGZlNTk1OWY4YTcyMzliYTY5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnQubW0KQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiX1dLQXR0YWNobWVudC5oIgorCisjaW1wb3J0ICJBUElBdHRhY2htZW50
LmgiCisjaW1wb3J0ICJfV0tBdHRhY2htZW50SW50ZXJuYWwuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyA6
IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pIHsKKyAgICAgICAgX21vZGUgPSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBdXRv
OworICAgICAgICBfZXhwYW5kc0ltYWdlVG9NYXhpbXVtV2lkdGggPSBOTzsKKyAgICB9CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIF9XS0F0dGFjaG1lbnQK
KworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9hdHRhY2htZW50
OworfQorCistIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAoreworICAgIHJldHVybiBbb2JqZWN0
IGlzS2luZE9mQ2xhc3M6W19XS0F0dGFjaG1lbnQgY2xhc3NdXSAmJiBbc2VsZi51bmlxdWVJZGVu
dGlmaWVyIGlzRXF1YWw6WyhfV0tBdHRhY2htZW50ICopb2JqZWN0IHVuaXF1ZUlkZW50aWZpZXJd
XTsKK30KKworLSAoTlNTdHJpbmcgKil1bmlxdWVJZGVudGlmaWVyCit7CisgICAgcmV0dXJuIF9h
dHRhY2htZW50LT5pZGVudGlmaWVyKCk7Cit9CisKKy0gKE5TVUludGVnZXIpaGFzaAoreworICAg
IHJldHVybiBbc2VsZi51bmlxdWVJZGVudGlmaWVyIGhhc2hdOworfQorCistIChOU1N0cmluZyAq
KWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
PCVAIGlkPSclQCc+IiwgW3NlbGYgY2xhc3NdLCBzZWxmLnVuaXF1ZUlkZW50aWZpZXJdOworfQor
CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXR0YWNobWVudEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk4MzA1NzgwNWRmNjk3N2Q0NDVh
YzgzYzBiNDdkZGU1M2Y2ZTIxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50SW50ZXJuYWwuaApAQCAtMCwwICsxLDQ1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIK
KyNpbXBvcnQgIl9XS0F0dGFjaG1lbnQuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK2lubGluZSBf
V0tBdHRhY2htZW50ICp3cmFwcGVyKEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCkKK3sKKyAg
ICBBU1NFUlQoW2F0dGFjaG1lbnQud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS0F0dGFjaG1l
bnQgY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tBdHRhY2htZW50ICopYXR0YWNobWVudC53cmFw
cGVyKCk7Cit9CisKK30KKworQGludGVyZmFjZSBfV0tBdHRhY2htZW50ICgpIDxXS09iamVjdD4g
eworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpBdHRhY2htZW50PiBfYXR0
YWNobWVudDsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGRjYmI1Mjg3YWU0YjA5YTZiZTM3ODBjYzAwODBkM2ZmMTRiYWQ5MGMuLjRmNWRhMmJh
ZjE4OTgyMGQ2MjQ5OWM3NGUyMmQ0NGUzYWFlMmQ1MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzEwNSw0ICs3MTA1LDI2IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYm
IHRvcEZyYW1lCiAgICAgfSk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250
ZW50VHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gU2hh
cmVkTWVtb3J5OjpjcmVhdGUoV1RGTW92ZShkYXRhKSk7CisgICAgaWYgKCFzaGFyZWRNZW1vcnkp
IHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7Cisg
ICAgaWYgKCFzaGFyZWRNZW1vcnktPmNyZWF0ZUhhbmRsZShoYW5kbGUsIFNoYXJlZE1lbW9yeTo6
UHJvdGVjdGlvbjo6UmVhZE9ubHkpKSB7CisgICAgICAgIGNhbGxiYWNrKENhbGxiYWNrQmFzZTo6
RXJyb3I6OlVua25vd24pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOworICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVyLCBmaWxlbmFt
ZSwgY29udGVudFR5cGUsIGRhdGEtPnNpemUoKSwgaGFuZGxlLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IDgxNjUyNTdlNWE1MmZmZjYzODBkNmRkM2Y1NWRkYjBmM2QzZTI3OTAuLmQyZDQzMjQ3YzhiMWE3
MTE1ZTZhZTIxNWJmYmQyZGE0NjU5MTc1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0xMjExLDYgKzEyMTEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1l
SG9zdCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CiAKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBj
b250ZW50VHlwZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBGdW5jdGlvbjx2
b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdl
YlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlE
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDU2YzljNGE4ZDJmNDQ2NmU1ZGVlNGJkNTVhZDAwOTNhNjIzYmM3MDcuLmY5MjIz
OTVmNjVlYTBmY2Y5MjNlOWQxMDU4Y2Y4NWFjZDk0MzQ0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzIwLDYgKzcyMCw4IEBACiAJ
CTJERkM3REJCMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGQzdEQjkxQkNDQzE5NTAwQzE1NDhD
IC8qIFdlYlZpZXdJbXBsLmggKi87IH07CiAJCTJERkM3REJDMUJDQ0MxOTUwMEMxNTQ4QyAvKiBX
ZWJWaWV3SW1wbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJERkM3REJBMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSAqLzsgfTsKIAkJ
MkRGRjdCNkYxREE0Q0ZBRjAwODE0NjE0IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERkY3QjZF
MURBNENGQUYwMDgxNDYxNCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkU1Qzc3MEUxRkE3
RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNUM3NzBDMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRh
Y2htZW50LmggKi87IH07CisJCTJFNUM3NzBGMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2ht
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJF
NUM3NzBEMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkU3
QTk0NEExQkJEOTdDMzAwOTQ1NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3QTk0NDkxQkJEOTVDNjAw
OTQ1NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBX
ZWJOb3RpZmljYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlv
bkNsaWVudC5jcHAgKi87IH07CiAJCTMxMDk5OUM3MTQ2QzlFM0QwMDI5REVCOSAvKiBXZWJOb3Rp
ZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
aCAqLzsgfTsKQEAgLTIwODIsNiArMjA4NCw5IEBACiAJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIy
NiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBh
Z2VPdmVybGF5LmNwcCAqLzsgfTsKIAkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNv
bG9yUGlja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi87IH07
CiAJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOUJBMTcx
RTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxOTIxRkE1OTFDOTAw
MkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0
MjkxOTQxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0Ug
LyogX1dLQXR0YWNobWVudC5tbSAqLzsgfTsKKwkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNFIC8q
IF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJ
bnRlcm5hbC5oICovOyB9OwogCQlGNDRERkVCMjFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ0REZFQjAxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCAqLzsgfTsKIAkJ
RjQ0REZFQjMxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRERkVCMTFFOUU3NTJGMDAz
OEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSAqLzsgfTsKIAkJRjQ5NkE0MzExRjU4QTI3MjAw
NEMxNzU3IC8qIERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERy
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovOyB9OwpAQCAtMzAxOSw2ICszMDI0LDggQEAKIAkJ
MkRGQzdEQjkxQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlZpZXdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJERkM3REJBMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdJbXBsLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREZGN0I2RTFEQTRDRkFGMDA4MTQ2MTQgLyogV0tCYWNr
Rm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJFNUM3NzBDMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFQSUF0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkU1Qzc3MEQxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQVBJQXR0YWNobWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxMDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmlj
YXRpb25DbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1
MjYsNiArNDUzMyw5IEBACiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1Ymxp
Y1N5bWJvbHNGb3JUQVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0ZvclRB
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNB
ODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYkNvbG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQwOUJBMTcxRTZFNjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAv
KiBfV0tBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0
dGFjaG1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdHRhY2htZW50Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dL
QXR0YWNobWVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnRJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMDFFOUU3NTJGMDAzOEQx
OTYgLyogV2ViSWNvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJJY29uVXRpbGl0aWVzLmg7IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2Vi
SWNvblV0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdlYkljb25VdGlsaXRpZXMubW07IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERy
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0
aW9uU3RhdGUuaDsgcGF0aCA9IGlvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU3NDYsNiArNTc1Niw5IEBACiAJCQkJMzdBNUUwMTIx
OEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdB
NUUwMTExOEJCRjkzNzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovLAog
CQkJCTM3OUE4NzM1MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0lu
dGVybmFsLmggKi8sCisJCQkJRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1l
bnQuaCAqLywKKwkJCQlGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5t
bSAqLywKKwkJCQlGNDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVy
bmFsLmggKi8sCiAJCQkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZS5oICovLAogCQkJCTk5MEQyOEE3MUM2NDA0QjAwMDk4Njk3NyAvKiBfV0tBdXRvbWF0
aW9uU2Vzc2lvbi5oICovLAogCQkJCTk5MEQyOEFEMUM2NTE5MDQwMDk4Njk3NyAvKiBfV0tBdXRv
bWF0aW9uU2Vzc2lvbi5tbSAqLywKQEAgLTcxNDAsNiArNzE1Myw4IEBACiAJCQkJMzdDNEMwODMx
ODE0OUMyQTAwMzY4OEI5IC8qIENvY29hICovLAogCQkJCUJDOEE1MDEzMTE3NjVGNDUwMDc1NzU3
MyAvKiBjcHAgKi8sCiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3QkFCIC8qIG1hYyAqLywKKwkJ
CQkyRTVDNzcwRDFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAgKi8sCisJCQkJ
MkU1Qzc3MEMxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCAqLywKIAkJCQk5OUM4
MUQ1QjFDMjBFODE3MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovLAogCQkJCTk5
MEQyOEIzMUM2NTI2RDQwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oICov
LAogCQkJCTdDODlEMkIxMUE2QjA2OEMwMDNBNUZERSAvKiBBUElDb250ZW50UnVsZUxpc3QuY3Bw
ICovLApAQCAtODQwMyw2ICs4NDE4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCTM3QTVFMDE0MThC
QkY5M0YwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzc5QTg3MzYxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0NDI5MTkyMUZBNTkxQzkwMDJDQzkzRSAv
KiBfV0tBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE5NjFGQTU5NDJBMDAy
Q0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU3
MTRDNTFDMTI0QTA0MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OTBEMjhBQjFDNjQyMEM2MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Np
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk5Nzg4QUNCMUY0MjFEREEwMEMwODAwMCAvKiBfV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtODQ3Nyw2
ICs4NDk0LDcgQEAKIAkJCQlBMTgyRDVCNTFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0
eUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdENzkyRDgxNzY3Q0NBMzAwODgxQ0JFIC8qIEFj
dGl2aXR5QXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0Njk3MDExREJFNjAzMDA2
NDU1QjAgLyogQVBJQXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFNUM3NzBFMUZBN0Q0Mjkw
MDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUM4MUQ1RDFD
MjFGMzhCMDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTkwRDI4QzAxQzY1NTNGMTAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNERDIwNjEyNUU1QTJGMDA0NTE1RTYgLyogQVBJQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTEwMDQzLDYgKzEwMDYxLDcgQEAKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkzN0E1RTAxMzE4QkJGOTM3
MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAqLywKKwkJ
CQlGNDQyOTE5NDFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTk5MEQyOEIyMUM2NTIwOTQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5Nzg4QUNDMUY0MjFERTIwMEMwODAwMCAvKiBfV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU3
MDRGNzFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSBpbiBT
b3VyY2VzICovLApAQCAtMTAwNzUsNiArMTAwOTQsNyBAQAogCQkJCUExODJENUI0MUJFNkJEMjUw
MDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdENzky
RDYxNzY3Q0I2RTAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDNjQ2OTZGMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkyRTVDNzcwRjFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk3Qzg5RDJCMzFBNkIwNjhDMDAzQTVGREUgLyogQVBJQ29udGVu
dFJ1bGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDM0EwNkE3MUFBQjkwM0UwMDlENzRC
QSAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0VG
QTk2MjFBQzA5OTkzMDBCOTEwRkQgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA5ZGFhMjg3MjI1ZGFmYWMzNDBlNTg5ZTY5MjhjN2IyNzFjN2EwZjQyLi5lYTE4
NjYwMzVjMWQ2YTAxMDdlZjU2ZWFlNDdlYjE2NjM2YmZmNDc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTYzLDYgKzE2Myw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWlu
RnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlQ29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1LZXlib2FyZEV2ZW50Lmg+CkBAIC01NzU3LDQgKzU3NTgsMTkgQEAgdm9pZCBXZWJQYWdlOjpz
dG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgY2FsbGJhY2sod2FzR3JhbnRlZCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorCit2b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4g
Y29udGVudFR5cGUsIHVpbnQ2NF90IGRhdGFMZW5ndGgsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFu
ZGxlJiBoYW5kbGUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3sKKyAgICBpZiAoYXV0byBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpKSB7CisgICAgICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICAgICAgYXV0byBkYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhciAqPihzaGFyZWRNZW1v
cnktPmRhdGEoKSksIGRhdGFMZW5ndGgpOworICAgICAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRB
dHRhY2htZW50KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBXVEZNb3ZlKGRhdGEpLCBjb250ZW50VHlw
ZSk7CisgICAgfQorCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJh
Y2soY2FsbGJhY2tJRCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggNzNmZGUyODIyNDJkM2IyNmYzZjJhZGQyMjU2YWEzZmQ1Mzdj
OTBhNi4uNjlkMjA4YTZhMWUxOTMyMmZhNWRiNzA0MDZiNmI1YTNiNzBlNGRmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtOTk4LDYgKzk5OCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFt
ZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpGdW5jdGlvbjx2b2lkIChib29sKT4m
JiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFu
dGVkLCB1aW50NjRfdCBjb250ZXh0SWQpOwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUs
IHVpbnQ2NF90IGRhdGFMZW5ndGgsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgQ2FsbGJh
Y2tJRCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNDYxMDk4YjM1NDky
Y2JmMGZiMGFkZGE5OWZiYWQwMmEwYjZlOTBkMy4uMjE2YzU5ZDhmMzhlYmEzZGI5ZGY2MTIyOWVh
YjYyZTcyOWMxZDEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC00ODQsNCArNDg0LDggQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAgVVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKHVp
bnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIAogICAgIFN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29s
IHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKKworI2lmIEVOQUJMRShBVFRBQ0hNRU5U
X0VMRU1FTlQpCisgICAgSW5zZXJ0QXR0YWNobWVudChTdHJpbmcgaWRlbnRpZmllciwgU3RyaW5n
IGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUsIHVpbnQ2NF90IGRh
dGFMZW5ndGgsIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgZGF0YSwgV2ViS2l0OjpDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MGE4NTZmYjVjMDc1NjYwNjY4YzVjYjFhOWE0NDBl
Njc2MjI0ZGExLi4wZWU0MTY0NzRjZTNjMTcwMDExZjFjNTQ5ZDk3ZjQ0MTE4Yzg2NDZjIDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFdLV2ViVmlldyBTUEkg
Zm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgYSBuZXcgQVBJIHRlc3Qgc3VpdGUgdG8gZXhlcmNpc2UgYXR0YWNobWVudCBlbGVt
ZW50IGluc2VydGlvbiBhbmQgbWFuaXB1bGF0aW9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbTogQWRkZWQu
CisgICAgICAgICh3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKToKKyAgICAgICAgKHRlc3RI
VE1MRGF0YSk6CisgICAgICAgICh0ZXN0SW1hZ2VEYXRhKToKKyAgICAgICAgKC1bVGVzdFdLV2Vi
VmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlw
ZTpkYXRhOm9wdGlvbnM6XSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgdmFsdWVPZkF0dHJp
YnV0ZTpmb3JRdWVyeVNlbGVjdG9yOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisKIDIwMTctMTAtMjggIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtXUEVdIEJ1aWxkIGdzdC1wbHVnaW5zLWJhc2Ugd2l0aG91dCBwYW5nbyBz
dXBwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQzNjAxYWFlNWM4YTNiMTA5YWRmNTM3
NzFjM2M5ZTc4OTc0MTcwMzUuLjVhOGZiNTNkNGE3OWUwMzQ2YjNiMzIwOTRkZTMxZGVkMGQ4NDM5
ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OSw2ICs4OSw3IEBACiAJCTJFMURGREYx
MUQ0MkUxRTQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxh
eS1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8t
c2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi87IH07CiAJCTJF
MjA1QkE0MUY1Mjc3NDYwMDU5NTJERCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTIwNUJBMzFGNTI3NzQ2
MDA1OTUyREQgLyogQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tICovOyB9OwogCQkyRTU0RjQwRDFE
N0JDODQyMDA5MjFBREYgLyogbGFyZ2UtdmlkZW8tbXV0ZXMtb25wbGF5aW5nLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU1NEY0MEMx
RDdCQzgzOTAwOTIxQURGIC8qIGxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1sICovOyB9
OworCQkyRTVDNzcwNzFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTVDNzcwNjFGQTcw
MTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gKi87IH07CiAJCTJFNjkxQUVBMUQ3
OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xz
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8t
aGlkZXMtY29udHJvbHMuaHRtbCAqLzsgfTsKIAkJMkU2OTFBRUIxRDc4QjUzNjAwMTI5NDA3IC8q
IGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRTkxRDc4
QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xz
Lmh0bWwgKi87IH07CiAJCTJFNjkxQUVEMUQ3OEI5MTAwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3Mt
cGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUVDMUQ3OEI5MDIwMDEy
OTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5o
dG1sICovOyB9OwpAQCAtMTE2OCw2ICsxMTY5LDcgQEAKIAkJMkUxREZERjAxRDQyRTE0NDAwNzE0
QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGlu
Zy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLXNlZWstdG8t
YmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkUyMDVCQTMxRjUyNzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0
c0lPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU1NEY0MEMxRDdCQzgzOTAwOTIxQURGIC8q
IGxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkU1Qzc3MDYxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRl
c3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBdHRhY2htZW50VGVzdHMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjkxQUU4MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJn
ZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2OTFBRTkxRDc4QjUyQjAwMTI5
NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2Vl
cHMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjkxQUVD
MUQ3OEI5MDIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRl
cy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVv
cy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA3NCw2ICsyMDc2LDcgQEAKIAkJCQk1MTcxNEVCNjFDRjhDN0E0
MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tICovLAogCQkJCTUxMjBDODND
MUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gKi8sCiAJ
CQkJNUM5RTU2ODQxREY5MTQzRDAwQzlFRTMzIC8qIFdlYnNpdGVQb2xpY2llcy5tbSAqLywKKwkJ
CQkyRTVDNzcwNjFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gKi8sCiAJ
CQkJMUY4MzU3MUExRDNGRkIwRTAwRTM5NjdCIC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tICovLAog
CQkJCTVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5t
bSAqLywKIAkJCQkyRDgzOEIxRTFFRUYzQTVCMDA5Qjk4MEUgLyogV0tDb250ZW50Vmlld0VkaXRp
bmdBY3Rpb25zLm1tICovLApAQCAtMjQ0MCw3ICsyNDQzLDYgQEAKIAkJQkM5MDk2NDExMjU1NjE2
MDAwMDgzNzU2IC8qIFdlYktpdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCi0JCQkJMDdFNDk5OTAxRjlFNTZBMTAwMkYxRUYzIC8qIEdldFVzZXJNZWRpYVJlcHJv
bXB0Lm1tICovLAogCQkJCTBGMTM5RTc0MUE0MjNBNDYwMEY1OTBGNSAvKiBjb2NvYSAqLywKIAkJ
CQlDMEM1RDNCQjE0NTk4QjZGMDBBODAyQTYgLyogbWFjICovLAogCQkJCUJDOTA5NzdCMTI1NTcx
QUUwMDA4Mzc1NiAvKiBSZXNvdXJjZXMgKi8sCkBAIC0yNDc4LDYgKzI0ODAsNyBAQAogCQkJCUY2
NjBBQTBDMTVBNUYwNjEwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFjay5jcHAgKi8sCiAJCQkJRjY2MEFBMEYxNUE1RjYyNDAwM0ExMjQzIC8q
IEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5j
cHAgKi8sCiAJCQkJMDdDRTFDRjIxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmln
YXRpb24ubW0gKi8sCisJCQkJMDdFNDk5OTAxRjlFNTZBMTAwMkYxRUYzIC8qIEdldFVzZXJNZWRp
YVJlcHJvbXB0Lm1tICovLAogCQkJCTRCRkRGRkE4MTMxNDc3NzcwMDYxRjI0QiAvKiBIaXRUZXN0
UmVzdWx0Tm9kZUhhbmRsZS5jcHAgKi8sCiAJCQkJNEJGREZGQTYxMzE0Nzc2QzAwNjFGMjRCIC8q
IEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgKi8sCiAJCQkJQkM1NzVBQUMxMjZF
ODNCOTAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlQmFzaWMuY3BwICovLApAQCAtMzI3Nyw3ICsz
MjgwLDYgQEAKIAkJCQk0NjM5N0I5NTFEQzJDODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RUJDMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01Ob2RlRnJvbUpT
T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQkQxQTQxMUE3RTAwNDQ3QzRDIC8q
IERPTVJhbmdlT2ZTdHJpbmcubW0gaW4gU291cmNlcyAqLywKLQkJCQkwN0U0OTk5MTFGOUU1NkRG
MDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VFQzFBNDExQUU2MDA0NDdDNEMgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRUQxQTQxMUFFNjAwNDQ3QzRDIC8qIERPTVdpbmRvd0V4
dGVuc2lvbk5vQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjMxQTQxMUFGNjAw
NDQ3QzRDIC8qIERvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zMzI0LDYgKzMzMjYsNyBA
QAogCQkJCTdDQ0U3RUY5MUE0MTFBRTYwMDQ0N0M0QyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRp
YWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VF
MjFBNDExQTlBMDA0NDdDNEMgLyogR2V0UElEQWZ0ZXJBYm9ydGVkUHJvY2Vzc0xhdW5jaC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwN0NFMUNGMzFGMDZBN0UwMDBCRjg5RjUgLyogR2V0VXNlck1l
ZGlhTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTA3RTQ5OTkxMUY5RTU2REYwMDJG
MUVGMyAvKiBHZXRVc2VyTWVkaWFSZXByb21wdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNkJE
QkFDMUU3MjA3RjEwMERFMEQ1QSAvKiBHUFVCdWZmZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkz
MTUyMzFDQTFFQjNCM0M3MDBBMjJBMTYgLyogR1BVQ29tbWFuZFF1ZXVlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE2MkFFOUMxRTZGMkZGNTAwMEU0REJDIC8qIEdQVURldmljZS5tbSBpbiBTb3Vy
Y2VzICovLApAQCAtMzUyMSw2ICszNTI0LDcgQEAKIAkJCQk3Q0NFN0YxQzFBNDExQUU2MDA0NDdD
NEMgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VE
ODFBNDExQTdFMDA0NDdDNEMgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RUQ5MUE0MTFBN0UwMDQ0N0M0QyAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhN
ZWRpYS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTJFNUM3NzA3MUZBNzAxMzYwMDU5MzJDMyAvKiBX
S0F0dGFjaG1lbnRUZXN0cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFGODM1NzFCMUQzRkZCMjMw
MEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RjJFMUE0MTFCMTAwMDQ0N0M0QyAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVzdC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RjJGMUE0MTFCMTAwMDQ0N0M0QyAvKiBXS0Jyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZVRlc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc1OTk2MmZhMTc3ZGUwODZiMWQ3YjdkNTk1MDk2MTQzYWU2MWRlMjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRl
c3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktp
dC9XZWJLaXRQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19B
UElfRU5BQkxFRAorCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXdGb3JU
ZXN0aW5nQXR0YWNobWVudHMoKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRp
b24gX3NldEF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZDpZRVNdOworCisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Cisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVk
aXRhYmxlPjwvYm9keT48c2NyaXB0PmRvY3VtZW50LmJvZHkuZm9jdXMoKTs8L3NjcmlwdD4iXTsK
KworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitzdGF0aWMgTlNEYXRhICp0ZXN0SFRNTERhdGEo
KQoreworICAgIHJldHVybiBbQCI8YSBocmVmPScjJz5UaGlzIGlzIHNvbWUgSFRNTCBkYXRhPC9h
PiIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworfQorCitzdGF0aWMg
TlNEYXRhICp0ZXN0SW1hZ2VEYXRhKCkKK3sKKyAgICBOU1VSTCAqdXJsID0gW1tOU0J1bmRsZSBt
YWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImljb24iIHdpdGhFeHRlbnNpb246QCJwbmciIHN1
YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgcmV0dXJuIFtOU0Rh
dGEgZGF0YVdpdGhDb250ZW50c09mVVJMOnVybF07Cit9CisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0
V0tXZWJWaWV3IChBdHRhY2htZW50VGVzdGluZykKKworLSAoX1dLQXR0YWNobWVudCAqKXN5bmNo
cm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1l
IGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEg
b3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucworeworICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgX1dLQXR0YWNobWVudCAqYXR0YWNobWVudCA9
IFtzZWxmIF9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmZpbGVuYW1lIGNvbnRlbnRUeXBl
OmNvbnRlbnRUeXBlIGRhdGE6ZGF0YSBvcHRpb25zOm9wdGlvbnMgY29tcGxldGlvbjpeKEJPT0wp
IHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKyAgICByZXR1cm4gYXR0YWNobWVudDsKK30KKworLSAoTlNTdHJpbmcg
Kil2YWx1ZU9mQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJpYnV0ZU5hbWUgZm9yUXVlcnlTZWxl
Y3RvcjooTlNTdHJpbmcgKilxdWVyeVNlbGVjdG9yCit7CisgICAgcmV0dXJuIFtzZWxmIHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCclQCcpLmdldEF0dHJpYnV0ZSgnJUAnKSIsIHF1ZXJ5U2VsZWN0
b3IsIGF0dHJpYnV0ZU5hbWVdXTsKK30KKworQGVuZAorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CisKK1RFU1QoV0tBdHRhY2htZW50VGVzdHMsIEF0dGFjaG1lbnRFbGVtZW50SW5zZXJ0aW9u
KQoreworICAgIGF1dG8gd2ViVmlldyA9IHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMoKTsK
KworICAgIC8vIFVzZSB0aGUgZ2l2ZW4gY29udGVudCB0eXBlIGZvciB0aGUgYXR0YWNobWVudCBl
bGVtZW50J3MgdHlwZS4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVu
dFdpdGhGaWxlbmFtZTpAImZvbyIgY29udGVudFR5cGU6QCJ0ZXh0L2h0bWwiIGRhdGE6dGVzdEhU
TUxEYXRhKCkgb3B0aW9uczpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUShAImZvbyIsIFt3ZWJW
aWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1l
bnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAidGV4dC9odG1sIiwgW3dlYlZpZXcgdmFsdWVP
ZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAg
IEVYUEVDVF9XS19TVFJFUShAIjM4IGJ5dGVzIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpA
InN1YnRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKworICAgIC8vIFNp
bmNlIG5vIGNvbnRlbnQgdHlwZSBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCwgY29tcHV0ZSBpdCBm
cm9tIHRoZSBmaWxlIGV4dGVuc2lvbi4KKyAgICBbd2ViVmlldyBfZXhlY3V0ZUVkaXRDb21tYW5k
OkAiRGVsZXRlQmFja3dhcmQiIGFyZ3VtZW50Om5pbCBjb21wbGV0aW9uOm5pbF07CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6QCJiYXIucG5n
IiBjb250ZW50VHlwZTpuaWwgZGF0YTp0ZXN0SW1hZ2VEYXRhKCkgb3B0aW9uczpuaWxdOworICAg
IEVYUEVDVF9XS19TVFJFUShAImJhci5wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAi
dGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgIEVYUEVDVF9XS19T
VFJFUShAImltYWdlL3BuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0eXBlIiBmb3JR
dWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCIzNyBL
QiIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzdWJ0aXRsZSIgZm9yUXVlcnlTZWxlY3Rv
cjpAImF0dGFjaG1lbnQiXSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKwor
I2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325414</attachid>
            <date>2017-10-30 19:48:15 -0700</date>
            <delta_ts>2017-10-30 20:44:58 -0700</delta_ts>
            <desc>Guard _WKAttachment.mm with WK_API_ENABLED.</desc>
            <filename>bug-179013-20171030194814.patch</filename>
            <type>text/plain</type>
            <size>73775</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMzAwYmI1YmU2NzAwYzg1Mzk2N2Q1YjQ1YmFlNTkw
ODYzM2FlOWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uMWMzMmQzZTlhNTA4M2Q2NDkzNGMzMTAyNGU0ODBjZWYyZmEwOTY2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvRmlsZVNpemVGb3JtYXR0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGZpbGVTaXplRGVz
Y3JpcHRpb24pOgorICAgICAgICAqIHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTogQWRkZWQuCisgICAg
ICAgIChmaWxlU2l6ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL05TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaDogQWRkZWQuCisKIDIwMTctMTAtMjcgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBpT1Mgc3BlY2lmaWMgc291
cmNlcyB0byB1bmlmaWVkIHNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjQxZmQ0NTNkMmU4YTI0ZmU3ZWZk
ZTg2NGE4MTY3MWYwOWY0MTc0Mi4uMmU3YzI5MmViMjU4NjM0MmFlNWRhZDA4NGM4ODlmNmEwYTEz
MDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxNy0xMC0zMCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0
XSBJbXBsZW1lbnQgV0tXZWJWaWV3IFNQSSBmb3IgaW5zZXJ0aW5nIGF0dGFjaG1lbnQgZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAx
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyNDk2Njg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuYXRpdmUgU1BJIHRvIGluc2VydCBh
dHRhY2htZW50IGVsZW1lbnRzIGdpdmVuIGEgZmlsZW5hbWUsIGFuIG9wdGlvbmFsIE1JTUUgdHlw
ZSwgYW5kIGEgZGF0YSBibG9iLiBTZWUKKyAgICAgICAgY2hhbmdlLWJ5LWNoYW5nZSBjb21tZW50
cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuIENvdmVyZWQgYnkgYSBuZXcgQVBJIHRlc3QuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRNZW1vcnlDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKToKKworICAgICAgICBJbnRyb2R1Y2UgYSBjb252ZW5pZW5jZSBtZXRob2QgdG8gY3Jl
YXRlIGEgU2hhcmVkTWVtb3J5IHVzaW5nIGEgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogUGxh
dGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGUpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6fkF0dGFjaG1lbnQpOgorCisgICAgICAgIEludHJvZHVjZSBBUEk6
OkF0dGFjaG1lbnQsIHdoaWNoIHJlcHJlc2VudHMgYSBwbGF0Zm9ybS1hZ25vc3RpYyBBdHRhY2ht
ZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlv
bnM6Y29tcGxldGlvbjpdKToKKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGluc2VydGluZyBh
IG5ldyBhdHRhY2htZW50IGVsZW1lbnQuIENhbGxzIG91dCB0byBXZWJQYWdlUHJveHkgdG8gaW5z
ZXJ0IHRoZSBhdHRhY2htZW50IGZyb20gdGhlCisgICAgICAgIGdpdmVuIGRhdGEgYmxvYiwgYW5k
IGNyZWF0ZXMgYSBuZXcgQVBJLW9iamVjdC1iYWNrZWQgX1dLQXR0YWNobWVudC4KKworICAgICAg
ICAoLVtXS1dlYlZpZXcgX2V4ZWN1dGVFZGl0Q29tbWFuZDphcmd1bWVudDpjb21wbGV0aW9uOl0p
OgorCisgICAgICAgIFN1cHBvcnQgcGFzc2luZyBpbiBhIG5pbCBjb21wbGV0aW9uIGJsb2NrLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaC4KKworICAgICAgICBJbnRyb2R1Y2VzIF9X
S0F0dGFjaG1lbnQsIGFuIE9iamVjdGl2ZSBDIHdyYXBwZXIgYXJvdW5kIHRoZSBBUEk6OkF0dGFj
aG1lbnQuCisKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBfYXBpT2JqZWN0XSk6CisgICAgICAg
ICgtW19XS0F0dGFjaG1lbnQgaXNFcXVhbDpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCB1
bmlxdWVJZGVudGlmaWVyXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgaGFzaF0pOgorCisg
ICAgICAgIEFkZCBfV0tBdHRhY2htZW50LCBhIFdlYktpdCBTUEkgb2JqZWN0IHRoYXQgd3JhcHMg
YW4gYXR0YWNobWVudCBlbGVtZW50IHVuaXF1ZSBpZGVudGlmaWVyLiBBbHNvLCBhbGxvdworICAg
ICAgICBfV0tBdHRhY2htZW50IHRvIGJlIHVzZWQgYXMgYSBoYXNoYWJsZSBOU0RpY3Rpb25hcnkg
a2V5LgorCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgZGVzY3JpcHRpb25dKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAg
ICAoQVBJOjp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KToKKworICAg
ICAgICBJbXBsZW1lbnQgSVBDIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbiBhdHRhY2htZW50Lgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0yNyAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtTZXR0aW5nc10gR2VuZXJhdGUgbW9y
ZSBvZiB0aGUgV2ViS2l0IHByZWZlcmVuY2VzIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNTFhZGIwMDgxMDBjMmZmZWNl
MjQyZTg4YWZmNTg1ODVkZDc5ODBlLi4zN2YxNWU5NzVlMzcyNmI0OTIyYmNmZjdmNDRmMzk4MjNk
N2VjZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDEsNiArMTQxLDEwIEBACiAJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRC
MSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBQjZFNjMxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNs
ZWVwTGlzdGVuZXJNYWMubW0gKi87IH07CiAJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBT
ZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTNDNjZDREExRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi87IH07CiAJCUEz
QzY2Q0REMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RCMUY0NjJENkEwMDlFNkVFOSAvKiBT
ZXNzaW9uSUQuaCAqLzsgfTsKKwkJRjQ0MjkxNUUxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmlsZVNp
emVGb3JtYXR0ZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggKi87IH07CisJCUY0NDI5MTYwMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjkx
NUYxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxNjQxRkE1MjY3MDAwMkND
OTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZv
cm1hdHRlci5jcHAgKi87IH07CisJCUY0NDI5MTY4MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6
ZUZvcm1hdHRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29j
b2EubW0gKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTI4Myw2ICsyODcsMTAgQEAKIAkJ
QTNDNjZDREExRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXNzaW9uSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlc3Npb25JRC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjE0N0E0QTFFRkQwQUE2MDAwNTZGQTUgLyogQ29weVBBTEhlYWRlcnMu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29weVBBTEhlYWRlcnMu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTVEMUZBNTI0NzMw
MDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0Mjkx
NUYxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbGVTaXplRm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5
MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaWxlU2l6ZUZvcm1hdHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMzYyLDYg
KzM3MCw3IEBACiAJCQkJMEMyREExMzExRjNCRUI0OTAwREJDMzE3IC8qIE5TQ29sb3JTUEkuaCAq
LywKIAkJCQkwQzJEQTEzMjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAqLywK
IAkJCQkwQzJEQTEzMzFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICovLAor
CQkJCUY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmgg
Ki8sCiAJCQkJMEMyREExMzQxRjNCRUI0OTAwREJDMzE3IC8qIE5TU3RyaW5nU1BJLmggKi8sCiAJ
CQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91Y2hCYXJTUEkuaCAqLywKIAkJCQkw
QzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCkBAIC00
NzEsNiArNDgwLDggQEAKIAkJCQlBMzc4OEU5RjFGMDVCN0NFMDA2Nzk0MjUgLyogc3lzdGVtICov
LAogCQkJCUEzMEQ0MTFEMUYwREQwQUMwMEI3MTk1NCAvKiB0ZXh0ICovLAogCQkJCTBDMkQ5RTcy
MUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQlGNDQyOTE2MjFGQTUy
NjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAorCQkJCUY0NDI5MTVGMUZB
NTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAogCQkJCUEzOURFNzREMUY3
QzQ0M0MwMDdCQ0IwMCAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLywKIAkJCQkwNzA4QUMzMjFG
NEM4NzRBMDAxRjc4OEYgLyogTG9nZ2VyLmggKi8sCiAJCQkJMDczNzdBREIxRjU3NzdENzAwMjdG
MTZEIC8qIExvZ2dlckhlbHBlci5oICovLApAQCAtNTE3LDYgKzUyOCw3IEBACiAJCTFDNDg3NkRF
MUY4RDgzMTMwMENDRUVCRCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9y
bWF0dGVyQ29jb2EubW0gKi8sCiAJCQkJMUM0ODc2REYxRjhEODM3NTAwQ0NFRUJEIC8qIExvZ2dp
bmdDb2NvYS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CkBAIC02MTIsNiArNjI0LDcg
QEAKIAkJCQkwQzVBRjkxQTFGNDNBNEM3MDAyRUFDMDIgLyogRGF0YURldGVjdG9yc1VJU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNl
YXJjaFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEOUU3MzFFRUY1QUY2MDBEQkMz
MTcgLyogRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE2MDFGQTUyNjFF
MDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDI2
NTg3MUY1Njc0NjEwMEI0Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwQzVBRjkxQjFGNDNBNEM3MDAyRUFDMDIgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTEwMjY1OEUxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEku
aCBpbiBIZWFkZXJzICovLApAQCAtNjQ3LDYgKzY2MCw3IEBACiAJCQkJMEM3Nzg1OEYxRjQ1MTMw
RjAwRjRFQkI2IC8qIE5TRXZlbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTRFMUYz
QkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMy
REExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY0NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MDFGNDUxMzBGMDBGNEVCQjYgLyogTlNGb250
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGRTFGNThBNDMzMDA0NzcyQUMgLyogTlNH
cmFwaGljc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTExRjQ1MTMwRjAwRjRFQkI2
IC8qIE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCBpbiBIZWFkZXJzICov
LApAQCAtNzg0LDYgKzc5OCw4IEBACiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkzIC8qIENv
cmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlEMDU2MUUzMUM0NjUw
MDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVG
b3JtYXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0MjkxNjgxRkE1MjcwNTAwMkNDOTNF
IC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMzBENDEy
MjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMw
RDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvRmlsZVNpemVGb3JtYXR0ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUzZmIyMjMzMjI5NDI4M2Y0NDdhMDU1MTQ5NjZkNjQ3N2M3ZWRjNmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmNwcApAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZpbGVTaXplRm9ybWF0dGVyLmgiCisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK1N0cmluZyBm
aWxlU2l6ZURlc2NyaXB0aW9uKHVpbnQ2NF90IHNpemUpCit7CisgICAgLy8gRklYTUU6IFRoZXNl
IHN0cmluZ3Mgc2hvdWxkIGJlIGxvY2FsaXplZCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBicmlu
Z2luZyBMb2NhbGl6ZWRTdHJpbmdzIGludG8gUEFMLgorICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAxOT4gZm9yIG1vcmUgZGV0YWlscy4KKyAg
ICBpZiAoc2l6ZSA8IDEwMDApCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXR1IGJ5
dGVzIiwgc2l6ZSk7CisgICAgaWYgKHNpemUgPCAxMDAwMDAwKQorICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIiUuMWYgS0IiLCBzaXplIC8gMTAwMC4pOworICAgIGlmIChzaXplIDwgMTAw
MDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIE1CIiwgc2l6ZSAv
ICgxMDAwMDAwLikpOworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJS4xZiBHQiIsIHNpemUg
LyAoMTAwMDAwMDAwMC4pKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0Zp
bGVTaXplRm9ybWF0dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNhZjBjNjk4MDk4ZDVlOGZjNGM0YWE1NmI0
OTMyZDc2Y2M2YjBhZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
RmlsZVNpemVGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitQQUxfRVhQT1JUIFN0
cmluZyBmaWxlU2l6ZURlc2NyaXB0aW9uKHVpbnQ2NF90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NzA5NWJhZjU0MGNlNjlkMGQ2MTk0ZWE5YTVhN2EyZjkwYjZiYmFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9GaWxlU2l6ZUZvcm1hdHRlckNvY29h
Lm1tCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiRmlsZVNpemVGb3JtYXR0ZXIuaCIKKworI2ltcG9ydCAiTlNGaWxlU2l6ZUZvcm1h
dHRlclNQSS5oIgorCitTdHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplKQor
eworICAgIHJldHVybiBOU0xvY2FsaXplZEZpbGVTaXplRGVzY3JpcHRpb24oc2l6ZSwgMCwgMCk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVT
aXplRm9ybWF0dGVyU1BJLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0Zp
bGVTaXplRm9ybWF0dGVyU1BJLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU1NzZmZDM0YzE1MGRlZjEwNWZmYjRk
OWYyYWU3YjQwMjNmZGY2OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NvY29hL05TRmlsZVNpemVGb3JtYXR0ZXJTUEkuaApAQCAtMCwwICsxLDM3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQor
CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TRmlsZVNpemVGb3JtYXR0ZXIuaD4KKworI2Vsc2UKKwor
dHlwZWRlZiB1aW50NjRfdCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9uczsKK2V4dGVybiAiQyIg
TlNTdHJpbmcgKk5TTG9jYWxpemVkRmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplLCB1
aW50NjRfdCBtYXhpbXVtRGlzcGxheWVkVmFsdWUsIE5TRmlsZVNpemVGb3JtYXR0ZXJPcHRpb25z
KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYmUzZGE4ZWUyZjc1
ZWJlMmU3NjdiYmE2ZTc3N2YwOTE1Zjk4ODIyNS4uZTY4N2EyNzU1ZmE5ZWQxNWYwZDdkNDU3N2Jh
YmU3YTZmYzAwNDRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNDcsMTIgKzQ3
LDE0IEBACiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVy
LmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkZpbGUuaCIKICNpbmNsdWRl
ICJGb2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3Lmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCkBA
IC05OCw2ICsxMDAsNyBAQAogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgi
CiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCisjaW5jbHVk
ZSA8cGFsL0ZpbGVTaXplRm9ybWF0dGVyLmg+CiAjaW5jbHVkZSA8cGFsL3N5c3RlbS9Tb3VuZC5o
PgogI2luY2x1ZGUgPHBhbC90ZXh0L0tpbGxSaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUv
Q2hhcmFjdGVyTmFtZXMuaD4KQEAgLTM3MjgsNiArMzczMSwzOSBAQCBSZWZQdHI8UmFuZ2U+IEVk
aXRvcjo6cmFuZ2VGb3JUZXh0Q2hlY2tpbmdSZXN1bHQoY29uc3QgVGV4dENoZWNraW5nUmVzdWx0
JiByZXN1bAogICAgIHJldHVybiBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKCpjb250ZXh0UmFuZ2Us
IHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNI
TUVOVF9FTEVNRU5UKQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmls
ZXBhdGgsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIWNv
bnRlbnRUeXBlKQorICAgICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmls
ZShmaWxlbmFtZSk7CisgICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIGZp
bGVuYW1lLCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShmaWxlcGF0aCkpOworfQorCit2b2lk
IEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgc3RkOjpvcHRpb25h
bDxTdHJpbmc+IGNvbnRlbnRUeXBlKQoreworICAgIGlmICghY29udGVudFR5cGUpCisgICAgICAg
IGNvbnRlbnRUeXBlID0gRmlsZTo6Y29udGVudFR5cGVGb3JGaWxlKGZpbGVuYW1lKTsKKyAgICBp
bnNlcnRBdHRhY2htZW50RnJvbUZpbGUoaWRlbnRpZmllciwgZmlsZW5hbWUsICpjb250ZW50VHlw
ZSwgRmlsZTo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShkYXRhLCAqY29udGVudFR5cGUpLCBmaWxlbmFt
ZSkpOworfQorCit2b2lkIEVkaXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSwgUmVmPEZpbGU+JiYgZmlsZSkKK3sKKyAgICBhdXRvIGF0dGFjaG1lbnQgPSBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZShIVE1MTmFtZXM6OmF0dGFjaG1lbnRUYWcsIGRv
Y3VtZW50KCksIGlkZW50aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0ZShIVE1M
TmFtZXM6OnRpdGxlQXR0ciwgZmlsZW5hbWUpOworICAgIGF0dGFjaG1lbnQtPnNldEF0dHJpYnV0
ZShIVE1MTmFtZXM6OnN1YnRpdGxlQXR0ciwgZmlsZVNpemVEZXNjcmlwdGlvbihmaWxlLT5zaXpl
KCkpKTsKKyAgICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0eXBlQXR0ciwg
Y29udGVudFR5cGUpOworICAgIGF0dGFjaG1lbnQtPnNldFVuaXF1ZUlkZW50aWZpZXIoaWRlbnRp
Zmllcik7CisgICAgYXR0YWNobWVudC0+c2V0RmlsZShmaWxlLnB0cigpKTsKKworICAgIGF1dG8g
ZnJhZ21lbnRUb0luc2VydCA9IGRvY3VtZW50KCkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwor
ICAgIGZyYWdtZW50VG9JbnNlcnQtPmFwcGVuZENoaWxkKGF0dGFjaG1lbnQuZ2V0KCkpOworCisg
ICAgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChmcmFnbWVudFRvSW5zZXJ0LmdldCgpLCBm
YWxzZSwgZmFsc2UsIHRydWUpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKwogdm9pZCBFZGl0b3I6OmhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKFRleHRDaGVja2lu
Z1Jlc3VsdCBhY2NlcHRlZENhbmRpZGF0ZSkKIHsKICAgICBjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24gPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmgKaW5kZXggYWE4ODVmZjU5OWMxYTA3NWQzZGEwZDA3Y2RmMjI1ODUxNmFlYTM3
ZC4uZmRmYTNlOGE4MDljNWFiNTgxODYzNTY3ZDVlOGU5MGJlMjAzZDgzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCkBAIC02Myw3ICs2Myw5IEBAIGNsYXNzIEVkaXRDb21tYW5kOwogY2xhc3Mg
RWRpdENvbW1hbmRDb21wb3NpdGlvbjsKIGNsYXNzIEVkaXRvckNsaWVudDsKIGNsYXNzIEVkaXRv
ckludGVybmFsQ29tbWFuZDsKK2NsYXNzIEZpbGU7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEhUTUxB
dHRhY2htZW50RWxlbWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgSGl0VGVzdFJlc3Vs
dDsKIGNsYXNzIEtleWJvYXJkRXZlbnQ7CkBAIC00OTgsOSArNTAwLDE4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldElzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8oYm9vbCBiKSB7IG1faXNHZXR0
aW5nRGljdGlvbmFyeVBvcHVwSW5mbyA9IGI7IH0KICAgICBib29sIGlzR2V0dGluZ0RpY3Rpb25h
cnlQb3B1cEluZm8oKSBjb25zdCB7IHJldHVybiBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cElu
Zm87IH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlcGF0aCwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGNvbnRlbnRUeXBlID0gc3RkOjpudWxsb3B0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBjb250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50RnJvbUZpbGUoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8RmlsZT4mJik7CisjZW5kaWYKKwogICAgIGJvb2wgY2FuRGVsZXRlUmFuZ2UoUmFu
Z2UqKSBjb25zdDsKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZVdpdGhQYXN0ZWJvYXJkKFBhc3Rl
Ym9hcmQmKTsKICAgICB2b2lkIHBhc3RlQXNQbGFpblRleHRXaXRoUGFzdGVib2FyZChQYXN0ZWJv
YXJkJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAK
aW5kZXggYTZlZDk2MTU2YWNkYTcyMzMzYmIzNmZhN2I1ZjUzYWFmYzlhMDI5Yi4uM2JmZjBjN2Jm
OWMxOGZmMWU4YjYzY2NkOGQ5ZGFiNjBiYzE2MzM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjgsMjAgKzI4LDI5IEBACiAKICNpZiBF
TkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVk
ZSAiRmlsZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyQXR0YWNobWVudC5oIgorI2luY2x1ZGUgPHd0Zi9VVUlELmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpI
VE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCiAgICAgOiBIVE1MRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIG1fdW5pcXVlSWRlbnRpZmllcihpZGVudGlmaWVy
KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGF0dGFjaG1lbnRUYWcpKTsKIH0KIAorSFRNTEF0
dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQorICAgIDogSFRNTEF0dGFjaG1lbnRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpCit7Cit9
CisKIEhUTUxBdHRhY2htZW50RWxlbWVudDo6fkhUTUxBdHRhY2htZW50RWxlbWVudCgpID0gZGVm
YXVsdDsKIAogUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50
OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50
KQpAQCAtNDksNiArNTgsMTEgQEAgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFj
aG1lbnRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGEKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBIVE1MQXR0YWNobWVudEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsK
IH0KIAorUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRN
TEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBpZGVudGlmaWVyKSk7Cit9CisK
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQogewogICAgIHJldHVybiBjcmVhdGVSZW5kZXJlcjxSZW5kZXJBdHRhY2htZW50PigqdGhp
cywgV1RGTW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRF
bGVtZW50LmgKaW5kZXggOWFjNmI2YThiMTc4NGQwMTY4ZWQwM2EwZTk5NDMzZTM4NjQ4MzllMi4u
M2E0NGE1ZjExOTljNzIwOWMzYjFhZTQ5YmVmYmI4MTYxMWE2MDMzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5oCkBAIC0zNywxMCArMzcsMTQgQEAgY2xh
c3MgUmVuZGVyQXR0YWNobWVudDsKIGNsYXNzIEhUTUxBdHRhY2htZW50RWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MQXR0YWNo
bWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAg
ICBzdGF0aWMgUmVmPEhUTUxBdHRhY2htZW50RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7CiAKICAgICBXRUJD
T1JFX0VYUE9SVCBGaWxlKiBmaWxlKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRGaWxlKEZpbGUqKTsK
IAorICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyB1bmlxdWVJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmlxdWVJZGVudGlmaWVyOyB9CisgICAgdm9pZCBzZXRVbmlxdWVJZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgeyBtX3VuaXF1ZUlkZW50aWZpZXIgPSBpZGVudGlm
aWVyOyB9CisKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgYXR0YWNobWVudFRpdGxlKCkgY29u
c3Q7CiAgICAgU3RyaW5nIGF0dGFjaG1lbnRUeXBlKCkgY29uc3Q7CiAKQEAgLTQ4LDYgKzUyLDcg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxBdHRhY2htZW50RWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKKyAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsK
ICAgICB2aXJ0dWFsIH5IVE1MQXR0YWNobWVudEVsZW1lbnQoKTsKIAogICAgIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CkBAIC02Myw2ICs2OCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWlj
U3RyaW5nJikgZmluYWw7CiAgICAgCiAgICAgUmVmUHRyPEZpbGU+IG1fZmlsZTsKKyAgICBTdHJp
bmcgbV91bmlxdWVJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaCBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgKaW5kZXggYzcyZTBkNGIwYWI4NzIwNmJjZjUy
NzU1Mzc5OWRjM2JlZmNiYTFjMC4uMDE3YjQzNGVlNGE5MmRmN2FiOWQ1YzlmMjc3N2Q2ZmRjY2E0
ZTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCkBAIC00MCw2ICs0MSwxMCBAQCBjbGFzcyBE
ZWNvZGVyOwogY2xhc3MgRW5jb2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
U2hhcmVkQnVmZmVyOworfQorCiAjaWYgT1MoREFSV0lOKQogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTWFjaFNlbmRSaWdodDsKQEAgLTg3LDYgKzkyLDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGFsbG9jYXRlKHNpemVfdCk7CiAgICAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IGNyZWF0ZSh2b2lkKiwgc2l6ZV90LCBQcm90ZWN0aW9uKTsKKyAg
ICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gY3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYpOwogICAgIHN0YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBtYXAoY29uc3QgSGFu
ZGxlJiwgUHJvdGVjdGlvbik7CiAjaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCiAgICAgc3Rh
dGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHdyYXBNYXAodm9pZCosIHNpemVfdCwgaW50IGZpbGVE
ZXNjcmlwdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hh
cmVkTWVtb3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRN
ZW1vcnlDb2NvYS5jcHAKaW5kZXggYWVhNzk4NTA0NDlhOGI4OTc5OGU5MDM2ZDdiMGU1MzAxODAz
YWE1NC4uMzk4ZDU1ZTdjMTk0YWM2OWY0ZGI3YWMwZjJjOWJiYTE2M2UwYTE0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAg
LTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFjaFBvcnQu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgogI2luY2x1ZGUg
PG1hY2gvbWFjaF9wb3J0Lmg+CiAjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KQEAgLTE1Niw2ICsx
NTcsMTMgQEAgc3RhdGljIFdlYkNvcmU6Ok1hY2hTZW5kUmlnaHQgbWFrZU1lbW9yeUVudHJ5KHNp
emVfdCBzaXplLCB2bV9vZmZzZXRfdCBvZmZzZXQsIFMKICAgICByZXR1cm4gV2ViQ29yZTo6TWFj
aFNlbmRSaWdodDo6YWRvcHQocG9ydCk7CiB9CiAKK1JlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJl
ZE1lbW9yeTo6Y3JlYXRlKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQorewor
ICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjphbGxvY2F0ZShidWZm
ZXItPnNpemUoKSk7CisgICAgbWVtY3B5KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpLCBidWZm
ZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIHJldHVybiBzaGFyZWRNZW1vcnlCdWZm
ZXI7Cit9CisKIFJlZlB0cjxTaGFyZWRNZW1vcnk+IFNoYXJlZE1lbW9yeTo6Y3JlYXRlKHZvaWQq
IGRhdGEsIHNpemVfdCBzaXplLCBQcm90ZWN0aW9uIHByb3RlY3Rpb24pCiB7CiAgICAgQVNTRVJU
KHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggMGU2ZjY2OTY3YWUwZTEwZmIxNDZh
N2I3ZTY1ODAzNDRlOGNmZDEzMC4uNzg5ZjM4NDVmNmRlYjY0NmVlZTcwNTc5M2EyZDhhNmRjNjlj
YWE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0yMjIsNiArMjIyLDcgQEAgbGlzdChB
UFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXaW5kb3dGZWF0dXJlcy5tbQog
ICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0KKyAgICBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQubW0KICAgICBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0F1dG9tYXRpb25TZXNzaW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dXRvbWF0aW9uU2Vzc2lvbkNvbmZpZ3VyYXRpb24ubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAppbmRleCA5NjI4NjRmNzI3OTM5YTMxODU1YmE0NDRkZjcxOWQ2ZjYxZTJkYzE4Li5mNmY5
OWZhZGY0M2UzNGI3MjNlOGFkYjZjOTQ1NmRhOTE2N2Y1YmUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCkBAIC05Nyw2ICs5Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAg
ICAgIC8vIFVJUHJvY2VzcyB0eXBlcwogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlciwK
KyAgICAgICAgQXR0YWNobWVudCwKICAgICAgICAgQXV0b21hdGlvblNlc3Npb24sCiAgICAgICAg
IEJhY2tGb3J3YXJkTGlzdCwKICAgICAgICAgQmFja0ZvcndhcmRMaXN0SXRlbSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oCmluZGV4IDRhMzU4MDk3
YzdjNDI4NTJmZTZhNTBiZDFhMDMwNDAzNDRjZjczYjkuLjE4YmYwYzVkOGE2M2FmZTM5MDMyZmI0
NDdiNTIyNWU1MjE4NzZiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9XZWJLaXRQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dlYktpdFByaXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLQXR0YWNobWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0VsZW1lbnRB
Y3Rpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGb2N1c2VkRWxlbWVudEluZm8uaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tGb3JtSW5wdXRTZXNzaW9uLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFlYzBiN2ViYzA0ZmM2NmQ4
OGViMDU1ZjhkNWQ2NjNmOGFlMmExNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmNwcApAQCAtMCwwICsxLDQ4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKKwor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgQVBJIHsKKworUmVm
PEF0dGFjaG1lbnQ+IEF0dGFjaG1lbnQ6OmNyZWF0ZShjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRp
ZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmIHdlYlBhZ2UpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQXR0YWNobWVudChpZGVudGlmaWVyLCB3ZWJQYWdlKSk7Cit9CisKK0F0dGFjaG1l
bnQ6OkF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2Vi
UGFnZVByb3h5JiB3ZWJQYWdlKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAg
LCBtX3dlYlBhZ2Uod2ViUGFnZS5jcmVhdGVXZWFrUHRyKCkpCit7Cit9CisKK0F0dGFjaG1lbnQ6
On5BdHRhY2htZW50KCkKK3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElBdHRhY2htZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQ1NTkwZWZkZTc5YjA5YTA3YjQwNDgyYzA3MGQ5
ZjE2MjhkNWQzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElBdHRhY2htZW50LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5o
PgorI2luY2x1ZGUgPFdlYktpdC9XZWJQYWdlUHJveHkuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEF0
dGFjaG1lbnQgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OkF0dGFjaG1l
bnQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEF0dGFjaG1lbnQ+IGNyZWF0ZShjb25zdCBX
VEY6OlN0cmluZyYgaWRlbnRpZmllciwgV2ViS2l0OjpXZWJQYWdlUHJveHkmKTsKKyAgICB2aXJ0
dWFsIH5BdHRhY2htZW50KCk7CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0
IEF0dGFjaG1lbnQoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFn
ZVByb3h5Jik7CisKKyAgICBXVEY6OlN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgV2Vha1B0cjxX
ZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV93ZWJQYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJ
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCAxNDY4MTMxZWExYjQwMGUwMzg4NWJmNjU3MGNjN2ZhYWViNDBhMjA0Li43NDk0MDg5NzVkYTYx
NzUyMGMyOGVjOWEwZDQ4ODU0NmZmNzdhNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTk5LDYgKzk5LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjaGVtZVJl
Z2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dy
aXRpbmdNb2RlLmg+CkBAIC0xMTAsNiArMTExLDcgQEAKICNpbXBvcnQgPHd0Zi9PcHRpb25hbC5o
PgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+
CisjaW1wb3J0IDx3dGYvVVVJRC5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vZHlsZFNQSS5o
PgogI2ltcG9ydCA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCkBAIC00MTY4LDYgKzQxNzAsMjMg
QEAgLSAodm9pZClfY2xvc2UKICAgICBfcGFnZS0+Y2xvc2UoKTsKIH0KIAorLSAoX1dLQXR0YWNo
bWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1l
IGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNvbnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEg
b3B0aW9uczooX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9u
Oih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKK3sKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIGF1dG8gaWRlbnRpZmllciA9IGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKTsKKworICAgIF9wYWdlLT5pbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIs
IGZpbGVuYW1lLCBjb250ZW50VHlwZS5sZW5ndGggPyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4geyBj
b250ZW50VHlwZSB9IDogc3RkOjpudWxsb3B0LCBXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNyZWF0
ZShkYXRhKSwgW2NhcHR1cmVkSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGNh
cHR1cmVkSGFuZGxlcikKKyAgICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcihlcnJvciA9PSBXZWJL
aXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgIH0pOworCisgICAgYXV0byBhdHRh
Y2htZW50ID0gQVBJOjpBdHRhY2htZW50OjpjcmVhdGUoaWRlbnRpZmllciwgKl9wYWdlKTsKKyAg
ICByZXR1cm4gW3dyYXBwZXIoYXR0YWNobWVudCkgYXV0b3JlbGVhc2VdOworI2Vsc2UKKyAgICBy
ZXR1cm4gbmlsOworI2VuZGlmCit9CisKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhv
dXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFtz
ZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJl
Ok5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKQEAgLTYwMzMsNyArNjA1
Miw4IEBAIC0gKHZvaWQpX2Rpc2FibGVCYWNrRm9yd2FyZFNuYXBzaG90Vm9sYXRpbGl0eUZvclRl
c3RpbmcKIC0gKHZvaWQpX2V4ZWN1dGVFZGl0Q29tbWFuZDooTlNTdHJpbmcgKiljb21tYW5kIGFy
Z3VtZW50OihOU1N0cmluZyAqKWFyZ3VtZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKEJPT0wpKWNv
bXBsZXRpb24KIHsKICAgICBfcGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmQsIGFyZ3Vt
ZW50LCBbY2FwdHVyZWRDb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbild
KFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBjYXB0dXJlZENv
bXBsZXRpb25CbG9jayhlcnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUp
OworICAgICAgICBpZiAoY2FwdHVyZWRDb21wbGV0aW9uQmxvY2spCisgICAgICAgICAgICBjYXB0
dXJlZENvbXBsZXRpb25CbG9jayhlcnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6
Ok5vbmUpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGQyZDZlYjg4NTZkZmI1ZmNjNGQw
NDEzZjkwNjJhMTI3ZDk1MjU1OWUuLjEyZWE2ZjU5YzNmMzBlM2Q4OGNmM2NiNjBlNWY4MjY3MDZj
MGZkYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbXBvcnQgIlNhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uLmgi
CisjaW1wb3J0ICJfV0tBdHRhY2htZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9SZWZQdHIu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggNWVkMmIyYzFiMWFm
MTc1NjgzOTg3M2E0NTNiNzgzYTMwMWNkN2JhZS4uYzlmZDU0MGIwNmNlZTJiNjI1MDE0Njg4YmVj
NjEwMTBmNmMwNmFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgV0tfQVBJX0VO
QUJMRUQKIAogI2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLQXR0YWNobWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0ZpbmRPcHRp
b25zLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLTGF5b3V0TW9kZS5oPgogI2ltcG9ydCA8V2ViS2l0
L19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oPgpAQCAtMTc3LDYgKzE3OCw4IEBAIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU0ludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTopIEJPT0wgX2JhY2tn
cm91bmRFeHRlbmRzQmV5b25kUGFnZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKDguMCkpOwogCistIChfV0tBdHRhY2htZW50ICopX2luc2VydEF0dGFjaG1lbnRXaXRo
RmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29udGVudFR5cGU6KE5TU3RyaW5nICopY29u
dGVudFR5cGUgZGF0YTooTlNEYXRhICopZGF0YSBvcHRpb25zOihfV0tBdHRhY2htZW50RGlzcGxh
eU9wdGlvbnMgKilvcHRpb25zIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKwogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC8vIERFUkVDQVRFRDogVGhlIHNl
dHRlcnMgb2YgdGhlIHRocmVlIGZvbGxvd2luZyBmdW5jdGlvbiBhcmUgZGVwcmVjYXRlZCwgcGxl
YXNlIHVzZSBvdmVycmlkZUxheW91dFBhcmFtZXRlcnMuCiAvLyBEZWZpbmUgdGhlIHNtYWxsZXN0
IHNpemUgYSBwYWdlIHRha2Ugd2l0aCBhIHJlZ3VsYXIgdmlld3BvcnQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZTdjYjVjNjE5ZDNhZjJiMDgwMzNlNjY0M2JiNjcxYTJmYmY2NWI0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaApAQCAt
MCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgPFdlYktp
dC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3R5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSkgeworICAgIF9XS0F0dGFjaG1l
bnREaXNwbGF5TW9kZUF1dG8gPSAxLAorICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUluUGxh
Y2UsCisgICAgX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXNJY29uCit9IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCit0eXBlZGVmIHZvaWQo
Xl9XS0F0dGFjaG1lbnREYXRhQ29tcGxldGlvbkhhbmRsZXIpKE5TRGF0YSAqLCBOU0Vycm9yICop
OworCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpCitAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyA6IE5TT2JqZWN0CitA
cHJvcGVydHkgKG5vbmF0b21pYykgX1dLQXR0YWNobWVudERpc3BsYXlNb2RlIG1vZGU7CitAcHJv
cGVydHkgKG5vbmF0b21pYykgQk9PTCBleHBhbmRzSW1hZ2VUb01heGltdW1XaWR0aDsKK0BlbmQK
KworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KQorQGludGVyZmFjZSBfV0tBdHRhY2htZW50IDogTlNPYmplY3QKK0BlbmQKKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmQxYjE0NmYxNTVmMWYwZDI0MzFhZTRlYTQ4M2NhZGIwN2UzMDAwMjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0
YWNobWVudC5tbQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisjaW1wb3J0ICJfV0tBdHRhY2htZW50LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisj
aW1wb3J0ICJBUElBdHRhY2htZW50LmgiCisjaW1wb3J0ICJfV0tBdHRhY2htZW50SW50ZXJuYWwu
aCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworQGltcGxlbWVudGF0aW9uIF9XS0F0dGFj
aG1lbnREaXNwbGF5T3B0aW9ucyA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7
CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX21vZGUgPSBfV0tBdHRh
Y2htZW50RGlzcGxheU1vZGVBdXRvOworICAgICAgICBfZXhwYW5kc0ltYWdlVG9NYXhpbXVtV2lk
dGggPSBOTzsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIF9XS0F0dGFjaG1lbnQKKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAg
ICByZXR1cm4gKl9hdHRhY2htZW50OworfQorCistIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAor
eworICAgIHJldHVybiBbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W19XS0F0dGFjaG1lbnQgY2xhc3Nd
XSAmJiBbc2VsZi51bmlxdWVJZGVudGlmaWVyIGlzRXF1YWw6WyhfV0tBdHRhY2htZW50ICopb2Jq
ZWN0IHVuaXF1ZUlkZW50aWZpZXJdXTsKK30KKworLSAoTlNTdHJpbmcgKil1bmlxdWVJZGVudGlm
aWVyCit7CisgICAgcmV0dXJuIF9hdHRhY2htZW50LT5pZGVudGlmaWVyKCk7Cit9CisKKy0gKE5T
VUludGVnZXIpaGFzaAoreworICAgIHJldHVybiBbc2VsZi51bmlxdWVJZGVudGlmaWVyIGhhc2hd
OworfQorCistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAgcmV0dXJuIFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAIGlkPSclQCc+IiwgW3NlbGYgY2xhc3NdLCBzZWxmLnVu
aXF1ZUlkZW50aWZpZXJdOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1l
bnRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFj
aG1lbnRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5ODMwNTc4MDVkZjY5NzdkNDQ1YWM4M2MwYjQ3
ZGRlNTNmNmUyMWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLQXR0YWNobWVudEludGVybmFsLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElBdHRhY2htZW50LmgiCisjaW1wb3J0
ICJfV0tBdHRhY2htZW50LmgiCisKK25hbWVzcGFjZSBBUEkgeworCitpbmxpbmUgX1dLQXR0YWNo
bWVudCAqd3JhcHBlcihBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQpCit7CisgICAgQVNTRVJU
KFthdHRhY2htZW50LndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tBdHRhY2htZW50IGNsYXNz
XV0pOworICAgIHJldHVybiAoX1dLQXR0YWNobWVudCAqKWF0dGFjaG1lbnQud3JhcHBlcigpOwor
fQorCit9CisKK0BpbnRlcmZhY2UgX1dLQXR0YWNobWVudCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6QXR0YWNobWVudD4gX2F0dGFjaG1lbnQ7
Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBk
Y2JiNTI4N2FlNGIwOWE2YmUzNzgwY2MwMDgwZDNmZjE0YmFkOTBjLi40ZjVkYTJiYWYxODk4MjBk
NjI0OTljNzRlMjJkNDRlM2FhZTJkNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTcxMDUsNCArNzEwNSwyNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFt
ZQogICAgIH0pOwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordm9pZCBX
ZWJQYWdlUHJveHk6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUs
IFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSwgRnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9y
eTo6Y3JlYXRlKFdURk1vdmUoZGF0YSkpOworICAgIGlmICghc2hhcmVkTWVtb3J5KSB7CisgICAg
ICAgIGNhbGxiYWNrKENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgIGlmICgh
c2hhcmVkTWVtb3J5LT5jcmVhdGVIYW5kbGUoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rp
b246OlJlYWRPbmx5KSkgeworICAgICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpV
bmtub3duKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1lbnQoaWRlbnRpZmllciwgZmlsZW5hbWUsIGNvbnRl
bnRUeXBlLCBkYXRhLT5zaXplKCksIGhhbmRsZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKK30K
KworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4MTY1MjU3
ZTVhNTJmZmY2MzgwZDZkZDNmNTVkZGIwZjNkM2UyNzkwLi5kMmQ0MzI0N2M4YjFhNzExNWU2YWUy
MTViZmJkMmRhNDY1OTE3NTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTIxMSw2ICsxMjExLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVp
bnQ2NF90IHdlYlByb2Nlc3NDb250ZXh0SWQpOwogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKyAgICB2b2lkIGluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5
cGUsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgZGF0YSwgRnVuY3Rpb248dm9pZChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA1NmM5YzRhOGQyZjQ0NjZlNWRlZTRiZDU1YWQwMDkzYTYyM2JjNzA3Li5mOTIyMzk1ZjY1ZWEw
ZmNmOTIzZTlkMTA1OGNmODVhY2Q5NDM0NDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcyMCw2ICs3MjAsOCBAQAogCQkyREZDN0RC
QjFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERkM3REI5MUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJW
aWV3SW1wbC5oICovOyB9OwogCQkyREZDN0RCQzFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0lt
cGwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREZD
N0RCQTFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwubW0gKi87IH07CiAJCTJERkY3QjZG
MURBNENGQUYwMDgxNDYxNCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREZGN0I2RTFEQTRDRkFG
MDA4MTQ2MTQgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTJFNUM3NzBFMUZBN0Q0MjkwMDU5
MzJDMyAvKiBBUElBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTVDNzcwQzFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5o
ICovOyB9OworCQkyRTVDNzcwRjFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTVDNzcwRDFG
QTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAgKi87IH07CiAJCTJFN0E5NDRBMUJC
RDk3QzMwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFN0E5NDQ5MUJCRDk1QzYwMDk0NTU0NyAv
KiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZp
Y2F0aW9uQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
Y3BwICovOyB9OwogCQkzMTA5OTlDNzE0NkM5RTNEMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAz
MTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi87IH07
CkBAIC0yMDgyLDYgKzIwODQsOSBAQAogCQlFRENBNzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tC
dW5kbGVQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQTIyRjEwMDEyODlGQ0Q5MDA4NUU3NEYgLyogV0tCdW5kbGVQYWdlT3Zlcmxh
eS5jcHAgKi87IH07CiAJCUYwMzY5Nzg4MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMDM2
OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNrZXIuY3BwICovOyB9OwogCQlGNDA5
QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MDlCQTE3MUU2RTY0QjMw
MDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0NDI5MTkyMUZBNTkxQzkwMDJDQzkzRSAv
KiBfV0tBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDQyOTE5MTFGQTU5MTA3MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUY0NDI5MTk0MUZB
NTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0
dGFjaG1lbnQubW0gKi87IH07CisJCUY0NDI5MTk2MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRh
Y2htZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwu
aCAqLzsgfTsKIAkJRjQ0REZFQjIxRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NERGRUIw
MUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLmggKi87IH07CiAJCUY0NERGRUIz
MUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0REZFQjExRTlFNzUyRjAwMzhEMTk2IC8q
IFdlYkljb25VdGlsaXRpZXMubW0gKi87IH07CiAJCUY0OTZBNDMxMUY1OEEyNzIwMDRDMTc1NyAv
KiBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0OTZBNDJGMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUuaCAqLzsgfTsKQEAgLTMwMTksNiArMzAyNCw4IEBACiAJCTJERkM3REI5
MUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJWaWV3SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REZDN0RCQTFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3SW1wbC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkRGRjdCNkUxREE0Q0ZBRjAwODE0NjE0IC8qIFdLQmFja0ZvcndhcmRM
aXN0SXRlbVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tCYWNr
Rm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
RTVDNzcwQzFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBUElBdHRhY2htZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNUM3NzBE
MUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFQSUF0dGFjaG1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTdBOTQ0
OTFCQkQ5NUM2MDA5NDU1NDcgLyogX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTA5OTk2ODE0NkM3MUY1MDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTA5OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNh
dGlvbkNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTI2LDYgKzQ1
MzMsOSBAQAogCQlFQ0JGQzFEQjFFNkE0RDY2MDAwMzAwQzcgLyogRXh0cmFQdWJsaWNTeW1ib2xz
Rm9yVEFQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRyYVB1YmxpY1N5bWJvbHNGb3JUQVBJLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYwMzY5Nzg3MTVGNEJGMDUwMEMzQTgwRSAvKiBX
ZWJDb2xvclBpY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJDb2xvclBpY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MDlCQTE3
MUU2RTY0QjMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDQyOTE5MTFGQTU5MTA3MDAyQ0M5M0UgLyogX1dLQXR0
YWNobWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdHRhY2htZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUY0NDI5MTkzMUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQXR0YWNobWVudC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1l
bnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tBdHRhY2htZW50SW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0REZFQjAxRTlFNzUyRjAwMzhEMTk2IC8qIFdl
Ykljb25VdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViSWNv
blV0aWxpdGllcy5oOyBwYXRoID0gaW9zL1dlYkljb25VdGlsaXRpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0REZFQjExRTlFNzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGls
aXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJJY29u
VXRpbGl0aWVzLm1tOyBwYXRoID0gaW9zL1dlYkljb25VdGlsaXRpZXMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0OTZBNDJGMUY1OEEyNzIwMDRDMTc1NyAvKiBEcmFnRHJvcElu
dGVyYWN0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRl
Lmg7IHBhdGggPSBpb3MvRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC01NzQ2LDYgKzU3NTYsOSBAQAogCQkJCTM3QTVFMDEyMThCQkY5Mzcw
MDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oICovLAogCQkJCTM3QTVFMDExMThC
QkY5MzcwMDBBMDgxRSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbSAqLywKIAkJCQkzNzlB
ODczNTE4QkJGQTQzMDA1ODhBRjIgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5o
ICovLAorCQkJCUY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi8s
CisJCQkJRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gKi8sCisJ
CQkJRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oICov
LAogCQkJCTk5RTcxNEMxMUMxMjQ5RTYwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uRGVsZWdhdGUu
aCAqLywKIAkJCQk5OTBEMjhBNzFDNjQwNEIwMDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Np
b24uaCAqLywKIAkJCQk5OTBEMjhBRDFDNjUxOTA0MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNl
c3Npb24ubW0gKi8sCkBAIC03MTQwLDYgKzcxNTMsOCBAQAogCQkJCTM3QzRDMDgzMTgxNDlDMkEw
MDM2ODhCOSAvKiBDb2NvYSAqLywKIAkJCQlCQzhBNTAxMzExNzY1RjQ1MDA3NTc1NzMgLyogY3Bw
ICovLAogCQkJCUJDMTExQjQ3MTEyRjYxNjkwMDMzN0JBQiAvKiBtYWMgKi8sCisJCQkJMkU1Qzc3
MEQxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwICovLAorCQkJCTJFNUM3NzBD
MUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggKi8sCiAJCQkJOTlDODFENUIxQzIw
RTgxNzAwNUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCAqLywKIAkJCQk5OTBEMjhCMzFD
NjUyNkQ0MDA5ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCAqLywKIAkJCQk3
Qzg5RDJCMTFBNkIwNjhDMDAzQTVGREUgLyogQVBJQ29udGVudFJ1bGVMaXN0LmNwcCAqLywKQEAg
LTg0MDMsNiArODQxOCw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQkzN0E1RTAxNDE4QkJGOTNGMDAw
QTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
OUE4NzM2MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFs
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE5MjFGQTU5MUM5MDAyQ0M5M0UgLyogX1dLQXR0
YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNFIC8q
IF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlFNzE0QzUxQzEy
NEEwNDAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTkwRDI4QUIxQzY0MjBDNjAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTc4OEFDQjFGNDIxRERBMDBDMDgwMDAgLyogX1dLQXV0b21hdGlv
blNlc3Npb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTg0NzcsNiArODQ5NCw3
IEBACiAJCQkJQTE4MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2liaWxpdHlJT1MuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3RDc5MkQ4MTc2N0NDQTMwMDg4MUNCRSAvKiBBY3Rpdml0eUFz
c2VydGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY5NzAxMURCRTYwMzAwNjQ1NUIwIC8q
IEFQSUFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkyRTVDNzcwRTFGQTdENDI5MDA1OTMyQzMg
LyogQVBJQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDODFENUQxQzIxRjM4QjAw
NUM0QzgyIC8qIEFQSUF1dG9tYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MEQy
OEMwMUM2NTUzRjEwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEzREQyMDYxMjVFNUEyRjAwNDUxNUU2IC8qIEFQSUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xMDA0Myw2ICsxMDA2MSw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJMzdBNUUwMTMxOEJCRjkzNzAwMEEwODFF
IC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0Mjkx
OTQxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5OTBEMjhCMjFDNjUyMDk0MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24ubW0gaW4g
U291cmNlcyAqLywKIAkJCQk5OTc4OEFDQzFGNDIxREUyMDBDMDgwMDAgLyogX1dLQXV0b21hdGlv
blNlc3Npb25Db25maWd1cmF0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NzA0RjcxQkUw
MUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAq
LywKQEAgLTEwMDc1LDYgKzEwMDk0LDcgQEAKIAkJCQlBMTgyRDVCNDFCRTZCRDI1MDA4N0E3Q0Mg
LyogQWNjZXNzaWJpbGl0eUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3RDc5MkQ2MTc2N0NC
NkUwMDg4MUNCRSAvKiBBY3Rpdml0eUFzc2VydGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzY0Njk2RjExREJFNjAzMDA2NDU1QjAgLyogQVBJQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMkU1Qzc3MEYxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0M4OUQyQjMxQTZCMDY4QzAwM0E1RkRFIC8qIEFQSUNvbnRlbnRSdWxlTGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzNBMDZBNzFBQUI5MDNFMDA5RDc0QkEgLyogQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NFRkE5NjIxQUMw
OTk5MzAwQjkxMEZEIC8qIEFQSUNvbnRlbnRSdWxlTGlzdFN0b3JlQ29jb2EubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggOWRhYTI4NzIyNWRhZmFjMzQwZTU4OWU2OTI4YzdiMjcxYzdhMGY0Mi4uZWExODY2MDM1YzFk
NmEwMTA3ZWY1NmVhZTQ3ZWIxNjYzNmJmZjQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE2Myw2ICsxNjMsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUNvbmZpZ3VyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oPgpAQCAtNTc1Nyw0ICs1NzU4LDE5IEBAIHZvaWQgV2ViUGFnZTo6c3RvcmFnZUFj
Y2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQogICAgIGNh
bGxiYWNrKHdhc0dyYW50ZWQpOwogfQogCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
Kwordm9pZCBXZWJQYWdlOjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRU
eXBlLCB1aW50NjRfdCBkYXRhTGVuZ3RoLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaGFu
ZGxlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7CisgICAgaWYgKGF1dG8gc2hhcmVkTWVtb3J5
ID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KSkgeworICAgICAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgICAgIGF1dG8gZGF0YSA9IFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4oc2hhcmVkTWVtb3J5LT5kYXRh
KCkpLCBkYXRhTGVuZ3RoKTsKKyAgICAgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0QXR0YWNobWVu
dChpZGVudGlmaWVyLCBmaWxlbmFtZSwgV1RGTW92ZShkYXRhKSwgY29udGVudFR5cGUpOworICAg
IH0KKworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Vm9pZENhbGxiYWNrKGNhbGxi
YWNrSUQpKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDczZmRlMjgyMjQyZDNiMjZmM2YyYWRkMjI1NmFhM2ZkNTM3YzkwYTYuLjY5
ZDIwOGE2YTFlMTkzMjJmYTVkYjcwNDA2YjZiNWEzYjcwZTRkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTk5OCw2ICs5OTgsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBT
dHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCk+JiYgY2FsbGJh
Y2spOwogICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWlu
dDY0X3QgY29udGV4dElkKTsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAg
dm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCB1aW50NjRf
dCBkYXRhTGVuZ3RoLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIENhbGxiYWNrSUQpOwor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQ2MTA5OGIzNTQ5MmNiZjBmYjBh
ZGRhOTlmYmFkMDJhMGI2ZTkwZDMuLjIxNmM1OWQ4ZjM4ZWJhM2RiOWRmNjEyMjllYWI2MmU3Mjlj
MWQxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgpAQCAtNDg0LDQgKzQ4NCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgewogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3IgZXJyb3IpCiAKICAgICBTdG9yYWdlQWNjZXNzUmVzcG9uc2UoYm9vbCB3YXNHcmFu
dGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCisKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5U
KQorICAgIEluc2VydEF0dGFjaG1lbnQoU3RyaW5nIGlkZW50aWZpZXIsIFN0cmluZyBmaWxlbmFt
ZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBlLCB1aW50NjRfdCBkYXRhTGVuZ3Ro
LCBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQorI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNzBhODU2ZmI1YzA3NTY2MDY2OGM1Y2IxYTlhNDQwZTY3NjIyNGRh
MS4uMGVlNDE2NDc0Y2UzYzE3MDAxMWYxYzU0OWQ5N2Y0NDExOGM4NjQ2YyAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDE3LTEwLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNl
cnRpbmcgYXR0YWNobWVudCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2
OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRz
IGEgbmV3IEFQSSB0ZXN0IHN1aXRlIHRvIGV4ZXJjaXNlIGF0dGFjaG1lbnQgZWxlbWVudCBpbnNl
cnRpb24gYW5kIG1hbmlwdWxhdGlvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW06IEFkZGVkLgorICAgICAg
ICAod2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cyk6CisgICAgICAgICh0ZXN0SFRNTERhdGEp
OgorICAgICAgICAodGVzdEltYWdlRGF0YSk6CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3lu
Y2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpv
cHRpb25zOl0pOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6Zm9y
UXVlcnlTZWxlY3RvcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3
LTEwLTI4ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbV1BFXSBCdWlsZCBnc3QtcGx1Z2lucy1iYXNlIHdpdGhvdXQgcGFuZ28gc3VwcG9ydApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMzYwMWFhZTVjOGEzYjEwOWFkZjUzNzcxYzNjOWU3
ODk3NDE3MDM1Li41YThmYjUzZDRhNzllMDM0NmIzYjMyMDk0ZGUzMWRlZDBkODQzOWVjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODksNiArODksNyBAQAogCQkyRTFERkRGMTFENDJFMUU0
MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXIt
ZW5kaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkUxREZERjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8t
YmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sICovOyB9OwogCQkyRTIwNUJBNDFG
NTI3NzQ2MDA1OTUyREQgLyogQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUyMDVCQTMxRjUyNzc0NjAwNTk1MkRE
IC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSAqLzsgfTsKIAkJMkU1NEY0MEQxRDdCQzg0MjAw
OTIxQURGIC8qIGxhcmdlLXZpZGVvLW11dGVzLW9ucGxheWluZy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNTRGNDBDMUQ3QkM4Mzkw
MDkyMUFERiAvKiBsYXJnZS12aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCAqLzsgfTsKKwkJMkU1
Qzc3MDcxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU1Qzc3MDYxRkE3MDEzNjAwNTkz
MkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1tICovOyB9OwogCQkyRTY5MUFFQTFENzhCNTM2MDAx
Mjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkx
QUU4MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNv
bnRyb2xzLmh0bWwgKi87IH07CiAJCTJFNjkxQUVCMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12
aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUU5MUQ3OEI1MkIwMDEy
OTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sICov
OyB9OwogCQkyRTY5MUFFRDFENzhCOTEwMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmct
bXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFQzFENzhCOTAyMDAxMjk0MDcgLyog
bGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLzsg
fTsKQEAgLTExNjgsNiArMTE2OSw3IEBACiAJCTJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBs
YXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmlu
Zy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJFMjA1QkEzMUY1Mjc3NDYwMDU5NTJERCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNTRGNDBDMUQ3QkM4MzkwMDkyMUFERiAvKiBsYXJnZS12
aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJs
YXJnZS12aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJFNUM3NzA2MUZBNzAxMzYwMDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQXR0YWNobWVudFRlc3RzLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTY5MUFFODFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9z
LXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNjkxQUU5MUQ3OEI1MkIwMDEyOTQwNyAvKiBs
YXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250cm9scy5odG1sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRy
b2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTY5MUFFQzFENzhCOTAy
MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJv
bHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtcGxheWlu
Zy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIwNzQsNiArMjA3Niw3IEBACiAJCQkJNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0
IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5tbSAqLywKIAkJCQk1MTIwQzgzQzFFNjc1MDc5
MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tICovLAogCQkJCTVDOUU1
Njg0MURGOTE0M0QwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMubW0gKi8sCisJCQkJMkU1Qzc3
MDYxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1tICovLAogCQkJCTFGODM1
NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5tbSAqLywKIAkJCQk1Q0Uz
NTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tDb250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8sCiAJ
CQkJMkQ4MzhCMUUxRUVGM0E1QjAwOUI5ODBFIC8qIFdLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9u
cy5tbSAqLywKQEAgLTI0NDAsNyArMjQ0Myw2IEBACiAJCUJDOTA5NjQxMTI1NTYxNjAwMDA4Mzc1
NiAvKiBXZWJLaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCTA3RTQ5OTkwMUY5RTU2QTEwMDJGMUVGMyAvKiBHZXRVc2VyTWVkaWFSZXByb21wdC5tbSAq
LywKIAkJCQkwRjEzOUU3NDFBNDIzQTQ2MDBGNTkwRjUgLyogY29jb2EgKi8sCiAJCQkJQzBDNUQz
QkIxNDU5OEI2RjAwQTgwMkE2IC8qIG1hYyAqLywKIAkJCQlCQzkwOTc3QjEyNTU3MUFFMDAwODM3
NTYgLyogUmVzb3VyY2VzICovLApAQCAtMjQ3OCw2ICsyNDgwLDcgQEAKIAkJCQlGNjYwQUEwQzE1
QTVGMDYxMDAzQTEyNDMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
Q2FsbGJhY2suY3BwICovLAogCQkJCUY2NjBBQTBGMTVBNUY2MjQwMDNBMTI0MyAvKiBHZXRJbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwICovLAog
CQkJCTA3Q0UxQ0YyMUYwNkE3RTAwMEJGODlGNSAvKiBHZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1t
ICovLAorCQkJCTA3RTQ5OTkwMUY5RTU2QTEwMDJGMUVGMyAvKiBHZXRVc2VyTWVkaWFSZXByb21w
dC5tbSAqLywKIAkJCQk0QkZERkZBODEzMTQ3Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5v
ZGVIYW5kbGUuY3BwICovLAogCQkJCTRCRkRGRkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0
UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3BwICovLAogCQkJCUJDNTc1QUFDMTI2RTgzQjkwMDZG
MEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2ljLmNwcCAqLywKQEAgLTMyNzcsNyArMzI4MCw2IEBA
CiAJCQkJNDYzOTdCOTUxREMyQzg1MDAwOUE3OEFFIC8qIERPTU5vZGUubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VCQzFBNDExQTdFMDA0NDdDNEMgLyogRE9NTm9kZUZyb21KU09iamVjdC5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUJEMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01SYW5n
ZU9mU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJMDdFNDk5OTExRjlFNTZERjAwMkYxRUYz
IC8qIEdldFVzZXJNZWRpYVJlcHJvbXB0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRUMx
QTQxMUFFNjAwNDQ3QzRDIC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdDQ0U3RUVEMUE0MTFBRTYwMDQ0N0M0QyAvKiBET01XaW5kb3dFeHRlbnNpb25O
b0NhY2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjIzMUE0MTFBRjYwMDQ0N0M0QyAv
KiBEb3dubG9hZC5tbSBpbiBTb3VyY2VzICovLApAQCAtMzMyNCw2ICszMzI2LDcgQEAKIAkJCQk3
Q0NFN0VGOTFBNDExQUU2MDA0NDdDNEMgLyogR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRTIxQTQxMUE5
QTAwNDQ3QzRDIC8qIEdldFBJREFmdGVyQWJvcnRlZFByb2Nlc3NMYXVuY2guY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMDdDRTFDRjMxRjA2QTdFMDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmln
YXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQkwN0U0OTk5MTFGOUU1NkRGMDAyRjFFRjMgLyog
R2V0VXNlck1lZGlhUmVwcm9tcHQubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTZCREJBQzFFNzIw
N0YxMDBERTBENUEgLyogR1BVQnVmZmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE1MjMxQ0Ex
RUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1hbmRRdWV1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTMxNjJBRTlDMUU2RjJGRjUwMDBFNERCQyAvKiBHUFVEZXZpY2UubW0gaW4gU291cmNlcyAqLywK
QEAgLTM1MjEsNiArMzUyNCw3IEBACiAJCQkJN0NDRTdGMUMxQTQxMUFFNjAwNDQ3QzRDIC8qIFdp
bGxTZW5kU3VibWl0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDgxQTQxMUE3
RTAwNDQ3QzRDIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0VEOTFBNDExQTdFMDA0NDdDNEMgLyogV2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0g
aW4gU291cmNlcyAqLywKKwkJCQkyRTVDNzcwNzFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2ht
ZW50VGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxRjgzNTcxQjFEM0ZGQjIzMDBFMzk2N0Ig
LyogV0tCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyRTFBNDEx
QjEwMDA0NDdDNEMgLyogV0tCcm93c2luZ0NvbnRleHRHcm91cFRlc3QubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0YyRjFBNDExQjEwMDA0NDdDNEMgLyogV0tCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGVUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi43NTk5NjJmYTE3N2RlMDg2YjFkN2I3ZDU5NTA5NjE0M2FlNjFkZTI2Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1l
bnRUZXN0cy5tbQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0
UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yVGVzdGluZ0F0
dGFjaG1lbnRzKCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRB
dHRhY2htZW50RWxlbWVudEVuYWJsZWQ6WUVTXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT48
L2JvZHk+PHNjcmlwdD5kb2N1bWVudC5ib2R5LmZvY3VzKCk7PC9zY3JpcHQ+Il07CisKKyAgICBy
ZXR1cm4gd2ViVmlldzsKK30KKworc3RhdGljIE5TRGF0YSAqdGVzdEhUTUxEYXRhKCkKK3sKKyAg
ICByZXR1cm4gW0AiPGEgaHJlZj0nIyc+VGhpcyBpcyBzb21lIEhUTUwgZGF0YTwvYT4iIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKK30KKworc3RhdGljIE5TRGF0YSAq
dGVzdEltYWdlRGF0YSgpCit7CisgICAgTlNVUkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3aXRoRXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAgIHJldHVybiBbTlNEYXRhIGRhdGFX
aXRoQ29udGVudHNPZlVSTDp1cmxdOworfQorCitAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmll
dyAoQXR0YWNobWVudFRlc3RpbmcpCisKKy0gKF9XS0F0dGFjaG1lbnQgKilzeW5jaHJvbm91c2x5
SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50
VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBkYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6
KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMKK3sKKyAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOworICAgIF9XS0F0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBbc2VsZiBf
aW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpmaWxlbmFtZSBjb250ZW50VHlwZTpjb250ZW50
VHlwZSBkYXRhOmRhdGEgb3B0aW9uczpvcHRpb25zIGNvbXBsZXRpb246XihCT09MKSB7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgcmV0dXJuIGF0dGFjaG1lbnQ7Cit9CisKKy0gKE5TU3RyaW5nICopdmFsdWVP
ZkF0dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRyaWJ1dGVOYW1lIGZvclF1ZXJ5U2VsZWN0b3I6KE5T
U3RyaW5nICopcXVlcnlTZWxlY3RvcgoreworICAgIHJldHVybiBbc2VsZiBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignJUAnKS5nZXRBdHRyaWJ1dGUoJyVAJykiLCBxdWVyeVNlbGVjdG9yLCBhdHRy
aWJ1dGVOYW1lXV07Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitU
RVNUKFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50RWxlbWVudEluc2VydGlvbikKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisKKyAgICAv
LyBVc2UgdGhlIGdpdmVuIGNvbnRlbnQgdHlwZSBmb3IgdGhlIGF0dGFjaG1lbnQgZWxlbWVudCdz
IHR5cGUuCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmls
ZW5hbWU6QCJmb28iIGNvbnRlbnRUeXBlOkAidGV4dC9odG1sIiBkYXRhOnRlc3RIVE1MRGF0YSgp
IG9wdGlvbnM6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJmb28iLCBbd2ViVmlldyB2YWx1
ZU9mQXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUShAInRleHQvaHRtbCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1
dGU6QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCIzOCBieXRlcyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzdWJ0aXRs
ZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisKKyAgICAvLyBTaW5jZSBubyBj
b250ZW50IHR5cGUgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQsIGNvbXB1dGUgaXQgZnJvbSB0aGUg
ZmlsZSBleHRlbnNpb24uCisgICAgW3dlYlZpZXcgX2V4ZWN1dGVFZGl0Q29tbWFuZDpAIkRlbGV0
ZUJhY2t3YXJkIiBhcmd1bWVudDpuaWwgY29tcGxldGlvbjpuaWxdOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiYmFyLnBuZyIgY29udGVu
dFR5cGU6bmlsIGRhdGE6dGVzdEltYWdlRGF0YSgpIG9wdGlvbnM6bmlsXTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJiYXIucG5nIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBm
b3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJp
bWFnZS9wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxl
Y3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiMzcgS0IiLCBbd2Vi
VmlldyB2YWx1ZU9mQXR0cmlidXRlOkAic3VidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRh
Y2htZW50Il0pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325421</attachid>
            <date>2017-10-30 20:45:00 -0700</date>
            <delta_ts>2017-10-31 01:03:18 -0700</delta_ts>
            <desc>Fix the Windows build</desc>
            <filename>bug-179013-20171030204459.patch</filename>
            <type>text/plain</type>
            <size>73776</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMzAwYmI1YmU2NzAwYzg1Mzk2N2Q1YjQ1YmFlNTkw
ODYzM2FlOWI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uMWMzMmQzZTlhNTA4M2Q2NDkzNGMzMTAyNGU0ODBjZWYyZmEwOTY2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMTAtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvRmlsZVNpemVGb3JtYXR0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKGZpbGVTaXplRGVz
Y3JpcHRpb24pOgorICAgICAgICAqIHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBwYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTogQWRkZWQuCisgICAg
ICAgIChmaWxlU2l6ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwYWwvc3BpL2NvY29hL05TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaDogQWRkZWQuCisKIDIwMTctMTAtMjcgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBpT1Mgc3BlY2lmaWMgc291
cmNlcyB0byB1bmlmaWVkIHNvdXJjZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjQxZmQ0NTNkMmU4YTI0ZmU3ZWZk
ZTg2NGE4MTY3MWYwOWY0MTc0Mi4uMmU3YzI5MmViMjU4NjM0MmFlNWRhZDA4NGM4ODlmNmEwYTEz
MDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxNy0xMC0zMCAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbQXR0YWNobWVudCBTdXBwb3J0
XSBJbXBsZW1lbnQgV0tXZWJWaWV3IFNQSSBmb3IgaW5zZXJ0aW5nIGF0dGFjaG1lbnQgZWxlbWVu
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAx
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyNDk2Njg+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuYXRpdmUgU1BJIHRvIGluc2VydCBh
dHRhY2htZW50IGVsZW1lbnRzIGdpdmVuIGEgZmlsZW5hbWUsIGFuIG9wdGlvbmFsIE1JTUUgdHlw
ZSwgYW5kIGEgZGF0YSBibG9iLiBTZWUKKyAgICAgICAgY2hhbmdlLWJ5LWNoYW5nZSBjb21tZW50
cyBiZWxvdyBmb3IgbW9yZSBkZXRhaWwuIENvdmVyZWQgYnkgYSBuZXcgQVBJIHRlc3QuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2Nv
YS9TaGFyZWRNZW1vcnlDb2NvYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
Y3JlYXRlKToKKworICAgICAgICBJbnRyb2R1Y2UgYSBjb252ZW5pZW5jZSBtZXRob2QgdG8gY3Jl
YXRlIGEgU2hhcmVkTWVtb3J5IHVzaW5nIGEgU2hhcmVkQnVmZmVyLgorCisgICAgICAgICogUGxh
dGZvcm1NYWMuY21ha2U6CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoQVBJOjpBdHRhY2htZW50Ojpj
cmVhdGUpOgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAg
KEFQSTo6QXR0YWNobWVudDo6fkF0dGFjaG1lbnQpOgorCisgICAgICAgIEludHJvZHVjZSBBUEk6
OkF0dGFjaG1lbnQsIHdoaWNoIHJlcHJlc2VudHMgYSBwbGF0Zm9ybS1hZ25vc3RpYyBBdHRhY2ht
ZW50LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2Vi
VmlldyBfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlv
bnM6Y29tcGxldGlvbjpdKToKKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGluc2VydGluZyBh
IG5ldyBhdHRhY2htZW50IGVsZW1lbnQuIENhbGxzIG91dCB0byBXZWJQYWdlUHJveHkgdG8gaW5z
ZXJ0IHRoZSBhdHRhY2htZW50IGZyb20gdGhlCisgICAgICAgIGdpdmVuIGRhdGEgYmxvYiwgYW5k
IGNyZWF0ZXMgYSBuZXcgQVBJLW9iamVjdC1iYWNrZWQgX1dLQXR0YWNobWVudC4KKworICAgICAg
ICAoLVtXS1dlYlZpZXcgX2V4ZWN1dGVFZGl0Q29tbWFuZDphcmd1bWVudDpjb21wbGV0aW9uOl0p
OgorCisgICAgICAgIFN1cHBvcnQgcGFzc2luZyBpbiBhIG5pbCBjb21wbGV0aW9uIGJsb2NrLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaC4KKworICAgICAgICBJbnRyb2R1Y2VzIF9X
S0F0dGFjaG1lbnQsIGFuIE9iamVjdGl2ZSBDIHdyYXBwZXIgYXJvdW5kIHRoZSBBUEk6OkF0dGFj
aG1lbnQuCisKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCBfYXBpT2JqZWN0XSk6CisgICAgICAg
ICgtW19XS0F0dGFjaG1lbnQgaXNFcXVhbDpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCB1
bmlxdWVJZGVudGlmaWVyXSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgaGFzaF0pOgorCisg
ICAgICAgIEFkZCBfV0tBdHRhY2htZW50LCBhIFdlYktpdCBTUEkgb2JqZWN0IHRoYXQgd3JhcHMg
YW4gYXR0YWNobWVudCBlbGVtZW50IHVuaXF1ZSBpZGVudGlmaWVyLiBBbHNvLCBhbGxvdworICAg
ICAgICBfV0tBdHRhY2htZW50IHRvIGJlIHVzZWQgYXMgYSBoYXNoYWJsZSBOU0RpY3Rpb25hcnkg
a2V5LgorCisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgZGVzY3JpcHRpb25dKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAg
ICAoQVBJOjp3cmFwcGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KToKKworICAg
ICAgICBJbXBsZW1lbnQgSVBDIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbiBhdHRhY2htZW50Lgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0yNyAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtTZXR0aW5nc10gR2VuZXJhdGUgbW9y
ZSBvZiB0aGUgV2ViS2l0IHByZWZlcmVuY2VzIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9QQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNTFhZGIwMDgxMDBjMmZmZWNl
MjQyZTg4YWZmNTg1ODVkZDc5ODBlLi4zN2YxNWU5NzVlMzcyNmI0OTIyYmNmZjdmNDRmMzk4MjNk
N2VjZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xNDEsNiArMTQxLDEwIEBACiAJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRC
MSAvKiBTeXN0ZW1TbGVlcExpc3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTNBQjZFNjMxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNs
ZWVwTGlzdGVuZXJNYWMubW0gKi87IH07CiAJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBT
ZXNzaW9uSUQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTNDNjZDREExRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi87IH07CiAJCUEz
QzY2Q0REMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQzY2Q0RCMUY0NjJENkEwMDlFNkVFOSAvKiBT
ZXNzaW9uSUQuaCAqLzsgfTsKKwkJRjQ0MjkxNUUxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmlsZVNp
emVGb3JtYXR0ZXJTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggKi87IH07CisJCUY0NDI5MTYwMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjkx
NUYxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxNjQxRkE1MjY3MDAwMkND
OTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZv
cm1hdHRlci5jcHAgKi87IH07CisJCUY0NDI5MTY4MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6
ZUZvcm1hdHRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29j
b2EubW0gKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTI4Myw2ICsyODcsMTAgQEAKIAkJ
QTNDNjZDREExRjQ2MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXNzaW9uSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBM0M2NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlc3Npb25JRC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMjE0N0E0QTFFRkQwQUE2MDAwNTZGQTUgLyogQ29weVBBTEhlYWRlcnMu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29weVBBTEhlYWRlcnMu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTVEMUZBNTI0NzMw
MDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRmls
ZVNpemVGb3JtYXR0ZXJTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0Mjkx
NUYxRkE1MjYxRTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZpbGVTaXplRm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5
MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaWxlU2l6ZUZvcm1hdHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUY0NDI5MTY2MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMzYyLDYg
KzM3MCw3IEBACiAJCQkJMEMyREExMzExRjNCRUI0OTAwREJDMzE3IC8qIE5TQ29sb3JTUEkuaCAq
LywKIAkJCQkwQzJEQTEzMjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAqLywK
IAkJCQkwQzJEQTEzMzFGM0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICovLAor
CQkJCUY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmgg
Ki8sCiAJCQkJMEMyREExMzQxRjNCRUI0OTAwREJDMzE3IC8qIE5TU3RyaW5nU1BJLmggKi8sCiAJ
CQkJMEMyREExMzUxRjNCRUI0OTAwREJDMzE3IC8qIE5TVG91Y2hCYXJTUEkuaCAqLywKIAkJCQkw
QzJEQTEzNjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCkBAIC00
NzEsNiArNDgwLDggQEAKIAkJCQlBMzc4OEU5RjFGMDVCN0NFMDA2Nzk0MjUgLyogc3lzdGVtICov
LAogCQkJCUEzMEQ0MTFEMUYwREQwQUMwMEI3MTk1NCAvKiB0ZXh0ICovLAogCQkJCTBDMkQ5RTcy
MUVFRjVBRjYwMERCQzMxNyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQlGNDQyOTE2MjFGQTUy
NjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAorCQkJCUY0NDI5MTVGMUZB
NTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAogCQkJCUEzOURFNzREMUY3
QzQ0M0MwMDdCQ0IwMCAvKiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLywKIAkJCQkwNzA4QUMzMjFG
NEM4NzRBMDAxRjc4OEYgLyogTG9nZ2VyLmggKi8sCiAJCQkJMDczNzdBREIxRjU3NzdENzAwMjdG
MTZEIC8qIExvZ2dlckhlbHBlci5oICovLApAQCAtNTE3LDYgKzUyOCw3IEBACiAJCTFDNDg3NkRF
MUY4RDgzMTMwMENDRUVCRCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9y
bWF0dGVyQ29jb2EubW0gKi8sCiAJCQkJMUM0ODc2REYxRjhEODM3NTAwQ0NFRUJEIC8qIExvZ2dp
bmdDb2NvYS5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CkBAIC02MTIsNiArNjI0LDcg
QEAKIAkJCQkwQzVBRjkxQTFGNDNBNEM3MDAyRUFDMDIgLyogRGF0YURldGVjdG9yc1VJU1BJLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBMTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNl
YXJjaFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzJEOUU3MzFFRUY1QUY2MDBEQkMz
MTcgLyogRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE2MDFGQTUyNjFF
MDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDI2
NTg3MUY1Njc0NjEwMEI0Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwQzVBRjkxQjFGNDNBNEM3MDAyRUFDMDIgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTEwMjY1OEUxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEku
aCBpbiBIZWFkZXJzICovLApAQCAtNjQ3LDYgKzY2MCw3IEBACiAJCQkJMEM3Nzg1OEYxRjQ1MTMw
RjAwRjRFQkI2IC8qIE5TRXZlbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTRFMUYz
QkVCNDkwMERCQzMxNyAvKiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMy
REExNEYxRjNCRUI0OTAwREJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBpbiBIZWFkZXJzICov
LAorCQkJCUY0NDI5MTVFMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJ
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzc3ODU5MDFGNDUxMzBGMDBGNEVCQjYgLyogTlNGb250
U1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA4MjZGRTFGNThBNDMzMDA0NzcyQUMgLyogTlNH
cmFwaGljc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTExRjQ1MTMwRjAwRjRFQkI2
IC8qIE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCBpbiBIZWFkZXJzICov
LApAQCAtNzg0LDYgKzc5OCw4IEBACiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkzIC8qIENv
cmVNZWRpYVNvZnRMaW5rLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlEMDU2MUUzMUM0NjUw
MDcyNUYxOCAvKiBDcnlwdG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTExNzVCNTgxRjZCNDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVG
b3JtYXR0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0MjkxNjgxRkE1MjcwNTAwMkNDOTNF
IC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMzBENDEy
MjFGMEREMEVBMDBCNzE5NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMw
RDQxMjUxRjBERDEyRDAwQjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUM0ODc2RDgxRjhEN0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvRmlsZVNpemVGb3JtYXR0ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUzZmIyMjMzMjI5NDI4M2Y0NDdhMDU1MTQ5NjZkNjQ3N2M3ZWRjNmQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmNwcApAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkZpbGVTaXplRm9ybWF0dGVyLmgiCisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCisKK1N0cmluZyBm
aWxlU2l6ZURlc2NyaXB0aW9uKHVpbnQ2NF90IHNpemUpCit7CisgICAgLy8gRklYTUU6IFRoZXNl
IHN0cmluZ3Mgc2hvdWxkIGJlIGxvY2FsaXplZCwgYnV0IHRoYXQgd291bGQgcmVxdWlyZSBicmlu
Z2luZyBMb2NhbGl6ZWRTdHJpbmdzIGludG8gUEFMLgorICAgIC8vIFNlZSA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTAxOT4gZm9yIG1vcmUgZGV0YWlscy4KKyAg
ICBpZiAoc2l6ZSA8IDEwMDApCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXR1IGJ5
dGVzIiwgc2l6ZSk7CisgICAgaWYgKHNpemUgPCAxMDAwMDAwKQorICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIiUuMWYgS0IiLCBzaXplIC8gMTAwMC4pOworICAgIGlmIChzaXplIDwgMTAw
MDAwMDAwMCkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIE1CIiwgc2l6ZSAv
ICgxMDAwMDAwLikpOworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJS4xZiBHQiIsIHNpemUg
LyAoMTAwMDAwMDAwMC4pKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0Zp
bGVTaXplRm9ybWF0dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFlYTEyNzk3NmMzMzkzYTkwNDkyMjQ2MjUx
ZWNkMDBmNzViMThlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
RmlsZVNpemVGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworUEFMX0VYUE9SVCBT
dHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDcwOTViYWY1NDBjZTY5ZDBkNjE5NGVhOWE1YTdhMmY5MGI2YmJhZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVGb3JtYXR0ZXJDb2Nv
YS5tbQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkZpbGVTaXplRm9ybWF0dGVyLmgiCisKKyNpbXBvcnQgIk5TRmlsZVNpemVGb3Jt
YXR0ZXJTUEkuaCIKKworU3RyaW5nIGZpbGVTaXplRGVzY3JpcHRpb24odWludDY0X3Qgc2l6ZSkK
K3sKKyAgICByZXR1cm4gTlNMb2NhbGl6ZWRGaWxlU2l6ZURlc2NyaXB0aW9uKHNpemUsIDAsIDAp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNGaWxl
U2l6ZUZvcm1hdHRlclNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvTlNG
aWxlU2l6ZUZvcm1hdHRlclNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NTc2ZmQzNGMxNTBkZWYxMDVmZmI0
ZDlmMmFlN2I0MDIzZmRmNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmgKQEAgLTAsMCArMSwzNyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykK
KworI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0ZpbGVTaXplRm9ybWF0dGVyLmg+CisKKyNlbHNlCisK
K3R5cGVkZWYgdWludDY0X3QgTlNGaWxlU2l6ZUZvcm1hdHRlck9wdGlvbnM7CitleHRlcm4gIkMi
IE5TU3RyaW5nICpOU0xvY2FsaXplZEZpbGVTaXplRGVzY3JpcHRpb24odWludDY0X3Qgc2l6ZSwg
dWludDY0X3QgbWF4aW11bURpc3BsYXllZFZhbHVlLCBOU0ZpbGVTaXplRm9ybWF0dGVyT3B0aW9u
cyk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGJlM2RhOGVlMmY3
NWViZTJlNzY3YmJhNmU3NzdmMDkxNWY5ODgyMjUuLmU2ODdhMjc1NWZhOWVkMTVmMGQ3ZDQ1Nzdi
YWJlN2E2ZmMwMDQ0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTQ3LDEyICs0
NywxNCBAQAogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIkV2ZW50SGFuZGxl
ci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVk
ZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhUTUxBdHRhY2htZW50
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgpA
QCAtOTgsNiArMTAwLDcgQEAKICNpbmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5o
IgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgorI2luY2x1
ZGUgPHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5oPgogI2luY2x1ZGUgPHBhbC9zeXN0ZW0vU291bmQu
aD4KICNpbmNsdWRlIDxwYWwvdGV4dC9LaWxsUmluZy5oPgogI2luY2x1ZGUgPHd0Zi91bmljb2Rl
L0NoYXJhY3Rlck5hbWVzLmg+CkBAIC0zNzI4LDYgKzM3MzEsMzkgQEAgUmVmUHRyPFJhbmdlPiBF
ZGl0b3I6OnJhbmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRDaGVja2luZ1Jlc3Vs
dCYgcmVzdWwKICAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgqY29udGV4dFJhbmdl
LCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOwogfQogCisjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKKwordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGZp
bGVwYXRoLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUpCit7CisgICAgaWYgKCFj
b250ZW50VHlwZSkKKyAgICAgICAgY29udGVudFR5cGUgPSBGaWxlOjpjb250ZW50VHlwZUZvckZp
bGUoZmlsZW5hbWUpOworICAgIGluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShpZGVudGlmaWVyLCBm
aWxlbmFtZSwgKmNvbnRlbnRUeXBlLCBGaWxlOjpjcmVhdGUoZmlsZXBhdGgpKTsKK30KKwordm9p
ZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIHN0ZDo6b3B0aW9u
YWw8U3RyaW5nPiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIWNvbnRlbnRUeXBlKQorICAgICAg
ICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxlbmFtZSk7CisgICAg
aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIGZpbGVuYW1lLCAqY29udGVudFR5
cGUsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZGF0YSwgKmNvbnRlbnRUeXBlKSwgZmlsZW5h
bWUpKTsKK30KKwordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUsIFJlZjxGaWxlPiYmIGZpbGUpCit7CisgICAgYXV0byBhdHRhY2htZW50ID0g
SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRhY2htZW50VGFnLCBk
b2N1bWVudCgpLCBpZGVudGlmaWVyKTsKKyAgICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjp0aXRsZUF0dHIsIGZpbGVuYW1lKTsKKyAgICBhdHRhY2htZW50LT5zZXRBdHRyaWJ1
dGUoSFRNTE5hbWVzOjpzdWJ0aXRsZUF0dHIsIGZpbGVTaXplRGVzY3JpcHRpb24oZmlsZS0+c2l6
ZSgpKSk7CisgICAgYXR0YWNobWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6dHlwZUF0dHIs
IGNvbnRlbnRUeXBlKTsKKyAgICBhdHRhY2htZW50LT5zZXRVbmlxdWVJZGVudGlmaWVyKGlkZW50
aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoZmlsZS5wdHIoKSk7CisKKyAgICBhdXRv
IGZyYWdtZW50VG9JbnNlcnQgPSBkb2N1bWVudCgpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsK
KyAgICBmcmFnbWVudFRvSW5zZXJ0LT5hcHBlbmRDaGlsZChhdHRhY2htZW50LmdldCgpKTsKKwor
ICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoZnJhZ21lbnRUb0luc2VydC5nZXQoKSwg
ZmFsc2UsIGZhbHNlLCB0cnVlKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisKIHZvaWQgRWRpdG9yOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShUZXh0Q2hlY2tp
bmdSZXN1bHQgYWNjZXB0ZWRDYW5kaWRhdGUpCiB7CiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oCmluZGV4IGFhODg1ZmY1OTljMWEwNzVkM2RhMGQwN2NkZjIyNTg1MTZhZWEz
N2QuLmZkZmEzZThhODA5YzVhYjU4MTg2MzU2N2Q1ZThlOTBiZTIwM2Q4MzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaApAQCAtNjMsNyArNjMsOSBAQCBjbGFzcyBFZGl0Q29tbWFuZDsKIGNsYXNz
IEVkaXRDb21tYW5kQ29tcG9zaXRpb247CiBjbGFzcyBFZGl0b3JDbGllbnQ7CiBjbGFzcyBFZGl0
b3JJbnRlcm5hbENvbW1hbmQ7CitjbGFzcyBGaWxlOwogY2xhc3MgRnJhbWU7CitjbGFzcyBIVE1M
QXR0YWNobWVudEVsZW1lbnQ7CiBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIEhpdFRlc3RSZXN1
bHQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwpAQCAtNDk4LDkgKzUwMCwxOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKGJvb2wgYikgeyBtX2lzR2V0
dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8gPSBiOyB9CiAgICAgYm9vbCBpc0dldHRpbmdEaWN0aW9u
YXJ5UG9wdXBJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJ
bmZvOyB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBjb250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBmaWxlbmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gY29udGVudFR5cGUgPSBzdGQ6Om51bGxvcHQpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSwgUmVmPEZpbGU+JiYpOworI2VuZGlmCisKICAgICBib29sIGNhbkRlbGV0ZVJhbmdlKFJh
bmdlKikgY29uc3Q7CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2VXaXRoUGFzdGVib2FyZChQYXN0
ZWJvYXJkJik7CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3RlYm9hcmQoUGFzdGVi
b2FyZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3Bw
CmluZGV4IGE2ZWQ5NjE1NmFjZGE3MjMzM2JiMzZmYTdiNWY1M2FhZmM5YTAyOWIuLjNiZmYwYzdi
ZjljMThmZjFlOGI2M2NjZDhkOWRhYjYwYmMxNjMzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI4LDIwICsyOCwyOSBAQAogCiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1
ZGUgIkZpbGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgog
I2luY2x1ZGUgIlJlbmRlckF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvVVVJRC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxB
dHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK0hUTUxBdHRhY2htZW50RWxlbWVudDo6
SFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogICAgIDogSFRNTEVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX3VuaXF1ZUlkZW50aWZpZXIoaWRlbnRpZmll
cikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShhdHRhY2htZW50VGFnKSk7CiB9CiAKK0hUTUxB
dHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEhUTUxBdHRhY2htZW50RWxl
bWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKQorewor
fQorCiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6On5IVE1MQXR0YWNobWVudEVsZW1lbnQoKSA9IGRl
ZmF1bHQ7CiAKIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVu
dCkKQEAgLTQ5LDYgKzU4LDExIEBAIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhCiAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSFRNTEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKK1JlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEhU
TUxBdHRhY2htZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgaWRlbnRpZmllcikpOworfQor
CiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQXR0YWNobWVudD4oKnRo
aXMsIFdURk1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50
RWxlbWVudC5oCmluZGV4IDlhYzZiNmE4YjE3ODRkMDE2OGVkMDNhMGU5OTQzM2UzODY0ODM5ZTIu
LjNhNDRhNWYxMTk5YzcyMDljM2IxYWU0OWJlZmJiODE2MTFhNjAzM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzcsMTAgKzM3LDE0IEBAIGNs
YXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTEF0dGFj
aG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Cisg
ICAgc3RhdGljIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgRmlsZSogZmlsZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RmlsZShGaWxlKik7
CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdW5pcXVlSWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0VW5pcXVlSWRlbnRpZmll
cihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIHsgbV91bmlxdWVJZGVudGlmaWVyID0gaWRlbnRp
ZmllcjsgfQorCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGF0dGFjaG1lbnRUaXRsZSgpIGNv
bnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNvbnN0OwogCkBAIC00OCw2ICs1Miw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIVE1MQXR0YWNobWVudEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgSFRNTEF0dGFjaG1lbnRFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB+SFRNTEF0dGFjaG1lbnRFbGVtZW50KCk7CiAKICAgICBSZW5kZXJQdHI8
UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwpAQCAtNjMsNiArNjgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYpIGZpbmFsOwogICAgIAogICAgIFJlZlB0cjxGaWxlPiBtX2ZpbGU7CisgICAgU3Ry
aW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmggYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL1NoYXJlZE1lbW9yeS5oCmluZGV4IGM3MmUwZDRiMGFiODcyMDZiY2Y1
Mjc1NTM3OTlkYzNiZWZjYmExYzAuLjAxN2I0MzRlZTRhOTJkZjdhYjlkNWM5ZjI3NzdkNmZkY2Nh
NGUyOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vU2hhcmVkTWVtb3J5LmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9TaGFyZWRNZW1vcnkuaApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
IAogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQpAQCAtNDAsNiArNDEsMTAgQEAgY2xhc3Mg
RGVjb2RlcjsKIGNsYXNzIEVuY29kZXI7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFNoYXJlZEJ1ZmZlcjsKK30KKwogI2lmIE9TKERBUldJTikKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIE1hY2hTZW5kUmlnaHQ7CkBAIC04Nyw2ICs5Miw3IEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiBhbGxvY2F0ZShzaXplX3QpOwogICAgIHN0YXRpYyBS
ZWZQdHI8U2hhcmVkTWVtb3J5PiBjcmVhdGUodm9pZCosIHNpemVfdCwgUHJvdGVjdGlvbik7Cisg
ICAgc3RhdGljIFJlZlB0cjxTaGFyZWRNZW1vcnk+IGNyZWF0ZShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKTsKICAgICBzdGF0aWMgUmVmUHRyPFNoYXJlZE1lbW9yeT4gbWFwKGNvbnN0IEhh
bmRsZSYsIFByb3RlY3Rpb24pOwogI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQogICAgIHN0
YXRpYyBSZWZQdHI8U2hhcmVkTWVtb3J5PiB3cmFwTWFwKHZvaWQqLCBzaXplX3QsIGludCBmaWxl
RGVzY3JpcHRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1No
YXJlZE1lbW9yeUNvY29hLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVk
TWVtb3J5Q29jb2EuY3BwCmluZGV4IGFlYTc5ODUwNDQ5YThiODk3OThlOTAzNmQ3YjBlNTMwMTgw
M2FhNTQuLjM5OGQ1NWU3YzE5NGFjNjlmNGRiN2FjMGYyYzliYmExNjNlMGExNDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1hY2hQb3J0
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NYWNoU2VuZFJpZ2h0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbmNsdWRlIDxtYWNoL21hY2hfZXJyb3IuaD4KICNpbmNsdWRl
IDxtYWNoL21hY2hfcG9ydC5oPgogI2luY2x1ZGUgPG1hY2gvdm1fbWFwLmg+CkBAIC0xNTYsNiAr
MTU3LDEzIEBAIHN0YXRpYyBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0IG1ha2VNZW1vcnlFbnRyeShz
aXplX3Qgc2l6ZSwgdm1fb2Zmc2V0X3Qgb2Zmc2V0LCBTCiAgICAgcmV0dXJuIFdlYkNvcmU6Ok1h
Y2hTZW5kUmlnaHQ6OmFkb3B0KHBvcnQpOwogfQogCitSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFy
ZWRNZW1vcnk6OmNyZWF0ZShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3sK
KyAgICBhdXRvIHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoYnVm
ZmVyLT5zaXplKCkpOworICAgIG1lbWNweShzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSwgYnVm
ZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICByZXR1cm4gc2hhcmVkTWVtb3J5QnVm
ZmVyOworfQorCiBSZWZQdHI8U2hhcmVkTWVtb3J5PiBTaGFyZWRNZW1vcnk6OmNyZWF0ZSh2b2lk
KiBkYXRhLCBzaXplX3Qgc2l6ZSwgUHJvdGVjdGlvbiBwcm90ZWN0aW9uKQogewogICAgIEFTU0VS
VChzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDBlNmY2Njk2N2FlMGUxMGZiMTQ2
YTdiN2U2NTgwMzQ0ZThjZmQxMzAuLjc4OWYzODQ1ZjZkZWI2NDZlZWU3MDU3OTNhMmQ4YTZkYzY5
Y2FhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMjIyLDYgKzIyMiw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2luZG93RmVhdHVyZXMubW0K
ICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tCisgICAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50Lm1tCiAgICAgVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
QXV0b21hdGlvblNlc3Npb25Db25maWd1cmF0aW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKaW5kZXggOTYyODY0ZjcyNzkzOWEzMTg1NWJhNDQ0ZGY3MTlkNmY2MWUyZGMxOC4uZjZm
OTlmYWRmNDNlMzRiNzIzZThhZGI2Yzk0NTZkYTkxNjdmNWJlMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAg
ICAgICAvLyBVSVByb2Nlc3MgdHlwZXMKICAgICAgICAgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIs
CisgICAgICAgIEF0dGFjaG1lbnQsCiAgICAgICAgIEF1dG9tYXRpb25TZXNzaW9uLAogICAgICAg
ICBCYWNrRm9yd2FyZExpc3QsCiAgICAgICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW0sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdFByaXZhdGUuaAppbmRleCA0YTM1ODA5
N2M3YzQyODUyZmU2YTUwYmQxYTAzMDQwMzQ0Y2Y3M2I5Li4xOGJmMGM1ZDhhNjNhZmUzOTAzMmZi
NDQ3YjUyMjVlNTIxODc2YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvV2ViS2l0UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XZWJLaXRQcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1By
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS0F0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFbGVtZW50
QWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLRm9ybUlucHV0U2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxZWMwYjdlYmMwNGZjNjZk
ODhlYjA1NWY4ZDVkNjYzZjhhZTJhMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElBdHRhY2htZW50LmgiCisK
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK1Jl
ZjxBdHRhY2htZW50PiBBdHRhY2htZW50OjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50
aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5JiB3ZWJQYWdlKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEF0dGFjaG1lbnQoaWRlbnRpZmllciwgd2ViUGFnZSkpOworfQorCitBdHRhY2ht
ZW50OjpBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYgd2ViUGFnZSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAg
ICwgbV93ZWJQYWdlKHdlYlBhZ2UuY3JlYXRlV2Vha1B0cigpKQoreworfQorCitBdHRhY2htZW50
Ojp+QXR0YWNobWVudCgpCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElBdHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJQXR0YWNobWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0NTU5MGVmZGU3OWIwOWEwN2I0MDQ4MmMwNzBk
OWYxNjI4ZDVkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV2ViUGFnZVByb3h5Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CitjbGFzcyBXZWJQYWdlUHJveHk7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBB
dHRhY2htZW50IGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpBdHRhY2ht
ZW50PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBdHRhY2htZW50PiBjcmVhdGUoY29uc3Qg
V1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CisgICAgdmly
dHVhbCB+QXR0YWNobWVudCgpOworCisgICAgY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNp
dCBBdHRhY2htZW50KGNvbnN0IFdURjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBh
Z2VQcm94eSYpOworCisgICAgV1RGOjpTdHJpbmcgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8
V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fd2ViUGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5k
ZXggMTQ2ODEzMWVhMWI0MDBlMDM4ODViZjY1NzBjYzdmYWFlYjQwYTIwNC4uNzQ5NDA4OTc1ZGE2
MTc1MjBjMjhlYzlhMGQ0ODg1NDZmZjc3YTcyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC05OSw2ICs5OSw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY2hlbWVS
ZWdpc3RyeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9X
cml0aW5nTW9kZS5oPgpAQCAtMTEwLDYgKzExMSw3IEBACiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwu
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5o
PgorI2ltcG9ydCA8d3RmL1VVSUQuaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEku
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIApAQCAtNDE2OCw2ICs0MTcwLDIz
IEBAIC0gKHZvaWQpX2Nsb3NlCiAgICAgX3BhZ2UtPmNsb3NlKCk7CiB9CiAKKy0gKF9XS0F0dGFj
aG1lbnQgKilfaW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFt
ZSBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBkYXRhOihOU0RhdGEgKilkYXRh
IG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlv
bjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxF
KEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmlj
YWxVVUlEU3RyaW5nKCk7CisKKyAgICBfcGFnZS0+aW5zZXJ0QXR0YWNobWVudChpZGVudGlmaWVy
LCBmaWxlbmFtZSwgY29udGVudFR5cGUubGVuZ3RoID8gc3RkOjpvcHRpb25hbDxTdHJpbmc+IHsg
Y29udGVudFR5cGUgfSA6IHN0ZDo6bnVsbG9wdCwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjcmVh
dGUoZGF0YSksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChj
YXB0dXJlZEhhbmRsZXIpCisgICAgICAgICAgICBjYXB0dXJlZEhhbmRsZXIoZXJyb3IgPT0gV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKKyAgICB9KTsKKworICAgIGF1dG8gYXR0
YWNobWVudCA9IEFQSTo6QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSk7Cisg
ICAgcmV0dXJuIFt3cmFwcGVyKGF0dGFjaG1lbnQpIGF1dG9yZWxlYXNlXTsKKyNlbHNlCisgICAg
cmV0dXJuIG5pbDsKKyNlbmRpZgorfQorCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRo
b3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBb
c2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VVc2VyR2VzdHVy
ZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CkBAIC02MDMzLDcgKzYw
NTIsOCBAQCAtICh2b2lkKV9kaXNhYmxlQmFja0ZvcndhcmRTbmFwc2hvdFZvbGF0aWxpdHlGb3JU
ZXN0aW5nCiAtICh2b2lkKV9leGVjdXRlRWRpdENvbW1hbmQ6KE5TU3RyaW5nICopY29tbWFuZCBh
cmd1bWVudDooTlNTdHJpbmcgKilhcmd1bWVudCBjb21wbGV0aW9uOih2b2lkICheKShCT09MKSlj
b21wbGV0aW9uCiB7CiAgICAgX3BhZ2UtPmV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kLCBhcmd1
bWVudCwgW2NhcHR1cmVkQ29tcGxldGlvbkJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb24p
XShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgY2FwdHVyZWRD
b21wbGV0aW9uQmxvY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KTsKKyAgICAgICAgaWYgKGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKQorICAgICAgICAgICAgY2Fw
dHVyZWRDb21wbGV0aW9uQmxvY2soZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCBkMmQ2ZWI4ODU2ZGZiNWZjYzRk
MDQxM2Y5MDYyYTEyN2Q5NTI1NTllLi4xMmVhNmY1OWMzZjMwZTNkODhjZjNjYjYwZTVmODI2NzA2
YzBmZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW1wb3J0ICJTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5o
IgorI2ltcG9ydCAiX1dLQXR0YWNobWVudEludGVybmFsLmgiCiAjaW1wb3J0IDx3dGYvUmVmUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDVlZDJiMmMxYjFh
ZjE3NTY4Mzk4NzNhNDUzYjc4M2EzMDFjZDdiYWUuLmM5ZmQ1NDBiMDZjZWUyYjYyNTAxNDY4OGJl
YzYxMDEwZjZjMDZhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIFdLX0FQSV9F
TkFCTEVECiAKICNpbXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS0F0dGFjaG1lbnQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tGaW5kT3B0
aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0xheW91dE1vZGUuaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaD4KQEAgLTE3Nyw2ICsxNzgsOCBAQCB0eXBlZGVm
IE5TX09QVElPTlMoTlNJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgc2V0dGVyPV9zZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U6KSBCT09MIF9iYWNr
Z3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyg4LjApKTsKIAorLSAoX1dLQXR0YWNobWVudCAqKV9pbnNlcnRBdHRhY2htZW50V2l0
aEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbnRlbnRUeXBlOihOU1N0cmluZyAqKWNv
bnRlbnRUeXBlIGRhdGE6KE5TRGF0YSAqKWRhdGEgb3B0aW9uczooX1dLQXR0YWNobWVudERpc3Bs
YXlPcHRpb25zICopb3B0aW9ucyBjb21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAvLyBERVJFQ0FURUQ6IFRoZSBz
ZXR0ZXJzIG9mIHRoZSB0aHJlZSBmb2xsb3dpbmcgZnVuY3Rpb24gYXJlIGRlcHJlY2F0ZWQsIHBs
ZWFzZSB1c2Ugb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzLgogLy8gRGVmaW5lIHRoZSBzbWFsbGVz
dCBzaXplIGEgcGFnZSB0YWtlIHdpdGggYSByZWd1bGFyIHZpZXdwb3J0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWU3Y2I1YzYxOWQzYWYyYjA4MDMzZTY2NDNiYjY3MWEyZmJmNjViNAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2htZW50LmgKQEAg
LTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0IDxXZWJL
aXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCit0eXBlZGVmIE5TX0VO
VU0oTlNJbnRlZ2VyLCBfV0tBdHRhY2htZW50RGlzcGxheU1vZGUpIHsKKyAgICBfV0tBdHRhY2ht
ZW50RGlzcGxheU1vZGVBdXRvID0gMSwKKyAgICBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVJblBs
YWNlLAorICAgIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZUFzSWNvbgorfSBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwordHlwZWRlZiB2b2lk
KF5fV0tBdHRhY2htZW50RGF0YUNvbXBsZXRpb25IYW5kbGVyKShOU0RhdGEgKiwgTlNFcnJvciAq
KTsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQorQGludGVyZmFjZSBfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgOiBOU09iamVjdAor
QHByb3BlcnR5IChub25hdG9taWMpIF9XS0F0dGFjaG1lbnREaXNwbGF5TW9kZSBtb2RlOworQHBy
b3BlcnR5IChub25hdG9taWMpIEJPT0wgZXhwYW5kc0ltYWdlVG9NYXhpbXVtV2lkdGg7CitAZW5k
CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSkKK0BpbnRlcmZhY2UgX1dLQXR0YWNobWVudCA6IE5TT2JqZWN0CitAZW5kCisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1l
bnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNobWVudC5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMWIxNDZmMTU1ZjFmMGQyNDMxYWU0ZWE0ODNjYWRiMDdlMzAwMDI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0
dGFjaG1lbnQubW0KQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiX1dLQXR0YWNobWVudC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwor
I2ltcG9ydCAiQVBJQXR0YWNobWVudC5oIgorI2ltcG9ydCAiX1dLQXR0YWNobWVudEludGVybmFs
LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK0BpbXBsZW1lbnRhdGlvbiBfV0tBdHRh
Y2htZW50RGlzcGxheU9wdGlvbnMgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdAor
eworICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgICAgIF9tb2RlID0gX1dLQXR0
YWNobWVudERpc3BsYXlNb2RlQXV0bzsKKyAgICAgICAgX2V4cGFuZHNJbWFnZVRvTWF4aW11bVdp
ZHRoID0gTk87CisgICAgfQorICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKK0BpbXBsZW1l
bnRhdGlvbiBfV0tBdHRhY2htZW50CisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7Cisg
ICAgcmV0dXJuICpfYXR0YWNobWVudDsKK30KKworLSAoQk9PTClpc0VxdWFsOihpZClvYmplY3QK
K3sKKyAgICByZXR1cm4gW29iamVjdCBpc0tpbmRPZkNsYXNzOltfV0tBdHRhY2htZW50IGNsYXNz
XV0gJiYgW3NlbGYudW5pcXVlSWRlbnRpZmllciBpc0VxdWFsOlsoX1dLQXR0YWNobWVudCAqKW9i
amVjdCB1bmlxdWVJZGVudGlmaWVyXV07Cit9CisKKy0gKE5TU3RyaW5nICopdW5pcXVlSWRlbnRp
ZmllcgoreworICAgIHJldHVybiBfYXR0YWNobWVudC0+aWRlbnRpZmllcigpOworfQorCistIChO
U1VJbnRlZ2VyKWhhc2gKK3sKKyAgICByZXR1cm4gW3NlbGYudW5pcXVlSWRlbnRpZmllciBoYXNo
XTsKK30KKworLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgoreworICAgIHJldHVybiBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwlQCBpZD0nJUAnPiIsIFtzZWxmIGNsYXNzXSwgc2VsZi51
bmlxdWVJZGVudGlmaWVyXTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRh
Y2htZW50SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTgzMDU3ODA1ZGY2OTc3ZDQ0NWFjODNjMGI0
N2RkZTUzZjZlMjFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiQVBJQXR0YWNobWVudC5oIgorI2ltcG9y
dCAiX1dLQXR0YWNobWVudC5oIgorCituYW1lc3BhY2UgQVBJIHsKKworaW5saW5lIF9XS0F0dGFj
aG1lbnQgKndyYXBwZXIoQVBJOjpBdHRhY2htZW50JiBhdHRhY2htZW50KQoreworICAgIEFTU0VS
VChbYXR0YWNobWVudC53cmFwcGVyKCkgaXNLaW5kT2ZDbGFzczpbX1dLQXR0YWNobWVudCBjbGFz
c11dKTsKKyAgICByZXR1cm4gKF9XS0F0dGFjaG1lbnQgKilhdHRhY2htZW50LndyYXBwZXIoKTsK
K30KKworfQorCitAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnQgKCkgPFdLT2JqZWN0PiB7CitAcGFj
a2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OkF0dGFjaG1lbnQ+IF9hdHRhY2htZW50
OworfQorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
ZGNiYjUyODdhZTRiMDlhNmJlMzc4MGNjMDA4MGQzZmYxNGJhZDkwYy4uNGY1ZGEyYmFmMTg5ODIw
ZDYyNDk5Yzc0ZTIyZDQ0ZTNhYWUyZDUwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC03MTA1LDQgKzcxMDUsMjYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJh
bWUKICAgICB9KTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCisKK3ZvaWQg
V2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2spCit7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1v
cnk6OmNyZWF0ZShXVEZNb3ZlKGRhdGEpKTsKKyAgICBpZiAoIXNoYXJlZE1lbW9yeSkgeworICAg
ICAgICBjYWxsYmFjayhDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZTsKKyAgICBpZiAo
IXNoYXJlZE1lbW9yeS0+Y3JlYXRlSGFuZGxlKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSkpIHsKKyAgICAgICAgY2FsbGJhY2soQ2FsbGJhY2tCYXNlOjpFcnJvcjo6
VW5rbm93bik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBjb250
ZW50VHlwZSwgZGF0YS0+c2l6ZSgpLCBoYW5kbGUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggODE2NTI1
N2U1YTUyZmZmNjM4MGQ2ZGQzZjU1ZGRiMGYzZDNlMjc5MC4uZDJkNDMyNDdjOGIxYTcxMTVlNmFl
MjE1YmZiZDJkYTQ2NTkxNzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTEyMTEsNiArMTIxMSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1
aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKTsKIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCisgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNvbnRlbnRU
eXBlLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGRhdGEsIEZ1bmN0aW9uPHZvaWQoQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVBy
b3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxB
UEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNTZjOWM0YThkMmY0NDY2ZTVkZWU0YmQ1NWFkMDA5M2E2MjNiYzcwNy4uZjkyMjM5NWY2NWVh
MGZjZjkyM2U5ZDEwNThjZjg1YWNkOTQzNDQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03MjAsNiArNzIwLDggQEAKIAkJMkRGQzdE
QkIxQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREZDN0RCOTFCQ0NDMTk1MDBDMTU0OEMgLyogV2Vi
Vmlld0ltcGwuaCAqLzsgfTsKIAkJMkRGQzdEQkMxQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJ
bXBsLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRG
QzdEQkExQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLm1tICovOyB9OwogCQkyREZGN0I2
RjFEQTRDRkFGMDA4MTQ2MTQgLyogV0tCYWNrRm9yd2FyZExpc3RJdGVtUHJpdmF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGRjdCNkUxREE0Q0ZB
RjAwODE0NjE0IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkyRTVDNzcwRTFGQTdENDI5MDA1
OTMyQzMgLyogQVBJQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkU1Qzc3MEMxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQu
aCAqLzsgfTsKKwkJMkU1Qzc3MEYxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU1Qzc3MEQx
RkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwICovOyB9OwogCQkyRTdBOTQ0QTFC
QkQ5N0MzMDA5NDU1NDcgLyogX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTdBOTQ0OTFCQkQ5NUM2MDA5NDU1NDcg
LyogX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlm
aWNhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTA5OTk3MTE0NkM3NTlCMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50
LmNwcCAqLzsgfTsKIAkJMzEwOTk5QzcxNDZDOUUzRDAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICovOyB9
OwpAQCAtMjA4Miw2ICsyMDg0LDkgQEAKIAkJRURDQTcxQjcxMjhEREE4QzAwMjAxQjI2IC8qIFdL
QnVuZGxlUGFnZU92ZXJsYXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUEyMkYxMDAxMjg5RkNEOTAwODVFNzRGIC8qIFdLQnVuZGxlUGFnZU92ZXJs
YXkuY3BwICovOyB9OwogCQlGMDM2OTc4ODE1RjRCRjA1MDBDM0E4MEUgLyogV2ViQ29sb3JQaWNr
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjAz
Njk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNwcCAqLzsgfTsKIAkJRjQw
OUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDA5QkExNzFFNkU2NEIz
MDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDQyOTE5MjFGQTU5MUM5MDAyQ0M5M0Ug
LyogX1dLQXR0YWNobWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlGNDQyOTE5NDFG
QTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTkzMUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tB
dHRhY2htZW50Lm1tICovOyB9OworCQlGNDQyOTE5NjFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0
YWNobWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFs
LmggKi87IH07CiAJCUY0NERGRUIyMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRpbGl0aWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRERkVC
MDFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oICovOyB9OwogCQlGNDRERkVC
MzFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAv
KiBXZWJJY29uVXRpbGl0aWVzLm1tICovOyB9OwogCQlGNDk2QTQzMTFGNThBMjcyMDA0QzE3NTcg
LyogRHJhZ0Ryb3BJbnRlcmFjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDk2QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmggKi87IH07CkBAIC0zMDE5LDYgKzMwMjQsOCBAQAogCQkyREZDN0RC
OTFCQ0NDMTk1MDBDMTU0OEMgLyogV2ViVmlld0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViVmlld0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MkRGQzdEQkExQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVmlld0ltcGwubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJERkY3QjZFMURBNENGQUYwMDgxNDYxNCAvKiBXS0JhY2tGb3J3YXJk
TGlzdEl0ZW1Qcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQmFj
a0ZvcndhcmRMaXN0SXRlbVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkU1Qzc3MEMxRkE3RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJQXR0YWNobWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTVDNzcw
RDFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBUElBdHRhY2htZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3QTk0
NDkxQkJEOTVDNjAwOTQ1NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tGb2N1c2VkRWxlbWVudEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmlj
YXRpb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDUyNiw2ICs0
NTMzLDkgQEAKIAkJRUNCRkMxREIxRTZBNEQ2NjAwMDMwMEM3IC8qIEV4dHJhUHVibGljU3ltYm9s
c0ZvclRBUEkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0cmFQdWJsaWNTeW1ib2xzRm9yVEFQSS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMDM2OTc4NzE1RjRCRjA1MDBDM0E4MEUgLyog
V2ViQ29sb3JQaWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViQ29sb3JQaWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDA5QkEx
NzFFNkU2NEIzMDA5REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0
dGFjaG1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXR0YWNobWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVu
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2ht
ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQXR0YWNobWVudEludGVybmFsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NERGRUIwMUU5RTc1MkYwMDM4RDE5NiAvKiBX
ZWJJY29uVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYklj
b25VdGlsaXRpZXMuaDsgcGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NERGRUIxMUU5RTc1MkYwMDM4RDE5NiAvKiBXZWJJY29uVXRp
bGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViSWNv
blV0aWxpdGllcy5tbTsgcGF0aCA9IGlvcy9XZWJJY29uVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDk2QTQyRjFGNThBMjcyMDA0QzE3NTcgLyogRHJhZ0Ryb3BJ
bnRlcmFjdGlvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERyYWdEcm9wSW50ZXJhY3Rpb25TdGF0
ZS5oOyBwYXRoID0gaW9zL0RyYWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTc0Niw2ICs1NzU2LDkgQEAKIAkJCQkzN0E1RTAxMjE4QkJGOTM3
MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8uaCAqLywKIAkJCQkzN0E1RTAxMTE4
QkJGOTM3MDAwQTA4MUUgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gKi8sCiAJCQkJMzc5
QTg3MzUxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwu
aCAqLywKKwkJCQlGNDQyOTE5MTFGQTU5MTA3MDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5oICov
LAorCQkJCUY0NDI5MTkzMUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tICovLAor
CQkJCUY0NDI5MTk1MUZBNTk0MkEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCAq
LywKIAkJCQk5OUU3MTRDMTFDMTI0OUU2MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRl
LmggKi8sCiAJCQkJOTkwRDI4QTcxQzY0MDRCMDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNz
aW9uLmggKi8sCiAJCQkJOTkwRDI4QUQxQzY1MTkwNDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25T
ZXNzaW9uLm1tICovLApAQCAtNzE0MCw2ICs3MTUzLDggQEAKIAkJCQkzN0M0QzA4MzE4MTQ5QzJB
MDAzNjg4QjkgLyogQ29jb2EgKi8sCiAJCQkJQkM4QTUwMTMxMTc2NUY0NTAwNzU3NTczIC8qIGNw
cCAqLywKIAkJCQlCQzExMUI0NzExMkY2MTY5MDAzMzdCQUIgLyogbWFjICovLAorCQkJCTJFNUM3
NzBEMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCAqLywKKwkJCQkyRTVDNzcw
QzFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5oICovLAogCQkJCTk5QzgxRDVCMUMy
MEU4MTcwMDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggKi8sCiAJCQkJOTkwRDI4QjMx
QzY1MjZENDAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggKi8sCiAJCQkJ
N0M4OUQyQjExQTZCMDY4QzAwM0E1RkRFIC8qIEFQSUNvbnRlbnRSdWxlTGlzdC5jcHAgKi8sCkBA
IC04NDAzLDYgKzg0MTgsOCBAQAogCQkJZmlsZXMgPSAoCiAJCQkJMzdBNUUwMTQxOEJCRjkzRjAw
MEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
NzlBODczNjE4QkJGQTQzMDA1ODhBRjIgLyogX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRjQ0MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9XS0F0
dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0NDI5MTk2MUZBNTk0MkEwMDJDQzkzRSAv
KiBfV0tBdHRhY2htZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5RTcxNEM1MUMx
MjRBMDQwMDY2NUIzQSAvKiBfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5MEQyOEFCMUM2NDIwQzYwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTk3ODhBQ0IxRjQyMUREQTAwQzA4MDAwIC8qIF9XS0F1dG9tYXRp
b25TZXNzaW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC04NDc3LDYgKzg0OTQs
NyBAQAogCQkJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBN0Q3OTJEODE3NjdDQ0EzMDA4ODFDQkUgLyogQWN0aXZpdHlB
c3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjQ2OTcwMTFEQkU2MDMwMDY0NTVCMCAv
KiBBUElBcnJheS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkU1Qzc3MEUxRkE3RDQyOTAwNTkzMkMz
IC8qIEFQSUF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QzgxRDVEMUMyMUYzOEIw
MDVDNEM4MiAvKiBBUElBdXRvbWF0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTBE
MjhDMDFDNjU1M0YxMDA5ODY5NzcgLyogQVBJQXV0b21hdGlvblNlc3Npb25DbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBM0REMjA2MTI1RTVBMkYwMDQ1MTVFNiAvKiBBUElDbGllbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMTAwNDMsNiArMTAwNjEsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTM3QTVFMDEzMThCQkY5MzcwMDBBMDgx
RSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5tbSBpbiBTb3VyY2VzICovLAorCQkJCUY0NDI5
MTk0MUZBNTkzMTEwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTkwRDI4QjIxQzY1MjA5NDAwOTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTk3ODhBQ0MxRjQyMURFMjAwQzA4MDAwIC8qIF9XS0F1dG9tYXRp
b25TZXNzaW9uQ29uZmlndXJhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNTcwNEY3MUJF
MDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tIGluIFNvdXJjZXMg
Ki8sCkBAIC0xMDA3NSw2ICsxMDA5NCw3IEBACiAJCQkJQTE4MkQ1QjQxQkU2QkQyNTAwODdBN0ND
IC8qIEFjY2Vzc2liaWxpdHlJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQlBN0Q3OTJENjE3NjdD
QjZFMDA4ODFDQkUgLyogQWN0aXZpdHlBc3NlcnRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM2NDY5NkYxMURCRTYwMzAwNjQ1NUIwIC8qIEFQSUFycmF5LmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTJFNUM3NzBGMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODlEMkIzMUE2QjA2OEMwMDNBNUZERSAvKiBBUElDb250ZW50UnVsZUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzQTA2QTcxQUFCOTAzRTAwOUQ3NEJBIC8qIEFQ
SUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDRUZBOTYyMUFD
MDk5OTMwMEI5MTBGRCAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZUNvY29hLm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDlkYWEyODcyMjVkYWZhYzM0MGU1ODllNjkyOGM3YjI3MWM3YTBmNDIuLmVhMTg2NjAzNWMx
ZDZhMDEwN2VmNTZlYWU0N2ViMTY2MzZiZmY0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNjMsNiArMTYzLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTW91c2VFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VDb25maWd1cmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUtleWJv
YXJkRXZlbnQuaD4KQEAgLTU3NTcsNCArNTc1OCwxOSBAQCB2b2lkIFdlYlBhZ2U6OnN0b3JhZ2VB
Y2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBj
YWxsYmFjayh3YXNHcmFudGVkKTsKIH0KIAorI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQp
CisKK3ZvaWQgV2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50
VHlwZSwgdWludDY0X3QgZGF0YUxlbmd0aCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGhh
bmRsZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGlmIChhdXRvIHNoYXJlZE1lbW9y
eSA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpS
ZWFkT25seSkpIHsKKyAgICAgICAgYXV0byYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgICAgICBhdXRvIGRhdGEgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KHNoYXJlZE1lbW9yeS0+ZGF0
YSgpKSwgZGF0YUxlbmd0aCk7CisgICAgICAgIGZyYW1lLmVkaXRvcigpLmluc2VydEF0dGFjaG1l
bnQoaWRlbnRpZmllciwgZmlsZW5hbWUsIFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKTsKKyAg
ICB9CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhjYWxs
YmFja0lEKSk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCA3M2ZkZTI4MjI0MmQzYjI2ZjNmMmFkZDIyNTZhYTNmZDUzN2M5MGE2Li42
OWQyMDhhNmExZTE5MzIyZmE1ZGI3MDQwNmI2YjVhM2I3MGU0ZGYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC05OTgsNiArOTk4LDEwIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wpPiYmIGNhbGxi
YWNrKTsKICAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dyYW50ZWQsIHVp
bnQ2NF90IGNvbnRleHRJZCk7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgdWludDY0
X3QgZGF0YUxlbmd0aCwgY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmLCBDYWxsYmFja0lEKTsK
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA0NjEwOThiMzU0OTJjYmYwZmIw
YWRkYTk5ZmJhZDAyYTBiNmU5MGQzLi4yMTZjNTlkOGYzOGViYTNkYjlkZjYxMjI5ZWFiNjJlNzI5
YzFkMTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ4NCw0ICs0ODQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yKQogCiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3Jh
bnRlZCwgdWludDY0X3QgY29udGV4dElkKQorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKKyAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgZmlsZW5h
bWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgdWludDY0X3QgZGF0YUxlbmd0
aCwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OkhhbmRsZSBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDcwYTg1NmZiNWMwNzU2NjA2NjhjNWNiMWE5YTQ0MGU2NzYyMjRk
YTEuLjBlZTQxNjQ3NGNlM2MxNzAwMTFmMWM1NDlkOTdmNDQxMThjODY0NmMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxNy0xMC0zMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQXR0YWNobWVudCBTdXBwb3J0XSBJbXBsZW1lbnQgV0tXZWJWaWV3IFNQSSBmb3IgaW5z
ZXJ0aW5nIGF0dGFjaG1lbnQgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3OTAxMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzUyNDk2
Njg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBhIG5ldyBBUEkgdGVzdCBzdWl0ZSB0byBleGVyY2lzZSBhdHRhY2htZW50IGVsZW1lbnQgaW5z
ZXJ0aW9uIGFuZCBtYW5pcHVsYXRpb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXR0YWNobWVudFRlc3RzLm1tOiBBZGRlZC4KKyAgICAg
ICAgKHdlYlZpZXdGb3JUZXN0aW5nQXR0YWNobWVudHMpOgorICAgICAgICAodGVzdEhUTUxEYXRh
KToKKyAgICAgICAgKHRlc3RJbWFnZURhdGEpOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3IHN5
bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOmNvbnRlbnRUeXBlOmRhdGE6
b3B0aW9uczpdKToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOmZv
clF1ZXJ5U2VsZWN0b3I6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAx
Ny0xMC0yOCAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW1dQRV0gQnVpbGQgZ3N0LXBsdWdpbnMtYmFzZSB3aXRob3V0IHBhbmdvIHN1cHBvcnQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDM2MDFhYWU1YzhhM2IxMDlhZGY1Mzc3MWMzYzll
Nzg5NzQxNzAzNS4uNWE4ZmI1M2Q0YTc5ZTAzNDZiM2IzMjA5NGRlMzFkZWQwZDg0MzllYyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg5LDYgKzg5LDcgQEAKIAkJMkUxREZERjExRDQyRTFF
NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVy
LWVuZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRv
LWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLzsgfTsKIAkJMkUyMDVCQTQx
RjUyNzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMjA1QkEzMUY1Mjc3NDYwMDU5NTJE
RCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0gKi87IH07CiAJCTJFNTRGNDBEMUQ3QkM4NDIw
MDkyMUFERiAvKiBsYXJnZS12aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTU0RjQwQzFEN0JDODM5
MDA5MjFBREYgLyogbGFyZ2UtdmlkZW8tbXV0ZXMtb25wbGF5aW5nLmh0bWwgKi87IH07CisJCTJF
NUM3NzA3MUZBNzAxMzYwMDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNUM3NzA2MUZBNzAxMzYwMDU5
MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSAqLzsgfTsKIAkJMkU2OTFBRUExRDc4QjUzNjAw
MTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5
MUFFODFENzhCNTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1j
b250cm9scy5odG1sICovOyB9OwogCQkyRTY5MUFFQjFENzhCNTM2MDAxMjk0MDcgLyogbGFyZ2Ut
dmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTY5MUFFOTFENzhCNTJCMDAx
Mjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAq
LzsgfTsKIAkJMkU2OTFBRUQxRDc4QjkxMDAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5n
LW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU2OTFBRUMxRDc4QjkwMjAwMTI5NDA3IC8q
IGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi87
IH07CkBAIC0xMTY4LDYgKzExNjksNyBAQAogCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyog
bGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5p
bmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRTIwNUJBMzFGNTI3NzQ2MDA1OTUyREQgLyogQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eVRlc3RzSU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRTU0RjQwQzFEN0JDODM5MDA5MjFBREYgLyogbGFyZ2Ut
dmlkZW8tbXV0ZXMtb25wbGF5aW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
bGFyZ2UtdmlkZW8tbXV0ZXMtb25wbGF5aW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyRTVDNzcwNjFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0F0dGFjaG1lbnRUZXN0cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkU2OTFBRTgxRDc4QjUyQjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVv
cy1wYXVzZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJsYXJnZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTY5MUFFOTFENzhCNTJCMDAxMjk0MDcgLyog
bGFyZ2UtdmlkZW9zLXBsYXlpbmctdmlkZW8ta2VlcHMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1jb250
cm9scy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU2OTFBRUMxRDc4Qjkw
MjAwMTI5NDA3IC8qIGxhcmdlLXZpZGVvcy1wbGF5aW5nLW11dGVkLXZpZGVvLWhpZGVzLWNvbnRy
b2xzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXBsYXlp
bmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDc0LDYgKzIwNzYsNyBAQAogCQkJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3MjND
NCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gKi8sCiAJCQkJNTEyMEM4M0MxRTY3NTA3
OTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSAqLywKIAkJCQk1QzlF
NTY4NDFERjkxNDNEMDBDOUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovLAorCQkJCTJFNUM3
NzA2MUZBNzAxMzYwMDU5MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSAqLywKIAkJCQkxRjgz
NTcxQTFEM0ZGQjBFMDBFMzk2N0IgLyogV0tCYWNrRm9yd2FyZExpc3QubW0gKi8sCiAJCQkJNUNF
MzU0RDgxRTcwRDlDMzAwQkVGRTNCIC8qIFdLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tICovLAog
CQkJCTJEODM4QjFFMUVFRjNBNUIwMDlCOTgwRSAvKiBXS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlv
bnMubW0gKi8sCkBAIC0yNDQwLDcgKzI0NDMsNiBAQAogCQlCQzkwOTY0MTEyNTU2MTYwMDAwODM3
NTYgLyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
LQkJCQkwN0U0OTk5MDFGOUU1NkExMDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQubW0g
Ki8sCiAJCQkJMEYxMzlFNzQxQTQyM0E0NjAwRjU5MEY1IC8qIGNvY29hICovLAogCQkJCUMwQzVE
M0JCMTQ1OThCNkYwMEE4MDJBNiAvKiBtYWMgKi8sCiAJCQkJQkM5MDk3N0IxMjU1NzFBRTAwMDgz
NzU2IC8qIFJlc291cmNlcyAqLywKQEAgLTI0NzgsNiArMjQ4MCw3IEBACiAJCQkJRjY2MEFBMEMx
NUE1RjA2MTAwM0ExMjQzIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YUNhbGxiYWNrLmNwcCAqLywKIAkJCQlGNjYwQUEwRjE1QTVGNjI0MDAzQTEyNDMgLyogR2V0SW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tfQnVuZGxlLmNwcCAqLywK
IAkJCQkwN0NFMUNGMjFGMDZBN0UwMDBCRjg5RjUgLyogR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5t
bSAqLywKKwkJCQkwN0U0OTk5MDFGOUU1NkExMDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9t
cHQubW0gKi8sCiAJCQkJNEJGREZGQTgxMzE0Nzc3NzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1bHRO
b2RlSGFuZGxlLmNwcCAqLywKIAkJCQk0QkZERkZBNjEzMTQ3NzZDMDA2MUYyNEIgLyogSGl0VGVz
dFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcCAqLywKIAkJCQlCQzU3NUFBQzEyNkU4M0I5MDA2
RjBGMTIgLyogSW5qZWN0ZWRCdW5kbGVCYXNpYy5jcHAgKi8sCkBAIC0zMjc3LDcgKzMyODAsNiBA
QAogCQkJCTQ2Mzk3Qjk1MURDMkM4NTAwMDlBNzhBRSAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFQkMxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTU5vZGVGcm9tSlNPYmplY3Qu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCRDFBNDExQTdFMDA0NDdDNEMgLyogRE9NUmFu
Z2VPZlN0cmluZy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTA3RTQ5OTkxMUY5RTU2REYwMDJGMUVG
MyAvKiBHZXRVc2VyTWVkaWFSZXByb21wdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUVD
MUE0MTFBRTYwMDQ0N0M0QyAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0VFRDFBNDExQUU2MDA0NDdDNEMgLyogRE9NV2luZG93RXh0ZW5zaW9u
Tm9DYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyMzFBNDExQUY2MDA0NDdDNEMg
LyogRG93bmxvYWQubW0gaW4gU291cmNlcyAqLywKQEAgLTMzMjQsNiArMzMyNiw3IEBACiAJCQkJ
N0NDRTdFRjkxQTQxMUFFNjAwNDQ3QzRDIC8qIEdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUUyMUE0MTFB
OUEwMDQ0N0M0QyAvKiBHZXRQSURBZnRlckFib3J0ZWRQcm9jZXNzTGF1bmNoLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTA3Q0UxQ0YzMUYwNkE3RTAwMEJGODlGNSAvKiBHZXRVc2VyTWVkaWFOYXZp
Z2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMDdFNDk5OTExRjlFNTZERjAwMkYxRUYzIC8q
IEdldFVzZXJNZWRpYVJlcHJvbXB0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2QkRCQUMxRTcy
MDdGMTAwREUwRDVBIC8qIEdQVUJ1ZmZlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNTIzMUNB
MUVCM0IzQzcwMEEyMkExNiAvKiBHUFVDb21tYW5kUXVldWUubW0gaW4gU291cmNlcyAqLywKIAkJ
CQkzMTYyQUU5QzFFNkYyRkY1MDAwRTREQkMgLyogR1BVRGV2aWNlLm1tIGluIFNvdXJjZXMgKi8s
CkBAIC0zNTIxLDYgKzM1MjQsNyBAQAogCQkJCTdDQ0U3RjFDMUE0MTFBRTYwMDQ0N0M0QyAvKiBX
aWxsU2VuZFN1Ym1pdEV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQ4MUE0MTFB
N0UwMDQ0N0M0QyAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFRDkxQTQxMUE3RTAwNDQ3QzRDIC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMkU1Qzc3MDcxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNo
bWVudFRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUY4MzU3MUIxRDNGRkIyMzAwRTM5NjdC
IC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMkUxQTQx
MUIxMDAwNDQ3QzRDIC8qIFdLQnJvd3NpbmdDb250ZXh0R3JvdXBUZXN0Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdGMkYxQTQxMUIxMDAwNDQ3QzRDIC8qIFdLQnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlVGVzdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2htZW50VGVzdHMubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzU5OTYyZmExNzdkZTA4NmIxZDdiN2Q1OTUwOTYxNDNhZTYxZGUyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRhY2ht
ZW50VGVzdHMubW0KQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktp
dFByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFdLX0FQSV9FTkFC
TEVECisKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlld0ZvclRlc3RpbmdB
dHRhY2htZW50cygpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBfc2V0
QXR0YWNobWVudEVsZW1lbnRFbmFibGVkOllFU107CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU+
PC9ib2R5PjxzY3JpcHQ+ZG9jdW1lbnQuYm9keS5mb2N1cygpOzwvc2NyaXB0PiJdOworCisgICAg
cmV0dXJuIHdlYlZpZXc7Cit9CisKK3N0YXRpYyBOU0RhdGEgKnRlc3RIVE1MRGF0YSgpCit7Cisg
ICAgcmV0dXJuIFtAIjxhIGhyZWY9JyMnPlRoaXMgaXMgc29tZSBIVE1MIGRhdGE8L2E+IiBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Cit9CisKK3N0YXRpYyBOU0RhdGEg
KnRlc3RJbWFnZURhdGEoKQoreworICAgIE5TVVJMICp1cmwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiaWNvbiIgd2l0aEV4dGVuc2lvbjpAInBuZyIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICByZXR1cm4gW05TRGF0YSBkYXRh
V2l0aENvbnRlbnRzT2ZVUkw6dXJsXTsKK30KKworQGltcGxlbWVudGF0aW9uIFRlc3RXS1dlYlZp
ZXcgKEF0dGFjaG1lbnRUZXN0aW5nKQorCistIChfV0tBdHRhY2htZW50ICopc3luY2hyb25vdXNs
eUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29udGVu
dFR5cGU6KE5TU3RyaW5nICopY29udGVudFR5cGUgZGF0YTooTlNEYXRhICopZGF0YSBvcHRpb25z
OihfV0tBdHRhY2htZW50RGlzcGxheU9wdGlvbnMgKilvcHRpb25zCit7CisgICAgX19ibG9jayBi
b29sIGRvbmUgPSBmYWxzZTsKKyAgICBfV0tBdHRhY2htZW50ICphdHRhY2htZW50ID0gW3NlbGYg
X2luc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5hbWU6ZmlsZW5hbWUgY29udGVudFR5cGU6Y29udGVu
dFR5cGUgZGF0YTpkYXRhIG9wdGlvbnM6b3B0aW9ucyBjb21wbGV0aW9uOl4oQk9PTCkgeworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOworICAgIHJldHVybiBhdHRhY2htZW50OworfQorCistIChOU1N0cmluZyAqKXZhbHVl
T2ZBdHRyaWJ1dGU6KE5TU3RyaW5nICopYXR0cmlidXRlTmFtZSBmb3JRdWVyeVNlbGVjdG9yOihO
U1N0cmluZyAqKXF1ZXJ5U2VsZWN0b3IKK3sKKyAgICByZXR1cm4gW3NlbGYgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJyVAJykuZ2V0QXR0cmlidXRlKCclQCcpIiwgcXVlcnlTZWxlY3RvciwgYXR0
cmlidXRlTmFtZV1dOworfQorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
VEVTVChXS0F0dGFjaG1lbnRUZXN0cywgQXR0YWNobWVudEVsZW1lbnRJbnNlcnRpb24pCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gd2ViVmlld0ZvclRlc3RpbmdBdHRhY2htZW50cygpOworCisgICAg
Ly8gVXNlIHRoZSBnaXZlbiBjb250ZW50IHR5cGUgZm9yIHRoZSBhdHRhY2htZW50IGVsZW1lbnQn
cyB0eXBlLgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZp
bGVuYW1lOkAiZm9vIiBjb250ZW50VHlwZTpAInRleHQvaHRtbCIgZGF0YTp0ZXN0SFRNTERhdGEo
KSBvcHRpb25zOm5pbF07CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiZm9vIiwgW3dlYlZpZXcgdmFs
dWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJ0ZXh0L2h0bWwiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmli
dXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKEAiMzggYnl0ZXMiLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAic3VidGl0
bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworCisgICAgLy8gU2luY2Ugbm8g
Y29udGVudCB0eXBlIGlzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLCBjb21wdXRlIGl0IGZyb20gdGhl
IGZpbGUgZXh0ZW5zaW9uLgorICAgIFt3ZWJWaWV3IF9leGVjdXRlRWRpdENvbW1hbmQ6QCJEZWxl
dGVCYWNrd2FyZCIgYXJndW1lbnQ6bmlsIGNvbXBsZXRpb246bmlsXTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTpAImJhci5wbmciIGNvbnRl
bnRUeXBlOm5pbCBkYXRhOnRlc3RJbWFnZURhdGEoKSBvcHRpb25zOm5pbF07CisgICAgRVhQRUNU
X1dLX1NUUkVRKEAiYmFyLnBuZyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJ0aXRsZSIg
Zm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAi
aW1hZ2UvcG5nIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInR5cGUiIGZvclF1ZXJ5U2Vs
ZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUShAIjM3IEtCIiwgW3dl
YlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInN1YnRpdGxlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0
YWNobWVudCJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325427</attachid>
            <date>2017-10-31 01:03:20 -0700</date>
            <delta_ts>2017-10-31 12:29:16 -0700</delta_ts>
            <desc>Fix the Windows build (2)</desc>
            <filename>bug-179013-20171031010319.patch</filename>
            <type>text/plain</type>
            <size>72005</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI2OWU0MTAzNzU3ZGVj
Y2UyOGE2MmQ5YjEyYWM2ZDAwNDNmNDA4OC4uMDViMDNkNjRkM2FiYTE2NTk2NGY3M2E3Mzk1NmUy
ZWU3NzY1NDQyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTEwLTMxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEltcGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVu
dCBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc5MDEzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIEVkaXRvciBoZWxwZXIg
bWV0aG9kcyB0byBpbnNlcnQgYW4gYXR0YWNobWVudCBlbGVtZW50IGF0IHRoZSBjdXJyZW50IHNl
bGVjdGlvbi4KKworICAgICAgICBUZXN0OiBXS0F0dGFjaG1lbnRUZXN0cy5BdHRhY2htZW50RWxl
bWVudEluc2VydGlvbgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjppbnNlcnRBdHRhY2htZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6aW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5oOgorCisgICAgICAgIEFkZCB0d28gbmV3IGhlbHBlcnMgZm9yIGluc2VydGluZyBhdHRhY2ht
ZW50IGVsZW1lbnRzLCBlaXRoZXIgZnJvbSBhIGZpbGVuYW1lIG9yIGEgZGF0YSBibG9iLiBUaGlz
IGlzIGEgd3JhcHBlcgorICAgICAgICBhcm91bmQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50LgorCisgICAgICAgICogaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpIVE1MQXR0YWNobWVudEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUp
OgorICAgICAgICAqIGh0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmg6CisKKyAgICAgICAgQWRk
IGEgdW5pcXVlIGlkZW50aWZpZXIgc3RyaW5nIHRvIEhUTUxBdHRhY2htZW50RWxlbWVudC4gVGhp
cyB1bmlxdWUgaWRlbnRpZmllciBhbGxvd3MgdGhlIFVJIHByb2Nlc3MgdG8KKyAgICAgICAgcmVm
ZXJlbmNlIGFuZCBpbmRpcmVjdGx5IG1hbmlwdWxhdGUgYXR0YWNobWVudCBlbGVtZW50cy4KKwog
MjAxNy0xMC0yOSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb25p
YyBHcmFkaWVudHNdIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIGNvbmljIGdyYWRpZW50cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKaW5kZXggODUyYWQ1M2NiZjRmZjUzOTQ2YWQ1YmViZDgzNGI2NTI3MGFkZWFk
ZC4uYzI0ZjIxMTFkNWQxMTg0YTczMjFhNGZjY2QwZmM5NzlkOGFmYTNmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMTAtMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVt
ZW50IFdLV2ViVmlldyBTUEkgZm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFBBTCBsaWJyYXJ5IGZ1bmN0aW9uIHRvIGNvbnZl
cnQgYSBmaWxlIHNpemUgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmcuIE9uIENvY29hIHBsYXRm
b3JtcywgdGhpcyBpcyBhCisgICAgICAgIHdyYXBwZXIgYXJvdW5kIE5TTG9jYWxpemVkRmlsZVNp
emVEZXNjcmlwdGlvbjsgb3RoZXJ3aXNlLCB3ZSBmYWxsIGJhY2sgdG8gYSBuYWl2ZSBwbGF0Zm9y
bS1hZ25vc3RpYworICAgICAgICBpbXBsZW1lbnRhdGlvbiBpbiBGaWxlU2l6ZUZvcm1hdHRlci5j
cHAuCisKKyAgICAgICAgKiBQQUwueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwYWwvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChmaWxlU2l6ZURlc2NyaXB0aW9uKToKKyAgICAgICAgKiBwYWwv
RmlsZVNpemVGb3JtYXR0ZXIuaDogQWRkZWQuCisgICAgICAgICogcGFsL2NvY29hL0ZpbGVTaXpl
Rm9ybWF0dGVyQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoZmlsZVNpemVEZXNjcmlwdGlvbik6
CisgICAgICAgICogcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmg6IEFkZGVk
LgorCiAyMDE3LTEwLTI3ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIE1vdmUgaU9TIHNwZWNpZmljIHNvdXJjZXMgdG8gdW5pZmllZCBzb3VyY2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGI0MWZkNDUzZDJlOGEyNGZlN2VmZGU4NjRhODE2NzFmMDlmNDE3NDIuLjAxYzZl
NjdhN2RlMzU5NzBmOTMwNDRmZWMyY2QxNjlhNmUwMWFhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjUgQEAKKzIwMTctMTAtMzEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgW0F0dGFjaG1lbnQgU3VwcG9ydF0gSW1wbGVtZW50IFdLV2ViVmlldyBTUEkg
Zm9yIGluc2VydGluZyBhdHRhY2htZW50IGVsZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzM1MjQ5NjY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZHMgbmF0aXZlIFNQSSB0byBpbnNlcnQgYXR0YWNobWVudCBlbGVtZW50cyBnaXZlbiBh
IGZpbGVuYW1lLCBhbiBvcHRpb25hbCBNSU1FIHR5cGUsIGFuZCBhIGRhdGEgYmxvYi4gU2VlCisg
ICAgICAgIGNoYW5nZS1ieS1jaGFuZ2UgY29tbWVudHMgYmVsb3cgZm9yIG1vcmUgZGV0YWlsLiBD
b3ZlcmVkIGJ5IGEgbmV3IEFQSSB0ZXN0LgorCisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6
CisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJ
L0NvY29hL1dlYktpdFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUF0dGFj
aG1lbnQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2Vi
S2l0UHJpdmF0ZS5oLgorICAgICAgICAoQVBJOjpBdHRhY2htZW50OjpjcmVhdGUpOgorICAgICAg
ICAoQVBJOjpBdHRhY2htZW50OjpBdHRhY2htZW50KToKKyAgICAgICAgKEFQSTo6QXR0YWNobWVu
dDo6fkF0dGFjaG1lbnQpOgorCisgICAgICAgIEludHJvZHVjZSBBUEk6OkF0dGFjaG1lbnQsIHdo
aWNoIHJlcHJlc2VudHMgYSBwbGF0Zm9ybS1hZ25vc3RpYyBBdHRhY2htZW50LgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmguCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5zZXJ0QXR0
YWNobWVudFdpdGhGaWxlbmFtZTpjb250ZW50VHlwZTpkYXRhOm9wdGlvbnM6Y29tcGxldGlvbjpd
KToKKworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGluc2VydGluZyBhIG5ldyBhdHRhY2htZW50
IGVsZW1lbnQuIENhbGxzIG91dCB0byBXZWJQYWdlUHJveHkgdG8gaW5zZXJ0IHRoZSBhdHRhY2ht
ZW50IGZyb20gdGhlCisgICAgICAgIGdpdmVuIGRhdGEgYmxvYiwgYW5kIGNyZWF0ZXMgYSBuZXcg
QVBJLW9iamVjdC1iYWNrZWQgX1dLQXR0YWNobWVudC4KKworICAgICAgICAoLVtXS1dlYlZpZXcg
X2V4ZWN1dGVFZGl0Q29tbWFuZDphcmd1bWVudDpjb21wbGV0aW9uOl0pOgorCisgICAgICAgIFN1
cHBvcnQgcGFzc2luZyBpbiBhIG5pbCBjb21wbGV0aW9uIGJsb2NrLgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLQXR0YWNobWVudC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
YWNobWVudEVsZW1lbnQuaC4KKworICAgICAgICBJbnRyb2R1Y2VzIF9XS0F0dGFjaG1lbnQsIGFu
IE9iamVjdGl2ZSBDIHdyYXBwZXIgYXJvdW5kIHRoZSBBUEk6OkF0dGFjaG1lbnQuCisKKyAgICAg
ICAgKC1bX1dLQXR0YWNobWVudCBfYXBpT2JqZWN0XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1l
bnQgaXNFcXVhbDpdKToKKyAgICAgICAgKC1bX1dLQXR0YWNobWVudCB1bmlxdWVJZGVudGlmaWVy
XSk6CisgICAgICAgICgtW19XS0F0dGFjaG1lbnQgaGFzaF0pOgorCisgICAgICAgIEFkZCBfV0tB
dHRhY2htZW50LCBhIFdlYktpdCBTUEkgb2JqZWN0IHRoYXQgd3JhcHMgYW4gYXR0YWNobWVudCBl
bGVtZW50IHVuaXF1ZSBpZGVudGlmaWVyLiBBbHNvLCBhbGxvdworICAgICAgICBfV0tBdHRhY2ht
ZW50IHRvIGJlIHVzZWQgYXMgYSBoYXNoYWJsZSBOU0RpY3Rpb25hcnkga2V5LgorCisgICAgICAg
ICgtW19XS0F0dGFjaG1lbnQgZGVzY3JpcHRpb25dKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0F0dGFjaG1lbnRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oLgorICAgICAgICAoQVBJOjp3cmFwcGVy
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KToKKworICAgICAgICBJbXBsZW1lbnQg
SVBDIHN1cHBvcnQgZm9yIGluc2VydGluZyBhbiBhdHRhY2htZW50LgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0QXR0YWNobWVudCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0yNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtTZXR0aW5nc10gR2VuZXJhdGUgbW9yZSBvZiB0aGUgV2ViS2l0
IHByZWZlcmVuY2VzIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1BBTC9QQUwueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBmNTFhZGIwMDgxMDBjMmZmZWNlMjQyZTg4YWZmNTg1ODVk
ZDc5ODBlLi4zN2YxNWU5NzVlMzcyNmI0OTIyYmNmZjdmNDRmMzk4MjNkN2VjZGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvUEFMLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML1BBTC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
NDEsNiArMTQxLDEwIEBACiAJCUEzQUI2RTY1MUYzRDIxN0YwMDlDMTRCMSAvKiBTeXN0ZW1TbGVl
cExpc3RlbmVyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTNBQjZFNjMxRjNEMjE3RjAwOUMxNEIxIC8qIFN5c3RlbVNsZWVwTGlzdGVuZXJNYWMu
bW0gKi87IH07CiAJCUEzQzY2Q0RDMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNDNjZDREExRjQ2
MkQ2QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi87IH07CiAJCUEzQzY2Q0REMUY0NjJENkEw
MDlFNkVFOSAvKiBTZXNzaW9uSUQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzQzY2Q0RCMUY0NjJENkEwMDlFNkVFOSAvKiBTZXNzaW9uSUQuaCAqLzsg
fTsKKwkJRjQ0MjkxNUUxRkE1MjQ3MzAwMkNDOTNFIC8qIE5TRmlsZVNpemVGb3JtYXR0ZXJTUEku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDI5MTVE
MUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggKi87IH07CisJCUY0
NDI5MTYwMUZBNTI2MUUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0MjkxNUYxRkE1MjYxRTAwMkND
OTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxNjQxRkE1MjY3MDAwMkNDOTNFIC8qIEZpbGVTaXpl
Rm9ybWF0dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NDI5MTYyMUZBNTI2NzAwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5jcHAgKi87
IH07CisJCUY0NDI5MTY4MUZBNTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Mjkx
NjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0gKi87IH07CiAv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRl
bVByb3h5IHNlY3Rpb24gKi8KQEAgLTI4Myw2ICsyODcsMTAgQEAKIAkJQTNDNjZDREExRjQ2MkQ2
QTAwOUU2RUU5IC8qIFNlc3Npb25JRC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTZXNzaW9uSUQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0M2
NkNEQjFGNDYyRDZBMDA5RTZFRTkgLyogU2Vzc2lvbklELmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNlc3Npb25JRC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjE0N0E0QTFFRkQwQUE2MDAwNTZGQTUgLyogQ29weVBBTEhlYWRlcnMueGNjb25maWcgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQ29weVBBTEhlYWRlcnMueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTVEMUZBNTI0NzMwMDJDQzkzRSAvKiBOU0Zp
bGVTaXplRm9ybWF0dGVyU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5TRmlsZVNpemVGb3JtYXR0ZXJT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0MjkxNUYxRkE1MjYxRTAwMkND
OTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTaXplRm9ybWF0
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTYyMUZBNTI2NzAwMDJD
QzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU2l6
ZUZvcm1hdHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTY2MUZB
NTI3MDUwMDJDQzkzRSAvKiBGaWxlU2l6ZUZvcm1hdHRlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRmlsZVNpemVGb3JtYXR0ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtMzYyLDYgKzM3MCw3IEBACiAJCQkJ
MEMyREExMzExRjNCRUI0OTAwREJDMzE3IC8qIE5TQ29sb3JTUEkuaCAqLywKIAkJCQkwQzJEQTEz
MjFGM0JFQjQ5MDBEQkMzMTcgLyogTlNFeHRlbnNpb25TUEkuaCAqLywKIAkJCQkwQzJEQTEzMzFG
M0JFQjQ5MDBEQkMzMTcgLyogTlNGaWxlTWFuYWdlclNQSS5oICovLAorCQkJCUY0NDI5MTVEMUZB
NTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggKi8sCiAJCQkJMEMyREEx
MzQxRjNCRUI0OTAwREJDMzE3IC8qIE5TU3RyaW5nU1BJLmggKi8sCiAJCQkJMEMyREExMzUxRjNC
RUI0OTAwREJDMzE3IC8qIE5TVG91Y2hCYXJTUEkuaCAqLywKIAkJCQkwQzJEQTEzNjFGM0JFQjQ5
MDBEQkMzMTcgLyogTlNVUkxDb25uZWN0aW9uU1BJLmggKi8sCkBAIC00NzEsNiArNDgwLDggQEAK
IAkJCQlBMzc4OEU5RjFGMDVCN0NFMDA2Nzk0MjUgLyogc3lzdGVtICovLAogCQkJCUEzMEQ0MTFE
MUYwREQwQUMwMEI3MTk1NCAvKiB0ZXh0ICovLAogCQkJCTBDMkQ5RTcyMUVFRjVBRjYwMERCQzMx
NyAvKiBFeHBvcnRNYWNyb3MuaCAqLywKKwkJCQlGNDQyOTE2MjFGQTUyNjcwMDAyQ0M5M0UgLyog
RmlsZVNpemVGb3JtYXR0ZXIuY3BwICovLAorCQkJCUY0NDI5MTVGMUZBNTI2MUUwMDJDQzkzRSAv
KiBGaWxlU2l6ZUZvcm1hdHRlci5oICovLAogCQkJCUEzOURFNzREMUY3QzQ0M0MwMDdCQ0IwMCAv
KiBIeXN0ZXJlc2lzQWN0aXZpdHkuaCAqLywKIAkJCQkwNzA4QUMzMjFGNEM4NzRBMDAxRjc4OEYg
LyogTG9nZ2VyLmggKi8sCiAJCQkJMDczNzdBREIxRjU3NzdENzAwMjdGMTZEIC8qIExvZ2dlckhl
bHBlci5oICovLApAQCAtNTE3LDYgKzUyOCw3IEBACiAJCTFDNDg3NkRFMUY4RDgzMTMwMENDRUVC
RCAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJRjQ0MjkxNjYxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9ybWF0dGVyQ29jb2EubW0g
Ki8sCiAJCQkJMUM0ODc2REYxRjhEODM3NTAwQ0NFRUJEIC8qIExvZ2dpbmdDb2NvYS5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CkBAIC02MTIsNiArNjI0LDcgQEAKIAkJCQkwQzVBRjkx
QTFGNDNBNEM3MDAyRUFDMDIgLyogRGF0YURldGVjdG9yc1VJU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMTE3NUI1NzFGNkI0NzA1MDBDNEI5RjAgLyogRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwQzJEOUU3MzFFRUY1QUY2MDBEQkMzMTcgLyogRXhwb3J0TWFj
cm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE2MDFGQTUyNjFFMDAyQ0M5M0UgLyogRmls
ZVNpemVGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUExMDI2NTg3MUY1Njc0NjEwMEI0
Qzg0NCAvKiBGb3VuZGF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQkwQzVBRjkxQjFGNDNB
NEM3MDAyRUFDMDIgLyogR3JhcGhpY3NTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTEwMjY1OEUxRjU2N0U5RDAwQjRDODQ0IC8qIEhJU2VydmljZXNTUEkuaCBpbiBIZWFkZXJzICov
LApAQCAtNjQ3LDYgKzY2MCw3IEBACiAJCQkJMEM3Nzg1OEYxRjQ1MTMwRjAwRjRFQkI2IC8qIE5T
RXZlbnRTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBDMkRBMTRFMUYzQkVCNDkwMERCQzMxNyAv
KiBOU0V4dGVuc2lvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEMyREExNEYxRjNCRUI0OTAw
REJDMzE3IC8qIE5TRmlsZU1hbmFnZXJTUEkuaCBpbiBIZWFkZXJzICovLAorCQkJCUY0NDI5MTVF
MUZBNTI0NzMwMDJDQzkzRSAvKiBOU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwQzc3ODU5MDFGNDUxMzBGMDBGNEVCQjYgLyogTlNGb250U1BJLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMTA4MjZGRTFGNThBNDMzMDA0NzcyQUMgLyogTlNHcmFwaGljc1NQSS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEM3Nzg1OTExRjQ1MTMwRjAwRjRFQkI2IC8qIE5TSW1tZWRpYXRl
QWN0aW9uR2VzdHVyZVJlY29nbml6ZXJTUEkuaCBpbiBIZWFkZXJzICovLApAQCAtNzg0LDYgKzc5
OCw4IEBACiAJCQkJMENGOTlDQTgxRjczODQzNzAwN0VFNzkzIC8qIENvcmVNZWRpYVNvZnRMaW5r
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDMDlEMDU2MUUzMUM0NjUwMDcyNUYxOCAvKiBDcnlw
dG9EaWdlc3RDb21tb25DcnlwdG8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTExNzVCNTgxRjZC
NDcwNTAwQzRCOUYwIC8qIERlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGNDQyOTE2NDFGQTUyNjcwMDAyQ0M5M0UgLyogRmlsZVNpemVGb3JtYXR0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRjQ0MjkxNjgxRkE1MjcwNTAwMkNDOTNFIC8qIEZpbGVTaXplRm9y
bWF0dGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMzBENDEyMjFGMEREMEVBMDBCNzE5
NTQgLyogS2lsbFJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTMwRDQxMjUxRjBERDEyRDAw
QjcxOTU0IC8qIEtpbGxSaW5nTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM0ODc2RDgxRjhE
N0Y0RTAwQ0NFRUJEIC8qIExvZ2dpbmcuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9DTWFrZUxpc3RzLnR4dAppbmRleCBhNjlkYjFjYzg4N2M1OWJhYzJhODcxNjJiOWJmMjY0
YjJmZjRmYzMxLi41NDRmZmYxNDhhZWNmNDUzNTllMTNkM2UwODk1ZGJmMzEwZmE5M2RlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvQ01ha2VMaXN0cy50eHQKQEAgLTEsNCArMSw1IEBACiBzZXQoUEFM
X1NPVVJDRVMKKyAgICBGaWxlU2l6ZUZvcm1hdHRlci5jcHAKICAgICBMb2dnaW5nLmNwcAogICAg
IFNlc3Npb25JRC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9GaWxl
U2l6ZUZvcm1hdHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0
dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42YWY2NTEyN2I0YWQ4MzkzYzU0ZmEwYTIwNTA5NjUxZGM2NDQ4
ZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9GaWxlU2l6ZUZv
cm1hdHRlci5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJGaWxlU2l6ZUZvcm1hdHRlci5oIgorCisjaWYgIVBMQVRGT1JNKENP
Q09BKQorCitTdHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCBzaXplKQoreworICAg
IC8vIEZJWE1FOiBUaGVzZSBzdHJpbmdzIHNob3VsZCBiZSBsb2NhbGl6ZWQsIGJ1dCB0aGF0IHdv
dWxkIHJlcXVpcmUgYnJpbmdpbmcgTG9jYWxpemVkU3RyaW5ncyBpbnRvIFBBTC4KKyAgICAvLyBT
ZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkwMTk+IGZvciBt
b3JlIGRldGFpbHMuCisgICAgaWYgKHNpemUgPCAxMDAwKQorICAgICAgICByZXR1cm4gU3RyaW5n
Ojpmb3JtYXQoIiV0dSBieXRlcyIsIHNpemUpOworICAgIGlmIChzaXplIDwgMTAwMDAwMCkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlLjFmIEtCIiwgc2l6ZSAvIDEwMDAuKTsKKyAg
ICBpZiAoc2l6ZSA8IDEwMDAwMDAwMDApCisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgi
JS4xZiBNQiIsIHNpemUgLyAxMDAwMDAwLik7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIl
LjFmIEdCIiwgc2l6ZSAvIDEwMDAwMDAwMDAuKTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL0ZpbGVTaXplRm9ybWF0dGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFlYTEyNzk3NmMzMzkz
YTkwNDkyMjQ2MjUxZWNkMDBmNzViMThlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvRmlsZVNpemVGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
UEFMX0VYUE9SVCBTdHJpbmcgZmlsZVNpemVEZXNjcmlwdGlvbih1aW50NjRfdCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL0ZpbGVTaXplRm9ybWF0dGVyQ29jb2Eu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDcwOTViYWY1NDBjZTY5ZDBkNjE5NGVhOWE1YTdhMmY5MGI2YmJhZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvRmlsZVNpemVG
b3JtYXR0ZXJDb2NvYS5tbQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbGVTaXplRm9ybWF0dGVyLmgiCisKKyNpbXBvcnQgIk5T
RmlsZVNpemVGb3JtYXR0ZXJTUEkuaCIKKworU3RyaW5nIGZpbGVTaXplRGVzY3JpcHRpb24odWlu
dDY0X3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gTlNMb2NhbGl6ZWRGaWxlU2l6ZURlc2NyaXB0aW9u
KHNpemUsIDAsIDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y29jb2EvTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY29jb2EvTlNGaWxlU2l6ZUZvcm1hdHRlclNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1NTc2ZmQzNGMx
NTBkZWYxMDVmZmI0ZDlmMmFlN2I0MDIzZmRmNjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9OU0ZpbGVTaXplRm9ybWF0dGVyU1BJLmgKQEAgLTAs
MCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0ZpbGVTaXplRm9ybWF0dGVyLmg+
CisKKyNlbHNlCisKK3R5cGVkZWYgdWludDY0X3QgTlNGaWxlU2l6ZUZvcm1hdHRlck9wdGlvbnM7
CitleHRlcm4gIkMiIE5TU3RyaW5nICpOU0xvY2FsaXplZEZpbGVTaXplRGVzY3JpcHRpb24odWlu
dDY0X3Qgc2l6ZSwgdWludDY0X3QgbWF4aW11bURpc3BsYXllZFZhbHVlLCBOU0ZpbGVTaXplRm9y
bWF0dGVyT3B0aW9ucyk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IGJlM2RhOGVlMmY3NWViZTJlNzY3YmJhNmU3NzdmMDkxNWY5ODgyMjUuLmU2ODdhMjc1NWZhOWVk
MTVmMGQ3ZDQ1NzdiYWJlN2E2ZmMwMDQ0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTQ3LDEyICs0NywxNCBAQAogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUg
IkV2ZW50SGFuZGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGaWxl
LmgiCiAjaW5jbHVkZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUg
IkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkhU
TUxBdHRhY2htZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb2xsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiSFRNTEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVy
RWxlbWVudC5oIgpAQCAtOTgsNiArMTAwLDcgQEAKICNpbmNsdWRlICJVc2VyVHlwaW5nR2VzdHVy
ZUluZGljYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgIm1hcmt1
cC5oIgorI2luY2x1ZGUgPHBhbC9GaWxlU2l6ZUZvcm1hdHRlci5oPgogI2luY2x1ZGUgPHBhbC9z
eXN0ZW0vU291bmQuaD4KICNpbmNsdWRlIDxwYWwvdGV4dC9LaWxsUmluZy5oPgogI2luY2x1ZGUg
PHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CkBAIC0zNzI4LDYgKzM3MzEsMzkgQEAgUmVm
UHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlRm9yVGV4dENoZWNraW5nUmVzdWx0KGNvbnN0IFRleHRD
aGVja2luZ1Jlc3VsdCYgcmVzdWwKICAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZSgq
Y29udGV4dFJhbmdlLCByZXN1bHQubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpOwogfQogCisjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1l
bnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIGZpbGVwYXRoLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUpCit7
CisgICAgaWYgKCFjb250ZW50VHlwZSkKKyAgICAgICAgY29udGVudFR5cGUgPSBGaWxlOjpjb250
ZW50VHlwZUZvckZpbGUoZmlsZW5hbWUpOworICAgIGluc2VydEF0dGFjaG1lbnRGcm9tRmlsZShp
ZGVudGlmaWVyLCBmaWxlbmFtZSwgKmNvbnRlbnRUeXBlLCBGaWxlOjpjcmVhdGUoZmlsZXBhdGgp
KTsKK30KKwordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEs
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSkKK3sKKyAgICBpZiAoIWNvbnRlbnRU
eXBlKQorICAgICAgICBjb250ZW50VHlwZSA9IEZpbGU6OmNvbnRlbnRUeXBlRm9yRmlsZShmaWxl
bmFtZSk7CisgICAgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGlkZW50aWZpZXIsIGZpbGVuYW1l
LCAqY29udGVudFR5cGUsIEZpbGU6OmNyZWF0ZShCbG9iOjpjcmVhdGUoZGF0YSwgKmNvbnRlbnRU
eXBlKSwgZmlsZW5hbWUpKTsKK30KKwordm9pZCBFZGl0b3I6Omluc2VydEF0dGFjaG1lbnRGcm9t
RmlsZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxGaWxlPiYmIGZpbGUpCit7CisgICAgYXV0byBh
dHRhY2htZW50ID0gSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjphdHRh
Y2htZW50VGFnLCBkb2N1bWVudCgpLCBpZGVudGlmaWVyKTsKKyAgICBhdHRhY2htZW50LT5zZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjp0aXRsZUF0dHIsIGZpbGVuYW1lKTsKKyAgICBhdHRhY2htZW50
LT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpzdWJ0aXRsZUF0dHIsIGZpbGVTaXplRGVzY3JpcHRp
b24oZmlsZS0+c2l6ZSgpKSk7CisgICAgYXR0YWNobWVudC0+c2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6dHlwZUF0dHIsIGNvbnRlbnRUeXBlKTsKKyAgICBhdHRhY2htZW50LT5zZXRVbmlxdWVJZGVu
dGlmaWVyKGlkZW50aWZpZXIpOworICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoZmlsZS5wdHIoKSk7
CisKKyAgICBhdXRvIGZyYWdtZW50VG9JbnNlcnQgPSBkb2N1bWVudCgpLmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKKyAgICBmcmFnbWVudFRvSW5zZXJ0LT5hcHBlbmRDaGlsZChhdHRhY2htZW50
LmdldCgpKTsKKworICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoZnJhZ21lbnRUb0lu
c2VydC5nZXQoKSwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCisKIHZvaWQgRWRpdG9yOjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0
ZShUZXh0Q2hlY2tpbmdSZXN1bHQgYWNjZXB0ZWRDYW5kaWRhdGUpCiB7CiAgICAgY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGFhODg1ZmY1OTljMWEwNzVkM2RhMGQwN2Nk
ZjIyNTg1MTZhZWEzN2QuLmZkZmEzZThhODA5YzVhYjU4MTg2MzU2N2Q1ZThlOTBiZTIwM2Q4MzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNjMsNyArNjMsOSBAQCBjbGFzcyBFZGl0Q29t
bWFuZDsKIGNsYXNzIEVkaXRDb21tYW5kQ29tcG9zaXRpb247CiBjbGFzcyBFZGl0b3JDbGllbnQ7
CiBjbGFzcyBFZGl0b3JJbnRlcm5hbENvbW1hbmQ7CitjbGFzcyBGaWxlOwogY2xhc3MgRnJhbWU7
CitjbGFzcyBIVE1MQXR0YWNobWVudEVsZW1lbnQ7CiBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNz
IEhpdFRlc3RSZXN1bHQ7CiBjbGFzcyBLZXlib2FyZEV2ZW50OwpAQCAtNDk4LDkgKzUwMCwxOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0dldHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKGJvb2wg
YikgeyBtX2lzR2V0dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8gPSBiOyB9CiAgICAgYm9vbCBpc0dl
dHRpbmdEaWN0aW9uYXJ5UG9wdXBJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9pc0dldHRpbmdEaWN0
aW9uYXJ5UG9wdXBJbmZvOyB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZXBhdGgsIHN0
ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSA9IHN0ZDo6bnVsbG9wdCk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBkYXRhLCBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUgPSBzdGQ6Om51bGxvcHQpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQorICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudEZyb21GaWxlKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSwgUmVmPEZpbGU+JiYpOworI2VuZGlmCisKICAgICBib29sIGNhbkRl
bGV0ZVJhbmdlKFJhbmdlKikgY29uc3Q7CiAgICAgYm9vbCBjYW5TbWFydFJlcGxhY2VXaXRoUGFz
dGVib2FyZChQYXN0ZWJvYXJkJik7CiAgICAgdm9pZCBwYXN0ZUFzUGxhaW5UZXh0V2l0aFBhc3Rl
Ym9hcmQoUGFzdGVib2FyZCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVu
dEVsZW1lbnQuY3BwCmluZGV4IGE2ZWQ5NjE1NmFjZGE3MjMzM2JiMzZmYTdiNWY1M2FhZmM5YTAy
OWIuLjNiZmYwYzdiZjljMThmZjFlOGI2M2NjZDhkOWRhYjYwYmMxNjMzNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTI4LDIwICsyOCwy
OSBAQAogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAorI2luY2x1ZGUgIkVkaXRv
ci5oIgogI2luY2x1ZGUgIkZpbGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIlJlbmRlckF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlIDx3dGYv
VVVJRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFt
ZXM7CiAKLUhUTUxBdHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK0hUTUxBdHRhY2ht
ZW50RWxlbWVudDo6SFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQogICAg
IDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAgLCBtX3VuaXF1ZUlkZW50aWZp
ZXIoaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShhdHRhY2htZW50VGFnKSk7
CiB9CiAKK0hUTUxBdHRhY2htZW50RWxlbWVudDo6SFRNTEF0dGFjaG1lbnRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEhUTUxB
dHRhY2htZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0
cmluZygpKQoreworfQorCiBIVE1MQXR0YWNobWVudEVsZW1lbnQ6On5IVE1MQXR0YWNobWVudEVs
ZW1lbnQoKSA9IGRlZmF1bHQ7CiAKIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRh
Y2htZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50JiBkb2N1bWVudCkKQEAgLTQ5LDYgKzU4LDExIEBAIFJlZjxIVE1MQXR0YWNobWVudEVsZW1l
bnQ+IEhUTUxBdHRhY2htZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRNTEF0dGFjaG1lbnRFbGVtZW50KHRhZ05hbWUs
IGRvY3VtZW50KSk7CiB9CiAKK1JlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEhUTUxBdHRhY2htZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgaWRlbnRp
ZmllcikpOworfQorCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKIHsKICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVuZGVyQXR0
YWNobWVudD4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxBdHRhY2htZW50RWxlbWVudC5oCmluZGV4IDlhYzZiNmE4YjE3ODRkMDE2OGVkMDNhMGU5OTQz
M2UzODY0ODM5ZTIuLjNhNDRhNWYxMTk5YzcyMDljM2IxYWU0OWJlZmJiODE2MTFhNjAzM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuaApAQCAtMzcsMTAg
KzM3LDE0IEBAIGNsYXNzIFJlbmRlckF0dGFjaG1lbnQ7CiBjbGFzcyBIVE1MQXR0YWNobWVudEVs
ZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8SFRNTEF0dGFjaG1lbnRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Jik7CisgICAgc3RhdGljIFJlZjxIVE1MQXR0YWNobWVudEVsZW1lbnQ+IGNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgRmlsZSogZmlsZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0
RmlsZShGaWxlKik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgdW5pcXVlSWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fdW5pcXVlSWRlbnRpZmllcjsgfQorICAgIHZvaWQgc2V0VW5p
cXVlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIHsgbV91bmlxdWVJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsgfQorCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGF0dGFjaG1l
bnRUaXRsZSgpIGNvbnN0OwogICAgIFN0cmluZyBhdHRhY2htZW50VHlwZSgpIGNvbnN0OwogCkBA
IC00OCw2ICs1Miw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIVE1MQXR0YWNobWVudEVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CisgICAgSFRNTEF0dGFjaG1l
bnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+SFRNTEF0dGFjaG1lbnRFbGVtZW50KCk7CiAKICAg
ICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwpAQCAtNjMsNiArNjgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOwogICAgIAogICAgIFJlZlB0cjxGaWxlPiBtX2Zp
bGU7CisgICAgU3RyaW5nIG1fdW5pcXVlSWRlbnRpZmllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvU2hhcmVk
TWVtb3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1v
cnlDb2NvYS5jcHAKaW5kZXggYWVhNzk4NTA0NDlhOGI4OTc5OGU5MDM2ZDdiMGU1MzAxODAzYWE1
NC4uNTU0MDE1ZTZhMGU5YWM1MzljZDhkOGY5ODE5OTFlNzJlOTJmZTE0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9TaGFyZWRNZW1vcnlDb2NvYS5jcHAKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFjaFBvcnQuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL01hY2hTZW5kUmlnaHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1No
YXJlZEJ1ZmZlci5oPgogI2luY2x1ZGUgPG1hY2gvbWFjaF9lcnJvci5oPgogI2luY2x1ZGUgPG1h
Y2gvbWFjaF9wb3J0Lmg+CiAjaW5jbHVkZSA8bWFjaC92bV9tYXAuaD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IDBlNmY2Njk2N2FlMGUxMGZiMTQ2YTdiN2U2NTgwMzQ0ZThjZmQxMzAuLjc4
OWYzODQ1ZjZkZWI2NDZlZWU3MDU3OTNhMmQ4YTZkYzY5Y2FhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtMjIyLDYgKzIyMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAg
ICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KICAgICBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2luZG93RmVhdHVyZXMubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tCisgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dHRhY2htZW50Lm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdXRvbWF0aW9uU2Vzc2lv
bi5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXV0b21hdGlvblNlc3Npb25Db25maWd1
cmF0aW9uLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJ
bmZvLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggOTYyODY0ZjcyNzkz
OWEzMTg1NWJhNDQ0ZGY3MTlkNmY2MWUyZGMxOC4uZjZmOTlmYWRmNDNlMzRiNzIzZThhZGI2Yzk0
NTZkYTkxNjdmNWJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtOTcs
NiArOTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICAvLyBVSVByb2Nlc3MgdHlwZXMK
ICAgICAgICAgQXBwbGljYXRpb25DYWNoZU1hbmFnZXIsCisgICAgICAgIEF0dGFjaG1lbnQsCiAg
ICAgICAgIEF1dG9tYXRpb25TZXNzaW9uLAogICAgICAgICBCYWNrRm9yd2FyZExpc3QsCiAgICAg
ICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dlYktpdFByaXZhdGUuaAppbmRleCA0YTM1ODA5N2M3YzQyODUyZmU2YTUwYmQxYTAzMDQw
MzQ0Y2Y3M2I5Li4xOGJmMGM1ZDhhNjNhZmUzOTAzMmZiNDQ3YjUyMjVlNTIxODc2YmVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0UHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXRQcml2YXRlLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0F0dGFjaG1l
bnQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFbGVtZW50QWN0aW9uLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLRm9jdXNlZEVsZW1lbnRJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRm9ybUlucHV0
U2Vzc2lvbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0
dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUF0dGFjaG1lbnQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkxZWMwYjdlYmMwNGZjNjZkODhlYjA1NWY4ZDVkNjYzZjhhZTJhMTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNo
bWVudC5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJBUElBdHRhY2htZW50LmgiCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK1JlZjxBdHRhY2htZW50PiBBdHRhY2htZW50
OjpjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIsIFdlYktpdDo6V2ViUGFnZVBy
b3h5JiB3ZWJQYWdlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF0dGFjaG1lbnQoaWRl
bnRpZmllciwgd2ViUGFnZSkpOworfQorCitBdHRhY2htZW50OjpBdHRhY2htZW50KGNvbnN0IFdU
Rjo6U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYgd2ViUGFnZSkKKyAg
ICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV93ZWJQYWdlKHdlYlBhZ2UuY3Jl
YXRlV2Vha1B0cigpKQoreworfQorCitBdHRhY2htZW50Ojp+QXR0YWNobWVudCgpCit7Cit9CisK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElBdHRhY2htZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI0NTU5MGVmZGU3OWIwOWEwN2I0MDQ4MmMwNzBkOWYxNjI4ZDVkM2EKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQXR0YWNobWVudC5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV2Vi
UGFnZVByb3h5Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQYWdlUHJveHk7
Cit9CisKK25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBBdHRhY2htZW50IGZpbmFsIDogcHVibGlj
IE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpBdHRhY2htZW50PiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFJlZjxBdHRhY2htZW50PiBjcmVhdGUoY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIs
IFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CisgICAgdmlydHVhbCB+QXR0YWNobWVudCgpOworCisg
ICAgY29uc3QgV1RGOjpTdHJpbmcmIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBBdHRhY2htZW50KGNvbnN0IFdURjo6
U3RyaW5nJiBpZGVudGlmaWVyLCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOworCisgICAgV1RGOjpT
dHJpbmcgbV9pZGVudGlmaWVyOworICAgIFdlYWtQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1f
d2ViUGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMTQ2ODEzMWVhMWI0MDBlMDM4ODVi
ZjY1NzBjYzdmYWFlYjQwYTIwNC4uNWUzNmUyZTRmZjRlMGQ3YWZlNzVkMDVkNzMzYTczZmQxNTNl
OWI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCkBAIC05OSw2ICs5OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJh
Y2tlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY2hlbWVSZWdpc3RyeS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgorI2ltcG9ydCA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9WaWV3cG9y
dEFyZ3VtZW50cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Xcml0aW5nTW9kZS5oPgpAQCAtMTEwLDYg
KzExMSw3IEBACiAjaW1wb3J0IDx3dGYvT3B0aW9uYWwuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgorI2ltcG9ydCA8d3RmL1VVSUQuaD4K
ICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL2R5bGRTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1Rl
eHRTdHJlYW0uaD4KIApAQCAtNDE2OCw2ICs0MTcwLDIzIEBAIC0gKHZvaWQpX2Nsb3NlCiAgICAg
X3BhZ2UtPmNsb3NlKCk7CiB9CiAKKy0gKF9XS0F0dGFjaG1lbnQgKilfaW5zZXJ0QXR0YWNobWVu
dFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50VHlwZTooTlNTdHJpbmcg
Kiljb250ZW50VHlwZSBkYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnRE
aXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3Mp
KWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CisKKyAgICBh
dXRvIGJ1ZmZlciA9IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEpOworICAgIF9w
YWdlLT5pbnNlcnRBdHRhY2htZW50KGlkZW50aWZpZXIsIGZpbGVuYW1lLCBjb250ZW50VHlwZS5s
ZW5ndGggPyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4geyBjb250ZW50VHlwZSB9IDogc3RkOjpudWxs
b3B0LCBidWZmZXIuZ2V0KCksIFtjYXB0dXJlZEhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpLCBjYXB0dXJlZEJ1ZmZlciA9IGJ1ZmZlci5jb3B5UmVmKCldIChXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgaWYgKGNhcHR1cmVkSGFuZGxl
cikKKyAgICAgICAgICAgIGNhcHR1cmVkSGFuZGxlcihlcnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNr
QmFzZTo6RXJyb3I6Ok5vbmUpOworICAgIH0pOworCisgICAgcmV0dXJuIFt3cmFwcGVyKEFQSTo6
QXR0YWNobWVudDo6Y3JlYXRlKGlkZW50aWZpZXIsICpfcGFnZSkubGVha1JlZigpKSBhdXRvcmVs
ZWFzZV07CisjZWxzZQorICAgIHJldHVybiBuaWw7CisjZW5kaWYKK30KKwogLSAodm9pZClfZXZh
bHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3Ry
aW5nIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXJdOwpAQCAtNjAzMyw3ICs2MDUyLDggQEAgLSAodm9pZClfZGlzYWJsZUJhY2tGb3J3YXJkU25h
cHNob3RWb2xhdGlsaXR5Rm9yVGVzdGluZwogLSAodm9pZClfZXhlY3V0ZUVkaXRDb21tYW5kOihO
U1N0cmluZyAqKWNvbW1hbmQgYXJndW1lbnQ6KE5TU3RyaW5nICopYXJndW1lbnQgY29tcGxldGlv
bjoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbgogewogICAgIF9wYWdlLT5leGVjdXRlRWRpdENv
bW1hbmQoY29tbWFuZCwgYXJndW1lbnQsIFtjYXB0dXJlZENvbXBsZXRpb25CbG9jayA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uKV0oV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7
Ci0gICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKGVycm9yID09IFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAgICAgIGlmIChjYXB0dXJlZENvbXBsZXRpb25CbG9j
aykKKyAgICAgICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKGVycm9yID09IFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXgg
ZDJkNmViODg1NmRmYjVmY2M0ZDA0MTNmOTA2MmExMjdkOTUyNTU5ZS4uMTJlYTZmNTljM2YzMGUz
ZDg4Y2YzY2I2MGU1ZjgyNjcwNmMwZmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTI5LDYgKzI5LDcgQEAK
IAogI2ltcG9ydCAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbXBvcnQgIldLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIl9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oIgog
I2ltcG9ydCA8d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAppbmRleCA1ZWQyYjJjMWIxYWYxNzU2ODM5ODczYTQ1M2I3ODNhMzAxY2Q3YmFlLi5jOWZkNTQw
YjA2Y2VlMmI2MjUwMTQ2ODhiZWM2MTAxMGY2YzA2YWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVk
RWxlbWVudEluZm8uaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tBdHRhY2htZW50Lmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLRmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tMYXlvdXRNb2Rl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmg+CkBAIC0xNzcs
NiArMTc4LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsK
IAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QmFja2dyb3VuZEV4dGVuZHNCZXlv
bmRQYWdlOikgQk9PTCBfYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoOC4wKSk7CiAKKy0gKF9XS0F0dGFjaG1lbnQgKilf
aW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50
VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlwZSBkYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6
KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9ucyAqKW9wdGlvbnMgY29tcGxldGlvbjoodm9pZChe
KShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgVEFSR0VUX09TX0lQSE9ORQog
Ly8gREVSRUNBVEVEOiBUaGUgc2V0dGVycyBvZiB0aGUgdGhyZWUgZm9sbG93aW5nIGZ1bmN0aW9u
IGFyZSBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIG92ZXJyaWRlTGF5b3V0UGFyYW1ldGVycy4KIC8v
IERlZmluZSB0aGUgc21hbGxlc3Qgc2l6ZSBhIHBhZ2UgdGFrZSB3aXRoIGEgcmVndWxhciB2aWV3
cG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dHRhY2htZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNo
bWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk0MDMyMzk3ZTAzZjk2MGExOWM2OWQ0YTdkMDA2YmU3OGRkMmI2
YzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLQXR0YWNobWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLQXR0YWNobWVudERpc3BsYXlNb2Rl
KSB7CisgICAgX1dLQXR0YWNobWVudERpc3BsYXlNb2RlQXV0byA9IDEsCisgICAgX1dLQXR0YWNo
bWVudERpc3BsYXlNb2RlSW5QbGFjZSwKKyAgICBfV0tBdHRhY2htZW50RGlzcGxheU1vZGVBc0lj
b24KK30gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSkKK0BpbnRlcmZhY2UgX1dLQXR0YWNobWVudERpc3BsYXlPcHRpb25zIDogTlNPYmplY3QK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBfV0tBdHRhY2htZW50RGlzcGxheU1vZGUgbW9kZTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGV4cGFuZHNJbWFnZVRvTWF4aW11bVdpZHRoOworQGVu
ZAorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpCitAaW50ZXJmYWNlIF9XS0F0dGFjaG1lbnQgOiBOU09iamVjdAorQGVuZAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tBdHRhY2ht
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0F0dGFjaG1lbnQu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDFiMTQ2ZjE1NWYxZjBkMjQzMWFlNGVhNDgzY2FkYjA3ZTMwMDAyOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tB
dHRhY2htZW50Lm1tCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIl9XS0F0dGFjaG1lbnQuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisK
KyNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKKyNpbXBvcnQgIl9XS0F0dGFjaG1lbnRJbnRlcm5h
bC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitAaW1wbGVtZW50YXRpb24gX1dLQXR0
YWNobWVudERpc3BsYXlPcHRpb25zIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWluaXQK
K3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgeworICAgICAgICBfbW9kZSA9IF9XS0F0
dGFjaG1lbnREaXNwbGF5TW9kZUF1dG87CisgICAgICAgIF9leHBhbmRzSW1hZ2VUb01heGltdW1X
aWR0aCA9IE5POworICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gX1dLQXR0YWNobWVudAorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAorewor
ICAgIHJldHVybiAqX2F0dGFjaG1lbnQ7Cit9CisKKy0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0
Cit7CisgICAgcmV0dXJuIFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbX1dLQXR0YWNobWVudCBjbGFz
c11dICYmIFtzZWxmLnVuaXF1ZUlkZW50aWZpZXIgaXNFcXVhbDpbKF9XS0F0dGFjaG1lbnQgKilv
YmplY3QgdW5pcXVlSWRlbnRpZmllcl1dOworfQorCistIChOU1N0cmluZyAqKXVuaXF1ZUlkZW50
aWZpZXIKK3sKKyAgICByZXR1cm4gX2F0dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsKK30KKworLSAo
TlNVSW50ZWdlciloYXNoCit7CisgICAgcmV0dXJuIFtzZWxmLnVuaXF1ZUlkZW50aWZpZXIgaGFz
aF07Cit9CisKKy0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KK3sKKyAgICByZXR1cm4gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUAgaWQ9JyVAJz4iLCBbc2VsZiBjbGFzc10sIHNlbGYu
dW5pcXVlSWRlbnRpZmllcl07Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0YWNo
bWVudEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQXR0
YWNobWVudEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk4MzA1NzgwNWRmNjk3N2Q0NDVhYzgzYzBi
NDdkZGU1M2Y2ZTIxYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tBdHRhY2htZW50SW50ZXJuYWwuaApAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIkFQSUF0dGFjaG1lbnQuaCIKKyNpbXBv
cnQgIl9XS0F0dGFjaG1lbnQuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK2lubGluZSBfV0tBdHRh
Y2htZW50ICp3cmFwcGVyKEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCkKK3sKKyAgICBBU1NF
UlQoW2F0dGFjaG1lbnQud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS0F0dGFjaG1lbnQgY2xh
c3NdXSk7CisgICAgcmV0dXJuIChfV0tBdHRhY2htZW50ICopYXR0YWNobWVudC53cmFwcGVyKCk7
Cit9CisKK30KKworQGludGVyZmFjZSBfV0tBdHRhY2htZW50ICgpIDxXS09iamVjdD4geworQHBh
Y2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpBdHRhY2htZW50PiBfYXR0YWNobWVu
dDsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IGRjYmI1Mjg3YWU0YjA5YTZiZTM3ODBjYzAwODBkM2ZmMTRiYWQ5MGMuLmVlZjEzYjNhMGZiNDdm
MDZjOGE5YzBhODUyMDNiNDgxNjc4YTYxNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtNzEwNSw0ICs3MTA1LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lCiAgICAgfSk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit2b2lk
IFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlw
ZSwgU2hhcmVkQnVmZmVyJiBkYXRhLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2Vy
dEF0dGFjaG1lbnQoaWRlbnRpZmllciwgZmlsZW5hbWUsIGNvbnRlbnRUeXBlLCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UgeyAmZGF0YSB9LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDgxNjUy
NTdlNWE1MmZmZjYzODBkNmRkM2Y1NWRkYjBmM2QzZTI3OTAuLjEwNjdlYjlhYjk2NjFiYTczZmZk
ODYyZjUxNmY2MmIzMjczMzRjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xMjExLDYgKzEyMTEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwg
dWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9F
TEVNRU5UKQorICAgIHZvaWQgaW5zZXJ0QXR0YWNobWVudChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50
VHlwZSwgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJiBkYXRhLCBGdW5jdGlvbjx2b2lkKENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU2
YzljNGE4ZDJmNDQ2NmU1ZGVlNGJkNTVhZDAwOTNhNjIzYmM3MDcuLmY5MjIzOTVmNjVlYTBmY2Y5
MjNlOWQxMDU4Y2Y4NWFjZDk0MzQ0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzIwLDYgKzcyMCw4IEBACiAJCTJERkM3REJCMUJD
Q0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGQzdEQjkxQkNDQzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJ
bXBsLmggKi87IH07CiAJCTJERkM3REJDMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERkM3REJB
MUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSAqLzsgfTsKIAkJMkRGRjdCNkYxREE0
Q0ZBRjAwODE0NjE0IC8qIFdLQmFja0ZvcndhcmRMaXN0SXRlbVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERkY3QjZFMURBNENGQUYwMDgx
NDYxNCAvKiBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1Qcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMkU1Qzc3MEUxRkE3RDQyOTAwNTkzMkMz
IC8qIEFQSUF0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFNUM3NzBDMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggKi87
IH07CisJCTJFNUM3NzBGMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNUM3NzBEMUZBN0Q0
MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmNwcCAqLzsgfTsKIAkJMkU3QTk0NEExQkJEOTdD
MzAwOTQ1NTQ3IC8qIF9XS0ZvY3VzZWRFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3QTk0NDkxQkJEOTVDNjAwOTQ1NTQ3IC8qIF9X
S0ZvY3VzZWRFbGVtZW50SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRp
b25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAg
Ki87IH07CiAJCTMxMDk5OUM3MTQ2QzlFM0QwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDk5
OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLzsgfTsKQEAg
LTIwODIsNiArMjA4NCw5IEBACiAJCUVEQ0E3MUI3MTI4RERBOEMwMDIwMUIyNiAvKiBXS0J1bmRs
ZVBhZ2VPdmVybGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBMjJGMTAwMTI4OUZDRDkwMDg1RTc0RiAvKiBXS0J1bmRsZVBhZ2VPdmVybGF5LmNw
cCAqLzsgfTsKIAkJRjAzNjk3ODgxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNvbG9yUGlja2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYwMzY5Nzg3
MTVGNEJGMDUwMEMzQTgwRSAvKiBXZWJDb2xvclBpY2tlci5jcHAgKi87IH07CiAJCUY0MDlCQTE4
MUU2RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwOUJBMTcxRTZFNjRCMzAwOURB
MjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxOTIxRkE1OTFDOTAwMkNDOTNFIC8qIF9X
S0F0dGFjaG1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2htZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRjQ0MjkxOTQxRkE1OTMx
MTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNo
bWVudC5tbSAqLzsgfTsKKwkJRjQ0MjkxOTYxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1l
bnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ0MjkxOTUxRkE1OTQyQTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oICov
OyB9OwogCQlGNDRERkVCMjFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0REZFQjAxRTlF
NzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMuaCAqLzsgfTsKIAkJRjQ0REZFQjMxRTlF
NzUyRjAwMzhEMTk2IC8qIFdlYkljb25VdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2Vi
SWNvblV0aWxpdGllcy5tbSAqLzsgfTsKIAkJRjQ5NkE0MzExRjU4QTI3MjAwNEMxNzU3IC8qIERy
YWdEcm9wSW50ZXJhY3Rpb25TdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5oICovOyB9OwpAQCAtMzAxOSw2ICszMDI0LDggQEAKIAkJMkRGQzdEQjkxQkND
QzE5NTAwQzE1NDhDIC8qIFdlYlZpZXdJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlZpZXdJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERkM3
REJBMUJDQ0MxOTUwMEMxNTQ4QyAvKiBXZWJWaWV3SW1wbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdJbXBsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyREZGN0I2RTFEQTRDRkFGMDA4MTQ2MTQgLyogV0tCYWNrRm9yd2FyZExpc3RJ
dGVtUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0JhY2tGb3J3
YXJkTGlzdEl0ZW1Qcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNUM3
NzBDMUZBN0Q0MjkwMDU5MzJDMyAvKiBBUElBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQ
SUF0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkU1Qzc3MEQxRkE3
RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJ
QXR0YWNobWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFN0E5NDQ5MUJC
RDk1QzYwMDk0NTU0NyAvKiBfV0tGb2N1c2VkRWxlbWVudEluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLRm9jdXNlZEVsZW1lbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMx
MDk5OTY4MTQ2QzcxRjUwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTMxMDk5OTcxMTQ2Qzc1OUIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1MjYsNiArNDUzMyw5
IEBACiAJCUVDQkZDMURCMUU2QTRENjYwMDAzMDBDNyAvKiBFeHRyYVB1YmxpY1N5bWJvbHNGb3JU
QVBJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4dHJhUHVibGljU3ltYm9sc0ZvclRBUEkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjAzNjk3ODcxNUY0QkYwNTAwQzNBODBFIC8qIFdlYkNv
bG9yUGlja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNv
bG9yUGlja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwOUJBMTcxRTZF
NjRCMzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUY0NDI5MTkxMUZBNTkxMDcwMDJDQzkzRSAvKiBfV0tBdHRhY2ht
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjQ0MjkxOTMxRkE1OTMxMTAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tBdHRhY2htZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGNDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudElu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0F0dGFjaG1lbnRJbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDRERkVCMDFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNv
blV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJJY29uVXRp
bGl0aWVzLmg7IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNDRERkVCMTFFOUU3NTJGMDAzOEQxOTYgLyogV2ViSWNvblV0aWxpdGll
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkljb25VdGls
aXRpZXMubW07IHBhdGggPSBpb3MvV2ViSWNvblV0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQ5NkE0MkYxRjU4QTI3MjAwNEMxNzU3IC8qIERyYWdEcm9wSW50ZXJh
Y3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBEcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsg
cGF0aCA9IGlvcy9EcmFnRHJvcEludGVyYWN0aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU3NDYsNiArNTc1Niw5IEBACiAJCQkJMzdBNUUwMTIxOEJCRjkzNzAwMEEw
ODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMzdBNUUwMTExOEJCRjkz
NzAwMEEwODFFIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLm1tICovLAogCQkJCTM3OUE4NzM1
MThCQkZBNDMwMDU4OEFGMiAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmggKi8s
CisJCQkJRjQ0MjkxOTExRkE1OTEwNzAwMkNDOTNFIC8qIF9XS0F0dGFjaG1lbnQuaCAqLywKKwkJ
CQlGNDQyOTE5MzFGQTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSAqLywKKwkJCQlG
NDQyOTE5NTFGQTU5NDJBMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudEludGVybmFsLmggKi8sCiAJ
CQkJOTlFNzE0QzExQzEyNDlFNjAwNjY1QjNBIC8qIF9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oICov
LAogCQkJCTk5MEQyOEE3MUM2NDA0QjAwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5o
ICovLAogCQkJCTk5MEQyOEFEMUM2NTE5MDQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lv
bi5tbSAqLywKQEAgLTcxNDAsNiArNzE1Myw4IEBACiAJCQkJMzdDNEMwODMxODE0OUMyQTAwMzY4
OEI5IC8qIENvY29hICovLAogCQkJCUJDOEE1MDEzMTE3NjVGNDUwMDc1NzU3MyAvKiBjcHAgKi8s
CiAJCQkJQkMxMTFCNDcxMTJGNjE2OTAwMzM3QkFCIC8qIG1hYyAqLywKKwkJCQkyRTVDNzcwRDFG
QTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAgKi8sCisJCQkJMkU1Qzc3MEMxRkE3
RDQyOTAwNTkzMkMzIC8qIEFQSUF0dGFjaG1lbnQuaCAqLywKIAkJCQk5OUM4MUQ1QjFDMjBFODE3
MDA1QzRDODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oICovLAogCQkJCTk5MEQyOEIzMUM2NTI2
RDQwMDk4Njk3NyAvKiBBUElBdXRvbWF0aW9uU2Vzc2lvbkNsaWVudC5oICovLAogCQkJCTdDODlE
MkIxMUE2QjA2OEMwMDNBNUZERSAvKiBBUElDb250ZW50UnVsZUxpc3QuY3BwICovLApAQCAtODQw
Myw2ICs4NDE4LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCTM3QTVFMDE0MThCQkY5M0YwMDBBMDgx
RSAvKiBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3
MzYxOEJCRkE0MzAwNTg4QUYyIC8qIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovLAorCQkJCUY0NDI5MTkyMUZBNTkxQzkwMDJDQzkzRSAvKiBfV0tBdHRhY2ht
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGNDQyOTE5NjFGQTU5NDJBMDAyQ0M5M0UgLyogX1dL
QXR0YWNobWVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUU3MTRDNTFDMTI0QTA0
MDA2NjVCM0EgLyogX1dLQXV0b21hdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
OTBEMjhBQjFDNjQyMEM2MDA5ODY5NzcgLyogX1dLQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTk5Nzg4QUNCMUY0MjFEREEwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vz
c2lvbkNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtODQ3Nyw2ICs4NDk0LDcgQEAK
IAkJCQlBMTgyRDVCNTFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTdENzkyRDgxNzY3Q0NBMzAwODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0Njk3MDExREJFNjAzMDA2NDU1QjAgLyogQVBJ
QXJyYXkuaCBpbiBIZWFkZXJzICovLAorCQkJCTJFNUM3NzBFMUZBN0Q0MjkwMDU5MzJDMyAvKiBB
UElBdHRhY2htZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUM4MUQ1RDFDMjFGMzhCMDA1QzRD
ODIgLyogQVBJQXV0b21hdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwRDI4QzAx
QzY1NTNGMTAwOTg2OTc3IC8qIEFQSUF1dG9tYXRpb25TZXNzaW9uQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTNERDIwNjEyNUU1QTJGMDA0NTE1RTYgLyogQVBJQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTEwMDQzLDYgKzEwMDYxLDcgQEAKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQkzN0E1RTAxMzE4QkJGOTM3MDAwQTA4MUUgLyog
X1dLQWN0aXZhdGVkRWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAqLywKKwkJCQlGNDQyOTE5NDFG
QTU5MzExMDAyQ0M5M0UgLyogX1dLQXR0YWNobWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTk5
MEQyOEIyMUM2NTIwOTQwMDk4Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbi5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTk5Nzg4QUNDMUY0MjFERTIwMEMwODAwMCAvKiBfV0tBdXRvbWF0aW9uU2Vz
c2lvbkNvbmZpZ3VyYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTU3MDRGNzFCRTAxRkY0
MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSBpbiBTb3VyY2VzICovLApA
QCAtMTAwNzUsNiArMTAwOTQsNyBAQAogCQkJCUExODJENUI0MUJFNkJEMjUwMDg3QTdDQyAvKiBB
Y2Nlc3NpYmlsaXR5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdENzkyRDYxNzY3Q0I2RTAw
ODgxQ0JFIC8qIEFjdGl2aXR5QXNzZXJ0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjQ2
OTZGMTFEQkU2MDMwMDY0NTVCMCAvKiBBUElBcnJheS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
RTVDNzcwRjFGQTdENDI5MDA1OTMyQzMgLyogQVBJQXR0YWNobWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Qzg5RDJCMzFBNkIwNjhDMDAzQTVGREUgLyogQVBJQ29udGVudFJ1bGVMaXN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDM0EwNkE3MUFBQjkwM0UwMDlENzRCQSAvKiBBUElDb250
ZW50UnVsZUxpc3RTdG9yZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0VGQTk2MjFBQzA5OTkz
MDBCOTEwRkQgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmVDb2NvYS5tbSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA5
ZGFhMjg3MjI1ZGFmYWMzNDBlNTg5ZTY5MjhjN2IyNzFjN2EwZjQyLi5mOGY3ZTBmNGE4NmY5YzY5
MDlmOWIxODMxYmNlMzM0OWQ2ZmE3YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTYzLDYgKzE2Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlQ29uZmlndXJhdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2
ZW50Lmg+CkBAIC01NzU3LDQgKzU3NTgsMTUgQEAgdm9pZCBXZWJQYWdlOjpzdG9yYWdlQWNjZXNz
UmVzcG9uc2UoYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgY2FsbGJh
Y2sod2FzR3JhbnRlZCk7CiB9CiAKKyNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQorCit2
b2lkIFdlYlBhZ2U6Omluc2VydEF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY29udGVudFR5cGUs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQor
eworICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRBdHRhY2htZW50KGlkZW50aWZp
ZXIsIGZpbGVuYW1lLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXpl
KCkpLCBjb250ZW50VHlwZSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lk
Q2FsbGJhY2soY2FsbGJhY2tJRCkpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRf
RUxFTUVOVCkKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzNmZGUyODIyNDJkM2IyNmYzZjJhZGQyMjU2YWEz
ZmQ1MzdjOTBhNi4uMWQ4NGQ0ZGI4NGFmZmFkMjY2NDUwOGQxYTVjZWVkYjM0OTUxNTNjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTUzLDYgKzE1
Myw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUmVxdWVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc0NhbGxi
YWNrOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIERhdGFSZWZlcmVuY2U7CiBjbGFz
cyBEcmF3aW5nQXJlYTsKIGNsYXNzIERvd25sb2FkSUQ7CiBjbGFzcyBGaW5kQ29udHJvbGxlcjsK
QEAgLTk5OCw2ICs5OTksMTAgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6RnVu
Y3Rpb248dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1Jl
c3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKTsKIAorI2lmIEVOQUJM
RShBVFRBQ0hNRU5UX0VMRU1FTlQpCisgICAgdm9pZCBpbnNlcnRBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgc3RkOjpvcHRpb25hbDxT
dHJpbmc+IGNvbnRlbnRUeXBlLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBDYWxsYmFja0lE
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA0NjEwOThiMzU0OTJjYmYw
ZmIwYWRkYTk5ZmJhZDAyYTBiNmU5MGQzLi4xYjI4ZDFhNmZhMmE2YmUwMTE4NmE0NzQyM2NiZDQ3
NzJjZmE5MzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ4NCw0ICs0ODQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0
X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKQogCiAgICAgU3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2Fz
R3JhbnRlZCwgdWludDY0X3QgY29udGV4dElkKQorCisjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxF
TUVOVCkKKyAgICBJbnNlcnRBdHRhY2htZW50KFN0cmluZyBpZGVudGlmaWVyLCBTdHJpbmcgZmls
ZW5hbWUsIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjb250ZW50VHlwZSwgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorI2VuZGlmCiB9CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzBhODU2ZmI1
YzA3NTY2MDY2OGM1Y2IxYTlhNDQwZTY3NjIyNGRhMS4uNjhmM2Q5OTQ3YmUxMzkxYTYzY2EzMDkx
YmIyNTNmZjQzY2RhMzUyNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTEwLTMxICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIElt
cGxlbWVudCBXS1dlYlZpZXcgU1BJIGZvciBpbnNlcnRpbmcgYXR0YWNobWVudCBlbGVtZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MDEzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTI0OTY2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IEFQSSB0ZXN0IHN1aXRlIHRvIGV4
ZXJjaXNlIGF0dGFjaG1lbnQgZWxlbWVudCBpbnNlcnRpb24gYW5kIG1hbmlwdWxhdGlvbi4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBdHRh
Y2htZW50VGVzdHMubW06IEFkZGVkLgorICAgICAgICAod2ViVmlld0ZvclRlc3RpbmdBdHRhY2ht
ZW50cyk6CisgICAgICAgICh0ZXN0SFRNTERhdGEpOgorICAgICAgICAodGVzdEltYWdlRGF0YSk6
CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRX
aXRoRmlsZW5hbWU6Y29udGVudFR5cGU6ZGF0YTpvcHRpb25zOl0pOgorICAgICAgICAoLVtUZXN0
V0tXZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6Zm9yUXVlcnlTZWxlY3RvcjpdKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTEwLTI4ICBNaWNoYWVsIENhdGFuemFybyAg
PG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBCdWlsZCBnc3QtcGx1Z2lu
cy1iYXNlIHdpdGhvdXQgcGFuZ28gc3VwcG9ydApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
MzYwMWFhZTVjOGEzYjEwOWFkZjUzNzcxYzNjOWU3ODk3NDE3MDM1Li41YThmYjUzZDRhNzllMDM0
NmIzYjMyMDk0ZGUzMWRlZDBkODQzOWVjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODks
NiArODksNyBAQAogCQkyRTFERkRGMTFENDJFMUU0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vl
ay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxREZERjAxRDQyRTE0NDAw
NzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVu
ZGluZy5odG1sICovOyB9OwogCQkyRTIwNUJBNDFGNTI3NzQ2MDA1OTUyREQgLyogQWNjZXNzaWJp
bGl0eVRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkUyMDVCQTMxRjUyNzc0NjAwNTk1MkREIC8qIEFjY2Vzc2liaWxpdHlUZXN0c0lPUy5t
bSAqLzsgfTsKIAkJMkU1NEY0MEQxRDdCQzg0MjAwOTIxQURGIC8qIGxhcmdlLXZpZGVvLW11dGVz
LW9ucGxheWluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNTRGNDBDMUQ3QkM4MzkwMDkyMUFERiAvKiBsYXJnZS12aWRlby1tdXRl
cy1vbnBsYXlpbmcuaHRtbCAqLzsgfTsKKwkJMkU1Qzc3MDcxRkE3MDEzNjAwNTkzMkMzIC8qIFdL
QXR0YWNobWVudFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkU1Qzc3MDYxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0YWNobWVudFRlc3RzLm1t
ICovOyB9OwogCQkyRTY5MUFFQTFENzhCNTM2MDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNl
ZC12aWRlby1oaWRlcy1jb250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNjkxQUU4MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJn
ZS12aWRlb3MtcGF1c2VkLXZpZGVvLWhpZGVzLWNvbnRyb2xzLmh0bWwgKi87IH07CiAJCTJFNjkx
QUVCMUQ3OEI1MzYwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1rZWVwcy1j
b250cm9scy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFNjkxQUU5MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWlu
Zy12aWRlby1rZWVwcy1jb250cm9scy5odG1sICovOyB9OwogCQkyRTY5MUFFRDFENzhCOTEwMDAx
Mjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTY5MUFFQzFENzhCOTAyMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBsYXlpbmctbXV0ZWQt
dmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLzsgfTsKQEAgLTExNjgsNiArMTE2OSw3IEBACiAJ
CTJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmlu
Zy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMjA1QkEzMUY1Mjc3NDYwMDU5NTJE
RCAvKiBBY2Nlc3NpYmlsaXR5VGVzdHNJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5VGVzdHNJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNTRG
NDBDMUQ3QkM4MzkwMDkyMUFERiAvKiBsYXJnZS12aWRlby1tdXRlcy1vbnBsYXlpbmcuaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1tdXRlcy1vbnBsYXlpbmcu
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFNUM3NzA2MUZBNzAxMzYwMDU5
MzJDMyAvKiBXS0F0dGFjaG1lbnRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLQXR0
YWNobWVudFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTY5MUFFODFE
NzhCNTJCMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBhdXNlZC12aWRlby1oaWRlcy1jb250cm9s
cy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvcy1wYXVzZWQt
dmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFNjkxQUU5MUQ3OEI1MkIwMDEyOTQwNyAvKiBsYXJnZS12aWRlb3MtcGxheWluZy12aWRlby1r
ZWVwcy1jb250cm9scy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZp
ZGVvcy1wbGF5aW5nLXZpZGVvLWtlZXBzLWNvbnRyb2xzLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyRTY5MUFFQzFENzhCOTAyMDAxMjk0MDcgLyogbGFyZ2UtdmlkZW9zLXBs
YXlpbmctbXV0ZWQtdmlkZW8taGlkZXMtY29udHJvbHMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJsYXJnZS12aWRlb3MtcGxheWluZy1tdXRlZC12aWRlby1oaWRlcy1jb250cm9s
cy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzQsNiArMjA3Niw3IEBA
CiAJCQkJNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51
cC5tbSAqLywKIAkJCQk1MTIwQzgzQzFFNjc1MDc5MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzLm1tICovLAogCQkJCTVDOUU1Njg0MURGOTE0M0QwMEM5RUUzMyAvKiBXZWJz
aXRlUG9saWNpZXMubW0gKi8sCisJCQkJMkU1Qzc3MDYxRkE3MDEzNjAwNTkzMkMzIC8qIFdLQXR0
YWNobWVudFRlc3RzLm1tICovLAogCQkJCTFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0Jh
Y2tGb3J3YXJkTGlzdC5tbSAqLywKIAkJCQk1Q0UzNTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tD
b250ZW50RXh0ZW5zaW9uU3RvcmUubW0gKi8sCiAJCQkJMkQ4MzhCMUUxRUVGM0E1QjAwOUI5ODBF
IC8qIFdLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9ucy5tbSAqLywKQEAgLTI0NDAsNyArMjQ0Myw2
IEBACiAJCUJDOTA5NjQxMTI1NTYxNjAwMDA4Mzc1NiAvKiBXZWJLaXQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTA3RTQ5OTkwMUY5RTU2QTEwMDJGMUVG
MyAvKiBHZXRVc2VyTWVkaWFSZXByb21wdC5tbSAqLywKIAkJCQkwRjEzOUU3NDFBNDIzQTQ2MDBG
NTkwRjUgLyogY29jb2EgKi8sCiAJCQkJQzBDNUQzQkIxNDU5OEI2RjAwQTgwMkE2IC8qIG1hYyAq
LywKIAkJCQlCQzkwOTc3QjEyNTU3MUFFMDAwODM3NTYgLyogUmVzb3VyY2VzICovLApAQCAtMjQ3
OCw2ICsyNDgwLDcgQEAKIAkJCQlGNjYwQUEwQzE1QTVGMDYxMDAzQTEyNDMgLyogR2V0SW5qZWN0
ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2suY3BwICovLAogCQkJCUY2NjBB
QTBGMTVBNUY2MjQwMDNBMTI0MyAvKiBHZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNl
ckRhdGFDYWxsYmFja19CdW5kbGUuY3BwICovLAogCQkJCTA3Q0UxQ0YyMUYwNkE3RTAwMEJGODlG
NSAvKiBHZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tICovLAorCQkJCTA3RTQ5OTkwMUY5RTU2QTEw
MDJGMUVGMyAvKiBHZXRVc2VyTWVkaWFSZXByb21wdC5tbSAqLywKIAkJCQk0QkZERkZBODEzMTQ3
Nzc3MDA2MUYyNEIgLyogSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwICovLAogCQkJCTRCRkRG
RkE2MTMxNDc3NkMwMDYxRjI0QiAvKiBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZV9CdW5kbGUuY3Bw
ICovLAogCQkJCUJDNTc1QUFDMTI2RTgzQjkwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2lj
LmNwcCAqLywKQEAgLTMyNzcsNyArMzI4MCw2IEBACiAJCQkJNDYzOTdCOTUxREMyQzg1MDAwOUE3
OEFFIC8qIERPTU5vZGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCQzFBNDExQTdFMDA0
NDdDNEMgLyogRE9NTm9kZUZyb21KU09iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUJEMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01SYW5nZU9mU3RyaW5nLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJMDdFNDk5OTExRjlFNTZERjAwMkYxRUYzIC8qIEdldFVzZXJNZWRpYVJlcHJvbXB0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRUMxQTQxMUFFNjAwNDQ3QzRDIC8qIERPTVdpbmRv
d0V4dGVuc2lvbkJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUVEMUE0MTFBRTYw
MDQ0N0M0QyAvKiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjIzMUE0MTFBRjYwMDQ0N0M0QyAvKiBEb3dubG9hZC5tbSBpbiBTb3VyY2VzICov
LApAQCAtMzMyNCw2ICszMzI2LDcgQEAKIAkJCQk3Q0NFN0VGOTFBNDExQUU2MDA0NDdDNEMgLyog
R2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2suY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdFRTIxQTQxMUE5QTAwNDQ3QzRDIC8qIEdldFBJREFmdGVyQWJv
cnRlZFByb2Nlc3NMYXVuY2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDdDRTFDRjMxRjA2QTdF
MDAwQkY4OUY1IC8qIEdldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKKwkJ
CQkwN0U0OTk5MTFGOUU1NkRGMDAyRjFFRjMgLyogR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gaW4g
U291cmNlcyAqLywKIAkJCQkzMTZCREJBQzFFNzIwN0YxMDBERTBENUEgLyogR1BVQnVmZmVyLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzE1MjMxQ0ExRUIzQjNDNzAwQTIyQTE2IC8qIEdQVUNvbW1h
bmRRdWV1ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxNjJBRTlDMUU2RjJGRjUwMDBFNERCQyAv
KiBHUFVEZXZpY2UubW0gaW4gU291cmNlcyAqLywKQEAgLTM1MjEsNiArMzUyNCw3IEBACiAJCQkJ
N0NDRTdGMUMxQTQxMUFFNjAwNDQ3QzRDIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJN0NDRTdFRDgxQTQxMUE3RTAwNDQ3QzRDIC8qIFdpbGxTZW5kU3VibWl0
RXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEOTFBNDExQTdFMDA0NDdDNEMgLyog
V2luZG93bGVzc1dlYlZpZXdXaXRoTWVkaWEubW0gaW4gU291cmNlcyAqLywKKwkJCQkyRTVDNzcw
NzFGQTcwMTM2MDA1OTMyQzMgLyogV0tBdHRhY2htZW50VGVzdHMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkxRjgzNTcxQjFEM0ZGQjIzMDBFMzk2N0IgLyogV0tCYWNrRm9yd2FyZExpc3QubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0YyRTFBNDExQjEwMDA0NDdDNEMgLyogV0tCcm93c2luZ0Nv
bnRleHRHcm91cFRlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YyRjFBNDExQjEwMDA0
NDdDNEMgLyogV0tCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGVUZXN0Lm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
QXR0YWNobWVudFRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWMyM2Y0Y2NhYzdlNDg2OTdlNWEz
ZjFlZmMzMDc3OGRjZjJhOGE3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS0F0dGFjaG1lbnRUZXN0cy5tbQpAQCAtMCwwICsxLDk5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGljIFJldGFpblB0cjxUZXN0
V0tXZWJWaWV3PiB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCkKK3sKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIFtjb25maWd1cmF0aW9uIF9zZXRBdHRhY2htZW50RWxlbWVudEVuYWJsZWQ6WUVT
XTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzpAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT48L2JvZHk+PHNjcmlwdD5kb2N1bWVudC5ib2R5
LmZvY3VzKCk7PC9zY3JpcHQ+Il07CisKKyAgICByZXR1cm4gd2ViVmlldzsKK30KKworc3RhdGlj
IE5TRGF0YSAqdGVzdEhUTUxEYXRhKCkKK3sKKyAgICByZXR1cm4gW0AiPGEgaHJlZj0nIyc+VGhp
cyBpcyBzb21lIEhUTUwgZGF0YTwvYT4iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXTsKK30KKworc3RhdGljIE5TRGF0YSAqdGVzdEltYWdlRGF0YSgpCit7CisgICAgTlNV
UkwgKnVybCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJpY29uIiB3
aXRoRXh0ZW5zaW9uOkAicG5nIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdOworICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDp1cmxdOworfQor
CitAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoQXR0YWNobWVudFRlc3RpbmcpCisKKy0g
KF9XS0F0dGFjaG1lbnQgKilzeW5jaHJvbm91c2x5SW5zZXJ0QXR0YWNobWVudFdpdGhGaWxlbmFt
ZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb250ZW50VHlwZTooTlNTdHJpbmcgKiljb250ZW50VHlw
ZSBkYXRhOihOU0RhdGEgKilkYXRhIG9wdGlvbnM6KF9XS0F0dGFjaG1lbnREaXNwbGF5T3B0aW9u
cyAqKW9wdGlvbnMKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFJldGFp
blB0cjxfV0tBdHRhY2htZW50PiBhdHRhY2htZW50ID0gW3NlbGYgX2luc2VydEF0dGFjaG1lbnRX
aXRoRmlsZW5hbWU6ZmlsZW5hbWUgY29udGVudFR5cGU6Y29udGVudFR5cGUgZGF0YTpkYXRhIG9w
dGlvbnM6b3B0aW9ucyBjb21wbGV0aW9uOl4oQk9PTCkgeworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIHJldHVy
biBhdHRhY2htZW50LmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKE5TU3RyaW5nICopdmFsdWVPZkF0
dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRyaWJ1dGVOYW1lIGZvclF1ZXJ5U2VsZWN0b3I6KE5TU3Ry
aW5nICopcXVlcnlTZWxlY3RvcgoreworICAgIHJldHVybiBbc2VsZiBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcignJUAnKS5nZXRBdHRyaWJ1dGUoJyVAJykiLCBxdWVyeVNlbGVjdG9yLCBhdHRyaWJ1
dGVOYW1lXV07Cit9CisKK0BlbmQKKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNU
KFdLQXR0YWNobWVudFRlc3RzLCBBdHRhY2htZW50RWxlbWVudEluc2VydGlvbikKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSB3ZWJWaWV3Rm9yVGVzdGluZ0F0dGFjaG1lbnRzKCk7CisKKyAgICAvLyBV
c2UgdGhlIGdpdmVuIGNvbnRlbnQgdHlwZSBmb3IgdGhlIGF0dGFjaG1lbnQgZWxlbWVudCdzIHR5
cGUuCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUluc2VydEF0dGFjaG1lbnRXaXRoRmlsZW5h
bWU6QCJmb28iIGNvbnRlbnRUeXBlOkAidGV4dC9odG1sIiBkYXRhOnRlc3RIVE1MRGF0YSgpIG9w
dGlvbnM6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJmb28iLCBbd2ViVmlldyB2YWx1ZU9m
QXR0cmlidXRlOkAidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2htZW50Il0pOworICAg
IEVYUEVDVF9XS19TVFJFUShAInRleHQvaHRtbCIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6
QCJ0eXBlIiBmb3JRdWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoQCIzOCBieXRlcyIsIFt3ZWJWaWV3IHZhbHVlT2ZBdHRyaWJ1dGU6QCJzdWJ0aXRsZSIg
Zm9yUXVlcnlTZWxlY3RvcjpAImF0dGFjaG1lbnQiXSk7CisKKyAgICAvLyBTaW5jZSBubyBjb250
ZW50IHR5cGUgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQsIGNvbXB1dGUgaXQgZnJvbSB0aGUgZmls
ZSBleHRlbnNpb24uCisgICAgW3dlYlZpZXcgX2V4ZWN1dGVFZGl0Q29tbWFuZDpAIkRlbGV0ZUJh
Y2t3YXJkIiBhcmd1bWVudDpuaWwgY29tcGxldGlvbjpuaWxdOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlJbnNlcnRBdHRhY2htZW50V2l0aEZpbGVuYW1lOkAiYmFyLnBuZyIgY29udGVudFR5
cGU6bmlsIGRhdGE6dGVzdEltYWdlRGF0YSgpIG9wdGlvbnM6bmlsXTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoQCJiYXIucG5nIiwgW3dlYlZpZXcgdmFsdWVPZkF0dHJpYnV0ZTpAInRpdGxlIiBmb3JR
dWVyeVNlbGVjdG9yOkAiYXR0YWNobWVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJpbWFn
ZS9wbmciLCBbd2ViVmlldyB2YWx1ZU9mQXR0cmlidXRlOkAidHlwZSIgZm9yUXVlcnlTZWxlY3Rv
cjpAImF0dGFjaG1lbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiMzcgS0IiLCBbd2ViVmll
dyB2YWx1ZU9mQXR0cmlidXRlOkAic3VidGl0bGUiIGZvclF1ZXJ5U2VsZWN0b3I6QCJhdHRhY2ht
ZW50Il0pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>