<?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>169422</bug_id>
          
          <creation_ts>2017-03-09 11:29:06 -0800</creation_ts>
          <short_desc>Add WKURLSchemeHandler API for handling custom protocols</short_desc>
          <delta_ts>2017-03-09 17:00:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=169434</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1285413</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 11:29:06 -0800</bug_when>
    <thetext>Add WKURLSchemeHandler API for handling custom protocols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285414</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 11:29:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/17190141&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285422</commentid>
    <comment_count>2</comment_count>
      <attachid>303942</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 11:46:09 -0800</bug_when>
    <thetext>Created attachment 303942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285428</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 11:49:01 -0800</bug_when>
    <thetext>Attachment 303942 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:36:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:410:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:431:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:452:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285429</commentid>
    <comment_count>4</comment_count>
      <attachid>303942</attachid>
    <who name="">mitz</who>
    <bug_when>2017-03-09 11:52:55 -0800</bug_when>
    <thetext>Comment on attachment 303942
Patch

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

&gt; Source/WebKit2/Shared/API/APIObject.h:123
&gt; +        URLSchemeHandlerTask,

Feels out of place here between the K and the M…</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285430</commentid>
    <comment_count>5</comment_count>
      <attachid>303942</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-09 12:03:21 -0800</bug_when>
    <thetext>Comment on attachment 303942
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandler.h:44
&gt; + represented by the url scheme handler task.

should URL in all these comments be capitalized?

&gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:203
&gt; +            RELEASE_LOG_IF_ALLOWED(resourceLoader, &quot;scheduleLoad: URL will be handled by a UIProcess url scheme handler (frame = %p, resourceID = %&quot; PRIu64 &quot;)&quot;, resourceLoader.frame(), identifier);

URL url URL url URL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285432</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 12:06:07 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 303942 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=303942&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandler.h:44
&gt; &gt; + represented by the url scheme handler task.
&gt; 
&gt; should URL in all these comments be capitalized?

Probably.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Network/WebLoaderStrategy.cpp:203
&gt; &gt; +            RELEASE_LOG_IF_ALLOWED(resourceLoader, &quot;scheduleLoad: URL will be handled by a UIProcess url scheme handler (frame = %p, resourceID = %&quot; PRIu64 &quot;)&quot;, resourceLoader.frame(), identifier);
&gt; 
&gt; URL url URL url URL

See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285441</commentid>
    <comment_count>7</comment_count>
      <attachid>303946</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 12:12:01 -0800</bug_when>
    <thetext>Created attachment 303946
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285443</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 12:13:44 -0800</bug_when>
    <thetext>Attachment 303946 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:36:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:410:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:431:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:452:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285448</commentid>
    <comment_count>9</comment_count>
      <attachid>303949</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 12:26:11 -0800</bug_when>
    <thetext>Created attachment 303949
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285453</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 12:28:32 -0800</bug_when>
    <thetext>Attachment 303949 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:36:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:410:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:431:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:452:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285474</commentid>
    <comment_count>11</comment_count>
      <attachid>303949</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-09 12:46:04 -0800</bug_when>
    <thetext>Comment on attachment 303949
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.h:193
&gt; +/* @abstract Returns the currently registered url scheme handler object for the given URL scheme.

tiny URL again.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:334
&gt; +    configuration-&gt;_urlSchemeHandlers.set([self._urlSchemeHandlers mutableCopyWithZone:zone]);

Isn&apos;t this a leak?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285495</commentid>
    <comment_count>12</comment_count>
      <attachid>303962</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 12:59:49 -0800</bug_when>
    <thetext>Created attachment 303962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285498</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 13:00:55 -0800</bug_when>
    <thetext>FWIW, I have a growing set of tests that I will be submitting in https://bugs.webkit.org/show_bug.cgi?id=169434</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285499</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 13:01:24 -0800</bug_when>
    <thetext>Attachment 303962 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:36:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:410:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:431:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:452:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285508</commentid>
    <comment_count>15</comment_count>
      <attachid>303962</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-09 13:06:13 -0800</bug_when>
    <thetext>Comment on attachment 303962
Patch

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

&gt; Source/WebKit2/UIProcess/WebURLSchemeHandler.h:57
&gt; +    uint64_t m_identifier { 1 };

why?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285536</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 13:20:55 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Comment on attachment 303962 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=303962&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebURLSchemeHandler.h:57
&gt; &gt; +    uint64_t m_identifier { 1 };
&gt; 
&gt; why?

Because if you try to put 0 in a hash table you&apos;re gonna have a bad time.

(But if your comment is that since we always initialize it in the c&apos;tor with the next identifier so why bother with the default initializer.... good call. I just put the default in there very early on while testing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285544</commentid>
    <comment_count>17</comment_count>
      <attachid>303962</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-09 13:29:46 -0800</bug_when>
    <thetext>Comment on attachment 303962
Patch

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

&gt; Source/WebKit2/Shared/API/APIObject.h:123
&gt; +        URLSchemeHandlerTask,

As previously noted, this seems out of order in an otherwise sorted list.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm:40
&gt; +    if (exceptionType == WebKit::WebURLSchemeHandlerTask::ExceptionType::TaskAlreadyStopped)

Should this be a switch so you catch new enum values?

&gt; Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.h:40
&gt; +class WebURLSchemeHandlerTaskProxy {

Do all of your C++ classes want any MAKE_NONCOPYABLE or whatever?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285549</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 13:36:19 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 303962 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=303962&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/API/APIObject.h:123
&gt; &gt; +        URLSchemeHandlerTask,
&gt; 
&gt; As previously noted, this seems out of order in an otherwise sorted list.

Yup, leftover from the rename. Moved.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/WKURLSchemeHandlerTask.mm:40
&gt; &gt; +    if (exceptionType == WebKit::WebURLSchemeHandlerTask::ExceptionType::TaskAlreadyStopped)
&gt; 
&gt; Should this be a switch so you catch new enum values?

Yup.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebURLSchemeHandlerTaskProxy.h:40
&gt; &gt; +class WebURLSchemeHandlerTaskProxy {
&gt; 
&gt; Do all of your C++ classes want any MAKE_NONCOPYABLE or whatever?

Prolly.

Thx!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285553</commentid>
    <comment_count>19</comment_count>
      <attachid>303981</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 13:42:51 -0800</bug_when>
    <thetext>Created attachment 303981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285555</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 13:44:52 -0800</bug_when>
    <thetext>Attachment 303981 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:36:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:410:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:431:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:452:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285635</commentid>
    <comment_count>21</comment_count>
      <attachid>303999</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 15:20:29 -0800</bug_when>
    <thetext>Created attachment 303999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285637</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 15:22:41 -0800</bug_when>
    <thetext>Attachment 303999 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:36:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:413:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:434:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm:455:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 4 in 39 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285677</commentid>
    <comment_count>23</comment_count>
      <attachid>303999</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 16:38:24 -0800</bug_when>
    <thetext>Comment on attachment 303999
Patch

Clearing flags on attachment: 303999

Committed r213686: &lt;http://trac.webkit.org/changeset/213686&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285678</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-09 16:38:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1285700</commentid>
    <comment_count>25</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-03-09 17:00:24 -0800</bug_when>
    <thetext>32-bit debug build fix in https://trac.webkit.org/changeset/213693</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303942</attachid>
            <date>2017-03-09 11:46:09 -0800</date>
            <delta_ts>2017-03-09 12:11:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169422-20170309114608.patch</filename>
            <type>text/plain</type>
            <size>102528</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZjNzNkM2VlY2NmNjYw
ZTA0Yjk1NTUxZDRiMmQ1ZmIwZDQ1ZTY3OC4uYzk5MjdkYmY5N2JiNDQ2OTE4MWQ2NWRiZTg0Zjk0
MWZkN2E3NGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAzLTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tVUkxTY2hlbWVI
YW5kbGVyIEFQSSBmb3IgaGFuZGxpbmcgY3VzdG9tIHByb3RvY29scy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1VSTFBhcnNlci5oOgorCiAyMDE3LTAzLTA4ICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkNyeXB0b10gSW1wbGVtZW50IFN1YnRs
ZUNyeXB0bzo6RGVyaXZlS2V5IG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDlmYTU1YmU3NzY1NDVhOGU0
ODk5ZTA2MTdjZjYwOWUzN2U1OTVhOWEuLmFkNDhkNTQ2NmZjMjdmMDQxY2Y2YzA4MDAzZjMxMDFk
ZThiM2JmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIwMTctMDMtMDkgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1VSTFNjaGVtZUhh
bmRsZXIgQVBJIGZvciBoYW5kbGluZyBjdXN0b20gcHJvdG9jb2xzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIHR3byBuZXcg
cHJvdG9jb2xzIHRvIHRoZSBXSzIgQVBJIHN1cmZhY2U6CisgICAgICAgIC0gV0tVUkxTY2hlbWVI
YW5kbGVyCisgICAgICAgIC0gV0tVUkxTY2hlbWVIYW5kbGVyVGFzaworICAgICAgICAKKyAgICAg
ICAgQnkgcmVnaXN0ZXJpbmcgYW4gb2JqZWN0IHRoYXQgY29uZm9ybXMgdG8gdGhlIFdLVVJMU2No
ZW1lSGFuZGxlciBwcm90b2NvbCB3aXRoIGEgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbiBhcHBs
aWNhdGlvbiB3aWxsCisgICAgICAgIGJlIGhhbmRlZCBhbiBvYmplY3QgY29uZm9ybWluZyB0byBX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrIGZvciBlYWNoIHJlc291cmNlIGxvYWQgaW4gdGhhdCBXS1dl
YlZpZXcgd2l0aCBhIGN1c3RvbSBVUkwgc2NoZW1lLgorICAgICAgICAKKyAgICAgICAgVXNpbmcg
dGhhdCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4sIHRoZSBhcHBsaWNhdGlvbiBjYW4gY29t
bXVuaWNhdGUgdGhlIGRhdGEgZm9yIHRoZSByZXNvdXJjZSBiYWNrIHRvIFdlYktpdC4KKyAgICAg
ICAgCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOiAKKyAgICAgICAgKEFQSTo6VVJMU2NoZW1l
SGFuZGxlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNr
OjpVUkxTY2hlbWVIYW5kbGVyVGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oOiAKKworICAgICAgICBBZGQgdGhlIFdLVVJMU2NoZW1lSGFuZGxl
ciBAcHJvdG9jb2w6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXIuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIHRoZSBXS1VSTFNjaGVtZUhhbmRsZXJUYXNr
IEBwcm90b2NvbCwgYXMgd2VsbCBhcyBXZWJLaXQncyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBv
ZiBpdDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRh
c2suaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tOiBBZGRlZC4KKyAgICAgICAgKHJhaXNlRXhjZXB0aW9uSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCByZXF1ZXN0XSk6CisgICAg
ICAgICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZFJlY2VpdmVSZXNwb25zZTpdKToK
KyAgICAgICAgKC1bV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgZGlkUmVjZWl2ZURhdGE6XSk6
CisgICAgICAgICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZEZpbmlzaF0pOgorICAg
ICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBkaWRGYWlsV2l0aEVycm9yOl0pOgor
ICAgICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBfYXBpT2JqZWN0XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwu
aDogCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyB1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1l
Ol0pOgorICAgICAgICAoK1tXS1dlYlZpZXcgaGFuZGxlc1VSTFNjaGVtZTpdKToKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgt
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpmb3JVUkxTY2hlbWU6
XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gdXJsU2NoZW1lSGFuZGxlckZv
clVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdXJsU2No
ZW1lSGFuZGxlcnNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYS5oOiAKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hOjphcGlIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVVJM
U2NoZW1lSGFuZGxlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlckNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2E6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RvcFRhc2spOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lSGFuZGxlclRhc2spOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuY3BwOiAKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVXZWJVUkxTY2hlbWVIYW5kbGVySWRl
bnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OldlYlVSTFNj
aGVtZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjp+V2Vi
VVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6
OnN0YXJ0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BU
YXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oOiAKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcjo6aWRlbnRpZmllcik6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkQ29t
cGxldGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6cGFnZURl
c3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpzdG9w
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjppZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OnJlcXVlc3QpOgorCisg
ICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxvYWRlclN0cmF0ZWd5OjpyZW1vdmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVIYW5kbGVyRm9yU2No
ZW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVIYW5kbGVy
VGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1l
SGFuZGxlclRhc2tEaWRDb21wbGV0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5
OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHk6On5XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0YXJ0TmV3VGFzayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVSZXNwb25zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2Vp
dmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNr
RGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5
OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5
OjpwYWdlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5k
bGVyVGFza1Byb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrUHJveHk6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdGFydExvYWRpbmcpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdG9wTG9hZGluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJv
eHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxl
clRhc2tQcm94eTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrUHJveHk6OnJlcXVlc3QpOgorCiAyMDE3LTAzLTA4ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBwbHVtYmluZyBmb3Ig
V2ViQ29yZSB0byBub3RpZnkgV2ViS2l0MiB3aGVuIGFuIGVkaXQgZHJhZyBoYXMgY29uY2x1ZGVk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmNwcAppbmRleCBkMWY4ZmU4NGE4ZTYzZjQ3
NGMyM2NkYjdkM2Q4MzkwMDkyMDcyZGFiLi5hNjkxNGNjZTM5ODc3OWZjODJiZjdkNjQ3MWRlNDQ0
OTJmNzQwODJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKQEAgLTc5MCw2
ICs3OTAsMjggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgU2NoZW1lIHNjaGVtZShTdHJpbmdWaWV3
IHNjaGVtZSkKICAgICB9CiB9CiAKK3N0ZDo6b3B0aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1h
eWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGlmIChz
Y2hlbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYg
KCFpc0FTQ0lJQWxwaGEoc2NoZW1lWzBdKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgc2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKKyAg
ICAgICAgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMoc2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0g
JysnIHx8IHNjaGVtZVtpXSA9PSAnLScgfHwgc2NoZW1lW2ldID09ICcuJykKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHJl
dHVybiBzY2hlbWUuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKK30KKworYm9vbCBVUkxQYXJz
ZXI6OmlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZUFyZykKK3sKKyAgICByZXR1
cm4gc2NoZW1lKHNjaGVtZUFyZykgIT0gU2NoZW1lOjpOb25TcGVjaWFsOworfQorCiBlbnVtIGNs
YXNzIFVSTFBhcnNlcjo6VVJMUGFydCB7CiAgICAgU2NoZW1lRW5kLAogICAgIFVzZXJTdGFydCwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKaW5kZXggNzNjYTE4OGZkN2VmMGIyZGE4ODcy
MTYwY2E4ODY4YzE4NzkzMDU5NS4uNTcwOGE0ZmY3Y2Y2NzFiNGQ1OTM1MjM2NzExZDY3MmY1OGM1
NTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKQEAgLTUwLDYgKzUwLDkgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IFVJRE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFt
ZVRyYW5zY29kZXIoKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBib29sIGlzU3BlY2lh
bFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZSk7CisKIHByaXZhdGU6CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2
X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CiAgICAgZnJpZW5kIHN0ZDo6
b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCBmMmNiMDU0MGEzMWQwNTQ0OGZl
MmI4ZjVlODM1YTJmM2Q3ZGFjODA5Li5jYWRkOWE1OTY4Nzk4ZmM1ZDczYjNkOTk5N2U1Mjk3NTEw
ZWViMzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTEyMCw2ICsx
MjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEljb25EYXRhYmFzZSwKICAgICAgICAgSW5zcGVjdG9y
LAogICAgICAgICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAorICAgICAgICBVUkxTY2hlbWVIYW5k
bGVyVGFzaywKICAgICAgICAgTWVkaWFDYWNoZU1hbmFnZXIsCiAgICAgICAgIE5hdmlnYXRpb24s
CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbQppbmRleCA4ZWNiNTMzMzg2MDJjMDdmODJmMjFhYzc4NTU1YmM2ZDJhOTVmMGJj
Li44NGE4NGU2OTcyY2NlY2YwMDg3ZDJlMTNmNzVjODczN2JlZDZiZDkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTUxLDYgKzUxLDcgQEAKICNpbXBvcnQg
IldLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tQcm9jZXNzUG9vbEludGVybmFs
LmgiCiAjaW1wb3J0ICJXS1NlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLVVJM
U2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRy
b2xsZXJJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tVc2VyU2NyaXB0SW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgi
CkBAIC0xODMsNiArMTg0LDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXpl
LCBUeXBlIHR5cGUpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAKKyAgICBjYXNlIFR5cGU6OlVS
TFNjaGVtZUhhbmRsZXJUYXNrOgorICAgICAgICB3cmFwcGVyID0gW1dLVVJMU2NoZW1lSGFuZGxl
clRhc2tJbXBsIGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6Ok5hdmln
YXRpb246CiAgICAgICAgIHdyYXBwZXIgPSBbV0tOYXZpZ2F0aW9uIGFsbG9jXTsKICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAKaW5kZXggMTQyOTJmOTlhNzJiY2Q3NzhlYWU4ZTczNjk2ZTk3MzFlZmNhNjBh
MC4uZTg1Y2QxMGY1ZTA1MTVlOGNmZTFmMGVkMjAwMmE4OWI5ZWQ2YTU0MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
OTMsNiArOTMsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24pOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShvYnNlcnZlZExh
eW91dE1pbGVzdG9uZXMpOwogICAgIGVuY29kZXIgPDwgb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3k7CisgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVIYW5kbGVyczsKICNpZiBFTkFCTEUoV0VC
X1JUQykKICAgICBlbmNvZGVyIDw8IGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQ7CiAjaWYg
VVNFKExJQldFQlJUQykKQEAgLTIyMSw2ICsyMjIsOSBAQCBib29sIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFdlYlBhZ2VDcmVhdGlvblBh
cgogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5vdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5pY2VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKaW5kZXggMjA4MWIwNzkzMTU4NjMxOGY5NTViYWJkOTdjYzRmMWNhYjEzZDM3MS4uYjRmZTZl
NjY0NWJjOTcxMTkwN2JjNGM0NzkyZGFlOTk2ZGY3NmRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC00Miw2ICs0Miw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vz
c2lvbklELmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE0Niw2ICsxNDcsOCBAQCBzdHJ1Y3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBTdHJpbmcgb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiAKKyAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IHVybFNjaGVtZUhh
bmRsZXJzOworCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgYm9vbCBpY2VDYW5kaWRhdGVGaWx0
ZXJpbmdFbmFibGVkIHsgdHJ1ZSB9OwogI2lmIFVTRShMSUJXRUJSVEMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjhjNDIwMWM5MTUyMDQzM2VmMTRmM2Y3NmQ5NjhjZTU0YTY0ODBhMmYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVt
ZUhhbmRsZXJUYXNrLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmgiCisKKyNpbmNs
dWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2suaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK1JlZjxVUkxTY2hlbWVIYW5kbGVyVGFzaz4g
VVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrJiB3ZWJVUkxTY2hlbWVIYW5kbGVyVGFzaykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBVUkxTY2hlbWVIYW5kbGVyVGFzayh3ZWJVUkxTY2hlbWVIYW5kbGVyVGFzaykpOworfQorCitV
UkxTY2hlbWVIYW5kbGVyVGFzazo6VVJMU2NoZW1lSGFuZGxlclRhc2soV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzayYgd2ViVVJMU2NoZW1lSGFuZGxlclRhc2spCisgICAgOiBtX3dlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrKHdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrKQoreworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhhbmRs
ZXJUYXNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhhbmRs
ZXJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UzMTUwOGZkMDllMjVhOTQzZWNiN2M0NGU5MjJhZDY5NmYw
OWFjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
VVJMU2NoZW1lSGFuZGxlclRhc2suaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CitjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazsKK30KKworbmFtZXNwYWNlIEFQSSB7CisK
K2NsYXNzIFVSTFNjaGVtZUhhbmRsZXJUYXNrIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2Jq
ZWN0OjpUeXBlOjpVUkxTY2hlbWVIYW5kbGVyVGFzaz4geworcHVibGljOgorICAgIHN0YXRpYyBS
ZWY8VVJMU2NoZW1lSGFuZGxlclRhc2s+IGNyZWF0ZShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrJik7CisKKyAgICBXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrJiB0YXNrKCkg
eyByZXR1cm4gbV93ZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5nZXQoKTsgfQorCitwcml2YXRlOgor
ICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2sm
KTsKKworICAgIFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrPiBtX3dlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrOworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDczNDQy
ZTI0NzU3NTBjZDE0NzU1MTQwNDgwN2YyYTJmZDUyY2ZiYQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLmgKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24u
aD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlv
bi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAY2xhc3MgV0tXZWJWaWV3OworQHBy
b3RvY29sIFdLVVJMU2NoZW1lSGFuZGxlclRhc2s7CisKKy8qISBBIGNsYXNzIGNvbmZvcm1pbmcg
dG8gdGhlIFdLVVJMU2NoZW1lSGFuZGxlciBwcm90b2NvbCBwcm92aWRlcyBtZXRob2RzIGZvcgor
IGxvYWRpbmcgcmVzb3VyY2VzIHdpdGggVVJMIHNjaGVtZXMgdGhhdCBXZWJLaXQgZG9lc24ndCBr
bm93IGhvdyB0byBoYW5kbGUgaXRzZWxmLgorICovCitXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQHByb3RvY29sIFdLVVJMU2NoZW1lSGFuZGxl
ciA8TlNPYmplY3Q+CisKKy8qISBAYWJzdHJhY3QgTm90aWZpZXMgeW91ciBhcHAgdG8gc3RhcnQg
bG9hZGluZyB0aGUgZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIHJlc291cmNlIAorIHJlcHJlc2VudGVk
IGJ5IHRoZSB1cmwgc2NoZW1lIGhhbmRsZXIgdGFzay4KKyBAcGFyYW0gd2ViVmlldyBUaGUgd2Vi
IHZpZXcgaW52b2tpbmcgdGhlIG1ldGhvZC4KKyBAcGFyYW0gdXJsU2NoZW1lSGFuZGxlclRhc2sg
VGhlIHRhc2sgdGhhdCB5b3VyIGFwcCBzaG91bGQgc3RhcnQgbG9hZGluZyBkYXRhIGZvci4KKyAq
LworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VGFzazooaWQgPFdL
VVJMU2NoZW1lSGFuZGxlclRhc2s+KXVybFNjaGVtZUhhbmRsZXJUYXNrOworCisvKiEgQGFic3Ry
YWN0IE5vdGlmaWVzIHlvdXIgYXBwIHRvIHN0b3AgaGFuZGxpbmcgYSB1cmwgc2NoZW1lIGhhbmRs
ZXIgdGFzay4KKyBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgaW52b2tpbmcgdGhlIG1ldGhv
ZC4KKyBAcGFyYW0gdXJsU2NoZW1lSGFuZGxlclRhc2sgVGhlIHRhc2sgdGhhdCB5b3VyIGFwcCBz
aG91bGQgc3RvcCBoYW5kbGluZy4KKyBAZGlzY3Vzc2lvbiBBZnRlciB5b3VyIGFwcCBpcyB0b2xk
IHRvIHN0b3AgbG9hZGluZyBkYXRhIGZvciBhIHVybCBzY2hlbWUgaGFuZGxlciB0YXNrCisgaXQg
bXVzdCBub3QgcGVyZm9ybSBhbnkgY2FsbGJhY2tzIGZvciB0aGF0IHRhc2suCisgQW4gZXhjZXB0
aW9uIHdpbGwgYmUgdGhyb3duIGlmIGFueSBjYWxsYmFja3MgYXJlIG1hZGUgb24gdGhlIHVybCBz
Y2hlbWUgaGFuZGxlciB0YXNrCisgYWZ0ZXIgeW91ciBhcHAgaGFzIGJlZW4gdG9sZCB0byBzdG9w
IGxvYWRpbmcgZm9yIGl0LgorICovCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgc3RvcFRhc2s6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXJUYXNrPil1cmxTY2hlbWVIYW5kbGVy
VGFzazsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxl
clRhc2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVI
YW5kbGVyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU3Y2FhNzAwOTMxYWMyMzM1Zjg0MWIzNDg3Y2E3Y2U2
ZjljYjAyYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2suaApAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCisKK1dLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpCitAcHJvdG9jb2wgV0tVUkxTY2hlbWVIYW5kbGVyVGFzayA8TlNPYmplY3Q+CisK
Ky8qISBAYWJzdHJhY3QgVGhlIHJlcXVlc3QgdG8gbG9hZCBmb3IgdGhpcyB0YXNrLgorICovCitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dDsKKworLyohIEBhYnN0cmFjdCBTZXQgdGhlIGN1cnJlbnQgcmVzcG9uc2Ugb2JqZWN0IGZvciB0
aGUgdGFzay4KKyBAcGFyYW0gcmVzcG9uc2UgVGhlIHJlc3BvbnNlIHRvIHVzZS4KKyBAZGlzY3Vz
c2lvbiBUaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCBhdCBsZWFzdCBvbmNlIGZvciBlYWNoIHVy
bCBzY2hlbWUgaGFuZGxlciB0YXNrLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5
b3UgdHJ5IHRvIHNlbmQgYSBuZXcgcmVzcG9uc2Ugb2JqZWN0IGFmdGVyIHRoZSB0YXNrIGhhcyBh
bHJlYWR5IGJlZW4gY29tcGxldGVkLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5
b3VyIGFwcCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyB0aGlzIHRhc2sgdmlhIHRoZSBy
ZWdpc3RlcmVkIFdLVVJMU2NoZW1lSGFuZGxlciBvYmplY3QuCisgKi8KKy0gKHZvaWQpZGlkUmVj
ZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2U7CisKKy8qISBAYWJzdHJhY3Qg
QWRkIHJlY2VpdmVkIGRhdGEgdG8gdGhlIHRhc2suCisgQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8g
YWRkLgorIEBkaXNjdXNzaW9uIEFmdGVyIGEgdXJsIHNjaGVtZSBoYW5kbGVyIHRhc2sncyBmaW5h
bCByZXNwb25zZSBvYmplY3QgaXMgcmVjZWl2ZWQgeW91IHNob3VsZAorIHN0YXJ0IHNlbmRpbmcg
aXQgZGF0YS4KKyBFYWNoIHRpbWUgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHRoZSBkYXRhIHlvdSBz
ZW5kIHdpbGwgYmUgYXBwZW5kZWQgdG8gYWxsIHByZXZpb3VzIGRhdGEuCisgQW4gZXhjZXB0aW9u
IHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8gc2VuZCB0aGUgdGFzayBhbnkgZGF0YSBiZWZv
cmUgc2VuZGluZyBpdCBhIHJlc3BvbnNlLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBp
ZiB5b3UgdHJ5IHRvIHNlbmQgdGhlIHRhc2sgYW55IGRhdGEgYWZ0ZXIgdGhlIHRhc2sgaGFzIGFs
cmVhZHkgYmVlbiBjb21wbGV0ZWQuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlv
dXIgYXBwIGhhcyBiZWVuIHRvbGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJl
Z2lzdGVyZWQgV0tVUkxTY2hlbWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZClkaWRSZWNl
aXZlRGF0YTooTlNEYXRhICopZGF0YTsKKworLyohIEBhYnN0cmFjdCBNYXJrIHRoZSB0YXNrIGFz
IHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQuCisgQGRpc2N1c3Npb24gQW4gZXhjZXB0aW9uIHdpbGwg
YmUgdGhyb3duIGlmIHlvdSB0cnkgdG8gZmluaXNoIHRoZSB0YXNrIGJlZm9yZSBzZW5kaW5nIGl0
IGEgcmVzcG9uc2UuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8g
bWFyayBhIHRhc2sgY29tcGxldGVkIGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGNv
bXBsZXRlZCBvciBmYWlsZWQuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdXIg
YXBwIGhhcyBiZWVuIHRvbGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJlZ2lz
dGVyZWQgV0tVUkxTY2hlbWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZClkaWRGaW5pc2g7
CisKKy8qISBAYWJzdHJhY3QgTWFyayB0aGUgdGFzayBhcyBmYWlsZWQuCisgQHBhcmFtIGVycm9y
IEEgZGVzY3JpcHRpb24gb2YgdGhlIGVycm9yIHRoYXQgY2F1c2VkIHRoZSB0YXNrIHRvIGZhaWwu
CisgQGRpc2N1c3Npb24gIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5IHRv
IG1hcmsgYSB0YXNrIGZhaWxlZCBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIG1hcmtlZCBjb21w
bGV0ZWQgb3IgZmFpbGVkLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3VyIGFw
cCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyB0aGlzIHRhc2sgdmlhIHRoZSByZWdpc3Rl
cmVkIFdLVVJMU2NoZW1lSGFuZGxlciBvYmplY3QuCisgKi8KKy0gKHZvaWQpZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORAor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDM1NDU0N2ZmMDJj
MjViODEyZGQwNTU2OWViNGUxZmZiNDI4ZTUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tCkBAIC0w
LDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldL
VVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwor
I2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUVycm9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK3N0YXRpYyB2b2lkIHJhaXNlRXhjZXB0aW9uSWZOZWNlc3NhcnkoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZSBleGNlcHRpb25UeXBlKQoreworICAg
IGlmIChleGNlcHRpb25UeXBlID09IFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4
Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZCkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRoaXMgdGFzayBo
YXMgYWxyZWFkeSBiZWVuIHN0b3BwZWQiXTsKKyAgICBpZiAoZXhjZXB0aW9uVHlwZSA9PSBXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpDb21wbGV0ZUFscmVh
ZHlDYWxsZWQpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0
ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJbV0tVUkxTY2hlbWVIYW5kbGVyVGFzayB0YXNrRGlkQ29t
cGxldGVXaXRoRXJyb3I6XSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBmb3IgdGhpcyB0YXNrIl07
CisgICAgaWYgKGV4Y2VwdGlvblR5cGUgPT0gV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFz
azo6RXhjZXB0aW9uVHlwZTo6RGF0YUFscmVhZHlTZW50KQorICAgICAgICBbTlNFeGNlcHRpb24g
cmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiW1dLVVJMU2No
ZW1lSGFuZGxlclRhc2sgdGFza0RpZFJlY2VpdmVEYXRhOl0gaGFzIGFscmVhZHkgYmVlbiBjYWxs
ZWQgZm9yIHRoaXMgdGFzayJdOworICAgIGlmIChleGNlcHRpb25UeXBlID09IFdlYktpdDo6V2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50KQorICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24g
Zm9ybWF0OkAiTm8gcmVzcG9uc2UgaGFzIGJlZW4gc2VudCBmb3IgdGhpcyB0YXNrIl07Cit9CisK
K0BpbXBsZW1lbnRhdGlvbiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbAorCistIChOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0Cit7CisgICAgcmV0dXJuIF91cmxTY2hlbWVIYW5kbGVyVGFzay0+dGFz
aygpLnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoRG9Ob3RVcGRhdGVIVFRQQm9keSk7Cit9CisKKy0g
KHZvaWQpZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKK3sKKyAg
ICBhdXRvIHJlc3VsdCA9IF91cmxTY2hlbWVIYW5kbGVyVGFzay0+dGFzaygpLmRpZFJlY2VpdmVS
ZXNwb25zZShyZXNwb25zZSk7CisgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShyZXN1bHQp
OworfQorCistICh2b2lkKWRpZFJlY2VpdmVEYXRhOihOU0RhdGEgKilkYXRhCit7CisgICAgYXV0
byByZXN1bHQgPSBfdXJsU2NoZW1lSGFuZGxlclRhc2stPnRhc2soKS5kaWRSZWNlaXZlRGF0YShX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI6OndyYXBOU0RhdGEoZGF0YSkpOworICAgIHJhaXNlRXhjZXB0
aW9uSWZOZWNlc3NhcnkocmVzdWx0KTsKK30KKworLSAodm9pZClkaWRGaW5pc2gKK3sKKyAgICBh
dXRvIHJlc3VsdCA9IF91cmxTY2hlbWVIYW5kbGVyVGFzay0+dGFzaygpLmRpZENvbXBsZXRlKHsg
fSk7CisgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShyZXN1bHQpOworfQorCistICh2b2lk
KWRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIGF1dG8gcmVzdWx0ID0g
X3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkuZGlkQ29tcGxldGUoZXJyb3IpOworICAgIHJh
aXNlRXhjZXB0aW9uSWZOZWNlc3NhcnkocmVzdWx0KTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2Jq
ZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0
Cit7CisgICAgcmV0dXJuICpfdXJsU2NoZW1lSGFuZGxlclRhc2s7Cit9CisKK0BlbmQKKworI2Vu
ZGlmIC8vICNpZiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVy
bmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjI0NjgwMWY1ODM2NjZjYTMxNTgxNjA2YWQyODYwOGY2MmE0OGRl
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgIldLVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgIkFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmgiCisjaW1wb3J0ICJX
S09iamVjdC5oIgorCitAaW50ZXJmYWNlIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIDogTlNP
YmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlclRhc2s+CitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitpbmxpbmUgaWQ8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4gd3JhcHBlcihBUEk6OlVSTFNj
aGVtZUhhbmRsZXJUYXNrJiB1cmxTY2hlbWVIYW5kbGVyVGFzaykKK3sKKyAgICBBU1NFUlQoW3Vy
bFNjaGVtZUhhbmRsZXJUYXNrLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltXS1VSTFNjaGVtZUhh
bmRsZXJUYXNrSW1wbCBjbGFzc11dKTsKKyAgICByZXR1cm4gKGlkPFdLVVJMU2NoZW1lSGFuZGxl
clRhc2s+KXVybFNjaGVtZUhhbmRsZXJUYXNrLndyYXBwZXIoKTsKK30KKworfQorCitAaW50ZXJm
YWNlIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsICgpIDxXS09iamVjdD4geworQHBhY2thZ2UK
KyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpVUkxTY2hlbWVIYW5kbGVyVGFzaz4gX3VybFNj
aGVtZUhhbmRsZXJUYXNrOworfQorQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCmluZGV4IDVj
MmVjYzhlMDQ3YTdiNTZkYzk3NGQyZmUzMTMwZWE4MTMxNzM4YjIuLjA5MDU4ZGI0OGRiNDA3OTdi
NGU2ZDVlNjBiNGFlMmJiNzBhNjgxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMjc5LDYgKzI3OSwxMSBAQCBXS19DTEFTU19BVkFJ
TEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCiAKICNlbmRpZgogCisvKiBAYWJzdHJhY3Qg
Q2hlY2tzIHdoZXRoZXIgb3Igbm90IFdLV2ViVmlld3MgaGFuZGxlIHRoZSBnaXZlbiBVUkwgc2No
ZW1lIGJ5IGRlZmF1bHQuCisgQHBhcmFtIHNjaGVtZSBUaGUgVVJMIHNjaGVtZSB0byBjaGVjay4K
KyAqLworKyAoQk9PTCloYW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZSBXS19B
UElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVu
ZAogCiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggODk3YTJiNzgzM2M3MGU5MzJmMGE5NTNmYjhm
NzcwNGUzMjg0M2JiYy4uYmU0MmE0MWM5ZWVmNjVlMGQzNTczZmRiYjY2NjcwMTVmZmRlNDM5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTc4LDYgKzc4LDcgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzS2V5cy5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9y
dCAiV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgiCiAjaW1wb3J0ICJXZWJWaWV3SW1wbC5oIgog
I2ltcG9ydCAiX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRmlu
ZERlbGVnYXRlLmgiCkBAIC0xMDAsNiArMTAxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvU1FMaXRl
RGF0YWJhc2VUcmFja2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRTdHJlYW0uaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJibGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvV3Jp
dGluZ01vZGUuaD4KICNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CkBAIC01NzMsNiArNTc1LDEwIEBA
IC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqKWNvbmZpZ3VyYXRpb24KICAgICBbc2VsZiBfc2V0VXBTUUxpdGVEYXRhYmFzZVRyYWNr
ZXJDbGllbnRdOwogI2VuZGlmCiAKKyAgICBhdXRvICpoYW5kbGVycyA9IF9jb25maWd1cmF0aW9u
LmdldCgpLl91cmxTY2hlbWVIYW5kbGVyczsKKyAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gaGFu
ZGxlcnMpCisgICAgICAgIF9wYWdlLT5zZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFdlYktp
dDo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpjcmVhdGUoaGFuZGxlcnNba2V5XSksIGtleSk7
CisKICAgICBwYWdlVG9WaWV3TWFwKCkuYWRkKF9wYWdlLmdldCgpLCBzZWxmKTsKIH0KIApAQCAt
MzQ5Niw2ICszNTAyLDE3IEBAIC0gKHZvaWQpX2ludGVyYWN0V2l0aE1lZGlhQ29udHJvbHNGb3JU
ZXN0aW5nCiAKICNlbmRpZiAvLyBIQVZFKFRPVUNIX0JBUikKIAorLSAoaWQgPFdLVVJMU2NoZW1l
SGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hl
bWUKK3sKKyAgICBhdXRvKiBoYW5kbGVyID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2EqPihfcGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZSh1cmxTY2hl
bWUpKTsKKyAgICByZXR1cm4gaGFuZGxlciA/IGhhbmRsZXItPmFwaUhhbmRsZXIoKSA6IG5pbDsK
K30KKworKyAoQk9PTCloYW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQorewor
ICAgIHJldHVybiBXZWJDb3JlOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZSh1cmxTY2hlbWUp
OworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLUHJpdmF0ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLmgKaW5kZXggM2FkYWJiYzEyOGU5YTkwZjc1OGMzMWI4Mjg1MTIxYzQw
N2UzYWJmZC4uYjdlNGI4OGJkOGM4MDZjZTFmYjA5ZTU1YzBmMmVkMTQzYjBkY2NhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLmgKQEAgLTM2LDYgKzM2LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVH
SU4KIEBjbGFzcyBXS1Byb2Nlc3NQb29sOwogQGNsYXNzIFdLVXNlckNvbnRlbnRDb250cm9sbGVy
OwogQGNsYXNzIFdLV2Vic2l0ZURhdGFTdG9yZTsKK0Bwcm90b2NvbCBXS1VSTFNjaGVtZUhhbmRs
ZXI7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCiAKQEAgLTE3NSw2ICsxNzYsMjUgQEAgV0tfQ0xB
U1NfQVZBSUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKQogCiAjZW5kaWYKIAorLyogQGFi
c3RyYWN0IFNldHMgdGhlIHVybCBzY2hlbWUgaGFuZGxlciBvYmplY3QgZm9yIHRoZSBnaXZlbiBV
Ukwgc2NoZW1lLgorIEBwYXJhbSB1cmxTY2hlbWVIYW5kbGVyIFRoZSBvYmplY3QgdG8gcmVnaXN0
ZXIuCisgQHBhcmFtIHNjaGVtZSBUaGUgVVJMIHNjaGVtZSB0aGUgb2JqZWN0IHdpbGwgaGFuZGxl
LgorIEBkaXNjdXNzaW9uIEVhY2ggVVJMIHNjaGVtZSBjYW4gb25seSBoYXZlIG9uZSB1cmwgc2No
ZW1lIGhhbmRsZXIgb2JqZWN0IHJlZ2lzdGVyZWQuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhy
b3duIGlmIHlvdSB0cnkgdG8gcmVnaXN0ZXIgYW4gb2JqZWN0IGZvciBhIHBhcnRpY3VsYXIgVVJM
IHNjaGVtZSBtb3JlIHRoYW4gb25jZS4KKyBVUkwgc2NoZW1lcyBhcmUgY2FzZSBpbnNlbnNpdGl2
ZS4gZS5nLiAibXlwcm90b2NvbCIgYW5kICJNeVByb3RvY29sIiBhcmUgZXF1aXZhbGVudC4KKyBW
YWxpZCBVUkwgc2NoZW1lcyBtdXN0IHN0YXJ0IHdpdGggYW4gQVNDSUkgbGV0dGVyIGFuZCBjYW4g
b25seSBjb250YWluIEFTQ0lJIGxldHRlcnMsIG51bWJlcnMsIHRoZSAnKycgY2hhcmFjdGVyLAor
IHRoZSAnLScgY2hhcmFjdGVyLCBhbmQgdGhlICcuJyBjaGFyYWN0ZXIuCisgQW4gZXhjZXB0aW9u
IHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8gcmVnaXN0ZXIgYSB1cmwgc2NoZW1lIGhhbmRs
ZXIgZm9yIGFuIGludmFsaWQgVVJMIHNjaGVtZS4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJv
d24gaWYgeW91IHRyeSB0byByZWdpc3RlciBhIHVybCBzY2hlbWUgaGFuZGxlciBmb3IgYSBVUkwg
c2NoZW1lIHRoYXQgV2ViS2l0IGhhbmRsZXMgaW50ZXJuYWxseS4KKyBZb3UgY2FuIHVzZSArW1dL
V2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOl0gdG8gY2hlY2sgdGhlIGF2YWlsYWJpbGl0eSBvZiBh
IGdpdmVuIFVSTCBzY2hlbWUuCisgKi8KKy0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjoobnVs
bGFibGUgaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hl
bWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiBAYWJzdHJhY3QgUmV0dXJucyB0aGUgY3VycmVu
dGx5IHJlZ2lzdGVyZWQgdXJsIHNjaGVtZSBoYW5kbGVyIG9iamVjdCBmb3IgdGhlIGdpdmVuIFVS
TCBzY2hlbWUuCisgQHBhcmFtIHNjaGVtZSBUaGUgVVJMIHNjaGVtZSB0byBsb29rdXAuCisgKi8K
Ky0gKG51bGxhYmxlIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JV
UkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIEBpbnRlcmZhY2UgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAoV0tEZXByZWNhdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmlu
ZGV4IDU4YzE4NTIzODM3ZTc2YzU2NDc5YTIwOTE0NDBlYTkwZDg2YWMzOGIuLmQ2NzA2ZTMyMjBm
MzM0MjYyNTQ5N2Y5ZmY5MDM3OWVmNmEwNGI3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0K
QEAgLTMzLDExICszMywxMyBAQAogI2ltcG9ydCAiV0tQcmVmZXJlbmNlcy5oIgogI2ltcG9ydCAi
V0tQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV0tVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKKyNp
bXBvcnQgIldLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVn
aXN0cnkuaCIKICNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlu
a1N0b3JlLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCIKICNpbXBv
cnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1VSTFBhcnNlci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0o
SU9TKQpAQCAtOTQsNiArOTYsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiB7CiAgICAgV2ViS2l0OjpXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IF9hbHRlcm5hdGVXZWJW
aWV3Rm9yTmF2aWdhdGlvbkdlc3R1cmVzOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2dyb3Vw
SWRlbnRpZmllcjsKICAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPE5TU3RyaW5nPj4gX2Fw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKKyAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4+
Pj4gX3VybFNjaGVtZUhhbmRsZXJzOwogICAgIE5TVGltZUludGVydmFsIF9pbmNyZW1lbnRhbFJl
bmRlcmluZ1N1cHByZXNzaW9uVGltZW91dDsKICAgICBCT09MIF90cmVhdHNTSEExU2lnbmVkQ2Vy
dGlmaWNhdGVzQXNJbnNlY3VyZTsKICAgICBCT09MIF9yZXNwZWN0c0ltYWdlT3JpZW50YXRpb247
CkBAIC0zMjgsNiArMzMxLDggQEAgLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCiAg
ICAgY29uZmlndXJhdGlvbi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrID0g
c2VsZi0+X25lZWRzU3RvcmFnZUFjY2Vzc0Zyb21GaWxlVVJMc1F1aXJrOwogICAgIGNvbmZpZ3Vy
YXRpb24tPl9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHNlbGYtPl9vdmVycmlkZUNv
bnRlbnRTZWN1cml0eVBvbGljeTsKIAorICAgIGNvbmZpZ3VyYXRpb24tPl91cmxTY2hlbWVIYW5k
bGVycy5zZXQoW3NlbGYuX3VybFNjaGVtZUhhbmRsZXJzIG11dGFibGVDb3B5V2l0aFpvbmU6em9u
ZV0pOworCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CiAKQEAgLTQwMCw2ICs0MDUsMzMg
QEAgLSAodm9pZClfc2V0VmlzaXRlZExpbmtTdG9yZTooX1dLVmlzaXRlZExpbmtTdG9yZSAqKXZp
c2l0ZWRMaW5rU3RvcmUKICAgICBfdmlzaXRlZExpbmtTdG9yZS5zZXQodmlzaXRlZExpbmtTdG9y
ZSk7CiB9CiAKKy0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFu
ZGxlcj4pdXJsU2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1l
Cit7CisgICAgYXV0byAqdXJsU2NoZW1lSGFuZGxlcnMgPSBfdXJsU2NoZW1lSGFuZGxlcnMuZ2V0
KFtdIHsgcmV0dXJuIGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
IH0pOworCisgICAgaWYgKFtXS1dlYlZpZXcgaGFuZGxlc1VSTFNjaGVtZTp1cmxTY2hlbWVdKQor
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hlbWUgdGhhdCBXS1dlYlZpZXcgaGFuZGxlcyBuYXRpdmVs
eSIsIHVybFNjaGVtZV07CisKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdlYkNvcmU6OlVS
TFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1lKTsKKyAgICBpZiAoIWNh
bm9uaWNhbFNjaGVtZSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3Vt
ZW50RXhjZXB0aW9uIGZvcm1hdDpAIiclQCcgaXMgbm90IGEgdmFsaWQgVVJMIHNjaGVtZSIsIHVy
bFNjaGVtZV07CisKKyAgICBpZiAoW3VybFNjaGVtZUhhbmRsZXJzIG9iamVjdEZvcktleTooTlNT
dHJpbmcgKiljYW5vbmljYWxTY2hlbWUudmFsdWUoKV0pCisgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJVUkwgc2NoZW1lICclQCcg
YWxyZWFkeSBoYXMgYSByZWdpc3RlcmVkIHVybCBzY2hlbWUgaGFuZGxlciIsIHVybFNjaGVtZV07
CisKKyAgICBbdXJsU2NoZW1lSGFuZGxlcnMgc2V0T2JqZWN0OnVybFNjaGVtZUhhbmRsZXIgZm9y
S2V5OihOU1N0cmluZyAqKWNhbm9uaWNhbFNjaGVtZS52YWx1ZSgpXTsKK30KKworLSAobnVsbGFi
bGUgaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZToo
TlNTdHJpbmcgKil1cmxTY2hlbWUKK3sKKyAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdlYkNv
cmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1lKTsKKyAgICBp
ZiAoIWNhbm9uaWNhbFNjaGVtZSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGF1dG8gKnVy
bFNjaGVtZUhhbmRsZXJzID0gX3VybFNjaGVtZUhhbmRsZXJzLmdldChbXSB7IHJldHVybiBhZG9w
dE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOyB9KTsKKyAgICByZXR1cm4g
W3VybFNjaGVtZUhhbmRsZXJzIG9iamVjdEZvcktleTooTlNTdHJpbmcgKiljYW5vbmljYWxTY2hl
bWUudmFsdWUoKV07Cit9CisKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIApA
QCAtNDE1LDYgKzQ0NywxMSBAQCAtICh2b2lkKV9zZXRXZWJzaXRlRGF0YVN0b3JlOihfV0tXZWJz
aXRlRGF0YVN0b3JlICopd2Vic2l0ZURhdGFTdG9yZQogCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCiAKKy0gKE5TTXV0YWJsZURpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQgPFdLVVJMU2No
ZW1lSGFuZGxlcj4+ICopX3VybFNjaGVtZUhhbmRsZXJzCit7CisgICAgcmV0dXJuIF91cmxTY2hl
bWVIYW5kbGVycy5nZXQoW10geyByZXR1cm4gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdKTsgfSk7Cit9CisKICNpZiBQTEFURk9STShJT1MpCiAtIChXS1dlYlZpZXdD
b250ZW50UHJvdmlkZXJSZWdpc3RyeSAqKV9jb250ZW50UHJvdmlkZXJSZWdpc3RyeQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmgKaW5kZXggZWY4ZTIxMGI2YjEzMGRiZjAx
ZWFjZTQxMTQ0OGY5YmVmNmQyZDk0Ni4uZTQ4YzAyZDMyMTE4NWY4MDYxMDhkMmExZGIwNjc3ZDQx
ZDFhNzg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCkBAIC0zMiw2
ICszMiw4IEBACiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAoKQogCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TTXV0YWJsZURpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4+ICpfdXJsU2NoZW1lSGFuZGxlcnM7CisKICNpZiBQ
TEFURk9STShJT1MpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRDb250ZW50UHJv
dmlkZXJSZWdpc3RyeTopIFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5ICpfY29udGVu
dFByb3ZpZGVyUmVnaXN0cnk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
YWVhYzQ1MDkxMDA4MDg5ZTEzM2I0NmQ4ZWVmYTc4NThkZDk0Mzc3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisK
K0Bwcm90b2NvbCBXS1VSTFNjaGVtZUhhbmRsZXI7CisKK25hbWVzcGFjZSBBUEkgeworY2xhc3Mg
VVJMU2NoZW1lSGFuZGxlclRhc2s7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EgOiBwdWJsaWMgV2ViVVJMU2NoZW1lSGFuZGxlciB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E+IGNyZWF0ZShp
ZCA8V0tVUkxTY2hlbWVIYW5kbGVyPik7CisKKyAgICBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPiBh
cGlIYW5kbGVyKCkgY29uc3QgeyByZXR1cm4gbV9hcGlIYW5kbGVyLmdldCgpOyB9CisKK3ByaXZh
dGU6CisgICAgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+
KTsKKworICAgIHZvaWQgcGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2No
ZW1lSGFuZGxlclRhc2smKSBmaW5hbDsKKyAgICB2b2lkIHBsYXRmb3JtU3RvcFRhc2soV2ViUGFn
ZVByb3h5JiwgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2smKSBmaW5hbDsKKworICAgIFJldGFpblB0
cjxpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4gbV9hcGlIYW5kbGVyOworICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZjxBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNrPj4gbV9hcGlUYXNrczsKKworfTsg
Ly8gY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5k
bGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1l
SGFuZGxlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmZmU2YzdlNjE2NjIwMTI2OGU4Y2M0Yjc0NWYx
M2Q0OTcyMzFmYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tCkBAIC0wLDAgKzEsNjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxl
ckNvY29hLmgiCisKKyNpbmNsdWRlICJBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorI2luY2x1
ZGUgIldLVVJMU2NoZW1lSGFuZGxlci5oIgorI2luY2x1ZGUgIldLVVJMU2NoZW1lSGFuZGxlclRh
c2tJbnRlcm5hbC5oIgorI2luY2x1ZGUgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW5jbHVkZSAi
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hPiBXZWJV
UkxTY2hlbWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPiBhcGlI
YW5kbGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVSTFNjaGVtZUhhbmRsZXJD
b2NvYShhcGlIYW5kbGVyKSk7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6V2ViVVJM
U2NoZW1lSGFuZGxlckNvY29hKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+IGFwaUhhbmRsZXIpCisg
ICAgOiBtX2FwaUhhbmRsZXIoYXBpSGFuZGxlcikKK3sKK30KKwordm9pZCBXZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJM
U2NoZW1lSGFuZGxlclRhc2smIHRhc2spCit7CisgICAgYXV0byByZXN1bHQgPSBtX2FwaVRhc2tz
LmFkZCh0YXNrLmlkZW50aWZpZXIoKSwgQVBJOjpVUkxTY2hlbWVIYW5kbGVyVGFzazo6Y3JlYXRl
KHRhc2spKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgW21fYXBpSGFu
ZGxlci5nZXQoKSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgc3RhcnRUYXNrOndyYXBw
ZXIocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSldOworfQorCit2b2lkIFdlYlVSTFNjaGVt
ZUhhbmRsZXJDb2NvYTo6cGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrJiB0YXNrKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX2FwaVRh
c2tzLmZpbmQodGFzay5pZGVudGlmaWVyKCkpOworICAgIGlmIChpdGVyYXRvciA9PSBtX2FwaVRh
c2tzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9hcGlIYW5kbGVyLmdldCgpIHdl
YlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBzdG9wVGFzazp3cmFwcGVyKGl0ZXJhdG9yLT52
YWx1ZS5nZXQoKSldOworCisgICAgbV9hcGlUYXNrcy5yZW1vdmUoaXRlcmF0b3IpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMTIyZjZhMTQ1ZTk1YjYxNjYyYTY0Njk3NWViYzY2MGFjNGMyNmU2NC4uY2Ji
Mjk4ZDY0OGQwNmZjYjBiZmMyODM1ZjEwMzM2N2FlYTgzNWRhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQAogI2luY2x1ZGUg
IldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5o
IgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KQEAg
LTEyNyw2ICsxMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VS
TC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9W
YWxpZGF0aW9uQnViYmxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgog
I2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC01NTg4LDYgKzU1OTAsOSBAQCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0
ZXJzLm9ic2VydmVkTGF5b3V0TWlsZXN0b25lcyA9IG1fb2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVz
OwogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBtX292ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5OwogCisgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1f
dXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVI
YW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1ZS0+aWRlbnRpZmllcigpKTsK
KwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHBhcmFtZXRlcnMuaWNlQ2FuZGlkYXRlRmlsdGVy
aW5nRW5hYmxlZCA9IG1fcHJlZmVyZW5jZXMtPmljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQo
KTsKICNpZiBVU0UoTElCV0VCUlRDKQpAQCAtNjg0Myw1ICs2ODQ4LDQxIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQYWdl
UHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRs
ZXI+JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgYXV0byBjYW5vbmlj
YWxpemVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUp
OworICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsKKyAgICBBU1NFUlQoIVVSTFBhcnNl
cjo6aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOworCisgICAg
YXV0byBzY2hlbWVSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWUuYWRkKGNhbm9u
aWNhbGl6ZWRTY2hlbWUudmFsdWUoKSwgaGFuZGxlci5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChzY2hlbWVSZXN1bHQsIHNjaGVtZVJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGF1dG8gaWRl
bnRpZmllciA9IGhhbmRsZXItPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIGlkZW50aWZpZXJSZXN1
bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmFkZChpZGVudGlmaWVyLCBXVEZN
b3ZlKGhhbmRsZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGlkZW50aWZpZXJSZXN1bHQsIGlkZW50
aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpZGVudGlmaWVyLCBjYW5vbmljYWxp
emVkU2NoZW1lLnZhbHVlKCkpLCBtX3BhZ2VJRCk7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXIq
IFdlYlBhZ2VQcm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJpbmcmIHNj
aGVtZSkKK3sKKyAgICByZXR1cm4gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmdldChzY2hl
bWUpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRVUkxTY2hlbWVIYW5kbGVyVGFzayh1
aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgYXV0byBpdGVy
YXRvciA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuZmluZChoYW5kbGVySWRlbnRp
Zmllcik7CisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50
aWZpZXIuZW5kKCkpOworCisgICAgaXRlcmF0b3ItPnZhbHVlLT5zdGFydFRhc2soKnRoaXMsIHJl
c291cmNlSWRlbnRpZmllciwgcmVxdWVzdCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdG9w
VVJMU2NoZW1lSGFuZGxlclRhc2sodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV91cmxTY2hlbWVI
YW5kbGVyc0J5SWRlbnRpZmllci5maW5kKGhhbmRsZXJJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQo
aXRlcmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5lbmQoKSk7CisKKyAg
ICBpdGVyYXRvci0+dmFsdWUtPnN0b3BUYXNrKCp0aGlzLCByZXNvdXJjZUlkZW50aWZpZXIpOwor
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCBjMWE4MmRjOWQ1YWZkYmIxMzAxNzRiZGZiYzFhMDA5YTg1YmYxNGNmLi4z
N2RmNmJiNGFiZDg1YTJjZTg4OTY4OTQ5MDMyOGIxYTc5N2ViYTk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDIsNiArMjAyLDcgQEAgY2xhc3MgV2ViUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlOwogY2xh
c3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVu
dDsKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xh
c3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsK
QEAgLTExOTEsNiArMTE5Miw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2hvdWxkU2tpcFdh
aXRpbmdGb3JQYWludEFmdGVyTmV4dFZpZXdEaWRNb3ZlVG9XaW5kb3coYm9vbCBzaG91bGRTa2lw
KSB7IG1fc2hvdWxkU2tpcFdhaXRpbmdGb3JQYWludEFmdGVyTmV4dFZpZXdEaWRNb3ZlVG9XaW5k
b3cgPSBzaG91bGRTa2lwOyB9CiAKKyAgICB2b2lkIHNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hl
bWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYsIGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAg
ICBXZWJVUkxTY2hlbWVIYW5kbGVyKiB1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0
cmluZyYgc2NoZW1lKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYs
IFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0xNTk0LDYgKzE1
OTgsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAorICAgIHZvaWQgc3RhcnRVUkxTY2hl
bWVIYW5kbGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgcmVzb3Vy
Y2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lk
IHN0b3BVUkxTY2hlbWVIYW5kbGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWlu
dDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKKwogICAgIHZvaWQgaGFuZGxlQXV0b0ZpbGxCdXR0
b25DbGljayhjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgdm9pZCBmaW5pc2hJbml0aWFsaXppbmdX
ZWJQYWdlQWZ0ZXJQcm9jZXNzTGF1bmNoKCk7CkBAIC0xOTc5LDYgKzE5ODYsOSBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9pc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wgeyBmYWxzZSB9OwogICAg
ICAgICAKICAgICBXZWFrUHRyRmFjdG9yeTxXZWJQYWdlUHJveHk+IG1fd2Vha1B0ckZhY3Rvcnk7
CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNj
aGVtZUhhbmRsZXJzQnlTY2hlbWU7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNj
aGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYzkzYzQ4MDdkYTE5OWJmOTQ2N2MwMjZkZjM0OTVk
ODcyMDk5MzI2Li45NmIyZWZmMWMzZDdkNDNkYzUyMjU2Yzc1Mzg1MmYzYzY4YzZhZWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
QEAgLTQ5MCw0ICs0OTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAK
ICAgICBTZXRJc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0woYm9vbCBpc1VzaW5nSGlnaFBlcmZv
cm1hbmNlV2ViR0wpCisKKyAgICBTdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNrKHVpbnQ2NF90IGxv
YWRlcklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisgICAgU3RvcFVSTFNjaGVtZUhhbmRsZXJUYXNrKHVpbnQ2
NF90IGxvYWRlcklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcikKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lNTk5ZWMyZjNlMWZmMjEyMWE3YmZmMzc1MDExNjllY2EzNmI2YzUyCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIu
Y3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVXZWJVUkxTY2hlbWVIYW5kbGVySWRl
bnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IG5leHRJZGVudGlmaWVyID0gMTsKKyAg
ICByZXR1cm4gbmV4dElkZW50aWZpZXIrKzsKK30KKworV2ViVVJMU2NoZW1lSGFuZGxlcjo6V2Vi
VVJMU2NoZW1lSGFuZGxlcigpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVXZWJVUkxTY2hl
bWVIYW5kbGVySWRlbnRpZmllcigpKQoreworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyOjp+V2Vi
VVJMU2NoZW1lSGFuZGxlcigpCit7CisgICAgQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgpKTsKK30K
Kwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdl
LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKHJlc291cmNlSWRlbnRpZmll
ciwgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZSgqdGhpcywgcGFnZSwgcmVzb3VyY2VJ
ZGVudGlmaWVyLCByZXF1ZXN0KSk7CisgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKKwor
ICAgIHBsYXRmb3JtU3RhcnRUYXNrKHBhZ2UsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworfQor
Cit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwg
dWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rh
c2tzLmZpbmQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV90YXNr
cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXRlcmF0b3ItPnZhbHVlLT5zdG9wKCk7
CisKKyAgICBwbGF0Zm9ybVN0b3BUYXNrKHBhZ2UsIGl0ZXJhdG9yLT52YWx1ZSk7CisKKyAgICBt
X3Rhc2tzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzdiNjgwMDVlNjQ5MTI0MTk5NzA5ZTUyOGRjNmU4NmUxMmU3MDRjYwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAg
LTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVIYW5kbGVyPiB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViVVJMU2NoZW1lSGFuZGxlcigpOworCisgICAgdWludDY0X3QgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBzdGFydFRhc2so
V2ViUGFnZVByb3h5JiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIHVp
bnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CisKK3Byb3RlY3RlZDoKKyAgICBXZWJVUkxTY2hl
bWVIYW5kbGVyKCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RhcnRU
YXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrJikgPSAwOworCisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyIHsgMSB9OworCisg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrPj4gbV90YXNr
czsKKworfTsgLy8gY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcgorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVI
YW5kbGVyVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyMGFiM2Y5NTUxOTg1ZDgwZWM4MjJjNTQ3ODA5NDNm
Mjk3OWRlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2suY3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmgi
CisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFu
ZGxlci5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1JlZjxXZWJVUkxTY2hlbWVIYW5kbGVyVGFzaz4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6
OmNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2Us
IHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNr
KGhhbmRsZXIsIHBhZ2UsIHJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCkpOworfQorCitXZWJV
UkxTY2hlbWVIYW5kbGVyVGFzazo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2soV2ViVVJMU2NoZW1l
SGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCByZXNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICA6IG1fdXJsU2No
ZW1lSGFuZGxlcihoYW5kbGVyKQorICAgICwgbV9wYWdlKCZwYWdlKQorICAgICwgbV9pZGVudGlm
aWVyKHJlc291cmNlSWRlbnRpZmllcikKKyAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQoreworfQor
CitXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZSBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVI
YW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6VGFza0FscmVhZHlTdG9wcGVkOworCisgICAgaWYg
KG1fY29tcGxldGVkKQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4
Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZDsKKworICAgIGlmIChtX2RhdGFTZW50
KQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6
OkRhdGFBbHJlYWR5U2VudDsKKworICAgIG1fcmVzcG9uc2VTZW50ID0gdHJ1ZTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2
ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIs
IHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRp
b25UeXBlOjpOb25lOworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlw
ZSBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZl
cj4gYnVmZmVyKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6VGFza0FscmVhZHlTdG9wcGVkOworCisg
ICAgaWYgKG1fY29tcGxldGVkKQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZDsKKworICAgIGlmICghbV9y
ZXNwb25zZVNlbnQpCisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhj
ZXB0aW9uVHlwZTo6Tm9SZXNwb25zZVNlbnQ7CisKKyAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZUhhbmRsZXJUYXNrRGlk
UmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmll
ciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGJ1ZmZlci5wdHIoKSkpKTsKKyAgICBy
ZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vbmU7Cit9CisK
K1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlIFdlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBp
ZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4
Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZDsKKworICAgIGlmIChtX2NvbXBsZXRlZCkK
KyAgICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpD
b21wbGV0ZUFscmVhZHlDYWxsZWQ7CisKKyAgICBpZiAoIW1fcmVzcG9uc2VTZW50ICYmIGVycm9y
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2Vw
dGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OworCisgICAgbV9jb21wbGV0ZWQgPSB0cnVlOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lSGFuZGxlclRhc2tEaWRD
b21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCBl
cnJvcikpOworICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlw
ZTo6Tm9uZTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6cGFnZURlc3Ryb3ll
ZCgpCit7CisgICAgQVNTRVJUKG1fcGFnZSk7CisgICAgbV9wYWdlID0gbnVsbHB0cjsKKyAgICBt
X3N0b3BwZWQgPSB0cnVlOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpzdG9w
KCkKK3sKKyAgICBBU1NFUlQoIW1fc3RvcHBlZCk7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQzYmFjYjNjOWUxOTViNThh
ZjFlODA5OGUwMjBkNjY3MTJjNDNhOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaApAQCAtMCwwICsxLDc4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3Mg
UmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CitjbGFzcyBXZWJQYWdlUHJveHk7
CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8V2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2s+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBhZ2VQcm94
eSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OworCisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorCisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisKKyAgICBlbnVtIGNsYXNzIEV4Y2VwdGlvblR5cGUg
eworICAgICAgICBEYXRhQWxyZWFkeVNlbnQsCisgICAgICAgIENvbXBsZXRlQWxyZWFkeUNhbGxl
ZCwKKyAgICAgICAgVGFza0FscmVhZHlTdG9wcGVkLAorICAgICAgICBOb1Jlc3BvbnNlU2VudCwK
KyAgICAgICAgTm9uZSwKKyAgICB9OworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZVJlc3Bv
bnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICBFeGNlcHRpb25UeXBl
IGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+KTsKKyAgICBFeGNlcHRp
b25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKworICAg
IHZvaWQgc3RvcCgpOworICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOworCitwcml2YXRlOgorICAg
IFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJv
eHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKKworICAgIFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyPiBtX3VybFNjaGVtZUhhbmRsZXI7Cisg
ICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworICAg
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CisgICAgYm9vbCBtX3N0b3BwZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9kYXRhU2VudCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2NvbXBsZXRlZCB7IGZhbHNlIH07Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MTBhMGQzY2Y4ZWQ5YmQ5MzVjOTkxNWRm
NjZhNGM1ZDQ1NDdkOTM0Li5mZTk1Y2Q3YjJlZWExODkzOGU4YzI0N2NjOTdiYWE2NTRjOTFjNGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDU1LDYgKzEwNTUsMTQgQEAKIAkJNTFEMDJGNkExMzJFQzczNzAwQkVBQTk2IC8q
IFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2NzEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFi
YXNlTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFEMDJGNkIxMzJFQzczNzAwQkVBQTk2IC8qIFdlYklj
b25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY4MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJ
Y29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxRDAyRjZDMTMy
RUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2OTEzMkVDNzM3MDBC
RUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oICovOyB9OworCQk1MUQxMjQy
MzFFNkQzNEExMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQyMTFFNkQz
NDlBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHAgKi87IH07CisJ
CTUxRDEyNDI4MUU2RDNGNUQwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDI0MUU2RDND
QzMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCAqLzsgfTsKKwkJNTFEMTI0MkMx
RTZENDFGRDAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQyQTFFNkQ0MUJDMDAy
QjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCAqLzsgfTsKKwkJNTFEMTI0MzMx
RTZERTZDQTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDMyMUU2REU1MjEwMDJC
MjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0gKi87IH07CisJCTUxRDEyNDM0MUU2
REY2NDMwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJEMUU2RERERDcwMDJCMjgyMCAvKiBX
S1VSTFNjaGVtZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CisJCTUxRDEyNDM1MUU2REY2NTIwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRs
ZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUQxMjQyRjFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNTFEMTI0MzYxRTZE
RkIzOTAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQzMDFFNkREREQ3MDAyQjI4MjAg
LyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSAqLzsgfTsKKwkJNTFEMTI0M0ExRTZFMEFBQjAw
MkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBB
UElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi87IH07CiAJCTUxRDEzMDUzMTM4MkVBQzAwMDM1
MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1S
ZXF1ZXN0RGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU0MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJ
dGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAq
LzsgfTsKIAkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMw
NTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwICovOyB9OwpAQCAt
MTA2OSw2ICsxMDc3LDcgQEAKIAkJNTFFMzUyMDIxODBGNUQxRTAwRTUzQkU5IC8qIERhdGFiYXNl
UHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRTM1MjAxMTgwRjVEMUUwMEU1M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3NNYWMubW0gKi87
IH07CiAJCTUxRTM1MjA5MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VFbnRyeVBv
aW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFF
MzUyMDgxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW0gKi87
IH07CiAJCTUxRTM5OTA2MUQ2RjU0QzcwMDlDODgzMSAvKiBVSUdhbWVwYWRQcm92aWRlckNvY29h
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzk5
MDUxRDZGNTRDNTAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gKi87IH07CisJ
CTUxRThCNjhFMUU3MTI4NzcwMDFCNzEzMiAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU4QjY4RDFF
NzEyODczMDAxQjcxMzIgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovOyB9OwogCQk1
MUU5NDk5NzFENzYyMTEzMDBFQzlFQjkgLyogVUlHYW1lcGFkUHJvdmlkZXJJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU5NDk5NjFENzYxQ0M3
MDBFQzlFQjkgLyogVUlHYW1lcGFkUHJvdmlkZXJJT1MubW0gKi87IH07CiAJCTUxRUZDMUNGMTUy
NEU2MjUwMEM5QTkzOCAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENTQxNTIxMTE4NjAwQzFC
QTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGMDYwRTAxNjU0MzE3RjAwRjMyODFCIC8q
IFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJj
ZUxvYWRlck1lc3NhZ2VzLmggKi87IH07CkBAIC0zMjUzLDYgKzMyNjIsMjEgQEAKIAkJNTFEMDJG
NjcxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDAyRjY4MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJ
Y29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAv
KiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MjExRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxRDEyNDIyMUU2RDM0OUEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFz
a1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MjQx
RTZEM0NDMzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDI1MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxT
Y2hlbWVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNj
aGVtZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MjcxRTZE
M0YxRjAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDJBMUU2RDQxQkMwMDJCMjgyMCAvKiBXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFEMTI0MkIxRTZENDFCQzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MkQxRTZERERENzAwMkIy
ODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1VSTFNjaGVtZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTFEMTI0MkYxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQzMDFFNkREREQ3MDAyQjI4MjAgLyog
V0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxRDEyNDMxMUU2REU1MjEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVy
Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDMyMUU2REU1
MjEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDM3MUU2REZEMkEwMDJCMjgyMCAvKiBX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVI
YW5kbGVyVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElV
UkxTY2hlbWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
RDEyNDM5MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyog
U2VjSXRlbVJlcXVlc3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVJlcXVlc3REYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVzcG9uc2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNl
Y0l0ZW1SZXNwb25zZURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI3
MSw2ICszMjk1LDcgQEAKIAkJNTFFMzUyMDcxODBGNUQ2MTAwRTUzQkU5IC8qIEluZm8ucGxpc3Qg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBs
aXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YWJhc2VTZXJ2aWNl
RW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMzk5MDUxRDZG
NTRDNTAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVSUdhbWVwYWRQcm92aWRlckNvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUU4QjY4RDFFNzEyODczMDAxQjcxMzIgLyogV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MUU5NDk5NjFENzYxQ0M3MDBFQzlFQjkgLyogVUlHYW1lcGFkUHJvdmlkZXJJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVSUdhbWVwYWRQcm92
aWRlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGMDYwREQxNjU0MzE3
NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODFDIC8qIFdlYlJU
Q1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSVENTb2Nr
ZXRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTA1
OCw2ICs1MDgzLDggQEAKIAkJCQkyREFGNEZGQTFCNjM2MTgxMDA2MDEzRDYgLyogVmlld0dlc3R1
cmVDb250cm9sbGVyLmNwcCAqLywKIAkJCQkyRDEyNUM1QzE4NTdFQTA1MDAzQkEzQ0IgLyogVmll
d0dlc3R1cmVDb250cm9sbGVyLmggKi8sCiAJCQkJMkQxQjVENUExODU4NjU5OTAwNkM2NTk2IC8q
IFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiAqLywKKwkJCQk1MUQxMjQzMTFFNkRF
NTIxMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmggKi8sCisJCQkJNTFEMTI0
MzIxRTZERTUyMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbSAqLywKIAkJ
CQkxQUMwMjczRTE5NjYyMkQ2MDBDMTJCNzUgLyogV2ViUGFnZVByb3h5Q29jb2EubW0gKi8sCiAJ
CQkJN0M0Njk0Q0IxQTRCNTEwQTAwQUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94eUNvY29hLm1t
ICovLAogCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAvKiBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkuaCAqLywKQEAgLTU1NDAsNiArNTU2NywxMCBAQAogCQkJCTkzRjU0OUI1MUUz
MTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAqLywKIAkJCQkxQUQ4
NzkwOTE4QjZDMzhBMDA2Q0FGRDcgLyogV0tVSURlbGVnYXRlLmggKi8sCiAJCQkJMzc0MzkyNTcx
OEJDNEM2MDAwMUM4Njc1IC8qIFdLVUlEZWxlZ2F0ZVByaXZhdGUuaCAqLywKKwkJCQk1MUQxMjQy
RDFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyLmggKi8sCisJCQkJNTFEMTI0
MkYxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLywKKwkJCQk1
MUQxMjQzMDFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSAqLywK
KwkJCQk1MUQxMjQzNzFFNkRGRDJBMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFza0lu
dGVybmFsLmggKi8sCiAJCQkJMUFGQTNBQzcxOEU2MUM2MTAwM0NDQkFFIC8qIFdLVXNlckNvbnRl
bnRDb250cm9sbGVyLmggKi8sCiAJCQkJMUFGQTNBQzYxOEU2MUM2MTAwM0NDQkFFIC8qIFdLVXNl
ckNvbnRlbnRDb250cm9sbGVyLm1tICovLAogCQkJCTFBQUYwOEEzMTkyNjgyREEwMEI2MzkwQyAv
KiBXS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmggKi8sCkBAIC02NDc0LDYgKzY1MDUs
MTAgQEAKIAkJCQlCQzdCNjIxMzEyQTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHku
aCAqLywKIAkJCQkyRDVDOUQwMzE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuY3Bw
ICovLAogCQkJCTJENUM5RDA0MTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5oICov
LAorCQkJCTUxRDEyNDJBMUU2RDQxQkMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkuY3BwICovLAorCQkJCTUxRDEyNDJCMUU2RDQxQkMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuaCAqLywKKwkJCQk1MUQxMjQyMTFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJM
U2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHAgKi8sCisJCQkJNTFEMTI0MjIxRTZEMzQ5QTAwMkIy
ODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaCAqLywKIAkJCQlCQ0EwRUY3RTEy
MzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuY3BwICovLAogCQkJCUJDQTBFRjdEMTIzMzFF
NzgwMDdEM0NGQiAvKiBXZWJVbmRvU3RlcC5oICovLAogCQkJKTsKQEAgLTY2MzksNiArNjY3NCwx
MCBAQAogCQkJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwICovLAogCQkJCTdBOUNEOEMxMUM3Nzk4NDkwMEQ5RjZDNyAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLywKIAkJCQk3QTlDRDhDMjFDNzc5QUQ2MDBE
OUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLm1lc3NhZ2VzLmluICovLAor
CQkJCTUxRDEyNDI0MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCAq
LywKKwkJCQk1MUQxMjQyNTFFNkQzQ0MzMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5o
ICovLAorCQkJCTUxRThCNjhEMUU3MTI4NzMwMDFCNzEzMiAvKiBXZWJVUkxTY2hlbWVIYW5kbGVy
VGFzay5jcHAgKi8sCisJCQkJNTFEMTI0MjcxRTZEM0YxRjAwMkIyODIwIC8qIFdlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFVJUHJvY2VzczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02Njg5LDYgKzY3MjgsOCBAQAogCQkJCTFBRkRFNjVGMTk1
NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuY3BwICovLAogCQkJCTFBRkRFNjYwMTk1
NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuaCAqLywKIAkJCQkxQTRENjY0NzE4QTJE
OTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCAqLywKKwkJCQk1MUQxMjQzODFFNkRGREI5MDAy
QjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovLAorCQkJCTUxRDEyNDM5MUU2
REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovLAogCQkJCTdDODlE
MkIxMUE2QjA2OEMwMDNBNUZERSAvKiBBUElVc2VyQ29udGVudEV4dGVuc2lvbi5jcHAgKi8sCiAJ
CQkJN0M4OUQyQjIxQTZCMDY4QzAwM0E1RkRFIC8qIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uLmgg
Ki8sCiAJCQkJN0MzQTA2QTUxQUFCOTAzRTAwOUQ3NEJBIC8qIEFQSVVzZXJDb250ZW50RXh0ZW5z
aW9uU3RvcmUuY3BwICovLApAQCAtODE1Niw2ICs4MTk3LDcgQEAKIAkJCQkwRkRDRDdGNzFENDdF
OTJBMDA5RjA4QkMgLyogTG9nSW5pdGlhbGl6YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NkQ4NkMyMURGNzUyNjUwMDc3NDVFOCAvKiBNYWNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQb3J0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MUQxMjQzNDFFNkRGNjQzMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBDMzgyNjkgLyogTWFjaFV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDUxQTQ4RTZDNjAwNTRFRjc0IC8qIE1hbmFn
ZWRDb25maWd1cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTkzM0RFRjE5NjVFQjMx
MDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjgwLDYgKzgz
MjIsNyBAQAogCQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgzMiAvKiBQcm9jZXNzVGhyb3R0bGVy
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE4QTlFRjE5MDdBRDZGMDBGN0M5MkIgLyog
UXVpY2tMb29rRG9jdW1lbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDQ3QjU2RDE4MTA3
MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxRDEyNDM1MUU2REY2NTIwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxNkFFQTE2
NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQyOUVDRDAxOTJGMkMyRTAwOTg0Qjc4IC8qIFJlbW90ZUxheWVyVHJlZURpc3BsYXlS
ZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05NDg0LDYgKzk1MjcsNyBAQAogCQkJ
CTFBNTcwNEY3MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTFBNEZFNUIxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25s
b2FkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5QTg3MzkxOEJCRkUwRjAwNTg4QUYyIC8qIF9X
S0VsZW1lbnRBY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQyQzFFNkQ0MUZEMDAy
QjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBRDAxQkM4MTkwNUQzN0UwMEM5QzQ1RiAvKiBfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTMxN0ZFN0NFMUM0ODdEQjgwMEEwQ0E4OSAvKiBfV0tFeHBl
cmltZW50YWxGZWF0dXJlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzczRDEyMjIxOEE0NzMwMTAw
NjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLm1tIGluIFNvdXJjZXMgKi8sCkBAIC05NjM1LDYgKzk2
NzksNyBAQAogCQkJCTJEQTA0OUI3MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FS
ZW1vdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDNzVBMUUxQjMzNjk1RTAwNTY3NDVCIC8q
IEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxQzBDOTc1
MURERDc2MDMwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNTFEMTI0MjMxRTZEMzRBMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNr
UHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMzUxQ0ExODBGMkNDQzAwRTUzQkU5IC8q
IElEQlV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzIwNEVFMjExQzgzRTk4MDA4
RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM1RUVCQTEx
Mjc3NjFDQzAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBT
b3VyY2VzICovLApAQCAtOTgwNCw2ICs5ODQ5LDcgQEAKIAkJCQkxQTBFQzc1RjEyNEJDN0IyMDA3
RUY0QTUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ5
MEJCMTI4MUM5MzEwMDFFQjk2MiAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQTA0M0I1RDEyNEQ1RTlEMDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDM2MUU2REZCMzkw
MDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUEwNDNEQzIxMjRGRjg3NTAwRkZCRkI1IC8qIFBsdWdpblByb3h5LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTFBMkQ5MjIxMTI4MURDMUIwMDFFQjk2MiAvKiBQbHVnaW5Qcm94eU1hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTFBOEVGQTcwMTI1MkI4NDEwMEY3MDY3RiAvKiBQbHVnaW5Qcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5NTcsNiArMTAwMDMsNyBAQAog
CQkJCTFBQTgzRjZDMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNEMTlBMjZEMUExM0U4MkEwMDhENjUwRSAvKiBXZWJEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTVCMUM1NDE4OTg3RURG
MDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFE
MTI0MjgxRTZEM0Y1RDAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMxMTFBNUQxMTJGNEZCQjAwMzM3QkFCIC8qIFdlYkRyYWdDbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQzU3NEEzNzcxMkU2MDk5RDAwMkRGRTk4IC8qIFdlYkRyYWdD
bGllbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0EwRUZBMDEyMzMyNjQyMDA3RDNDRkIg
LyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk5ODYsNiArMTAw
MzMsNyBAQAogCQkJCUJDMUJFMUUxMTJENTRBNDEwMDA0QTIyOCAvKiBXZWJHZW9sb2NhdGlvbkNs
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBFNUZFNjEyRDY5NzE2MDAxMkE3MkEgLyog
V2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MDYxMTJE
NkJBOTEwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0MzMxRTZERTZDQTAwMkIyODIwIC8qIFdlYlVSTFNj
aGVtZUhhbmRsZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNTRDQUNDMTJENjQyOTEw
MDVDNjdCMCAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCQzBFNjE4MjEyRDZDQjFEMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDEzMDc1QUUxREU4NUY1
ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMTAy
LDYgKzEwMTUwLDcgQEAKIAkJCQkyREE5NDRCMDE4ODRFOUJBMDBFRDg2REIgLyogV2ViUHJvY2Vz
c1Byb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMTMwNTgxMzgyRjEwNTAwMzUxRURE
IC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRUU3QUQwMTI4
MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNTFEMTI0M0ExRTZFMEFBQjAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhh
bmRsZXJUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMUUwOTMzMTg4NjFEMzgwMEQyREM0
OSAvKiBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEy
RjU4OUMxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYlByb3RlY3Rpb25TcGFjZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBMUM1MTJDODE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVpY2tMb29rSGFuZGxl
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAyODMsNiArMTAzMzIsNyBAQAogCQkJCUJD
ODU4MDYyMTJCODUwNTcwMEVERUIyRSAvKiBXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRDU5N0Q2MTEyQjU2REMwMEVDOEMyMyAvKiBXS1BhZ2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4OUQyOUIxQTY3ODM3QjAwM0E1RkRFIC8qIFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFFOEI2OEUxRTcxMjg3NzAw
MUI3MTMyIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDN0I2MzM4MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VHcm91cC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0UxN0I3RDEzODFGMTE3MDAxMkE2NDEgLyogV0tQYWdlUHJpdmF0ZU1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTJENkFCNTQyMTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VO
dW1iZXJJbmRpY2F0b3IubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDA3NTll
N2MzZTk3ZTUxMDBhZTc4MTEyYzhjMmJlNWY0YTQ2YzVjMzMuLjJiODZiMjY5ZGVlNTQzMjVlMmY2
Y2ZkZTYzODE2OWY4MTg5NmU5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMzksOCArMzksMTEgQEAK
ICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2Vi
UmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCIK
KyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkUmVz
b3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+CkBA
IC0xOTQsNiArMTk3LDE2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChS
ZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgfQogI2VuZGlm
CiAKKyAgICBpZiAod2ViUGFnZSkgeworICAgICAgICBpZiAoYXV0byogaGFuZGxlciA9IHdlYlBh
Z2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVy
bCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKSkgeworICAgICAgICAgICAg
TE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBieSBhIFVJUHJvY2VzcyB1cmwg
c2NoZW1lIGhhbmRsZXIuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVy
LCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGJ5IGEgVUlQcm9jZXNzIHVybCBz
Y2hlbWUgaGFuZGxlciAoZnJhbWUgPSAlcCwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJl
c291cmNlTG9hZGVyLmZyYW1lKCksIGlkZW50aWZpZXIpOworCisgICAgICAgICAgICBoYW5kbGVy
LT5zdGFydE5ld1Rhc2socmVzb3VyY2VMb2FkZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgfQorCiAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3Mp
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1
bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIHdpdGggcHJpb3JpdHkgJWQiLCByZXNvdXJjZUxv
YWRlci51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4ocmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsKIAogICAgIENvbnRlbnRTbmlmZmlu
Z1BvbGljeSBjb250ZW50U25pZmZpbmdQb2xpY3kgPSByZXNvdXJjZUxvYWRlci5zaG91bGRTbmlm
ZkNvbnRlbnQoKSA/IFNuaWZmQ29udGVudCA6IERvTm90U25pZmZDb250ZW50OwpAQCAtMjYwLDYg
KzI3MywxMSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpyZW1vdmUoUmVzb3VyY2VMb2FkZXIq
IHJlc291cmNlTG9hZGVyKQogICAgICAgICBtX2ludGVybmFsbHlGYWlsZWRSZXNvdXJjZUxvYWRl
cnMucmVtb3ZlKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAg
IGlmIChhdXRvIHRhc2sgPSBtX3VybFNjaGVtZUhhbmRsZXJUYXNrcy50YWtlKHJlc291cmNlTG9h
ZGVyLT5pZGVudGlmaWVyKCkpKSB7CisgICAgICAgIHRhc2stPnN0b3BMb2FkaW5nKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gcmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICBpZiAoIWlkZW50aWZp
ZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmgKaW5kZXggYjdlMWIxOTk0MDA3M2YyZTY0YzFmNGRkODEyM2RhZTI3NTIx
OGVjZC4uMjkwNDc1YjYxOTMzNjk5NzhkYjUyNTMzMGVlM2JhNDI3YzJjMzhmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Owog
dHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogCiBjbGFzcyBXZWJMb2Fk
ZXJTdHJhdGVneSA6IHB1YmxpYyBXZWJDb3JlOjpMb2FkZXJTdHJhdGVneSB7CkBAIC03NCw2ICs3
NSw3IEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViTG9hZGVyU3RyYXRlZ3k+IG1f
aW50ZXJuYWxseUZhaWxlZExvYWRUaW1lcjsKICAgICAKICAgICBIYXNoTWFwPHVuc2lnbmVkIGxv
bmcsIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4+IG1fd2ViUmVzb3VyY2VMb2FkZXJzOworICAg
IEhhc2hNYXA8dW5zaWduZWQgbG9uZywgc3RkOjp1bmlxdWVfcHRyPFdlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk+PiBtX3VybFNjaGVtZUhhbmRsZXJUYXNrczsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IGMzMGJhMTg3NmY2Y2FiNWE0MmM0ODE1NDE2OGFmMGViMmYxODJiNmMuLmU0ZDVj
MjdmZGQyM2ZjZTdhOTBmOWZmMGYxNmZlZWFhMTJlNmI0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTExMCw2ICsxMTAsNyBAQAogI2lu
Y2x1ZGUgIldlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlNvY2tldFBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmgiCisjaW5j
bHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViVW5kb1N0ZXAu
aCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJXZWJV
c2VyTWVkaWFDbGllbnQuaCIKQEAgLTU2MSw2ICs1NjIsOSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAg
ICAgICAgIGVuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0ludGVyZmFjZXMoKTsKICNlbmRpZgog
I2VuZGlmCisKKyAgICBmb3IgKGF1dG8gaXRlcmF0b3IgOiBwYXJhbWV0ZXJzLnVybFNjaGVtZUhh
bmRsZXJzKQorICAgICAgICByZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoaXRlcmF0b3IudmFsdWUs
IGl0ZXJhdG9yLmtleSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVpbml0aWFsaXplV2ViUGFnZShX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKQEAgLTU3MzksNCArNTc0Myw0
MiBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGJvb2wgdXNlSWNvbkxv
YWRpbmdDbGllbnQpCiAgICAgc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQmPihjb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKSkuc2V0VXNlSWNvbkxvYWRpbmdD
bGllbnQodXNlSWNvbkxvYWRpbmdDbGllbnQpOwogfQogCitXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkqIFdlYlBhZ2U6OnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWUpCit7CisgICAgcmV0dXJuIG1fc2NoZW1lVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0
KHNjaGVtZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKHVp
bnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBh
dXRvIHNjaGVtZVJlc3VsdCA9IG1fc2NoZW1lVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuYWRk
KHNjaGVtZSwgc3RkOjptYWtlX3VuaXF1ZTxXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk+KCp0aGlz
LCBoYW5kbGVySWRlbnRpZmllcikpOworICAgIEFTU0VSVChzY2hlbWVSZXN1bHQuaXNOZXdFbnRy
eSk7CisKKyAgICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVt
ZUhhbmRsZXJQcm94eU1hcC5hZGQoaGFuZGxlcklkZW50aWZpZXIsIHNjaGVtZVJlc3VsdC5pdGVy
YXRvci0+dmFsdWUuZ2V0KCkpOworICAgIEFTU0VSVChpZGVudGlmaWVyUmVzdWx0LmlzTmV3RW50
cnkpOworfQorCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgYXV0byogaGFuZGxl
ciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRl
bnRpZmllcik7CisgICAgQVNTRVJUKGhhbmRsZXIpOworCisgICAgaGFuZGxlci0+dGFza0RpZFJl
Y2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOworfQorCit2b2lkIFdlYlBh
Z2U6OnVybFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklk
ZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCit7CisgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1l
SGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CisgICAgQVNTRVJUKGhhbmRs
ZXIpOworCisgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJZGVudGlmaWVyLCBk
YXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworfQorCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZUhh
bmRsZXJUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBhdXRv
KiBoYW5kbGVyID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhh
bmRsZXJJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoaGFuZGxlcik7CisKKyAgICBoYW5kbGVyLT50
YXNrRGlkQ29tcGxldGUodGFza0lkZW50aWZpZXIsIGVycm9yKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCBjODMyZTJjY2VjODlmNzk2NzgzYzI4MDRhNGY0MmI1NzYxY2QyOWFlLi4zN2Q4MTQ0NzM5
ZjU3YzYwMDY3NzYxZDdjMzc4NTE5OWE0MGE5YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJTaGFy
ZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIlVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRs
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0aW9uYXJ5
UG9wdXBJbmZvLmg+CkBAIC0xNzgsNiArMTc5LDcgQEAgY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50
OwogY2xhc3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBXZWJHZXN0dXJlRXZlbnQ7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OwogY2xhc3Mg
V2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudDsKIGNsYXNzIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyOwpAQCAtOTY5LDYgKzk3MSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbigpOwogI2VuZGlmCiAKKyAgICBXZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkqIHVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3Ry
aW5nJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEyNjIsNiArMTI2NiwxMiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoY29uc3QgU3Ry
aW5nJik7CiAjZW5kaWYKIAorICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKHVpbnQ2
NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKworICAgIHZvaWQgdXJsU2No
ZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgaGFuZGxlcklkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJik7CisgICAgdm9pZCB1cmxTY2hlbWVIYW5kbGVyVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2
NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCB1cmxTY2hlbWVIYW5kbGVyVGFza0RpZENvbXBs
ZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworCiAgICAgdWludDY0X3QgbV9wYWdlSUQ7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwpAQCAtMTU0MCw2
ICsxNTUwLDkgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IFdlYkNvcmU6OlVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogCiAgICAgY29uc3QgU3RyaW5nIG1fb3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CisKKyAgICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlx
dWVfcHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eT4+IG1fc2NoZW1lVG9VUkxTY2hlbWVIYW5k
bGVyUHJveHlNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5Kj4gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzQ2ZTI1ZDlkMDdlMmNlNjlmMDMyY2I1
NGFlNTk0Njc3Njc1YTZiZS4uY2Y0ZjQ2NTYyYjViOGFhNmI4MTVjOTg0M2NiMGI3YWM5MmI3NmVj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTQ2OSw0ICs0NjksMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBM
ZWdhY3lSZWNlaXZlciB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgRGlkUmVjZWl2ZVBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoU3RyaW5nIHBhc3N3b3JkKQogI2VuZGlmCisKKyAgICBS
ZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllciwgU3RyaW5nIHNjaGVt
ZSkKKworICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90
IHByb3ZpZGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisgICAgVVJMU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBwcm92aWRlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlm
aWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBVUkxTY2hlbWVIYW5kbGVyVGFza0Rp
ZENvbXBsZXRlKHVpbnQ2NF90IHByb3ZpZGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMGE4ZDEyYzU1ZjcyZmE2Y2VjNTVhNzc1NTAxNDg4NDg0
ODI1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtMCwwICsxLDgzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5oIgorCisjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6V2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5KFdlYlBhZ2UmIHBhZ2UsIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAgOiBtX3dlYlBhZ2Uo
cGFnZSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQorCitXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHk6On5XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkoKQoreworICAgIEFTU0VS
VChtX3Rhc2tzLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5
OjpzdGFydE5ld1Rhc2soUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKK3sKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fdGFza3MuYWRkKGxvYWRlci5pZGVudGlmaWVyKCksIHN0ZDo6bWFrZV91bmlxdWU8V2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eT4oKnRoaXMsIGxvYWRlcikpOworICAgIEFTU0VSVChy
ZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLT5zdGFydExv
YWRpbmcoKTsKK30KKworCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit7CisgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRhc2tJZGVu
dGlmaWVyKTsKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybjsKKworICAgIHRhc2stPmRp
ZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxl
clByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgdGFza0lkZW50aWZpZXIsIHNpemVf
dCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQoreworICAgIGF1dG8qIHRhc2sgPSBtX3Rhc2tz
LmdldCh0YXNrSWRlbnRpZmllcik7CisgICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm47CisK
KyAgICB0YXNrLT5kaWRSZWNlaXZlRGF0YShzaXplLCBkYXRhKTsKK30KKwordm9pZCBXZWJVUkxT
Y2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB0YXNrID0gbV90YXNr
cy50YWtlKHRhc2tJZGVudGlmaWVyKTsKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybjsK
KworICAgIHRhc2stPmRpZENvbXBsZXRlKGVycm9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0NmMxMjZjNDViNmM2ZTk1
N2M4YjNjM2RmZmMxMzk2NDRlYTE2MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaApAQCAtMCwwICsx
LDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlTG9hZGVy
OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Ns
YXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSB7CitwdWJsaWM6
CisgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KFdlYlBhZ2UmLCB1aW50NjRfdCBpZGVudGlm
aWVyKTsKKyAgICB+V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KCk7CisKKyAgICB2b2lkIHN0YXJ0
TmV3VGFzayhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOworCisgICAgdWludDY0X3QgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFdlYlBhZ2UmIHBhZ2Uo
KSB7IHJldHVybiBtX3dlYlBhZ2U7IH0KKworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVy
LCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOworICAgIHZvaWQgdGFza0RpZENvbXBsZXRl
KHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworICAgIHVpbnQ2NF90IG1faWRl
bnRpZmllciB7IDAgfTsKKworICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgc3RkOjp1bmlxdWVf
cHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk+PiBtX3Rhc2tzOworfTsgLy8gY2xhc3Mg
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYjljNjQ5MTI1NDdiMGUz
MWZkZDRlNGJlOGExMjgzYzNlZDUxMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHAKQEAg
LTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgiCisKKyNpbmNsdWRlICJXZWJQYWdlLmgi
CisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkTWV0cmljcy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVy
VGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwgUmVzb3VyY2VMb2Fk
ZXImIGxvYWRlcikKKyAgICA6IG1fdXJsU2NoZW1lSGFuZGxlcihoYW5kbGVyKQorICAgICwgbV9j
b3JlTG9hZGVyKCZsb2FkZXIpCisgICAgLCBtX3JlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkKK3sK
K30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdGFydExvYWRpbmcoKQor
eworICAgIEFTU0VSVChtX2NvcmVMb2FkZXIpOworICAgIG1fdXJsU2NoZW1lSGFuZGxlci5wYWdl
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNr
KG1fdXJsU2NoZW1lSGFuZGxlci5pZGVudGlmaWVyKCksIG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpLCBtX3JlcXVlc3QpKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5
OjpzdG9wTG9hZGluZygpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fdXJsU2NoZW1lSGFuZGxlci5wYWdlKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTdG9wVVJMU2NoZW1lSGFuZGxlclRhc2sobV91cmxTY2hlbWVIYW5kbGVyLmlkZW50
aWZpZXIoKSwgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKTsKKyAgICBtX2NvcmVMb2FkZXIg
PSBudWxscHRyOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBp
ZiAoIW1fY29yZUxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb3JlTG9hZGVyLT5k
aWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBk
YXRhKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+
KGRhdGEpLCBzaXplLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOworfQor
Cit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZENvbXBsZXRlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIG1fY29yZUxvYWRlci0+
ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgZWxzZQorICAgICAg
ICBtX2NvcmVMb2FkZXItPmRpZEZhaWwoZXJyb3IpOworCisgICAgbV9jb3JlTG9hZGVyID0gbnVs
bHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNr
UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iOWEzNjg4ZDEwYTZmYTYzYWVlZTNiMmY5ZDNmM2Q0OTJlNGU3
MjIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaApAQCAtMCwwICsxLDYwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVz
b3VyY2VMb2FkZXI7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OworCitjbGFzcyBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5IHsKK3B1YmxpYzoKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVy
VGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyJik7CisKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KKworICAgIHZvaWQgc3RhcnRMb2FkaW5nKCk7Cisg
ICAgdm9pZCBzdG9wTG9hZGluZygpOworCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
c2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKworcHJpdmF0ZToKKyAgICBXZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkmIG1fdXJsU2NoZW1lSGFuZGxlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXI+IG1fY29yZUxvYWRlcjsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
bV9yZXF1ZXN0OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303946</attachid>
            <date>2017-03-09 12:12:01 -0800</date>
            <delta_ts>2017-03-09 12:26:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169422-20170309121201.patch</filename>
            <type>text/plain</type>
            <size>103908</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZjNzNkM2VlY2NmNjYw
ZTA0Yjk1NTUxZDRiMmQ1ZmIwZDQ1ZTY3OC4uYzk5MjdkYmY5N2JiNDQ2OTE4MWQ2NWRiZTg0Zjk0
MWZkN2E3NGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAzLTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tVUkxTY2hlbWVI
YW5kbGVyIEFQSSBmb3IgaGFuZGxpbmcgY3VzdG9tIHByb3RvY29scy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1VSTFBhcnNlci5oOgorCiAyMDE3LTAzLTA4ICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkNyeXB0b10gSW1wbGVtZW50IFN1YnRs
ZUNyeXB0bzo6RGVyaXZlS2V5IG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDlmYTU1YmU3NzY1NDVhOGU0
ODk5ZTA2MTdjZjYwOWUzN2U1OTVhOWEuLmFkYjkwNmFjOWRjZDFjYjg5ZWYwOGRmOTY1YzJlNjgy
NmVlZjFkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzkgQEAKKzIwMTctMDMtMDkgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1VSTFNjaGVtZUhh
bmRsZXIgQVBJIGZvciBoYW5kbGluZyBjdXN0b20gcHJvdG9jb2xzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIHR3byBuZXcg
cHJvdG9jb2xzIHRvIHRoZSBXSzIgQVBJIHN1cmZhY2U6CisgICAgICAgIC0gV0tVUkxTY2hlbWVI
YW5kbGVyCisgICAgICAgIC0gV0tVUkxTY2hlbWVIYW5kbGVyVGFzaworICAgICAgICAKKyAgICAg
ICAgQnkgcmVnaXN0ZXJpbmcgYW4gb2JqZWN0IHRoYXQgY29uZm9ybXMgdG8gdGhlIFdLVVJMU2No
ZW1lSGFuZGxlciBwcm90b2NvbCB3aXRoIGEgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbiBhcHBs
aWNhdGlvbiB3aWxsCisgICAgICAgIGJlIGhhbmRlZCBhbiBvYmplY3QgY29uZm9ybWluZyB0byBX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrIGZvciBlYWNoIHJlc291cmNlIGxvYWQgaW4gdGhhdCBXS1dl
YlZpZXcgd2l0aCBhIGN1c3RvbSBVUkwgc2NoZW1lLgorICAgICAgICAKKyAgICAgICAgVXNpbmcg
dGhhdCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4sIHRoZSBhcHBsaWNhdGlvbiBjYW4gY29t
bXVuaWNhdGUgdGhlIGRhdGEgZm9yIHRoZSByZXNvdXJjZSBiYWNrIHRvIFdlYktpdC4KKyAgICAg
ICAgCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOiAKKyAgICAgICAgKEFQSTo6VVJMU2NoZW1l
SGFuZGxlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNr
OjpVUkxTY2hlbWVIYW5kbGVyVGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oOiAKKworICAgICAgICBBZGQgdGhlIFdLVVJMU2NoZW1lSGFuZGxl
ciBAcHJvdG9jb2w6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXIuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIHRoZSBXS1VSTFNjaGVtZUhhbmRsZXJUYXNr
IEBwcm90b2NvbCwgYXMgd2VsbCBhcyBXZWJLaXQncyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBv
ZiBpdDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRh
c2suaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tOiBBZGRlZC4KKyAgICAgICAgKHJhaXNlRXhjZXB0aW9uSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCByZXF1ZXN0XSk6CisgICAg
ICAgICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZFJlY2VpdmVSZXNwb25zZTpdKToK
KyAgICAgICAgKC1bV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgZGlkUmVjZWl2ZURhdGE6XSk6
CisgICAgICAgICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZEZpbmlzaF0pOgorICAg
ICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBkaWRGYWlsV2l0aEVycm9yOl0pOgor
ICAgICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBfYXBpT2JqZWN0XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwu
aDogCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyB1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1l
Ol0pOgorICAgICAgICAoK1tXS1dlYlZpZXcgaGFuZGxlc1VSTFNjaGVtZTpdKToKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgt
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpmb3JVUkxTY2hlbWU6
XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gdXJsU2NoZW1lSGFuZGxlckZv
clVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdXJsU2No
ZW1lSGFuZGxlcnNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYS5oOiAKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hOjphcGlIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVVJM
U2NoZW1lSGFuZGxlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlckNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2E6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RvcFRhc2spOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lSGFuZGxlclRhc2spOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuY3BwOiAKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVXZWJVUkxTY2hlbWVIYW5kbGVySWRl
bnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OldlYlVSTFNj
aGVtZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjp+V2Vi
VVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6
OnN0YXJ0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BU
YXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oOiAKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcjo6aWRlbnRpZmllcik6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkQ29t
cGxldGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6cGFnZURl
c3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpzdG9w
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjppZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OnJlcXVlc3QpOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpyZW1vdmUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVUkxTY2hl
bWVIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxlclRh
c2tEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hl
bWVIYW5kbGVyVGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXJsU2NoZW1lSGFuZGxlclRhc2tEaWRDb21wbGV0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6On5XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0YXJ0TmV3VGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFz
a0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5Ojp0YXNrRGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjpwYWdlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdGFydExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdG9w
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OnJlcXVlc3QpOgorCisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorCiAyMDE3LTAzLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBwbHVtYmluZyBmb3IgV2ViQ29yZSB0byBub3RpZnkgV2ViS2l0MiB3aGVu
IGFuIGVkaXQgZHJhZyBoYXMgY29uY2x1ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2Vy
LmNwcAppbmRleCBkMWY4ZmU4NGE4ZTYzZjQ3NGMyM2NkYjdkM2Q4MzkwMDkyMDcyZGFiLi5hNjkx
NGNjZTM5ODc3OWZjODJiZjdkNjQ3MWRlNDQ0OTJmNzQwODJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTFBhcnNlci5jcHAKQEAgLTc5MCw2ICs3OTAsMjggQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgU2NoZW1lIHNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkKICAgICB9CiB9CiAKK3N0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQoreworICAgIGlmIChzY2hlbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFpc0FTQ0lJQWxwaGEoc2NoZW1lWzBdKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwg
c2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMo
c2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0gJysnIHx8IHNjaGVtZVtpXSA9PSAnLScgfHwgc2No
ZW1lW2ldID09ICcuJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBzY2hlbWUuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKTsKK30KKworYm9vbCBVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZUFyZykKK3sKKyAgICByZXR1cm4gc2NoZW1lKHNjaGVtZUFyZykgIT0gU2NoZW1l
OjpOb25TcGVjaWFsOworfQorCiBlbnVtIGNsYXNzIFVSTFBhcnNlcjo6VVJMUGFydCB7CiAgICAg
U2NoZW1lRW5kLAogICAgIFVzZXJTdGFydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgK
aW5kZXggNzNjYTE4OGZkN2VmMGIyZGE4ODcyMTYwY2E4ODY4YzE4NzkzMDU5NS4uNTcwOGE0ZmY3
Y2Y2NzFiNGQ1OTM1MjM2NzExZDY3MmY1OGM1NTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
UGFyc2VyLmgKQEAgLTUwLDYgKzUwLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IFVJ
RE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKIAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisKIHByaXZhdGU6CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3Ry
aW5nVmlldyk7CiAgICAgZnJpZW5kIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZDJlZjIy
ZmRiMmVlNTU1OGFkNTUwNmE2MmM2MDFjOTI5Y2Y0MzAuLjUyNWRmNTkyNGRlZGRiZjZhMWEyNzNm
YTkxMTU0ZGM4NmQyYzJkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMjYsNiArMzI2LDgg
QEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVU
cmFja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKICAgICBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKICAgICBVSVBy
b2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlv
blByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCkBAIC0z
MzksNiArMzQxLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBh
bmVsUGFyYW1ldGVycy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVNlc3Npb25TdGF0ZS5jcHAK
KyAgICBVSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJVXNl
ckNvbnRlbnRXb3JsZC5jcHAKQEAgLTU3OSwxMCArNTgyLDEwIEBAIHNldChXZWJLaXQyX1NPVVJD
RVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VPdmVybGF5LmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNr
UHJveHkuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmNwcAogCi0KLQog
ICAgICR7TmV0d29ya1Byb2Nlc3NfQ09NTU9OX1NPVVJDRVN9CiApCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IGYyY2IwNTQwYTMxZDA1NDQ4ZmUyYjhmNWU4MzVhMmYz
ZDdkYWM4MDkuLmNhZGQ5YTU5Njg3OThmYzVkNzNiM2Q5OTk3ZTUyOTc1MTBlZWIzNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTIwLDYgKzEyMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgSWNvbkRhdGFiYXNlLAogICAgICAgICBJbnNwZWN0b3IsCiAgICAgICAgIEtl
eVZhbHVlU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrLAogICAg
ICAgICBNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgTmF2aWdhdGlvbiwKICAgICAgICAgTmF2
aWdhdGlvbkFjdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9B
UElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmlu
ZGV4IDhlY2I1MzMzODYwMmMwN2Y4MmYyMWFjNzg1NTViYzZkMmE5NWYwYmMuLjg0YTg0ZTY5NzJj
Y2VjZjAwODdkMmUxM2Y3NWM4NzM3YmVkNmJkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbQpAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCAiV0tQcmVmZXJlbmNl
c0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5kbGVy
VGFza0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFs
LmgiCiAjaW1wb3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKQEAgLTE4Myw2ICsx
ODQsMTAgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkK
ICAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAorICAgIGNhc2UgVHlwZTo6VVJMU2NoZW1lSGFuZGxl
clRhc2s6CisgICAgICAgIHdyYXBwZXIgPSBbV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgYWxs
b2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbjoKICAgICAg
ICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCAxNDI5MmY5OWE3MmJjZDc3OGVhZThlNzM2OTZlOTczMWVmY2E2MGEwLi5lODVjZDEwZjVl
MDUxNWU4Y2ZlMWYwZWQyMDAyYTg5YjllZDZhNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC05Myw2ICs5Myw3IEBA
IHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0odXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbik7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG9ic2VydmVkTGF5b3V0TWlsZXN0b25l
cyk7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBl
bmNvZGVyIDw8IHVybFNjaGVtZUhhbmRsZXJzOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGVu
Y29kZXIgPDwgaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZDsKICNpZiBVU0UoTElCV0VCUlRD
KQpAQCAtMjIxLDYgKzIyMiw5IEBAIGJvb2wgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFyCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVybFNjaGVtZUhhbmRsZXJzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgRU5B
QkxFKFdFQl9SVEMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljZUNhbmRp
ZGF0ZUZpbHRlcmluZ0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAyMDgx
YjA3OTMxNTg2MzE4Zjk1NWJhYmQ5N2NjNGYxY2FiMTNkMzcxLi5iNGZlNmU2NjQ1YmM5NzExOTA3
YmM0YzQ3OTJkYWU5OTZkZjc2ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTQ2LDYgKzE0Nyw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsK
IAorICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gdXJsU2NoZW1lSGFuZGxlcnM7CisKICNp
ZiBFTkFCTEUoV0VCX1JUQykKICAgICBib29sIGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQg
eyB0cnVlIH07CiAjaWYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGM0MjAxYzkxNTIwNDMzZWYxNGYzZjc2ZDk2OGNlNTRhNjQ4MGEyZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2su
Y3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKworI2luY2x1ZGUgIldlYlVSTFNj
aGVtZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorCitu
YW1lc3BhY2UgQVBJIHsKKworUmVmPFVSTFNjaGVtZUhhbmRsZXJUYXNrPiBVUkxTY2hlbWVIYW5k
bGVyVGFzazo6Y3JlYXRlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smIHdlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVSTFNjaGVtZUhh
bmRsZXJUYXNrKHdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrKSk7Cit9CisKK1VSTFNjaGVtZUhhbmRs
ZXJUYXNrOjpVUkxTY2hlbWVIYW5kbGVyVGFzayhXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrJiB3ZWJVUkxTY2hlbWVIYW5kbGVyVGFzaykKKyAgICA6IG1fd2ViVVJMU2NoZW1lSGFuZGxl
clRhc2sod2ViVVJMU2NoZW1lSGFuZGxlclRhc2spCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZTMxNTA4ZmQwOWUyNWE5NDNlY2I3YzQ0ZTkyMmFkNjk2ZjA5YWMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrOworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgVVJMU2No
ZW1lSGFuZGxlclRhc2sgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVS
TFNjaGVtZUhhbmRsZXJUYXNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxVUkxTY2hlbWVI
YW5kbGVyVGFzaz4gY3JlYXRlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smKTsKKwor
ICAgIFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smIHRhc2soKSB7IHJldHVybiBtX3dl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgVVJMU2NoZW1l
SGFuZGxlclRhc2soV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayYpOworCisgICAgUmVm
PFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s+IG1fd2ViVVJMU2NoZW1lSGFuZGxlclRh
c2s7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDMxYmM1MDU3YzUyZTBkOTkz
ZGYzNTgwNjM3N2VlOTY4ZTMzZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tf
QVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wgV0tVUkxT
Y2hlbWVIYW5kbGVyVGFzazsKKworLyohIEEgY2xhc3MgY29uZm9ybWluZyB0byB0aGUgV0tVUkxT
Y2hlbWVIYW5kbGVyIHByb3RvY29sIHByb3ZpZGVzIG1ldGhvZHMgZm9yCisgbG9hZGluZyByZXNv
dXJjZXMgd2l0aCBVUkwgc2NoZW1lcyB0aGF0IFdlYktpdCBkb2Vzbid0IGtub3cgaG93IHRvIGhh
bmRsZSBpdHNlbGYuCisgKi8KK1dLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpCitAcHJvdG9jb2wgV0tVUkxTY2hlbWVIYW5kbGVyIDxOU09iamVjdD4K
KworLyohIEBhYnN0cmFjdCBOb3RpZmllcyB5b3VyIGFwcCB0byBzdGFydCBsb2FkaW5nIHRoZSBk
YXRhIGZvciBhIHBhcnRpY3VsYXIgcmVzb3VyY2UgCisgcmVwcmVzZW50ZWQgYnkgdGhlIFVSTCBz
Y2hlbWUgaGFuZGxlciB0YXNrLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyBpbnZva2lu
ZyB0aGUgbWV0aG9kLgorIEBwYXJhbSB1cmxTY2hlbWVIYW5kbGVyVGFzayBUaGUgdGFzayB0aGF0
IHlvdXIgYXBwIHNob3VsZCBzdGFydCBsb2FkaW5nIGRhdGEgZm9yLgorICovCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRUYXNrOihpZCA8V0tVUkxTY2hlbWVIYW5k
bGVyVGFzaz4pdXJsU2NoZW1lSGFuZGxlclRhc2s7CisKKy8qISBAYWJzdHJhY3QgTm90aWZpZXMg
eW91ciBhcHAgdG8gc3RvcCBoYW5kbGluZyBhIFVSTCBzY2hlbWUgaGFuZGxlciB0YXNrLgorIEBw
YXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyBpbnZva2luZyB0aGUgbWV0aG9kLgorIEBwYXJhbSB1
cmxTY2hlbWVIYW5kbGVyVGFzayBUaGUgdGFzayB0aGF0IHlvdXIgYXBwIHNob3VsZCBzdG9wIGhh
bmRsaW5nLgorIEBkaXNjdXNzaW9uIEFmdGVyIHlvdXIgYXBwIGlzIHRvbGQgdG8gc3RvcCBsb2Fk
aW5nIGRhdGEgZm9yIGEgVVJMIHNjaGVtZSBoYW5kbGVyIHRhc2sKKyBpdCBtdXN0IG5vdCBwZXJm
b3JtIGFueSBjYWxsYmFja3MgZm9yIHRoYXQgdGFzay4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0
aHJvd24gaWYgYW55IGNhbGxiYWNrcyBhcmUgbWFkZSBvbiB0aGUgVVJMIHNjaGVtZSBoYW5kbGVy
IHRhc2sKKyBhZnRlciB5b3VyIGFwcCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyBmb3Ig
aXQuCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVGFzazoo
aWQgPFdLVVJMU2NoZW1lSGFuZGxlclRhc2s+KXVybFNjaGVtZUhhbmRsZXJUYXNrOworCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjlmZTM5NjVlOGIzOGUwMDc2MmM1OTM2MGI3ZWViZmZiNTZmNWEyOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0Bw
cm90b2NvbCBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrIDxOU09iamVjdD4KKworLyohIEBhYnN0cmFj
dCBUaGUgcmVxdWVzdCB0byBsb2FkIGZvciB0aGlzIHRhc2suCisgKi8KK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0OworCisvKiEgQGFi
c3RyYWN0IFNldCB0aGUgY3VycmVudCByZXNwb25zZSBvYmplY3QgZm9yIHRoZSB0YXNrLgorIEBw
YXJhbSByZXNwb25zZSBUaGUgcmVzcG9uc2UgdG8gdXNlLgorIEBkaXNjdXNzaW9uIFRoaXMgbWV0
aG9kIG11c3QgYmUgY2FsbGVkIGF0IGxlYXN0IG9uY2UgZm9yIGVhY2ggVVJMIHNjaGVtZSBoYW5k
bGVyIHRhc2suCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8gc2Vu
ZCBhIG5ldyByZXNwb25zZSBvYmplY3QgYWZ0ZXIgdGhlIHRhc2sgaGFzIGFscmVhZHkgYmVlbiBj
b21wbGV0ZWQuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdXIgYXBwIGhhcyBi
ZWVuIHRvbGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJlZ2lzdGVyZWQgV0tV
UkxTY2hlbWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZClkaWRSZWNlaXZlUmVzcG9uc2U6
KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKKworLyohIEBhYnN0cmFjdCBBZGQgcmVjZWl2ZWQg
ZGF0YSB0byB0aGUgdGFzay4KKyBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBhZGQuCisgQGRpc2N1
c3Npb24gQWZ0ZXIgYSBVUkwgc2NoZW1lIGhhbmRsZXIgdGFzaydzIGZpbmFsIHJlc3BvbnNlIG9i
amVjdCBpcyByZWNlaXZlZCB5b3Ugc2hvdWxkCisgc3RhcnQgc2VuZGluZyBpdCBkYXRhLgorIEVh
Y2ggdGltZSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgdGhlIGRhdGEgeW91IHNlbmQgd2lsbCBiZSBh
cHBlbmRlZCB0byBhbGwgcHJldmlvdXMgZGF0YS4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJv
d24gaWYgeW91IHRyeSB0byBzZW5kIHRoZSB0YXNrIGFueSBkYXRhIGJlZm9yZSBzZW5kaW5nIGl0
IGEgcmVzcG9uc2UuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8g
c2VuZCB0aGUgdGFzayBhbnkgZGF0YSBhZnRlciB0aGUgdGFzayBoYXMgYWxyZWFkeSBiZWVuIGNv
bXBsZXRlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91ciBhcHAgaGFzIGJl
ZW4gdG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0YXNrIHZpYSB0aGUgcmVnaXN0ZXJlZCBXS1VS
TFNjaGVtZUhhbmRsZXIgb2JqZWN0LgorICovCistICh2b2lkKWRpZFJlY2VpdmVEYXRhOihOU0Rh
dGEgKilkYXRhOworCisvKiEgQGFic3RyYWN0IE1hcmsgdGhlIHRhc2sgYXMgc3VjY2Vzc2Z1bGx5
IGNvbXBsZXRlZC4KKyBAZGlzY3Vzc2lvbiBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYg
eW91IHRyeSB0byBmaW5pc2ggdGhlIHRhc2sgYmVmb3JlIHNlbmRpbmcgaXQgYSByZXNwb25zZS4K
KyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRyeSB0byBtYXJrIGEgdGFzayBj
b21wbGV0ZWQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBtYXJrZWQgY29tcGxldGVkIG9yIGZh
aWxlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91ciBhcHAgaGFzIGJlZW4g
dG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0YXNrIHZpYSB0aGUgcmVnaXN0ZXJlZCBXS1VSTFNj
aGVtZUhhbmRsZXIgb2JqZWN0LgorICovCistICh2b2lkKWRpZEZpbmlzaDsKKworLyohIEBhYnN0
cmFjdCBNYXJrIHRoZSB0YXNrIGFzIGZhaWxlZC4KKyBAcGFyYW0gZXJyb3IgQSBkZXNjcmlwdGlv
biBvZiB0aGUgZXJyb3IgdGhhdCBjYXVzZWQgdGhlIHRhc2sgdG8gZmFpbC4KKyBAZGlzY3Vzc2lv
biAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8gbWFyayBhIHRhc2sg
ZmFpbGVkIGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGNvbXBsZXRlZCBvciBmYWls
ZWQuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdXIgYXBwIGhhcyBiZWVuIHRv
bGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJlZ2lzdGVyZWQgV0tVUkxTY2hl
bWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZClkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9y
ICopZXJyb3I7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXJUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMzU0NTQ3ZmYwMmMyNWI4MTJkZDA1NTY5
ZWI0ZTFmZmI0MjhlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2subW0KQEAgLTAsMCArMSw5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5k
bGVyVGFza0ludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW5jbHVkZSAiV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGlj
IHZvaWQgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrOjpFeGNlcHRpb25UeXBlIGV4Y2VwdGlvblR5cGUpCit7CisgICAgaWYgKGV4Y2VwdGlv
blR5cGUgPT0gV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6
VGFza0FscmVhZHlTdG9wcGVkKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5h
bEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhpcyB0YXNrIGhhcyBhbHJlYWR5IGJl
ZW4gc3RvcHBlZCJdOworICAgIGlmIChleGNlcHRpb25UeXBlID09IFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZCkKKyAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9u
IGZvcm1hdDpAIltXS1VSTFNjaGVtZUhhbmRsZXJUYXNrIHRhc2tEaWRDb21wbGV0ZVdpdGhFcnJv
cjpdIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGZvciB0aGlzIHRhc2siXTsKKyAgICBpZiAoZXhj
ZXB0aW9uVHlwZSA9PSBXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25U
eXBlOjpEYXRhQWxyZWFkeVNlbnQpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVy
bmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJbV0tVUkxTY2hlbWVIYW5kbGVyVGFz
ayB0YXNrRGlkUmVjZWl2ZURhdGE6XSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBmb3IgdGhpcyB0
YXNrIl07CisgICAgaWYgKGV4Y2VwdGlvblR5cGUgPT0gV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9SZXNwb25zZVNlbnQpCisgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJObyBy
ZXNwb25zZSBoYXMgYmVlbiBzZW50IGZvciB0aGlzIHRhc2siXTsKK30KKworQGltcGxlbWVudGF0
aW9uIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsCisKKy0gKE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QKK3sKKyAgICByZXR1cm4gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkucmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAodm9pZClkaWRSZWNl
aXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQoreworICAgIGF1dG8gcmVzdWx0
ID0gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlKTsKKyAgICByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7Cit9CisKKy0gKHZv
aWQpZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBhdXRvIHJlc3VsdCA9IF91
cmxTY2hlbWVIYW5kbGVyVGFzay0+dGFzaygpLmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2Fy
eShyZXN1bHQpOworfQorCistICh2b2lkKWRpZEZpbmlzaAoreworICAgIGF1dG8gcmVzdWx0ID0g
X3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkuZGlkQ29tcGxldGUoeyB9KTsKKyAgICByYWlz
ZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7Cit9CisKKy0gKHZvaWQpZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgYXV0byByZXN1bHQgPSBfdXJsU2NoZW1lSGFu
ZGxlclRhc2stPnRhc2soKS5kaWRDb21wbGV0ZShlcnJvcik7CisgICAgcmFpc2VFeGNlcHRpb25J
Zk5lY2Vzc2FyeShyZXN1bHQpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wg
aW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1
cm4gKl91cmxTY2hlbWVIYW5kbGVyVGFzazsKK30KKworQGVuZAorCisjZW5kaWYgLy8gI2lmIFdL
X0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMjQ2ODAxZjU4MzY2NmNhMzE1ODE2MDZhZDI4NjA4ZjYyYTQ4ZGU4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrSW50ZXJuYWwuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCAiQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisK
K0BpbnRlcmZhY2UgV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgOiBOU09iamVjdCA8V0tVUkxT
Y2hlbWVIYW5kbGVyVGFzaz4KK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBp
ZDxXS1VSTFNjaGVtZUhhbmRsZXJUYXNrPiB3cmFwcGVyKEFQSTo6VVJMU2NoZW1lSGFuZGxlclRh
c2smIHVybFNjaGVtZUhhbmRsZXJUYXNrKQoreworICAgIEFTU0VSVChbdXJsU2NoZW1lSGFuZGxl
clRhc2sud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBs
IGNsYXNzXV0pOworICAgIHJldHVybiAoaWQ8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4pdXJsU2No
ZW1lSGFuZGxlclRhc2sud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgV0tVUkxTY2hl
bWVIYW5kbGVyVGFza0ltcGwgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNrPiBfdXJsU2NoZW1lSGFuZGxlclRh
c2s7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNWMyZWNjOGUwNDdhN2I1
NmRjOTc0ZDJmZTMxMzBlYTgxMzE3MzhiMi4uMDkwNThkYjQ4ZGI0MDc5N2I0ZTZkNWU2MGI0YWUy
YmI3MGE2ODEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5oCkBAIC0yNzksNiArMjc5LDExIEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSkKIAogI2VuZGlmCiAKKy8qIEBhYnN0cmFjdCBDaGVja3Mgd2hldGhl
ciBvciBub3QgV0tXZWJWaWV3cyBoYW5kbGUgdGhlIGdpdmVuIFVSTCBzY2hlbWUgYnkgZGVmYXVs
dC4KKyBAcGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRvIGNoZWNrLgorICovCisrIChCT09M
KWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiAhVEFS
R0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCA4OTdhMmI3ODMzYzcwZTkzMmYwYTk1M2ZiOGY3NzA0ZTMyODQzYmJj
Li5iZTQyYTQxYzllZWY2NWUwZDM1NzNmZGJiNjY2NzAxNWZmZGU0MzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNzgsNiArNzgs
NyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UG9vbC5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2EuaCIKICNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0ICJfV0tE
aWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIK
QEAgLTEwMCw2ICsxMDEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4
dFN0cmVhbS5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Xcml0aW5nTW9kZS5oPgog
I2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3Myw2ICs1NzUsMTAgQEAgLSAodm9pZClfaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmln
dXJhdGlvbgogICAgIFtzZWxmIF9zZXRVcFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudF07CiAj
ZW5kaWYKIAorICAgIGF1dG8gKmhhbmRsZXJzID0gX2NvbmZpZ3VyYXRpb24uZ2V0KCkuX3VybFNj
aGVtZUhhbmRsZXJzOworICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBoYW5kbGVycykKKyAgICAg
ICAgX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShoYW5kbGVyc1trZXldKSwga2V5KTsKKwogICAgIHBhZ2VU
b1ZpZXdNYXAoKS5hZGQoX3BhZ2UuZ2V0KCksIHNlbGYpOwogfQogCkBAIC0zNDk2LDYgKzM1MDIs
MTcgQEAgLSAodm9pZClfaW50ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRlc3RpbmcKIAogI2Vu
ZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQogCistIChpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxT
Y2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIGF1
dG8qIGhhbmRsZXIgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YSo+KF9wYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKHVybFNjaGVtZSkpOworICAgIHJl
dHVybiBoYW5kbGVyID8gaGFuZGxlci0+YXBpSGFuZGxlcigpIDogbmlsOworfQorCisrIChCT09M
KWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCit7CisgICAgcmV0dXJuIFdl
YkNvcmU6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKHVybFNjaGVtZSk7Cit9CisKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoV0tQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24uaAppbmRleCAzYWRhYmJjMTI4ZTlhOTBmNzU4YzMxYjgyODUxMjFjNDA3ZTNhYmZkLi5iN2U0
Yjg4YmQ4YzgwNmNlMWZiMDllNTVjMGYyZWQxNDNiMGRjY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24uaApAQCAtMzYsNiArMzYsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdL
UHJvY2Vzc1Bvb2w7CiBAY2xhc3MgV0tVc2VyQ29udGVudENvbnRyb2xsZXI7CiBAY2xhc3MgV0tX
ZWJzaXRlRGF0YVN0b3JlOworQHByb3RvY29sIFdLVVJMU2NoZW1lSGFuZGxlcjsKIAogI2lmIFRB
UkdFVF9PU19JUEhPTkUKIApAQCAtMTc1LDYgKzE3NiwyNSBAQCBXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCiAKICNlbmRpZgogCisvKiBAYWJzdHJhY3QgU2V0cyB0
aGUgdXJsIHNjaGVtZSBoYW5kbGVyIG9iamVjdCBmb3IgdGhlIGdpdmVuIFVSTCBzY2hlbWUuCisg
QHBhcmFtIHVybFNjaGVtZUhhbmRsZXIgVGhlIG9iamVjdCB0byByZWdpc3Rlci4KKyBAcGFyYW0g
c2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRoZSBvYmplY3Qgd2lsbCBoYW5kbGUuCisgQGRpc2N1c3Np
b24gRWFjaCBVUkwgc2NoZW1lIGNhbiBvbmx5IGhhdmUgb25lIHVybCBzY2hlbWUgaGFuZGxlciBv
YmplY3QgcmVnaXN0ZXJlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRy
eSB0byByZWdpc3RlciBhbiBvYmplY3QgZm9yIGEgcGFydGljdWxhciBVUkwgc2NoZW1lIG1vcmUg
dGhhbiBvbmNlLgorIFVSTCBzY2hlbWVzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLiBlLmcuICJteXBy
b3RvY29sIiBhbmQgIk15UHJvdG9jb2wiIGFyZSBlcXVpdmFsZW50LgorIFZhbGlkIFVSTCBzY2hl
bWVzIG11c3Qgc3RhcnQgd2l0aCBhbiBBU0NJSSBsZXR0ZXIgYW5kIGNhbiBvbmx5IGNvbnRhaW4g
QVNDSUkgbGV0dGVycywgbnVtYmVycywgdGhlICcrJyBjaGFyYWN0ZXIsCisgdGhlICctJyBjaGFy
YWN0ZXIsIGFuZCB0aGUgJy4nIGNoYXJhY3Rlci4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJv
d24gaWYgeW91IHRyeSB0byByZWdpc3RlciBhIHVybCBzY2hlbWUgaGFuZGxlciBmb3IgYW4gaW52
YWxpZCBVUkwgc2NoZW1lLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5
IHRvIHJlZ2lzdGVyIGEgdXJsIHNjaGVtZSBoYW5kbGVyIGZvciBhIFVSTCBzY2hlbWUgdGhhdCBX
ZWJLaXQgaGFuZGxlcyBpbnRlcm5hbGx5LgorIFlvdSBjYW4gdXNlICtbV0tXZWJWaWV3IGhhbmRs
ZXNVUkxTY2hlbWU6XSB0byBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IG9mIGEgZ2l2ZW4gVVJMIHNj
aGVtZS4KKyAqLworLSAodm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihudWxsYWJsZSBpZCA8V0tV
UkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcg
Kil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKKy8qIEBhYnN0cmFjdCBSZXR1cm5zIHRoZSBjdXJyZW50bHkgcmVnaXN0ZXJl
ZCB1cmwgc2NoZW1lIGhhbmRsZXIgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gVVJMIHNjaGVtZS4KKyBA
cGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRvIGxvb2t1cC4KKyAqLworLSAobnVsbGFibGUg
aWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTooTlNT
dHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAogQGludGVyZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0
aW9uIChXS0RlcHJlY2F0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggNThjMTg1MjM4
MzdlNzZjNTY0NzlhMjA5MTQ0MGVhOTBkODZhYzM4Yi4uZDY3MDZlMzIyMGYzMzQyNjI1NDk3Zjlm
ZjkwMzc5ZWY2YTA0YjczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMzMsMTEgKzMz
LDEzIEBACiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29s
LmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tXZWJW
aWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgogI2lt
cG9ydCAiV2Vha09iakNQdHIuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCIKICNp
bXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMUGFyc2VyLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC05NCw2
ICs5Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHsKICAgICBX
ZWJLaXQ6OldlYWtPYmpDUHRyPFdLV2ViVmlldz4gX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0
aW9uR2VzdHVyZXM7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZ3JvdXBJZGVudGlmaWVyOwog
ICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBfYXBwbGljYXRpb25OYW1l
Rm9yVXNlckFnZW50OworICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4+PiBfdXJsU2NoZW1l
SGFuZGxlcnM7CiAgICAgTlNUaW1lSW50ZXJ2YWwgX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb25UaW1lb3V0OwogICAgIEJPT0wgX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0lu
c2VjdXJlOwogICAgIEJPT0wgX3Jlc3BlY3RzSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTMyOCw2ICsz
MzEsOCBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0
aW9uLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgPSBzZWxmLT5fbmVlZHNT
dG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms7CiAgICAgY29uZmlndXJhdGlvbi0+X292ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gc2VsZi0+X292ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5OwogCisgICAgY29uZmlndXJhdGlvbi0+X3VybFNjaGVtZUhhbmRsZXJzLnNldChbc2Vs
Zi5fdXJsU2NoZW1lSGFuZGxlcnMgbXV0YWJsZUNvcHlXaXRoWm9uZTp6b25lXSk7CisKICAgICBy
ZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIApAQCAtNDAwLDYgKzQwNSwzMyBAQCAtICh2b2lkKV9z
ZXRWaXNpdGVkTGlua1N0b3JlOihfV0tWaXNpdGVkTGlua1N0b3JlICopdmlzaXRlZExpbmtTdG9y
ZQogICAgIF92aXNpdGVkTGlua1N0b3JlLnNldCh2aXNpdGVkTGlua1N0b3JlKTsKIH0KIAorLSAo
dm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hl
bWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKK3sKKyAgICBhdXRv
ICp1cmxTY2hlbWVIYW5kbGVycyA9IF91cmxTY2hlbWVIYW5kbGVycy5nZXQoW10geyByZXR1cm4g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsgfSk7CisKKyAgICBp
ZiAoW1dLV2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOnVybFNjaGVtZV0pCisgICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCInJUAnIGlz
IGEgVVJMIHNjaGVtZSB0aGF0IFdLV2ViVmlldyBoYW5kbGVzIG5hdGl2ZWx5IiwgdXJsU2NoZW1l
XTsKKworICAgIGF1dG8gY2Fub25pY2FsU2NoZW1lID0gV2ViQ29yZTo6VVJMUGFyc2VyOjptYXli
ZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOworICAgIGlmICghY2Fub25pY2FsU2NoZW1l
KQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24g
Zm9ybWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJsU2NoZW1lXTsKKwor
ICAgIGlmIChbdXJsU2NoZW1lSGFuZGxlcnMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWNhbm9u
aWNhbFNjaGVtZS52YWx1ZSgpXSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlVSTCBzY2hlbWUgJyVAJyBhbHJlYWR5IGhhcyBh
IHJlZ2lzdGVyZWQgdXJsIHNjaGVtZSBoYW5kbGVyIiwgdXJsU2NoZW1lXTsKKworICAgIFt1cmxT
Y2hlbWVIYW5kbGVycyBzZXRPYmplY3Q6dXJsU2NoZW1lSGFuZGxlciBmb3JLZXk6KE5TU3RyaW5n
ICopY2Fub25pY2FsU2NoZW1lLnZhbHVlKCldOworfQorCistIChudWxsYWJsZSBpZCA8V0tVUkxT
Y2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVy
bFNjaGVtZQoreworICAgIGF1dG8gY2Fub25pY2FsU2NoZW1lID0gV2ViQ29yZTo6VVJMUGFyc2Vy
OjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOworICAgIGlmICghY2Fub25pY2Fs
U2NoZW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgYXV0byAqdXJsU2NoZW1lSGFuZGxl
cnMgPSBfdXJsU2NoZW1lSGFuZGxlcnMuZ2V0KFtdIHsgcmV0dXJuIGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7IH0pOworICAgIHJldHVybiBbdXJsU2NoZW1lSGFu
ZGxlcnMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWNhbm9uaWNhbFNjaGVtZS52YWx1ZSgpXTsK
K30KKwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogCkBAIC00MTUsNiArNDQ3
LDExIEBAIC0gKHZvaWQpX3NldFdlYnNpdGVEYXRhU3RvcmU6KF9XS1dlYnNpdGVEYXRhU3RvcmUg
Kil3ZWJzaXRlRGF0YVN0b3JlCiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAorLSAo
TlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4g
KilfdXJsU2NoZW1lSGFuZGxlcnMKK3sKKyAgICByZXR1cm4gX3VybFNjaGVtZUhhbmRsZXJzLmdl
dChbXSB7IHJldHVybiBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OyB9KTsKK30KKwogI2lmIFBMQVRGT1JNKElPUykKIC0gKFdLV2ViVmlld0NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5ICopX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaAppbmRleCBlZjhlMjEwYjZiMTMwZGJmMDFlYWNlNDExNDQ4Zjli
ZWY2ZDJkOTQ2Li5lNDhjMDJkMzIxMTg1ZjgwNjEwOGQyYTFkYjA2NzdkNDFkMWE3ODVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmgKQEAgLTMyLDYgKzMyLDggQEAKIAog
QGludGVyZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0aW9uICgpCiAKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxT
Y2hlbWVIYW5kbGVyPj4gKl91cmxTY2hlbWVIYW5kbGVyczsKKwogI2lmIFBMQVRGT1JNKElPUykK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENvbnRlbnRQcm92aWRlclJlZ2lzdHJ5
OikgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgKl9jb250ZW50UHJvdmlkZXJSZWdp
c3RyeTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZWFjNDUwOTEwMDgw
ODllMTMzYjQ2ZDhlZWZhNzg1OGRkOTQzNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViVVJMU2No
ZW1lSGFuZGxlci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworQHByb3RvY29sIFdL
VVJMU2NoZW1lSGFuZGxlcjsKKworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBVUkxTY2hlbWVIYW5k
bGVyVGFzazsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYSA6IHB1YmxpYyBXZWJVUkxTY2hlbWVIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYT4gY3JlYXRlKGlkIDxXS1VSTFNjaGVt
ZUhhbmRsZXI+KTsKKworICAgIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+IGFwaUhhbmRsZXIoKSBj
b25zdCB7IHJldHVybiBtX2FwaUhhbmRsZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJV
UkxTY2hlbWVIYW5kbGVyQ29jb2EoaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pOworCisgICAgdm9p
ZCBwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFz
ayYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJveHkmLCBXZWJV
UkxTY2hlbWVIYW5kbGVyVGFzayYpIGZpbmFsOworCisgICAgUmV0YWluUHRyPGlkIDxXS1VSTFNj
aGVtZUhhbmRsZXI+PiBtX2FwaUhhbmRsZXI7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPEFQ
STo6VVJMU2NoZW1lSGFuZGxlclRhc2s+PiBtX2FwaVRhc2tzOworCit9OyAvLyBjbGFzcyBXZWJV
UkxTY2hlbWVIYW5kbGVyCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2Eu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2ZmZTZjN2U2MTY2MjAxMjY4ZThjYzRiNzQ1ZjEzZDQ5NzIzMWZjMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxT
Y2hlbWVIYW5kbGVyQ29jb2EubW0KQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKKwor
I2luY2x1ZGUgIkFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmgiCisjaW5jbHVkZSAiV0tVUkxTY2hl
bWVIYW5kbGVyLmgiCisjaW5jbHVkZSAiV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmgi
CisjaW5jbHVkZSAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVI
YW5kbGVyVGFzay5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1JlZjxXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E+IFdlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYTo6Y3JlYXRlKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+IGFwaUhhbmRsZXIpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hKGFwaUhhbmRs
ZXIpKTsKK30KKworV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpXZWJVUkxTY2hlbWVIYW5kbGVy
Q29jb2EoaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4gYXBpSGFuZGxlcikKKyAgICA6IG1fYXBpSGFu
ZGxlcihhcGlIYW5kbGVyKQoreworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6
cGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJVUkxTY2hlbWVIYW5kbGVy
VGFzayYgdGFzaykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fYXBpVGFza3MuYWRkKHRhc2suaWRl
bnRpZmllcigpLCBBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpjcmVhdGUodGFzaykpOworICAg
IEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBbbV9hcGlIYW5kbGVyLmdldCgpIHdl
YlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBzdGFydFRhc2s6d3JhcHBlcihyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmdldCgpKV07Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29h
OjpwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2smIHRhc2spCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fYXBpVGFza3MuZmluZCh0YXNr
LmlkZW50aWZpZXIoKSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fYXBpVGFza3MuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFttX2FwaUhhbmRsZXIuZ2V0KCkgd2ViVmlldzpmcm9tV2Vi
UGFnZVByb3h5KHBhZ2UpIHN0b3BUYXNrOndyYXBwZXIoaXRlcmF0b3ItPnZhbHVlLmdldCgpKV07
CisKKyAgICBtX2FwaVRhc2tzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAx
MjJmNmExNDVlOTViNjE2NjJhNjQ2OTc1ZWJjNjYwYWM0YzI2ZTY0Li5jYmIyOThkNjQ4ZDA2ZmNi
MGJmYzI4MzVmMTAzMzY3YWVhODM1ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMTA4LDYgKzEwOCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm90ZWN0
aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgpAQCAtMTI3LDYgKzEyOCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJi
bGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KQEAgLTU1ODgsNiArNTU5MCw5IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMub2JzZXJ2ZWRM
YXlvdXRNaWxlc3RvbmVzID0gbV9vYnNlcnZlZExheW91dE1pbGVzdG9uZXM7CiAgICAgcGFyYW1l
dGVycy5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiAKKyAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDogbV91cmxTY2hlbWVIYW5k
bGVyc0J5U2NoZW1lKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzLnNldChp
dGVyYXRvci5rZXksIGl0ZXJhdG9yLnZhbHVlLT5pZGVudGlmaWVyKCkpOworCiAjaWYgRU5BQkxF
KFdFQl9SVEMpCiAgICAgcGFyYW1ldGVycy5pY2VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVkID0g
bV9wcmVmZXJlbmNlcy0+aWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCgpOwogI2lmIFVTRShM
SUJXRUJSVEMpCkBAIC02ODQzLDUgKzY4NDgsNDEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RQb2ludGVyVW5sb2NrKCkKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VVJM
U2NoZW1lSGFuZGxlckZvclNjaGVtZShSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiBoYW5kbGVy
LCBjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZWRTY2hlbWUg
PSBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHNjaGVtZSk7CisgICAgQVNTRVJU
KGNhbm9uaWNhbGl6ZWRTY2hlbWUpOworICAgIEFTU0VSVCghVVJMUGFyc2VyOjppc1NwZWNpYWxT
Y2hlbWUoY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpKSk7CisKKyAgICBhdXRvIHNjaGVtZVJl
c3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZS5hZGQoY2Fub25pY2FsaXplZFNjaGVt
ZS52YWx1ZSgpLCBoYW5kbGVyLmdldCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHNjaGVtZVJlc3Vs
dCwgc2NoZW1lUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gaGFu
ZGxlci0+aWRlbnRpZmllcigpOworICAgIGF1dG8gaWRlbnRpZmllclJlc3VsdCA9IG1fdXJsU2No
ZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikp
OworICAgIEFTU0VSVF9VTlVTRUQoaWRlbnRpZmllclJlc3VsdCwgaWRlbnRpZmllclJlc3VsdC5p
c05ld0VudHJ5KTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVn
aXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFs
dWUoKSksIG1fcGFnZUlEKTsKK30KKworV2ViVVJMU2NoZW1lSGFuZGxlciogV2ViUGFnZVByb3h5
Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAg
IHJldHVybiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWUuZ2V0KHNjaGVtZSk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNrKHVpbnQ2NF90IGhhbmRs
ZXJJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV91cmxT
Y2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKGhhbmRsZXJJZGVudGlmaWVyKTsKKyAgICBB
U1NFUlQoaXRlcmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5lbmQoKSk7
CisKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgcmVzb3VyY2VJZGVudGlm
aWVyLCByZXF1ZXN0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnN0b3BVUkxTY2hlbWVIYW5k
bGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVu
dGlmaWVyLmZpbmQoaGFuZGxlcklkZW50aWZpZXIpOworICAgIEFTU0VSVChpdGVyYXRvciAhPSBt
X3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKKworICAgIGl0ZXJhdG9yLT52
YWx1ZS0+c3RvcFRhc2soKnRoaXMsIHJlc291cmNlSWRlbnRpZmllcik7Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGMxYTgyZGM5ZDVhZmRiYjEzMDE3NGJkZmJjMWEwMDlhODViZjE0Y2YuLjM3ZGY2YmI0YWJkODVh
MmNlODg5Njg5NDkwMzI4YjFhNzk3ZWJhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTIwMiw2ICsyMDIsNyBAQCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJOYXZpZ2F0aW9uU3RhdGU7CiBjbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2Vi
VVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViUGFnZUdyb3VwOwpAQCAtMTE5MSw2ICsx
MTkyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaG91bGRTa2lwV2FpdGluZ0ZvclBhaW50
QWZ0ZXJOZXh0Vmlld0RpZE1vdmVUb1dpbmRvdyhib29sIHNob3VsZFNraXApIHsgbV9zaG91bGRT
a2lwV2FpdGluZ0ZvclBhaW50QWZ0ZXJOZXh0Vmlld0RpZE1vdmVUb1dpbmRvdyA9IHNob3VsZFNr
aXA7IH0KIAorICAgIHZvaWQgc2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZShSZWY8V2ViVVJM
U2NoZW1lSGFuZGxlcj4mJiwgY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdlYlVSTFNjaGVt
ZUhhbmRsZXIqIHVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
OworCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1By
b3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTE1OTQsNiArMTU5OCw5IEBAIHByaXZh
dGU6CiAjZW5kaWYKICNlbmRpZgogCisgICAgdm9pZCBzdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNr
KHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RvcFVSTFNjaGVt
ZUhhbmRsZXJUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJj
ZUlkZW50aWZpZXIpOworCiAgICAgdm9pZCBoYW5kbGVBdXRvRmlsbEJ1dHRvbkNsaWNrKGNvbnN0
IFVzZXJEYXRhJik7CiAKICAgICB2b2lkIGZpbmlzaEluaXRpYWxpemluZ1dlYlBhZ2VBZnRlclBy
b2Nlc3NMYXVuY2goKTsKQEAgLTE5NzksNiArMTk4Niw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCB7IGZhbHNlIH07CiAgICAgICAgIAogICAgIFdl
YWtQdHJGYWN0b3J5PFdlYlBhZ2VQcm94eT4gbV93ZWFrUHRyRmFjdG9yeTsKKworICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4+IG1fdXJsU2NoZW1lSGFuZGxlcnNC
eVNjaGVtZTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4+
IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGRjOTNjNDgwN2RhMTk5YmY5NDY3YzAyNmRmMzQ5NWQ4NzIwOTkzMjYuLjk2
YjJlZmYxYzNkN2Q0M2RjNTIyNTZjNzUzODUyZjNjNjhjNmFlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDkwLDQgKzQ5
MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgIFNldElzVXNp
bmdIaWdoUGVyZm9ybWFuY2VXZWJHTChib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkK
KworICAgIFN0YXJ0VVJMU2NoZW1lSGFuZGxlclRhc2sodWludDY0X3QgbG9hZGVySWRlbnRpZmll
ciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCkKKyAgICBTdG9wVVJMU2NoZW1lSGFuZGxlclRhc2sodWludDY0X3QgbG9hZGVySWRl
bnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1OTll
YzJmM2UxZmYyMTIxYTdiZmYzNzUwMTE2OWVjYTM2YjZjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKQEAgLTAsMCAr
MSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJV
UkxTY2hlbWVIYW5kbGVyLmgiCisKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyKCkKK3sK
KyAgICBzdGF0aWMgdWludDY0X3QgbmV4dElkZW50aWZpZXIgPSAxOworICAgIHJldHVybiBuZXh0
SWRlbnRpZmllcisrOworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyOjpXZWJVUkxTY2hlbWVIYW5k
bGVyKCkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVdlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyKCkpCit7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXI6On5XZWJVUkxTY2hlbWVIYW5k
bGVyKCkKK3sKKyAgICBBU1NFUlQobV90YXNrcy5pc0VtcHR5KCkpOworfQorCit2b2lkIFdlYlVS
TFNjaGVtZUhhbmRsZXI6OnN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJl
c291cmNlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAg
IGF1dG8gcmVzdWx0ID0gbV90YXNrcy5hZGQocmVzb3VyY2VJZGVudGlmaWVyLCBXZWJVUkxTY2hl
bWVIYW5kbGVyVGFzazo6Y3JlYXRlKCp0aGlzLCBwYWdlLCByZXNvdXJjZUlkZW50aWZpZXIsIHJl
cXVlc3QpKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcGxhdGZvcm1T
dGFydFRhc2socGFnZSwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Cit9CisKK3ZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlcjo6c3RvcFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fdGFza3MuZmluZChyZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3Rhc2tzLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0b3AoKTsKKworICAgIHBsYXRm
b3JtU3RvcFRhc2socGFnZSwgaXRlcmF0b3ItPnZhbHVlKTsKKworICAgIG1fdGFza3MucmVtb3Zl
KGl0ZXJhdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2I2ODAwNWU2
NDkxMjQxOTk3MDllNTI4ZGM2ZTg2ZTEyZTcwNGNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYlVSTFNjaGVtZUhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJV
UkxTY2hlbWVIYW5kbGVyKCk7CisKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIHN0YXJ0VGFzayhXZWJQYWdlUHJveHkm
LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOworICAgIHZvaWQgc3RvcFRhc2soV2ViUGFnZVByb3h5JiwgdWludDY0X3QgcmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKworcHJvdGVjdGVkOgorICAgIFdlYlVSTFNjaGVtZUhhbmRsZXIoKTsK
KworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVBy
b3h5JiwgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2smKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2smKSA9
IDA7CisKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAxIH07CisKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s+PiBtX3Rhc2tzOworCit9OyAvLyBj
bGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTIwYWIzZjk1NTE5ODVkODBlYzgyMmM1NDc4MDk0M2YyOTc5ZGU2MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKworI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrPiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6Y3JlYXRlKFdlYlVS
TFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2soaGFuZGxlciwgcGFn
ZSwgcmVzb3VyY2VJZGVudGlmaWVyLCByZXF1ZXN0KSk7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrOjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5k
bGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorICAgIDogbV91cmxTY2hlbWVIYW5kbGVyKGhh
bmRsZXIpCisgICAgLCBtX3BhZ2UoJnBhZ2UpCisgICAgLCBtX2lkZW50aWZpZXIocmVzb3VyY2VJ
ZGVudGlmaWVyKQorICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCit7Cit9CisKK1dlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAg
aWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpF
eGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7CisKKyAgICBpZiAobV9jb21wbGV0ZWQp
CisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6
Q29tcGxldGVBbHJlYWR5Q2FsbGVkOworCisgICAgaWYgKG1fZGF0YVNlbnQpCisgICAgICAgIHJl
dHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6RGF0YUFscmVhZHlT
ZW50OworCisgICAgbV9yZXNwb25zZVNlbnQgPSB0cnVlOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlUmVzcG9uc2UobV91
cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UpKTsK
KyAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vbmU7
Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlIFdlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIpCit7
CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrOjpFeGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7CisKKyAgICBpZiAobV9jb21w
bGV0ZWQpCisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9u
VHlwZTo6Q29tcGxldGVBbHJlYWR5Q2FsbGVkOworCisgICAgaWYgKCFtX3Jlc3BvbnNlU2VudCkK
KyAgICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpO
b1Jlc3BvbnNlU2VudDsKKworICAgIG1fZGF0YVNlbnQgPSB0cnVlOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlRGF0YSht
X3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UoYnVmZmVyLnB0cigpKSkpOworICAgIHJldHVybiBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9uZTsKK30KKworV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGUgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmRpZENv
bXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmIChtX3N0b3BwZWQp
CisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6
VGFza0FscmVhZHlTdG9wcGVkOworCisgICAgaWYgKG1fY29tcGxldGVkKQorICAgICAgICByZXR1
cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFk
eUNhbGxlZDsKKworICAgIGlmICghbV9yZXNwb25zZVNlbnQgJiYgZXJyb3IuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9S
ZXNwb25zZVNlbnQ7CisKKyAgICBtX2NvbXBsZXRlZCA9IHRydWU7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVIYW5kbGVyVGFza0RpZENvbXBsZXRlKG1fdXJs
U2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSk7CisgICAg
cmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpOb25lOworfQor
Cit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpwYWdlRGVzdHJveWVkKCkKK3sKKyAgICBB
U1NFUlQobV9wYWdlKTsKKyAgICBtX3BhZ2UgPSBudWxscHRyOworICAgIG1fc3RvcHBlZCA9IHRy
dWU7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OnN0b3AoKQoreworICAgIEFT
U0VSVCghbV9zdG9wcGVkKTsKKyAgICBtX3N0b3BwZWQgPSB0cnVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNiYWNiM2M5ZTE5NWI1OGFmMWU4MDk4ZTAyMGQ2
NjcxMmM0M2E4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzaz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlclRh
c2s+IGNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgdWludDY0X3Qg
aWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisKKyAgICB1aW50
NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X3JlcXVlc3Q7IH0KKworICAgIGVudW0gY2xhc3MgRXhjZXB0aW9uVHlwZSB7CisgICAgICAgIERh
dGFBbHJlYWR5U2VudCwKKyAgICAgICAgQ29tcGxldGVBbHJlYWR5Q2FsbGVkLAorICAgICAgICBU
YXNrQWxyZWFkeVN0b3BwZWQsCisgICAgICAgIE5vUmVzcG9uc2VTZW50LAorICAgICAgICBOb25l
LAorICAgIH07CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4pOworICAgIEV4Y2VwdGlvblR5cGUgZGlkQ29t
cGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworCisgICAgdm9pZCBzdG9wKCk7
CisgICAgdm9pZCBwYWdlRGVzdHJveWVkKCk7CisKK3ByaXZhdGU6CisgICAgV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworCisgICAgUmVm
PFdlYlVSTFNjaGVtZUhhbmRsZXI+IG1fdXJsU2NoZW1lSGFuZGxlcjsKKyAgICBXZWJQYWdlUHJv
eHkqIG1fcGFnZTsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RhdGFTZW50IHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fY29tcGxldGVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDcxMGEwZDNjZjhlZDliZDkzNWM5OTE1ZGY2NmE0YzVkNDU0N2Q5
MzQuLmZlOTVjZDdiMmVlYTE4OTM4ZThjMjQ3Y2M5N2JhYTY1NGM5MWM0Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNTUs
NiArMTA1NSwxNCBAQAogCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFi
YXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDAyRjY3MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5o
ICovOyB9OwogCQk1MUQwMkY2QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFEMDJGNjgxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2
IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJ
Y29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTUxRDEyNDIzMUU2RDM0QTEwMDJC
MjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDIxMUU2RDM0OUEwMDJCMjgyMCAv
KiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcCAqLzsgfTsKKwkJNTFEMTI0MjgxRTZE
M0Y1RDAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MjQxRTZEM0NDMzAwMkIyODIwIC8q
IFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwICovOyB9OworCQk1MUQxMjQyQzFFNkQ0MUZEMDAyQjI4
MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJBMUU2RDQxQkMwMDJCMjgyMCAvKiBXZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwICovOyB9OworCQk1MUQxMjQzMzFFNkRFNkNBMDAyQjI4
MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzIxRTZERTUyMTAwMkIyODIwIC8qIFdlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYS5tbSAqLzsgfTsKKwkJNTFEMTI0MzQxRTZERjY0MzAwMkIyODIw
IC8qIFdLVVJMU2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMTI0MkQxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFu
ZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJ
NTFEMTI0MzUxRTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJGMUU2RERE
RDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk1MUQxMjQzNjFFNkRGQjM5MDAyQjI4MjAg
LyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDMwMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVt
ZUhhbmRsZXJUYXNrLm1tICovOyB9OworCQk1MUQxMjQzQTFFNkUwQUFCMDAyQjI4MjAgLyogQVBJ
VVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhh
bmRsZXJUYXNrLmNwcCAqLzsgfTsKIAkJNTFEMTMwNTMxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0
ZW1SZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNw
cCAqLzsgfTsKIAkJNTFEMTMwNTQxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMw
NTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovOyB9OwogCQk1MUQx
MzA1NTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MTEzODJFQUMwMDAz
NTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgKi87IH07CkBAIC0xMDY5LDYgKzEwNzcs
NyBAQAogCQk1MUUzNTIwMjE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzUyMDEx
ODBGNUQxRTAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc01hYy5tbSAqLzsgfTsKIAkJNTFFMzUy
MDkxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwODE4MEY1RDZC
MDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSAqLzsgfTsKIAkJNTFFMzk5
MDYxRDZGNTRDNzAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOTkwNTFENkY1NEM1MDA5
Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSAqLzsgfTsKKwkJNTFFOEI2OEUxRTcx
Mjg3NzAwMUI3MTMyIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRThCNjhEMUU3MTI4NzMwMDFCNzEz
MiAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi87IH07CiAJCTUxRTk0OTk3MUQ3NjIx
MTMwMEVDOUVCOSAvKiBVSUdhbWVwYWRQcm92aWRlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTk0OTk2MUQ3NjFDQzcwMEVDOUVCOSAvKiBV
SUdhbWVwYWRQcm92aWRlcklPUy5tbSAqLzsgfTsKIAkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlBOTM4
IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBMkQ1NDE1MjExMTg2MDBDMUJBMEIgLyogV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVzb3VyY2VM
b2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGMDYwREUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2Fn
ZXMuaCAqLzsgfTsKQEAgLTMyNTMsNiArMzI2MiwyMSBAQAogCQk1MUQwMkY2NzEzMkVDNzM3MDBC
RUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFEMDJGNjgxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMDJGNjkxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRh
YmFzZVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
SWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUQxMjQyMTFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxTY2hlbWVI
YW5kbGVyVGFza1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0
MjIxRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyNDFFNkQzQ0MzMDAyQjI4
MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFEMTI0MjUxRTZEM0NDMzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyNzFFNkQzRjFGMDAyQjI4MjAg
LyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTFEMTI0MkExRTZENDFCQzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyQjFF
NkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyRDFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxT
Y2hlbWVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2No
ZW1lSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyRjFFNkRE
REQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxRDEyNDMwMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tV
UkxTY2hlbWVIYW5kbGVyVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFE
MTI0MzExRTZERTUyMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MzIxRTZERTUyMTAwMkIyODIwIC8q
IFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MzcxRTZERkQyQTAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFu
ZGxlclRhc2tJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VS
TFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVVSTFNjaGVtZUhhbmRs
ZXJUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MzkxRTZERkRC
OTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVz
dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJl
cXVlc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTAxMzgy
RUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVxdWVzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNl
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjcxLDYgKzMyOTUsNyBA
QAogCQk1MUUzNTIwNzE4MEY1RDYxMDBFNTNCRTkgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRo
ID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMzUyMDgxODBG
NUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUzOTkwNTFENkY1NEM1MDA5Qzg4MzEg
LyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxRThCNjhEMUU3MTI4NzMwMDFCNzEzMiAvKiBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTk0
OTk2MUQ3NjFDQzcwMEVDOUVCOSAvKiBVSUdhbWVwYWRQcm92aWRlcklPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVySU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyog
V2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUMgLyogV2ViUlRDU29ja2V0TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJUQ1NvY2tldE1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDU4LDYgKzUwODMsOCBA
QAogCQkJCTJEQUY0RkZBMUI2MzYxODEwMDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIu
Y3BwICovLAogCQkJCTJEMTI1QzVDMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRy
b2xsZXIuaCAqLywKIAkJCQkyRDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyLm1lc3NhZ2VzLmluICovLAorCQkJCTUxRDEyNDMxMUU2REU1MjEwMDJCMjgyMCAv
KiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCAqLywKKwkJCQk1MUQxMjQzMjFFNkRFNTIxMDAy
QjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tICovLAogCQkJCTFBQzAyNzNFMTk2
NjIyRDYwMEMxMkI3NSAvKiBXZWJQYWdlUHJveHlDb2NvYS5tbSAqLywKIAkJCQk3QzQ2OTRDQjFB
NEI1MTBBMDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gKi8sCiAJCQkJQ0RB
MjlBMUUxQ0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5o
ICovLApAQCAtNTU0MCw2ICs1NTY3LDEwIEBACiAJCQkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5
IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRDg3OTA5MThCNkMzOEEw
MDZDQUZENyAvKiBXS1VJRGVsZWdhdGUuaCAqLywKIAkJCQkzNzQzOTI1NzE4QkM0QzYwMDAxQzg2
NzUgLyogV0tVSURlbGVnYXRlUHJpdmF0ZS5oICovLAorCQkJCTUxRDEyNDJEMUU2RERERDcwMDJC
MjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXIuaCAqLywKKwkJCQk1MUQxMjQyRjFFNkREREQ3MDAy
QjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovLAorCQkJCTUxRDEyNDMwMUU2RERE
RDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tICovLAorCQkJCTUxRDEyNDM3
MUU2REZEMkEwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLywK
IAkJCQkxQUZBM0FDNzE4RTYxQzYxMDAzQ0NCQUUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
aCAqLywKIAkJCQkxQUZBM0FDNjE4RTYxQzYxMDAzQ0NCQUUgLyogV0tVc2VyQ29udGVudENvbnRy
b2xsZXIubW0gKi8sCiAJCQkJMUFBRjA4QTMxOTI2ODJEQTAwQjYzOTBDIC8qIFdLVXNlckNvbnRl
bnRDb250cm9sbGVySW50ZXJuYWwuaCAqLywKQEAgLTY0NzQsNiArNjUwNSwxMCBAQAogCQkJCUJD
N0I2MjEzMTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oICovLAogCQkJCTJE
NUM5RDAzMTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5jcHAgKi8sCiAJCQkJMkQ1
QzlEMDQxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmggKi8sCisJCQkJNTFEMTI0
MkExRTZENDFCQzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgKi8sCisJ
CQkJNTFEMTI0MkIxRTZENDFCQzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5o
ICovLAorCQkJCTUxRDEyNDIxMUU2RDM0OUEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVy
VGFza1Byb3h5LmNwcCAqLywKKwkJCQk1MUQxMjQyMjFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJM
U2NoZW1lSGFuZGxlclRhc2tQcm94eS5oICovLAogCQkJCUJDQTBFRjdFMTIzMzFFNzgwMDdEM0NG
QiAvKiBXZWJVbmRvU3RlcC5jcHAgKi8sCiAJCQkJQkNBMEVGN0QxMjMzMUU3ODAwN0QzQ0ZCIC8q
IFdlYlVuZG9TdGVwLmggKi8sCiAJCQkpOwpAQCAtNjYzOSw2ICs2Njc0LDEwIEBACiAJCQkJN0E5
Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgKi8sCiAJCQkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oICovLAogCQkJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4gKi8sCisJCQkJNTFEMTI0MjQx
RTZEM0NDMzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwICovLAorCQkJCTUxRDEy
NDI1MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmggKi8sCisJCQkJNTFF
OEI2OEQxRTcxMjg3MzAwMUI3MTMyIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLywK
KwkJCQk1MUQxMjQyNzFFNkQzRjFGMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2su
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gVUlQcm9jZXNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTY2ODksNiArNjcyOCw4IEBACiAJCQkJMUFGREU2NUYxOTU0RTlCMTAwQzQ4RkZB
IC8qIEFQSVNlc3Npb25TdGF0ZS5jcHAgKi8sCiAJCQkJMUFGREU2NjAxOTU0RTlCMTAwQzQ4RkZB
IC8qIEFQSVNlc3Npb25TdGF0ZS5oICovLAogCQkJCTFBNEQ2NjQ3MThBMkQ5MUEwMEQ4MkUyMSAv
KiBBUElVSUNsaWVudC5oICovLAorCQkJCTUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElV
UkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi8sCisJCQkJNTFEMTI0MzkxRTZERkRCOTAwMkIyODIw
IC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi8sCiAJCQkJN0M4OUQyQjExQTZCMDY4QzAw
M0E1RkRFIC8qIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uLmNwcCAqLywKIAkJCQk3Qzg5RDJCMjFB
NkIwNjhDMDAzQTVGREUgLyogQVBJVXNlckNvbnRlbnRFeHRlbnNpb24uaCAqLywKIAkJCQk3QzNB
MDZBNTFBQUI5MDNFMDA5RDc0QkEgLyogQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAg
Ki8sCkBAIC04MTU2LDYgKzgxOTcsNyBAQAogCQkJCTBGRENEN0Y3MUQ0N0U5MkEwMDlGMDhCQyAv
KiBMb2dJbml0aWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2RDg2QzIxREY3NTI2
NTAwNzc0NUU4IC8qIE1hY2hNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NkY3OTEx
NTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRDEyNDM0
MUU2REY2NDMwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRp
b25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBN
ZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTgyODAsNiArODMyMiw3IEBACiAJCQkJ
ODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1
bWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAv
KiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFEMTI0MzUx
RTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2
MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUNE
MDE5MkYyQzJFMDA5ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTk0ODQsNiArOTUyNyw3IEBACiAJCQkJMUE1NzA0RjcxQkUw
MUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBMUE0RkU1QjE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzNzlBODczOTE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlv
bi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDJDMUU2RDQxRkQwMDJCMjgyMCAvKiBXZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEMDFCQzgxOTA1
RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE3RkU3Q0UxQzQ4N0RCODAwQTBDQTg5IC8qIF9XS0V4cGVyaW1lbnRhbEZlYXR1
cmUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzNEMTIyMjE4QTQ3MzAxMDA2NkQ5Q0MgLyogX1dL
RnJhbWVIYW5kbGUubW0gaW4gU291cmNlcyAqLywKQEAgLTk2MzUsNiArOTY3OSw3IEBACiAJCQkJ
MkRBMDQ5QjcxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUM3NUExRTFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlv
bkRpc2FibGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDMEM5NzUxRERENzYwMzAwMzJD
QUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQy
MzFFNkQzNEExMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUUzNTFDQTE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjA0RUUyMTFDODNFOTgwMDhGMzM3NSAvKiBJbmpl
Y3RlZEJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVFRUJBMTEyNzc2MUNDMDAzMzIy
QjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC05ODA0LDYgKzk4NDksNyBAQAogCQkJCTFBMEVDNzVGMTI0QkM3QjIwMDdFRjRBNSAvKiBQbHVn
aW5Qcm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDkwQkIxMjgxQzkzMTAw
MUVCOTYyIC8qIFBsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFB
MDQzQjVEMTI0RDVFOUQwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0MzYxRTZERkIzOTAwMkIyODIwIC8qIFdL
VVJMU2NoZW1lSGFuZGxlclRhc2subW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTA0M0RDMjEyNEZG
ODc1MDBGRkJGQjUgLyogUGx1Z2luUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDky
MjExMjgxREMxQjAwMUVCOTYyIC8qIFBsdWdpblByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE4RUZBNzAxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTk1Nyw2ICsxMDAwMyw3IEBACiAJCQkJMUFBODNGNkMx
QTVCNjNGRjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0QxOUEyNkQxQTEzRTgyQTAwOEQ2NTBFIC8qIFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUIxQzU0MTg5ODdFREYwMDRGQ0Y5QiAvKiBX
ZWJEb2N1bWVudExvYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQyODFFNkQzRjVE
MDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzExMUE1RDExMkY0RkJCMDAzMzdCQUIgLyogV2ViRHJhZ0NsaWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDNTc0QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJhZ0NsaWVudE1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29t
bWFuZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTk4Niw2ICsxMDAzMyw3IEBACiAJCQkJ
QkMxQkUxRTExMkQ1NEE0MTAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMEU1RkU2MTJENjk3MTYwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTYwNjExMkQ2QkE5MTAwMTJBNzJB
IC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MUQxMjQzMzFFNkRFNkNBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1NENBQ0MxMkQ2NDI5MTAwNUM2N0IwIC8qIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MTgy
MTJENkNCMUQwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMwNzVBRTFERTg1RjU4MDAzOUVDNjkgLyog
TGliV2ViUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAxMDIsNiArMTAxNTAsNyBA
QAogCQkJCTJEQTk0NEIwMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1MUQxMzA1ODEzODJGMTA1MDAzNTFFREQgLyogV2ViUHJvY2Vz
c1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RB
IC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MUQxMjQzQTFFNkUwQUFCMDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRTA5MzMxODg2MUQzODAwRDJEQzQ5IC8qIFdlYlByb2dy
ZXNzVHJhY2tlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNTg5QzEyQTg4Mzg4
MDA2Mjk1MzAgLyogV2ViUHJvdGVjdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
QzUxMkM4MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0xMDI4Myw2ICsxMDMzMiw3IEBACiAJCQkJQkM4NTgwNjIxMkI4NTA1
NzAwRURFQjJFIC8qIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNENTk3RDYxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Qzg5RDI5QjFBNjc4MzdCMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJl
Zi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUU4QjY4RTFFNzEyODc3MDAxQjcxMzIgLyogV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3QjYzMzgxMkE0
NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTE3
QjdEMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ2QUI1NDIxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRv
ci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMDc1OWU3YzNlOTdlNTEwMGFl
NzgxMTJjOGMyYmU1ZjRhNDZjNWMzMy4uMTgyODI3NDNmMDMyYTMyYWUyYjU1YjgxOTQ0N2Q0MmY2
ZmFiMGZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0zOSw4ICszOSwxMSBAQAogI2luY2x1ZGUgIldl
YkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRl
ci5oIgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIgorI2luY2x1ZGUgIldl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KQEAgLTE5NCw2ICsxOTcs
MTYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVy
JiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICB9CiAjZW5kaWYKIAorICAgIGlmICh3
ZWJQYWdlKSB7CisgICAgICAgIGlmIChhdXRvKiBoYW5kbGVyID0gd2ViUGFnZS0+dXJsU2NoZW1l
SGFuZGxlckZvclNjaGVtZShyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2wo
KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKSB7CisgICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
VVJMICclcycgd2lsbCBiZSBoYW5kbGVkIGJ5IGEgVUlQcm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxl
ci4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxv
YWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nlc3MgVVJMIHNjaGVtZSBoYW5kbGVy
IChmcmFtZSA9ICVwLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgaWRlbnRpZmllcik7CisKKyAgICAgICAgICAgIGhhbmRsZXItPnN0YXJ0TmV3VGFz
ayhyZXNvdXJjZUxvYWRlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CisKICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUg
TmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0eSAlZCIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0
cmluZygpLmxhdGluMSgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogCiAgICAgQ29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRl
bnRTbmlmZmluZ1BvbGljeSA9IHJlc291cmNlTG9hZGVyLnNob3VsZFNuaWZmQ29udGVudCgpID8g
U25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNvbnRlbnQ7CkBAIC0yNjAsNiArMjczLDExIEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2Fk
ZXIpCiAgICAgICAgIG1faW50ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVycy5yZW1vdmUocmVz
b3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGF1dG8gdGFz
ayA9IG1fdXJsU2NoZW1lSGFuZGxlclRhc2tzLnRha2UocmVzb3VyY2VMb2FkZXItPmlkZW50aWZp
ZXIoKSkpIHsKKyAgICAgICAgdGFzay0+c3RvcExvYWRpbmcoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICAgICAKICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIgPSByZXNv
dXJjZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAgIGlmICghaWRlbnRpZmllcikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
aAppbmRleCBiN2UxYjE5OTQwMDczZjJlNjRjMWY0ZGQ4MTIzZGFlMjc1MjE4ZWNkLi4yOTA0NzVi
NjE5MzM2OTk3OGRiNTI1MzMwZWUzYmE0MjdjMmMzOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtMzUsNiAr
MzUsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjsKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk7CiB0eXBlZGVmIHVpbnQ2
NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CiAKIGNsYXNzIFdlYkxvYWRlclN0cmF0ZWd5IDog
cHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKQEAgLTc0LDYgKzc1LDcgQEAgcHJpdmF0
ZToKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJMb2FkZXJTdHJhdGVneT4gbV9pbnRlcm5hbGx5RmFp
bGVkTG9hZFRpbWVyOwogICAgIAogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVmUHRyPFdl
YlJlc291cmNlTG9hZGVyPj4gbV93ZWJSZXNvdXJjZUxvYWRlcnM7CisgICAgSGFzaE1hcDx1bnNp
Z25lZCBsb25nLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eT4+
IG1fdXJsU2NoZW1lSGFuZGxlclRhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzMw
YmExODc2ZjZjYWI1YTQyYzQ4MTU0MTY4YWYwZWIyZjE4MmI2Yy4uN2Q0NDI2MGY3NDcyZjNhODQ3
ZWZhOGYzNzBjNDIxN2MyOTZmNWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTEwLDYgKzExMCw3IEBACiAjaW5jbHVkZSAiV2ViUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIKICNp
bmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJVUkxT
Y2hlbWVIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJVbmRvU3RlcC5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVu
dC5oIgpAQCAtNTYxLDYgKzU2Miw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgZW5hYmxl
RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpOwogI2VuZGlmCiAjZW5kaWYKKworICAg
IGZvciAoYXV0byBpdGVyYXRvciA6IHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpCisgICAg
ICAgIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpdGVyYXRvci52YWx1ZSwgaXRlcmF0b3Iua2V5
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQpAQCAtNTczOSw0ICs1NzQzLDQyIEBAIHZvaWQgV2Vi
UGFnZTo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkK
ICAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCY+KGNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLmxvYWRlcigpLmNsaWVudCgpKS5zZXRVc2VJY29uTG9hZGluZ0NsaWVudCh1c2VJY29u
TG9hZGluZ0NsaWVudCk7CiB9CiAKK1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSogV2ViUGFnZTo6
dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBy
ZXR1cm4gbV9zY2hlbWVUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoc2NoZW1lKTsKK30K
Kwordm9pZCBXZWJQYWdlOjpyZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIodWludDY0X3QgaGFuZGxl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGF1dG8gc2NoZW1lUmVz
dWx0ID0gbV9zY2hlbWVUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5hZGQoc2NoZW1lLCBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eT4oKnRoaXMsIGhhbmRsZXJJZGVu
dGlmaWVyKSk7CisgICAgQVNTRVJUKHNjaGVtZVJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGF1
dG8gaWRlbnRpZmllclJlc3VsdCA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5
TWFwLmFkZChoYW5kbGVySWRlbnRpZmllciwgc2NoZW1lUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChpZGVudGlmaWVyUmVzdWx0LCBpZGVudGlmaWVyUmVz
dWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZUhhbmRsZXJUYXNr
RGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAg
YXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdl
dChoYW5kbGVySWRlbnRpZmllcik7CisgICAgQVNTRVJUKGhhbmRsZXIpOworCisgICAgaGFuZGxl
ci0+dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOworfQor
Cit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0
X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmll
clRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CisgICAg
QVNTRVJUKGhhbmRsZXIpOworCisgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJ
ZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworfQorCit2b2lkIFdlYlBhZ2U6
OnVybFNjaGVtZUhhbmRsZXJUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
K3sKKyAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJv
eHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoaGFuZGxlcik7CisKKyAg
ICBoYW5kbGVyLT50YXNrRGlkQ29tcGxldGUodGFza0lkZW50aWZpZXIsIGVycm9yKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCBjODMyZTJjY2VjODlmNzk2NzgzYzI4MDRhNGY0MmI1NzYxY2QyOWFl
Li4zN2Q4MTQ0NzM5ZjU3YzYwMDY3NzYxZDdjMzc4NTE5OWE0MGE5YWMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1
ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlVS
TFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg+CkBAIC0xNzgsNiArMTc5LDcgQEAgY2xhc3MgV2ViSW5z
cGVjdG9yQ2xpZW50OwogY2xhc3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBXZWJHZXN0dXJlRXZl
bnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudDsK
IGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwpAQCAtOTY5LDYgKzk3MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbigpOwogI2VuZGlm
CiAKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkqIHVybFNjaGVtZUhhbmRsZXJGb3JTY2hl
bWUoY29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEyNjIsNiArMTI2NiwxMiBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1l
bnQoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAorICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVI
YW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKworICAg
IHZvaWQgdXJsU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgaGFu
ZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB1cmxTY2hlbWVIYW5kbGVyVGFza0RpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCB1cmxTY2hlbWVIYW5kbGVy
VGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNr
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworCiAgICAgdWludDY0
X3QgbV9wYWdlSUQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdl
OwpAQCAtMTU0MCw2ICsxNTUwLDkgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IFdlYkNv
cmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogCiAgICAgY29uc3QgU3Ry
aW5nIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CisKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eT4+IG1fc2NoZW1lVG9V
UkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5Kj4gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzQ2ZTI1ZDlkMDdl
MmNlNjlmMDMyY2I1NGFlNTk0Njc3Njc1YTZiZS4uY2Y0ZjQ2NTYyYjViOGFhNmI4MTVjOTg0M2Ni
MGI3YWM5MmI3NmVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ2OSw0ICs0NjksMTAgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgRGlk
UmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoU3RyaW5nIHBhc3N3b3JkKQogI2Vu
ZGlmCisKKyAgICBSZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllciwg
U3RyaW5nIHNjaGVtZSkKKworICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IHByb3ZpZGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisgICAgVVJMU2NoZW1lSGFuZGxl
clRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBwcm92aWRlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBVUkxTY2hlbWVI
YW5kbGVyVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IHByb3ZpZGVySWRlbnRpZmllciwgdWludDY0
X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxT
Y2hlbWVIYW5kbGVyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMGE4ZDEyYzU1ZjcyZmE2Y2VjNTVh
Nzc1NTAxNDg4NDg0ODI1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtMCwwICsxLDgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6V2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5KFdlYlBhZ2UmIHBhZ2UsIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAg
OiBtX3dlYlBhZ2UocGFnZSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQor
CitXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6On5XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkoKQor
eworICAgIEFTU0VSVChtX3Rhc2tzLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5OjpzdGFydE5ld1Rhc2soUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKK3sKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKGxvYWRlci5pZGVudGlmaWVyKCksIHN0ZDo6bWFr
ZV91bmlxdWU8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eT4oKnRoaXMsIGxvYWRlcikpOwor
ICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5zdGFydExvYWRpbmcoKTsKK30KKworCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6dGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgYXV0byogdGFzayA9IG1fdGFza3Mu
Z2V0KHRhc2tJZGVudGlmaWVyKTsKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIHRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Cit9CisKK3ZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgdGFza0lkZW50
aWZpZXIsIHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQoreworICAgIGF1dG8qIHRh
c2sgPSBtX3Rhc2tzLmdldCh0YXNrSWRlbnRpZmllcik7CisgICAgaWYgKCF0YXNrKQorICAgICAg
ICByZXR1cm47CisKKyAgICB0YXNrLT5kaWRSZWNlaXZlRGF0YShzaXplLCBkYXRhKTsKK30KKwor
dm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB0
YXNrID0gbV90YXNrcy50YWtlKHRhc2tJZGVudGlmaWVyKTsKKyAgICBpZiAoIXRhc2spCisgICAg
ICAgIHJldHVybjsKKworICAgIHRhc2stPmRpZENvbXBsZXRlKGVycm9yKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0NmMx
MjZjNDViNmM2ZTk1N2M4YjNjM2RmZmMxMzk2NDRlYTE2MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHku
aApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJl
c291cmNlTG9hZGVyOworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eSB7CitwdWJsaWM6CisgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KFdlYlBhZ2UmLCB1aW50
NjRfdCBpZGVudGlmaWVyKTsKKyAgICB+V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KCk7CisKKyAg
ICB2b2lkIHN0YXJ0TmV3VGFzayhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOworCisgICAgdWlu
dDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFdl
YlBhZ2UmIHBhZ2UoKSB7IHJldHVybiBtX3dlYlBhZ2U7IH0KKworICAgIHZvaWQgdGFza0RpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHRh
c2tJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOworICAgIHZvaWQgdGFz
a0RpZENvbXBsZXRlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworICAgIHVp
bnQ2NF90IG1faWRlbnRpZmllciB7IDAgfTsKKworICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywg
c3RkOjp1bmlxdWVfcHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk+PiBtX3Rhc2tzOwor
fTsgLy8gY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhYjlj
NjQ5MTI1NDdiMGUzMWZkZDRlNGJlOGExMjgzYzNlZDUxMDUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQ
cm94eS5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgiCisKKyNpbmNsdWRl
ICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtM
b2FkTWV0cmljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KKyNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwg
UmVzb3VyY2VMb2FkZXImIGxvYWRlcikKKyAgICA6IG1fdXJsU2NoZW1lSGFuZGxlcihoYW5kbGVy
KQorICAgICwgbV9jb3JlTG9hZGVyKCZsb2FkZXIpCisgICAgLCBtX3JlcXVlc3QobG9hZGVyLnJl
cXVlc3QoKSkKK3sKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdGFy
dExvYWRpbmcoKQoreworICAgIEFTU0VSVChtX2NvcmVMb2FkZXIpOworICAgIG1fdXJsU2NoZW1l
SGFuZGxlci5wYWdlKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydFVSTFNjaGVt
ZUhhbmRsZXJUYXNrKG1fdXJsU2NoZW1lSGFuZGxlci5pZGVudGlmaWVyKCksIG1fY29yZUxvYWRl
ci0+aWRlbnRpZmllcigpLCBtX3JlcXVlc3QpKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFza1Byb3h5OjpzdG9wTG9hZGluZygpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fdXJsU2NoZW1lSGFuZGxlci5wYWdlKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTdG9wVVJMU2NoZW1lSGFuZGxlclRhc2sobV91cmxTY2hlbWVI
YW5kbGVyLmlkZW50aWZpZXIoKSwgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKTsKKyAgICBt
X2NvcmVMb2FkZXIgPSBudWxscHRyOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNr
UHJveHk6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
b3JlTG9hZGVyLT5kaWRSZWNlaXZlUmVzcG9uc2UocmVzcG9uc2UpOworfQorCit2b2lkIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25z
dCB1aW50OF90KiBkYXRhKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2NvcmVMb2FkZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhcio+KGRhdGEpLCBzaXplLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2Fk
Qnl0ZXMpOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZENvbXBs
ZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmICghbV9jb3JlTG9hZGVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIG1f
Y29yZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAg
ZWxzZQorICAgICAgICBtX2NvcmVMb2FkZXItPmRpZEZhaWwoZXJyb3IpOworCisgICAgbV9jb3Jl
TG9hZGVyID0gbnVsbHB0cjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2tQcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOWEzNjg4ZDEwYTZmYTYzYWVlZTNiMmY5
ZDNmM2Q0OTJlNGU3MjIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaApAQCAtMCwwICsxLDYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9y
OworY2xhc3MgUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OworCitj
bGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5IHsKK3B1YmxpYzoKKyAgICBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYsIFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyJik7CisKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KKworICAgIHZvaWQgc3RhcnRM
b2FkaW5nKCk7CisgICAgdm9pZCBzdG9wTG9hZGluZygpOworCisgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlk
UmVjZWl2ZURhdGEoc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIGRpZENv
bXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKKworcHJpdmF0ZToKKyAgICBX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkmIG1fdXJsU2NoZW1lSGFuZGxlcjsKKyAgICBSZWZQdHI8
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+IG1fY29yZUxvYWRlcjsKKyAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgbV9yZXF1ZXN0OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303949</attachid>
            <date>2017-03-09 12:26:11 -0800</date>
            <delta_ts>2017-03-09 12:59:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169422-20170309122611.patch</filename>
            <type>text/plain</type>
            <size>103944</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZjNzNkM2VlY2NmNjYw
ZTA0Yjk1NTUxZDRiMmQ1ZmIwZDQ1ZTY3OC4uYzk5MjdkYmY5N2JiNDQ2OTE4MWQ2NWRiZTg0Zjk0
MWZkN2E3NGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAzLTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tVUkxTY2hlbWVI
YW5kbGVyIEFQSSBmb3IgaGFuZGxpbmcgY3VzdG9tIHByb3RvY29scy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1VSTFBhcnNlci5oOgorCiAyMDE3LTAzLTA4ICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkNyeXB0b10gSW1wbGVtZW50IFN1YnRs
ZUNyeXB0bzo6RGVyaXZlS2V5IG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDlmYTU1YmU3NzY1NDVhOGU0
ODk5ZTA2MTdjZjYwOWUzN2U1OTVhOWEuLmFkYjkwNmFjOWRjZDFjYjg5ZWYwOGRmOTY1YzJlNjgy
NmVlZjFkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzkgQEAKKzIwMTctMDMtMDkgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1VSTFNjaGVtZUhh
bmRsZXIgQVBJIGZvciBoYW5kbGluZyBjdXN0b20gcHJvdG9jb2xzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIHR3byBuZXcg
cHJvdG9jb2xzIHRvIHRoZSBXSzIgQVBJIHN1cmZhY2U6CisgICAgICAgIC0gV0tVUkxTY2hlbWVI
YW5kbGVyCisgICAgICAgIC0gV0tVUkxTY2hlbWVIYW5kbGVyVGFzaworICAgICAgICAKKyAgICAg
ICAgQnkgcmVnaXN0ZXJpbmcgYW4gb2JqZWN0IHRoYXQgY29uZm9ybXMgdG8gdGhlIFdLVVJMU2No
ZW1lSGFuZGxlciBwcm90b2NvbCB3aXRoIGEgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbiBhcHBs
aWNhdGlvbiB3aWxsCisgICAgICAgIGJlIGhhbmRlZCBhbiBvYmplY3QgY29uZm9ybWluZyB0byBX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrIGZvciBlYWNoIHJlc291cmNlIGxvYWQgaW4gdGhhdCBXS1dl
YlZpZXcgd2l0aCBhIGN1c3RvbSBVUkwgc2NoZW1lLgorICAgICAgICAKKyAgICAgICAgVXNpbmcg
dGhhdCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4sIHRoZSBhcHBsaWNhdGlvbiBjYW4gY29t
bXVuaWNhdGUgdGhlIGRhdGEgZm9yIHRoZSByZXNvdXJjZSBiYWNrIHRvIFdlYktpdC4KKyAgICAg
ICAgCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOiAKKyAgICAgICAgKEFQSTo6VVJMU2NoZW1l
SGFuZGxlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNr
OjpVUkxTY2hlbWVIYW5kbGVyVGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oOiAKKworICAgICAgICBBZGQgdGhlIFdLVVJMU2NoZW1lSGFuZGxl
ciBAcHJvdG9jb2w6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXIuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIHRoZSBXS1VSTFNjaGVtZUhhbmRsZXJUYXNr
IEBwcm90b2NvbCwgYXMgd2VsbCBhcyBXZWJLaXQncyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBv
ZiBpdDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRh
c2suaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tOiBBZGRlZC4KKyAgICAgICAgKHJhaXNlRXhjZXB0aW9uSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCByZXF1ZXN0XSk6CisgICAg
ICAgICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZFJlY2VpdmVSZXNwb25zZTpdKToK
KyAgICAgICAgKC1bV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgZGlkUmVjZWl2ZURhdGE6XSk6
CisgICAgICAgICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZEZpbmlzaF0pOgorICAg
ICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBkaWRGYWlsV2l0aEVycm9yOl0pOgor
ICAgICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBfYXBpT2JqZWN0XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwu
aDogCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyB1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1l
Ol0pOgorICAgICAgICAoK1tXS1dlYlZpZXcgaGFuZGxlc1VSTFNjaGVtZTpdKToKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgt
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpmb3JVUkxTY2hlbWU6
XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gdXJsU2NoZW1lSGFuZGxlckZv
clVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdXJsU2No
ZW1lSGFuZGxlcnNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYS5oOiAKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hOjphcGlIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVVJM
U2NoZW1lSGFuZGxlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlckNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2E6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RvcFRhc2spOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lSGFuZGxlclRhc2spOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuY3BwOiAKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVXZWJVUkxTY2hlbWVIYW5kbGVySWRl
bnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OldlYlVSTFNj
aGVtZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjp+V2Vi
VVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6
OnN0YXJ0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BU
YXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oOiAKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcjo6aWRlbnRpZmllcik6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkQ29t
cGxldGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6cGFnZURl
c3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpzdG9w
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjppZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OnJlcXVlc3QpOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpyZW1vdmUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVUkxTY2hl
bWVIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxlclRh
c2tEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hl
bWVIYW5kbGVyVGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXJsU2NoZW1lSGFuZGxlclRhc2tEaWRDb21wbGV0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6On5XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0YXJ0TmV3VGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFz
a0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5Ojp0YXNrRGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjpwYWdlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdGFydExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdG9w
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OnJlcXVlc3QpOgorCisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorCiAyMDE3LTAzLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBwbHVtYmluZyBmb3IgV2ViQ29yZSB0byBub3RpZnkgV2ViS2l0MiB3aGVu
IGFuIGVkaXQgZHJhZyBoYXMgY29uY2x1ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2Vy
LmNwcAppbmRleCBkMWY4ZmU4NGE4ZTYzZjQ3NGMyM2NkYjdkM2Q4MzkwMDkyMDcyZGFiLi5hNjkx
NGNjZTM5ODc3OWZjODJiZjdkNjQ3MWRlNDQ0OTJmNzQwODJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTFBhcnNlci5jcHAKQEAgLTc5MCw2ICs3OTAsMjggQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgU2NoZW1lIHNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkKICAgICB9CiB9CiAKK3N0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQoreworICAgIGlmIChzY2hlbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFpc0FTQ0lJQWxwaGEoc2NoZW1lWzBdKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwg
c2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMo
c2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0gJysnIHx8IHNjaGVtZVtpXSA9PSAnLScgfHwgc2No
ZW1lW2ldID09ICcuJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBzY2hlbWUuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKTsKK30KKworYm9vbCBVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZUFyZykKK3sKKyAgICByZXR1cm4gc2NoZW1lKHNjaGVtZUFyZykgIT0gU2NoZW1l
OjpOb25TcGVjaWFsOworfQorCiBlbnVtIGNsYXNzIFVSTFBhcnNlcjo6VVJMUGFydCB7CiAgICAg
U2NoZW1lRW5kLAogICAgIFVzZXJTdGFydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgK
aW5kZXggNzNjYTE4OGZkN2VmMGIyZGE4ODcyMTYwY2E4ODY4YzE4NzkzMDU5NS4uNTcwOGE0ZmY3
Y2Y2NzFiNGQ1OTM1MjM2NzExZDY3MmY1OGM1NTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
UGFyc2VyLmgKQEAgLTUwLDYgKzUwLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IFVJ
RE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKIAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisKIHByaXZhdGU6CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3Ry
aW5nVmlldyk7CiAgICAgZnJpZW5kIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZDJlZjIy
ZmRiMmVlNTU1OGFkNTUwNmE2MmM2MDFjOTI5Y2Y0MzAuLjUyNWRmNTkyNGRlZGRiZjZhMWEyNzNm
YTkxMTU0ZGM4NmQyYzJkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMjYsNiArMzI2LDgg
QEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVU
cmFja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKICAgICBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKICAgICBVSVBy
b2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlv
blByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCkBAIC0z
MzksNiArMzQxLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBh
bmVsUGFyYW1ldGVycy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVNlc3Npb25TdGF0ZS5jcHAK
KyAgICBVSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJVXNl
ckNvbnRlbnRXb3JsZC5jcHAKQEAgLTU3OSwxMCArNTgyLDEwIEBAIHNldChXZWJLaXQyX1NPVVJD
RVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VPdmVybGF5LmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNr
UHJveHkuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmNwcAogCi0KLQog
ICAgICR7TmV0d29ya1Byb2Nlc3NfQ09NTU9OX1NPVVJDRVN9CiApCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IGYyY2IwNTQwYTMxZDA1NDQ4ZmUyYjhmNWU4MzVhMmYz
ZDdkYWM4MDkuLmNhZGQ5YTU5Njg3OThmYzVkNzNiM2Q5OTk3ZTUyOTc1MTBlZWIzNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTIwLDYgKzEyMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgSWNvbkRhdGFiYXNlLAogICAgICAgICBJbnNwZWN0b3IsCiAgICAgICAgIEtl
eVZhbHVlU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrLAogICAg
ICAgICBNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgTmF2aWdhdGlvbiwKICAgICAgICAgTmF2
aWdhdGlvbkFjdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9B
UElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmlu
ZGV4IDhlY2I1MzMzODYwMmMwN2Y4MmYyMWFjNzg1NTViYzZkMmE5NWYwYmMuLjg0YTg0ZTY5NzJj
Y2VjZjAwODdkMmUxM2Y3NWM4NzM3YmVkNmJkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbQpAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCAiV0tQcmVmZXJlbmNl
c0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5kbGVy
VGFza0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFs
LmgiCiAjaW1wb3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKQEAgLTE4Myw2ICsx
ODQsMTAgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkK
ICAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAorICAgIGNhc2UgVHlwZTo6VVJMU2NoZW1lSGFuZGxl
clRhc2s6CisgICAgICAgIHdyYXBwZXIgPSBbV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgYWxs
b2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbjoKICAgICAg
ICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCAxNDI5MmY5OWE3MmJjZDc3OGVhZThlNzM2OTZlOTczMWVmY2E2MGEwLi5lODVjZDEwZjVl
MDUxNWU4Y2ZlMWYwZWQyMDAyYTg5YjllZDZhNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC05Myw2ICs5Myw3IEBA
IHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0odXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbik7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG9ic2VydmVkTGF5b3V0TWlsZXN0b25l
cyk7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBl
bmNvZGVyIDw8IHVybFNjaGVtZUhhbmRsZXJzOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGVu
Y29kZXIgPDwgaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZDsKICNpZiBVU0UoTElCV0VCUlRD
KQpAQCAtMjIxLDYgKzIyMiw5IEBAIGJvb2wgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFyCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVybFNjaGVtZUhhbmRsZXJzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgRU5B
QkxFKFdFQl9SVEMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljZUNhbmRp
ZGF0ZUZpbHRlcmluZ0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAyMDgx
YjA3OTMxNTg2MzE4Zjk1NWJhYmQ5N2NjNGYxY2FiMTNkMzcxLi5iNGZlNmU2NjQ1YmM5NzExOTA3
YmM0YzQ3OTJkYWU5OTZkZjc2ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTQ2LDYgKzE0Nyw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsK
IAorICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gdXJsU2NoZW1lSGFuZGxlcnM7CisKICNp
ZiBFTkFCTEUoV0VCX1JUQykKICAgICBib29sIGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQg
eyB0cnVlIH07CiAjaWYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGM0MjAxYzkxNTIwNDMzZWYxNGYzZjc2ZDk2OGNlNTRhNjQ4MGEyZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2su
Y3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKworI2luY2x1ZGUgIldlYlVSTFNj
aGVtZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorCitu
YW1lc3BhY2UgQVBJIHsKKworUmVmPFVSTFNjaGVtZUhhbmRsZXJUYXNrPiBVUkxTY2hlbWVIYW5k
bGVyVGFzazo6Y3JlYXRlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smIHdlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVSTFNjaGVtZUhh
bmRsZXJUYXNrKHdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrKSk7Cit9CisKK1VSTFNjaGVtZUhhbmRs
ZXJUYXNrOjpVUkxTY2hlbWVIYW5kbGVyVGFzayhXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrJiB3ZWJVUkxTY2hlbWVIYW5kbGVyVGFzaykKKyAgICA6IG1fd2ViVVJMU2NoZW1lSGFuZGxl
clRhc2sod2ViVVJMU2NoZW1lSGFuZGxlclRhc2spCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZTMxNTA4ZmQwOWUyNWE5NDNlY2I3YzQ0ZTkyMmFkNjk2ZjA5YWMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrOworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgVVJMU2No
ZW1lSGFuZGxlclRhc2sgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVS
TFNjaGVtZUhhbmRsZXJUYXNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxVUkxTY2hlbWVI
YW5kbGVyVGFzaz4gY3JlYXRlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smKTsKKwor
ICAgIFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smIHRhc2soKSB7IHJldHVybiBtX3dl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgVVJMU2NoZW1l
SGFuZGxlclRhc2soV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayYpOworCisgICAgUmVm
PFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s+IG1fd2ViVVJMU2NoZW1lSGFuZGxlclRh
c2s7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDMxYmM1MDU3YzUyZTBkOTkz
ZGYzNTgwNjM3N2VlOTY4ZTMzZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tf
QVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wgV0tVUkxT
Y2hlbWVIYW5kbGVyVGFzazsKKworLyohIEEgY2xhc3MgY29uZm9ybWluZyB0byB0aGUgV0tVUkxT
Y2hlbWVIYW5kbGVyIHByb3RvY29sIHByb3ZpZGVzIG1ldGhvZHMgZm9yCisgbG9hZGluZyByZXNv
dXJjZXMgd2l0aCBVUkwgc2NoZW1lcyB0aGF0IFdlYktpdCBkb2Vzbid0IGtub3cgaG93IHRvIGhh
bmRsZSBpdHNlbGYuCisgKi8KK1dLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpCitAcHJvdG9jb2wgV0tVUkxTY2hlbWVIYW5kbGVyIDxOU09iamVjdD4K
KworLyohIEBhYnN0cmFjdCBOb3RpZmllcyB5b3VyIGFwcCB0byBzdGFydCBsb2FkaW5nIHRoZSBk
YXRhIGZvciBhIHBhcnRpY3VsYXIgcmVzb3VyY2UgCisgcmVwcmVzZW50ZWQgYnkgdGhlIFVSTCBz
Y2hlbWUgaGFuZGxlciB0YXNrLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyBpbnZva2lu
ZyB0aGUgbWV0aG9kLgorIEBwYXJhbSB1cmxTY2hlbWVIYW5kbGVyVGFzayBUaGUgdGFzayB0aGF0
IHlvdXIgYXBwIHNob3VsZCBzdGFydCBsb2FkaW5nIGRhdGEgZm9yLgorICovCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRUYXNrOihpZCA8V0tVUkxTY2hlbWVIYW5k
bGVyVGFzaz4pdXJsU2NoZW1lSGFuZGxlclRhc2s7CisKKy8qISBAYWJzdHJhY3QgTm90aWZpZXMg
eW91ciBhcHAgdG8gc3RvcCBoYW5kbGluZyBhIFVSTCBzY2hlbWUgaGFuZGxlciB0YXNrLgorIEBw
YXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyBpbnZva2luZyB0aGUgbWV0aG9kLgorIEBwYXJhbSB1
cmxTY2hlbWVIYW5kbGVyVGFzayBUaGUgdGFzayB0aGF0IHlvdXIgYXBwIHNob3VsZCBzdG9wIGhh
bmRsaW5nLgorIEBkaXNjdXNzaW9uIEFmdGVyIHlvdXIgYXBwIGlzIHRvbGQgdG8gc3RvcCBsb2Fk
aW5nIGRhdGEgZm9yIGEgVVJMIHNjaGVtZSBoYW5kbGVyIHRhc2sKKyBpdCBtdXN0IG5vdCBwZXJm
b3JtIGFueSBjYWxsYmFja3MgZm9yIHRoYXQgdGFzay4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0
aHJvd24gaWYgYW55IGNhbGxiYWNrcyBhcmUgbWFkZSBvbiB0aGUgVVJMIHNjaGVtZSBoYW5kbGVy
IHRhc2sKKyBhZnRlciB5b3VyIGFwcCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyBmb3Ig
aXQuCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVGFzazoo
aWQgPFdLVVJMU2NoZW1lSGFuZGxlclRhc2s+KXVybFNjaGVtZUhhbmRsZXJUYXNrOworCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjlmZTM5NjVlOGIzOGUwMDc2MmM1OTM2MGI3ZWViZmZiNTZmNWEyOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0Bw
cm90b2NvbCBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrIDxOU09iamVjdD4KKworLyohIEBhYnN0cmFj
dCBUaGUgcmVxdWVzdCB0byBsb2FkIGZvciB0aGlzIHRhc2suCisgKi8KK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0OworCisvKiEgQGFi
c3RyYWN0IFNldCB0aGUgY3VycmVudCByZXNwb25zZSBvYmplY3QgZm9yIHRoZSB0YXNrLgorIEBw
YXJhbSByZXNwb25zZSBUaGUgcmVzcG9uc2UgdG8gdXNlLgorIEBkaXNjdXNzaW9uIFRoaXMgbWV0
aG9kIG11c3QgYmUgY2FsbGVkIGF0IGxlYXN0IG9uY2UgZm9yIGVhY2ggVVJMIHNjaGVtZSBoYW5k
bGVyIHRhc2suCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8gc2Vu
ZCBhIG5ldyByZXNwb25zZSBvYmplY3QgYWZ0ZXIgdGhlIHRhc2sgaGFzIGFscmVhZHkgYmVlbiBj
b21wbGV0ZWQuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdXIgYXBwIGhhcyBi
ZWVuIHRvbGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJlZ2lzdGVyZWQgV0tV
UkxTY2hlbWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZClkaWRSZWNlaXZlUmVzcG9uc2U6
KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKKworLyohIEBhYnN0cmFjdCBBZGQgcmVjZWl2ZWQg
ZGF0YSB0byB0aGUgdGFzay4KKyBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBhZGQuCisgQGRpc2N1
c3Npb24gQWZ0ZXIgYSBVUkwgc2NoZW1lIGhhbmRsZXIgdGFzaydzIGZpbmFsIHJlc3BvbnNlIG9i
amVjdCBpcyByZWNlaXZlZCB5b3Ugc2hvdWxkCisgc3RhcnQgc2VuZGluZyBpdCBkYXRhLgorIEVh
Y2ggdGltZSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgdGhlIGRhdGEgeW91IHNlbmQgd2lsbCBiZSBh
cHBlbmRlZCB0byBhbGwgcHJldmlvdXMgZGF0YS4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJv
d24gaWYgeW91IHRyeSB0byBzZW5kIHRoZSB0YXNrIGFueSBkYXRhIGJlZm9yZSBzZW5kaW5nIGl0
IGEgcmVzcG9uc2UuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8g
c2VuZCB0aGUgdGFzayBhbnkgZGF0YSBhZnRlciB0aGUgdGFzayBoYXMgYWxyZWFkeSBiZWVuIGNv
bXBsZXRlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91ciBhcHAgaGFzIGJl
ZW4gdG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0YXNrIHZpYSB0aGUgcmVnaXN0ZXJlZCBXS1VS
TFNjaGVtZUhhbmRsZXIgb2JqZWN0LgorICovCistICh2b2lkKWRpZFJlY2VpdmVEYXRhOihOU0Rh
dGEgKilkYXRhOworCisvKiEgQGFic3RyYWN0IE1hcmsgdGhlIHRhc2sgYXMgc3VjY2Vzc2Z1bGx5
IGNvbXBsZXRlZC4KKyBAZGlzY3Vzc2lvbiBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYg
eW91IHRyeSB0byBmaW5pc2ggdGhlIHRhc2sgYmVmb3JlIHNlbmRpbmcgaXQgYSByZXNwb25zZS4K
KyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRyeSB0byBtYXJrIGEgdGFzayBj
b21wbGV0ZWQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBtYXJrZWQgY29tcGxldGVkIG9yIGZh
aWxlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91ciBhcHAgaGFzIGJlZW4g
dG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0YXNrIHZpYSB0aGUgcmVnaXN0ZXJlZCBXS1VSTFNj
aGVtZUhhbmRsZXIgb2JqZWN0LgorICovCistICh2b2lkKWRpZEZpbmlzaDsKKworLyohIEBhYnN0
cmFjdCBNYXJrIHRoZSB0YXNrIGFzIGZhaWxlZC4KKyBAcGFyYW0gZXJyb3IgQSBkZXNjcmlwdGlv
biBvZiB0aGUgZXJyb3IgdGhhdCBjYXVzZWQgdGhlIHRhc2sgdG8gZmFpbC4KKyBAZGlzY3Vzc2lv
biAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8gbWFyayBhIHRhc2sg
ZmFpbGVkIGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGNvbXBsZXRlZCBvciBmYWls
ZWQuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdXIgYXBwIGhhcyBiZWVuIHRv
bGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJlZ2lzdGVyZWQgV0tVUkxTY2hl
bWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZClkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9y
ICopZXJyb3I7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXJUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMzU0NTQ3ZmYwMmMyNWI4MTJkZDA1NTY5
ZWI0ZTFmZmI0MjhlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2subW0KQEAgLTAsMCArMSw5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5k
bGVyVGFza0ludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW5jbHVkZSAiV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGlj
IHZvaWQgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrOjpFeGNlcHRpb25UeXBlIGV4Y2VwdGlvblR5cGUpCit7CisgICAgaWYgKGV4Y2VwdGlv
blR5cGUgPT0gV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6
VGFza0FscmVhZHlTdG9wcGVkKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5h
bEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhpcyB0YXNrIGhhcyBhbHJlYWR5IGJl
ZW4gc3RvcHBlZCJdOworICAgIGlmIChleGNlcHRpb25UeXBlID09IFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZCkKKyAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9u
IGZvcm1hdDpAIltXS1VSTFNjaGVtZUhhbmRsZXJUYXNrIHRhc2tEaWRDb21wbGV0ZVdpdGhFcnJv
cjpdIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGZvciB0aGlzIHRhc2siXTsKKyAgICBpZiAoZXhj
ZXB0aW9uVHlwZSA9PSBXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25U
eXBlOjpEYXRhQWxyZWFkeVNlbnQpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVy
bmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJbV0tVUkxTY2hlbWVIYW5kbGVyVGFz
ayB0YXNrRGlkUmVjZWl2ZURhdGE6XSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBmb3IgdGhpcyB0
YXNrIl07CisgICAgaWYgKGV4Y2VwdGlvblR5cGUgPT0gV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9SZXNwb25zZVNlbnQpCisgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJObyBy
ZXNwb25zZSBoYXMgYmVlbiBzZW50IGZvciB0aGlzIHRhc2siXTsKK30KKworQGltcGxlbWVudGF0
aW9uIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsCisKKy0gKE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QKK3sKKyAgICByZXR1cm4gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkucmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAodm9pZClkaWRSZWNl
aXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQoreworICAgIGF1dG8gcmVzdWx0
ID0gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlKTsKKyAgICByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7Cit9CisKKy0gKHZv
aWQpZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBhdXRvIHJlc3VsdCA9IF91
cmxTY2hlbWVIYW5kbGVyVGFzay0+dGFzaygpLmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2Fy
eShyZXN1bHQpOworfQorCistICh2b2lkKWRpZEZpbmlzaAoreworICAgIGF1dG8gcmVzdWx0ID0g
X3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkuZGlkQ29tcGxldGUoeyB9KTsKKyAgICByYWlz
ZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7Cit9CisKKy0gKHZvaWQpZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgYXV0byByZXN1bHQgPSBfdXJsU2NoZW1lSGFu
ZGxlclRhc2stPnRhc2soKS5kaWRDb21wbGV0ZShlcnJvcik7CisgICAgcmFpc2VFeGNlcHRpb25J
Zk5lY2Vzc2FyeShyZXN1bHQpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wg
aW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1
cm4gKl91cmxTY2hlbWVIYW5kbGVyVGFzazsKK30KKworQGVuZAorCisjZW5kaWYgLy8gI2lmIFdL
X0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMjQ2ODAxZjU4MzY2NmNhMzE1ODE2MDZhZDI4NjA4ZjYyYTQ4ZGU4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrSW50ZXJuYWwuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCAiQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisK
K0BpbnRlcmZhY2UgV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgOiBOU09iamVjdCA8V0tVUkxT
Y2hlbWVIYW5kbGVyVGFzaz4KK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBp
ZDxXS1VSTFNjaGVtZUhhbmRsZXJUYXNrPiB3cmFwcGVyKEFQSTo6VVJMU2NoZW1lSGFuZGxlclRh
c2smIHVybFNjaGVtZUhhbmRsZXJUYXNrKQoreworICAgIEFTU0VSVChbdXJsU2NoZW1lSGFuZGxl
clRhc2sud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBs
IGNsYXNzXV0pOworICAgIHJldHVybiAoaWQ8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4pdXJsU2No
ZW1lSGFuZGxlclRhc2sud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgV0tVUkxTY2hl
bWVIYW5kbGVyVGFza0ltcGwgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNrPiBfdXJsU2NoZW1lSGFuZGxlclRh
c2s7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNWMyZWNjOGUwNDdhN2I1
NmRjOTc0ZDJmZTMxMzBlYTgxMzE3MzhiMi4uMDkwNThkYjQ4ZGI0MDc5N2I0ZTZkNWU2MGI0YWUy
YmI3MGE2ODEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5oCkBAIC0yNzksNiArMjc5LDExIEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSkKIAogI2VuZGlmCiAKKy8qIEBhYnN0cmFjdCBDaGVja3Mgd2hldGhl
ciBvciBub3QgV0tXZWJWaWV3cyBoYW5kbGUgdGhlIGdpdmVuIFVSTCBzY2hlbWUgYnkgZGVmYXVs
dC4KKyBAcGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRvIGNoZWNrLgorICovCisrIChCT09M
KWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiAhVEFS
R0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCA4OTdhMmI3ODMzYzcwZTkzMmYwYTk1M2ZiOGY3NzA0ZTMyODQzYmJj
Li5iZTQyYTQxYzllZWY2NWUwZDM1NzNmZGJiNjY2NzAxNWZmZGU0MzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNzgsNiArNzgs
NyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UG9vbC5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2EuaCIKICNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0ICJfV0tE
aWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIK
QEAgLTEwMCw2ICsxMDEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4
dFN0cmVhbS5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Xcml0aW5nTW9kZS5oPgog
I2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3Myw2ICs1NzUsMTAgQEAgLSAodm9pZClfaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmln
dXJhdGlvbgogICAgIFtzZWxmIF9zZXRVcFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudF07CiAj
ZW5kaWYKIAorICAgIGF1dG8gKmhhbmRsZXJzID0gX2NvbmZpZ3VyYXRpb24uZ2V0KCkuX3VybFNj
aGVtZUhhbmRsZXJzOworICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBoYW5kbGVycykKKyAgICAg
ICAgX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShoYW5kbGVyc1trZXldKSwga2V5KTsKKwogICAgIHBhZ2VU
b1ZpZXdNYXAoKS5hZGQoX3BhZ2UuZ2V0KCksIHNlbGYpOwogfQogCkBAIC0zNDk2LDYgKzM1MDIs
MTcgQEAgLSAodm9pZClfaW50ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRlc3RpbmcKIAogI2Vu
ZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQogCistIChpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxT
Y2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIGF1
dG8qIGhhbmRsZXIgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YSo+KF9wYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKHVybFNjaGVtZSkpOworICAgIHJl
dHVybiBoYW5kbGVyID8gaGFuZGxlci0+YXBpSGFuZGxlcigpIDogbmlsOworfQorCisrIChCT09M
KWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCit7CisgICAgcmV0dXJuIFdl
YkNvcmU6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKHVybFNjaGVtZSk7Cit9CisKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoV0tQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24uaAppbmRleCAzYWRhYmJjMTI4ZTlhOTBmNzU4YzMxYjgyODUxMjFjNDA3ZTNhYmZkLi5iN2U0
Yjg4YmQ4YzgwNmNlMWZiMDllNTVjMGYyZWQxNDNiMGRjY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24uaApAQCAtMzYsNiArMzYsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdL
UHJvY2Vzc1Bvb2w7CiBAY2xhc3MgV0tVc2VyQ29udGVudENvbnRyb2xsZXI7CiBAY2xhc3MgV0tX
ZWJzaXRlRGF0YVN0b3JlOworQHByb3RvY29sIFdLVVJMU2NoZW1lSGFuZGxlcjsKIAogI2lmIFRB
UkdFVF9PU19JUEhPTkUKIApAQCAtMTc1LDYgKzE3NiwyNSBAQCBXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCiAKICNlbmRpZgogCisvKiBAYWJzdHJhY3QgU2V0cyB0
aGUgdXJsIHNjaGVtZSBoYW5kbGVyIG9iamVjdCBmb3IgdGhlIGdpdmVuIFVSTCBzY2hlbWUuCisg
QHBhcmFtIHVybFNjaGVtZUhhbmRsZXIgVGhlIG9iamVjdCB0byByZWdpc3Rlci4KKyBAcGFyYW0g
c2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRoZSBvYmplY3Qgd2lsbCBoYW5kbGUuCisgQGRpc2N1c3Np
b24gRWFjaCBVUkwgc2NoZW1lIGNhbiBvbmx5IGhhdmUgb25lIHVybCBzY2hlbWUgaGFuZGxlciBv
YmplY3QgcmVnaXN0ZXJlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRy
eSB0byByZWdpc3RlciBhbiBvYmplY3QgZm9yIGEgcGFydGljdWxhciBVUkwgc2NoZW1lIG1vcmUg
dGhhbiBvbmNlLgorIFVSTCBzY2hlbWVzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLiBlLmcuICJteXBy
b3RvY29sIiBhbmQgIk15UHJvdG9jb2wiIGFyZSBlcXVpdmFsZW50LgorIFZhbGlkIFVSTCBzY2hl
bWVzIG11c3Qgc3RhcnQgd2l0aCBhbiBBU0NJSSBsZXR0ZXIgYW5kIGNhbiBvbmx5IGNvbnRhaW4g
QVNDSUkgbGV0dGVycywgbnVtYmVycywgdGhlICcrJyBjaGFyYWN0ZXIsCisgdGhlICctJyBjaGFy
YWN0ZXIsIGFuZCB0aGUgJy4nIGNoYXJhY3Rlci4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJv
d24gaWYgeW91IHRyeSB0byByZWdpc3RlciBhIHVybCBzY2hlbWUgaGFuZGxlciBmb3IgYW4gaW52
YWxpZCBVUkwgc2NoZW1lLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5
IHRvIHJlZ2lzdGVyIGEgdXJsIHNjaGVtZSBoYW5kbGVyIGZvciBhIFVSTCBzY2hlbWUgdGhhdCBX
ZWJLaXQgaGFuZGxlcyBpbnRlcm5hbGx5LgorIFlvdSBjYW4gdXNlICtbV0tXZWJWaWV3IGhhbmRs
ZXNVUkxTY2hlbWU6XSB0byBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IG9mIGEgZ2l2ZW4gVVJMIHNj
aGVtZS4KKyAqLworLSAodm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihudWxsYWJsZSBpZCA8V0tV
UkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcg
Kil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKKy8qIEBhYnN0cmFjdCBSZXR1cm5zIHRoZSBjdXJyZW50bHkgcmVnaXN0ZXJl
ZCB1cmwgc2NoZW1lIGhhbmRsZXIgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gVVJMIHNjaGVtZS4KKyBA
cGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRvIGxvb2t1cC4KKyAqLworLSAobnVsbGFibGUg
aWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTooTlNT
dHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAogQGludGVyZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0
aW9uIChXS0RlcHJlY2F0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggNThjMTg1MjM4
MzdlNzZjNTY0NzlhMjA5MTQ0MGVhOTBkODZhYzM4Yi4uZDY3MDZlMzIyMGYzMzQyNjI1NDk3Zjlm
ZjkwMzc5ZWY2YTA0YjczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMzMsMTEgKzMz
LDEzIEBACiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29s
LmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tXZWJW
aWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgogI2lt
cG9ydCAiV2Vha09iakNQdHIuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCIKICNp
bXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMUGFyc2VyLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC05NCw2
ICs5Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHsKICAgICBX
ZWJLaXQ6OldlYWtPYmpDUHRyPFdLV2ViVmlldz4gX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0
aW9uR2VzdHVyZXM7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZ3JvdXBJZGVudGlmaWVyOwog
ICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBfYXBwbGljYXRpb25OYW1l
Rm9yVXNlckFnZW50OworICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4+PiBfdXJsU2NoZW1l
SGFuZGxlcnM7CiAgICAgTlNUaW1lSW50ZXJ2YWwgX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb25UaW1lb3V0OwogICAgIEJPT0wgX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0lu
c2VjdXJlOwogICAgIEJPT0wgX3Jlc3BlY3RzSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTMyOCw2ICsz
MzEsOCBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0
aW9uLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgPSBzZWxmLT5fbmVlZHNT
dG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms7CiAgICAgY29uZmlndXJhdGlvbi0+X292ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gc2VsZi0+X292ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5OwogCisgICAgY29uZmlndXJhdGlvbi0+X3VybFNjaGVtZUhhbmRsZXJzLnNldChbc2Vs
Zi5fdXJsU2NoZW1lSGFuZGxlcnMgbXV0YWJsZUNvcHlXaXRoWm9uZTp6b25lXSk7CisKICAgICBy
ZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIApAQCAtNDAwLDYgKzQwNSwzMyBAQCAtICh2b2lkKV9z
ZXRWaXNpdGVkTGlua1N0b3JlOihfV0tWaXNpdGVkTGlua1N0b3JlICopdmlzaXRlZExpbmtTdG9y
ZQogICAgIF92aXNpdGVkTGlua1N0b3JlLnNldCh2aXNpdGVkTGlua1N0b3JlKTsKIH0KIAorLSAo
dm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hl
bWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKK3sKKyAgICBhdXRv
ICp1cmxTY2hlbWVIYW5kbGVycyA9IF91cmxTY2hlbWVIYW5kbGVycy5nZXQoW10geyByZXR1cm4g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsgfSk7CisKKyAgICBp
ZiAoW1dLV2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOnVybFNjaGVtZV0pCisgICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCInJUAnIGlz
IGEgVVJMIHNjaGVtZSB0aGF0IFdLV2ViVmlldyBoYW5kbGVzIG5hdGl2ZWx5IiwgdXJsU2NoZW1l
XTsKKworICAgIGF1dG8gY2Fub25pY2FsU2NoZW1lID0gV2ViQ29yZTo6VVJMUGFyc2VyOjptYXli
ZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOworICAgIGlmICghY2Fub25pY2FsU2NoZW1l
KQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24g
Zm9ybWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJsU2NoZW1lXTsKKwor
ICAgIGlmIChbdXJsU2NoZW1lSGFuZGxlcnMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWNhbm9u
aWNhbFNjaGVtZS52YWx1ZSgpXSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlVSTCBzY2hlbWUgJyVAJyBhbHJlYWR5IGhhcyBh
IHJlZ2lzdGVyZWQgdXJsIHNjaGVtZSBoYW5kbGVyIiwgdXJsU2NoZW1lXTsKKworICAgIFt1cmxT
Y2hlbWVIYW5kbGVycyBzZXRPYmplY3Q6dXJsU2NoZW1lSGFuZGxlciBmb3JLZXk6KE5TU3RyaW5n
ICopY2Fub25pY2FsU2NoZW1lLnZhbHVlKCldOworfQorCistIChudWxsYWJsZSBpZCA8V0tVUkxT
Y2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVy
bFNjaGVtZQoreworICAgIGF1dG8gY2Fub25pY2FsU2NoZW1lID0gV2ViQ29yZTo6VVJMUGFyc2Vy
OjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOworICAgIGlmICghY2Fub25pY2Fs
U2NoZW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgYXV0byAqdXJsU2NoZW1lSGFuZGxl
cnMgPSBfdXJsU2NoZW1lSGFuZGxlcnMuZ2V0KFtdIHsgcmV0dXJuIGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7IH0pOworICAgIHJldHVybiBbdXJsU2NoZW1lSGFu
ZGxlcnMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWNhbm9uaWNhbFNjaGVtZS52YWx1ZSgpXTsK
K30KKwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogCkBAIC00MTUsNiArNDQ3
LDExIEBAIC0gKHZvaWQpX3NldFdlYnNpdGVEYXRhU3RvcmU6KF9XS1dlYnNpdGVEYXRhU3RvcmUg
Kil3ZWJzaXRlRGF0YVN0b3JlCiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAorLSAo
TlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4g
KilfdXJsU2NoZW1lSGFuZGxlcnMKK3sKKyAgICByZXR1cm4gX3VybFNjaGVtZUhhbmRsZXJzLmdl
dChbXSB7IHJldHVybiBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0p
OyB9KTsKK30KKwogI2lmIFBMQVRGT1JNKElPUykKIC0gKFdLV2ViVmlld0NvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5ICopX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaAppbmRleCBlZjhlMjEwYjZiMTMwZGJmMDFlYWNlNDExNDQ4Zjli
ZWY2ZDJkOTQ2Li5lNDhjMDJkMzIxMTg1ZjgwNjEwOGQyYTFkYjA2NzdkNDFkMWE3ODVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmgKQEAgLTMyLDYgKzMyLDggQEAKIAog
QGludGVyZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0aW9uICgpCiAKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxT
Y2hlbWVIYW5kbGVyPj4gKl91cmxTY2hlbWVIYW5kbGVyczsKKwogI2lmIFBMQVRGT1JNKElPUykK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENvbnRlbnRQcm92aWRlclJlZ2lzdHJ5
OikgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgKl9jb250ZW50UHJvdmlkZXJSZWdp
c3RyeTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
Y29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZWFjNDUwOTEwMDgw
ODllMTMzYjQ2ZDhlZWZhNzg1OGRkOTQzNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViVVJMU2No
ZW1lSGFuZGxlci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworQHByb3RvY29sIFdL
VVJMU2NoZW1lSGFuZGxlcjsKKworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBVUkxTY2hlbWVIYW5k
bGVyVGFzazsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYSA6IHB1YmxpYyBXZWJVUkxTY2hlbWVIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYT4gY3JlYXRlKGlkIDxXS1VSTFNjaGVt
ZUhhbmRsZXI+KTsKKworICAgIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+IGFwaUhhbmRsZXIoKSBj
b25zdCB7IHJldHVybiBtX2FwaUhhbmRsZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJV
UkxTY2hlbWVIYW5kbGVyQ29jb2EoaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pOworCisgICAgdm9p
ZCBwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFz
ayYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJveHkmLCBXZWJV
UkxTY2hlbWVIYW5kbGVyVGFzayYpIGZpbmFsOworCisgICAgUmV0YWluUHRyPGlkIDxXS1VSTFNj
aGVtZUhhbmRsZXI+PiBtX2FwaUhhbmRsZXI7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPEFQ
STo6VVJMU2NoZW1lSGFuZGxlclRhc2s+PiBtX2FwaVRhc2tzOworCit9OyAvLyBjbGFzcyBXZWJV
UkxTY2hlbWVIYW5kbGVyCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2Eu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2ZmZTZjN2U2MTY2MjAxMjY4ZThjYzRiNzQ1ZjEzZDQ5NzIzMWZjMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxT
Y2hlbWVIYW5kbGVyQ29jb2EubW0KQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKKwor
I2luY2x1ZGUgIkFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmgiCisjaW5jbHVkZSAiV0tVUkxTY2hl
bWVIYW5kbGVyLmgiCisjaW5jbHVkZSAiV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmgi
CisjaW5jbHVkZSAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVI
YW5kbGVyVGFzay5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1JlZjxXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E+IFdlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYTo6Y3JlYXRlKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+IGFwaUhhbmRsZXIpCit7Cisg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hKGFwaUhhbmRs
ZXIpKTsKK30KKworV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpXZWJVUkxTY2hlbWVIYW5kbGVy
Q29jb2EoaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4gYXBpSGFuZGxlcikKKyAgICA6IG1fYXBpSGFu
ZGxlcihhcGlIYW5kbGVyKQoreworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6
cGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJVUkxTY2hlbWVIYW5kbGVy
VGFzayYgdGFzaykKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fYXBpVGFza3MuYWRkKHRhc2suaWRl
bnRpZmllcigpLCBBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpjcmVhdGUodGFzaykpOworICAg
IEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBbbV9hcGlIYW5kbGVyLmdldCgpIHdl
YlZpZXc6ZnJvbVdlYlBhZ2VQcm94eShwYWdlKSBzdGFydFRhc2s6d3JhcHBlcihyZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmdldCgpKV07Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29h
OjpwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2smIHRhc2spCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fYXBpVGFza3MuZmluZCh0YXNr
LmlkZW50aWZpZXIoKSk7CisgICAgaWYgKGl0ZXJhdG9yID09IG1fYXBpVGFza3MuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFttX2FwaUhhbmRsZXIuZ2V0KCkgd2ViVmlldzpmcm9tV2Vi
UGFnZVByb3h5KHBhZ2UpIHN0b3BUYXNrOndyYXBwZXIoaXRlcmF0b3ItPnZhbHVlLmdldCgpKV07
CisKKyAgICBtX2FwaVRhc2tzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAx
MjJmNmExNDVlOTViNjE2NjJhNjQ2OTc1ZWJjNjYwYWM0YzI2ZTY0Li5jYmIyOThkNjQ4ZDA2ZmNi
MGJmYzI4MzVmMTAzMzY3YWVhODM1ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMTA4LDYgKzEwOCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bv
b2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm90ZWN0
aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW5jbHVkZSAi
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CaXRtYXBJbWFnZS5oPgpAQCAtMTI3LDYgKzEyOCw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tlckNsaWVudC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvVGV4dEluZGljYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZhbGlkYXRpb25CdWJi
bGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3Rk
aW8uaD4KQEAgLTU1ODgsNiArNTU5MCw5IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2Vi
UGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMoKQogICAgIHBhcmFtZXRlcnMub2JzZXJ2ZWRM
YXlvdXRNaWxlc3RvbmVzID0gbV9vYnNlcnZlZExheW91dE1pbGVzdG9uZXM7CiAgICAgcGFyYW1l
dGVycy5vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeSA9IG1fb3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3k7CiAKKyAgICBmb3IgKGF1dG8mIGl0ZXJhdG9yIDogbV91cmxTY2hlbWVIYW5k
bGVyc0J5U2NoZW1lKQorICAgICAgICBwYXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzLnNldChp
dGVyYXRvci5rZXksIGl0ZXJhdG9yLnZhbHVlLT5pZGVudGlmaWVyKCkpOworCiAjaWYgRU5BQkxF
KFdFQl9SVEMpCiAgICAgcGFyYW1ldGVycy5pY2VDYW5kaWRhdGVGaWx0ZXJpbmdFbmFibGVkID0g
bV9wcmVmZXJlbmNlcy0+aWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCgpOwogI2lmIFVTRShM
SUJXRUJSVEMpCkBAIC02ODQzLDUgKzY4NDgsNDEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RQb2ludGVyVW5sb2NrKCkKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VVJM
U2NoZW1lSGFuZGxlckZvclNjaGVtZShSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiBoYW5kbGVy
LCBjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZWRTY2hlbWUg
PSBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHNjaGVtZSk7CisgICAgQVNTRVJU
KGNhbm9uaWNhbGl6ZWRTY2hlbWUpOworICAgIEFTU0VSVCghVVJMUGFyc2VyOjppc1NwZWNpYWxT
Y2hlbWUoY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpKSk7CisKKyAgICBhdXRvIHNjaGVtZVJl
c3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZS5hZGQoY2Fub25pY2FsaXplZFNjaGVt
ZS52YWx1ZSgpLCBoYW5kbGVyLmdldCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHNjaGVtZVJlc3Vs
dCwgc2NoZW1lUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgYXV0byBpZGVudGlmaWVyID0gaGFu
ZGxlci0+aWRlbnRpZmllcigpOworICAgIGF1dG8gaWRlbnRpZmllclJlc3VsdCA9IG1fdXJsU2No
ZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikp
OworICAgIEFTU0VSVF9VTlVTRUQoaWRlbnRpZmllclJlc3VsdCwgaWRlbnRpZmllclJlc3VsdC5p
c05ld0VudHJ5KTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVn
aXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFs
dWUoKSksIG1fcGFnZUlEKTsKK30KKworV2ViVVJMU2NoZW1lSGFuZGxlciogV2ViUGFnZVByb3h5
Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAg
IHJldHVybiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWUuZ2V0KHNjaGVtZSk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNrKHVpbnQ2NF90IGhhbmRs
ZXJJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV91cmxT
Y2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKGhhbmRsZXJJZGVudGlmaWVyKTsKKyAgICBB
U1NFUlQoaXRlcmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5lbmQoKSk7
CisKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgcmVzb3VyY2VJZGVudGlm
aWVyLCByZXF1ZXN0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnN0b3BVUkxTY2hlbWVIYW5k
bGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVu
dGlmaWVyLmZpbmQoaGFuZGxlcklkZW50aWZpZXIpOworICAgIEFTU0VSVChpdGVyYXRvciAhPSBt
X3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKKworICAgIGl0ZXJhdG9yLT52
YWx1ZS0+c3RvcFRhc2soKnRoaXMsIHJlc291cmNlSWRlbnRpZmllcik7Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGMxYTgyZGM5ZDVhZmRiYjEzMDE3NGJkZmJjMWEwMDlhODViZjE0Y2YuLjM3ZGY2YmI0YWJkODVh
MmNlODg5Njg5NDkwMzI4YjFhNzk3ZWJhOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTIwMiw2ICsyMDIsNyBAQCBjbGFzcyBXZWJQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJOYXZpZ2F0aW9uU3RhdGU7CiBjbGFzcyBXZWJWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2Vi
VVJMU2NoZW1lSGFuZGxlcjsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CiBjbGFzcyBXZWJPcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViUGFnZUdyb3VwOwpAQCAtMTE5MSw2ICsx
MTkyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaG91bGRTa2lwV2FpdGluZ0ZvclBhaW50
QWZ0ZXJOZXh0Vmlld0RpZE1vdmVUb1dpbmRvdyhib29sIHNob3VsZFNraXApIHsgbV9zaG91bGRT
a2lwV2FpdGluZ0ZvclBhaW50QWZ0ZXJOZXh0Vmlld0RpZE1vdmVUb1dpbmRvdyA9IHNob3VsZFNr
aXA7IH0KIAorICAgIHZvaWQgc2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZShSZWY8V2ViVVJM
U2NoZW1lSGFuZGxlcj4mJiwgY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdlYlVSTFNjaGVt
ZUhhbmRsZXIqIHVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUp
OworCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1By
b3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAg
ICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTE1OTQsNiArMTU5OCw5IEBAIHByaXZh
dGU6CiAjZW5kaWYKICNlbmRpZgogCisgICAgdm9pZCBzdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNr
KHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAgIHZvaWQgc3RvcFVSTFNjaGVt
ZUhhbmRsZXJUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCByZXNvdXJj
ZUlkZW50aWZpZXIpOworCiAgICAgdm9pZCBoYW5kbGVBdXRvRmlsbEJ1dHRvbkNsaWNrKGNvbnN0
IFVzZXJEYXRhJik7CiAKICAgICB2b2lkIGZpbmlzaEluaXRpYWxpemluZ1dlYlBhZ2VBZnRlclBy
b2Nlc3NMYXVuY2goKTsKQEAgLTE5NzksNiArMTk4Niw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2lzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCB7IGZhbHNlIH07CiAgICAgICAgIAogICAgIFdl
YWtQdHJGYWN0b3J5PFdlYlBhZ2VQcm94eT4gbV93ZWFrUHRyRmFjdG9yeTsKKworICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4+IG1fdXJsU2NoZW1lSGFuZGxlcnNC
eVNjaGVtZTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4+
IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGRjOTNjNDgwN2RhMTk5YmY5NDY3YzAyNmRmMzQ5NWQ4NzIwOTkzMjYuLjk2
YjJlZmYxYzNkN2Q0M2RjNTIyNTZjNzUzODUyZjNjNjhjNmFlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNDkwLDQgKzQ5
MCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgIFNldElzVXNp
bmdIaWdoUGVyZm9ybWFuY2VXZWJHTChib29sIGlzVXNpbmdIaWdoUGVyZm9ybWFuY2VXZWJHTCkK
KworICAgIFN0YXJ0VVJMU2NoZW1lSGFuZGxlclRhc2sodWludDY0X3QgbG9hZGVySWRlbnRpZmll
ciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCkKKyAgICBTdG9wVVJMU2NoZW1lSGFuZGxlclRhc2sodWludDY0X3QgbG9hZGVySWRl
bnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1OTll
YzJmM2UxZmYyMTIxYTdiZmYzNzUwMTE2OWVjYTM2YjZjNTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKQEAgLTAsMCAr
MSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJV
UkxTY2hlbWVIYW5kbGVyLmgiCisKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0
YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVdlYlVSTFNjaGVtZUhhbmRsZXJJZGVudGlmaWVyKCkKK3sK
KyAgICBzdGF0aWMgdWludDY0X3QgbmV4dElkZW50aWZpZXIgPSAxOworICAgIHJldHVybiBuZXh0
SWRlbnRpZmllcisrOworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyOjpXZWJVUkxTY2hlbWVIYW5k
bGVyKCkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZVdlYlVSTFNjaGVtZUhhbmRsZXJJZGVu
dGlmaWVyKCkpCit7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXI6On5XZWJVUkxTY2hlbWVIYW5k
bGVyKCkKK3sKKyAgICBBU1NFUlQobV90YXNrcy5pc0VtcHR5KCkpOworfQorCit2b2lkIFdlYlVS
TFNjaGVtZUhhbmRsZXI6OnN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJl
c291cmNlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAg
IGF1dG8gcmVzdWx0ID0gbV90YXNrcy5hZGQocmVzb3VyY2VJZGVudGlmaWVyLCBXZWJVUkxTY2hl
bWVIYW5kbGVyVGFzazo6Y3JlYXRlKCp0aGlzLCBwYWdlLCByZXNvdXJjZUlkZW50aWZpZXIsIHJl
cXVlc3QpKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgcGxhdGZvcm1T
dGFydFRhc2socGFnZSwgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7Cit9CisKK3ZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlcjo6c3RvcFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fdGFza3MuZmluZChyZXNv
dXJjZUlkZW50aWZpZXIpOworICAgIGlmIChpdGVyYXRvciA9PSBtX3Rhc2tzLmVuZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0b3AoKTsKKworICAgIHBsYXRm
b3JtU3RvcFRhc2socGFnZSwgaXRlcmF0b3ItPnZhbHVlKTsKKworICAgIG1fdGFza3MucmVtb3Zl
KGl0ZXJhdG9yKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2I2ODAwNWU2
NDkxMjQxOTk3MDllNTI4ZGM2ZTg2ZTEyZTcwNGNjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzay5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYlVSTFNjaGVtZUhhbmRsZXI+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJV
UkxTY2hlbWVIYW5kbGVyKCk7CisKKyAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICB2b2lkIHN0YXJ0VGFzayhXZWJQYWdlUHJveHkm
LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOworICAgIHZvaWQgc3RvcFRhc2soV2ViUGFnZVByb3h5JiwgdWludDY0X3QgcmVzb3Vy
Y2VJZGVudGlmaWVyKTsKKworcHJvdGVjdGVkOgorICAgIFdlYlVSTFNjaGVtZUhhbmRsZXIoKTsK
KworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TdGFydFRhc2soV2ViUGFnZVBy
b3h5JiwgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2smKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2smKSA9
IDA7CisKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAxIH07CisKKyAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s+PiBtX3Rhc2tzOworCit9OyAvLyBj
bGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTIwYWIzZjk1NTE5ODVkODBlYzgyMmM1NDc4MDk0M2YyOTc5ZGU2MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKworI2luY2x1ZGUg
IkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrPiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6Y3JlYXRlKFdlYlVS
TFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0X3QgcmVz
b3VyY2VJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2soaGFuZGxlciwgcGFn
ZSwgcmVzb3VyY2VJZGVudGlmaWVyLCByZXF1ZXN0KSk7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrOjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5k
bGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorICAgIDogbV91cmxTY2hlbWVIYW5kbGVyKGhh
bmRsZXIpCisgICAgLCBtX3BhZ2UoJnBhZ2UpCisgICAgLCBtX2lkZW50aWZpZXIocmVzb3VyY2VJ
ZGVudGlmaWVyKQorICAgICwgbV9yZXF1ZXN0KHJlcXVlc3QpCit7Cit9CisKK1dlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAg
aWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpF
eGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7CisKKyAgICBpZiAobV9jb21wbGV0ZWQp
CisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6
Q29tcGxldGVBbHJlYWR5Q2FsbGVkOworCisgICAgaWYgKG1fZGF0YVNlbnQpCisgICAgICAgIHJl
dHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6RGF0YUFscmVhZHlT
ZW50OworCisgICAgbV9yZXNwb25zZVNlbnQgPSB0cnVlOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlUmVzcG9uc2UobV91
cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UpKTsK
KyAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vbmU7
Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlIFdlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiBidWZmZXIpCit7
CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrOjpFeGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7CisKKyAgICBpZiAobV9jb21w
bGV0ZWQpCisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9u
VHlwZTo6Q29tcGxldGVBbHJlYWR5Q2FsbGVkOworCisgICAgaWYgKCFtX3Jlc3BvbnNlU2VudCkK
KyAgICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpO
b1Jlc3BvbnNlU2VudDsKKworICAgIG1fZGF0YVNlbnQgPSB0cnVlOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlRGF0YSht
X3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCBJUEM6OlNoYXJl
ZEJ1ZmZlckRhdGFSZWZlcmVuY2UoYnVmZmVyLnB0cigpKSkpOworICAgIHJldHVybiBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9uZTsKK30KKworV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGUgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmRpZENv
bXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGlmIChtX3N0b3BwZWQp
CisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6
VGFza0FscmVhZHlTdG9wcGVkOworCisgICAgaWYgKG1fY29tcGxldGVkKQorICAgICAgICByZXR1
cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFk
eUNhbGxlZDsKKworICAgIGlmICghbV9yZXNwb25zZVNlbnQgJiYgZXJyb3IuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9S
ZXNwb25zZVNlbnQ7CisKKyAgICBtX2NvbXBsZXRlZCA9IHRydWU7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVIYW5kbGVyVGFza0RpZENvbXBsZXRlKG1fdXJs
U2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSk7CisgICAg
cmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpOb25lOworfQor
Cit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpwYWdlRGVzdHJveWVkKCkKK3sKKyAgICBB
U1NFUlQobV9wYWdlKTsKKyAgICBtX3BhZ2UgPSBudWxscHRyOworICAgIG1fc3RvcHBlZCA9IHRy
dWU7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OnN0b3AoKQoreworICAgIEFT
U0VSVCghbV9zdG9wcGVkKTsKKyAgICBtX3N0b3BwZWQgPSB0cnVlOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNiYWNiM2M5ZTE5NWI1OGFmMWU4MDk4ZTAyMGQ2
NjcxMmM0M2E4YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNvdXJjZVJlc3Bv
bnNlOworY2xhc3MgU2hhcmVkQnVmZmVyOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKworY2xhc3MgV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzaz4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlclRh
c2s+IGNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgdWludDY0X3Qg
aWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisKKyAgICB1aW50
NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X3JlcXVlc3Q7IH0KKworICAgIGVudW0gY2xhc3MgRXhjZXB0aW9uVHlwZSB7CisgICAgICAgIERh
dGFBbHJlYWR5U2VudCwKKyAgICAgICAgQ29tcGxldGVBbHJlYWR5Q2FsbGVkLAorICAgICAgICBU
YXNrQWxyZWFkeVN0b3BwZWQsCisgICAgICAgIE5vUmVzcG9uc2VTZW50LAorICAgICAgICBOb25l
LAorICAgIH07CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2ZURh
dGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4pOworICAgIEV4Y2VwdGlvblR5cGUgZGlkQ29t
cGxldGUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworCisgICAgdm9pZCBzdG9wKCk7
CisgICAgdm9pZCBwYWdlRGVzdHJveWVkKCk7CisKK3ByaXZhdGU6CisgICAgV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworCisgICAgUmVm
PFdlYlVSTFNjaGVtZUhhbmRsZXI+IG1fdXJsU2NoZW1lSGFuZGxlcjsKKyAgICBXZWJQYWdlUHJv
eHkqIG1fcGFnZTsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKyAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2RhdGFTZW50IHsg
ZmFsc2UgfTsKKyAgICBib29sIG1fY29tcGxldGVkIHsgZmFsc2UgfTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDcxMGEwZDNjZjhlZDliZDkzNWM5OTE1ZGY2NmE0YzVkNDU0N2Q5
MzQuLmZlOTVjZDdiMmVlYTE4OTM4ZThjMjQ3Y2M5N2JhYTY1NGM5MWM0Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwNTUs
NiArMTA1NSwxNCBAQAogCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFi
YXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxRDAyRjY3MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5o
ICovOyB9OwogCQk1MUQwMkY2QjEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFEMDJGNjgxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2
IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJ
Y29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggKi87IH07CisJCTUxRDEyNDIzMUU2RDM0QTEwMDJC
MjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDIxMUU2RDM0OUEwMDJCMjgyMCAv
KiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcCAqLzsgfTsKKwkJNTFEMTI0MjgxRTZE
M0Y1RDAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MjQxRTZEM0NDMzAwMkIyODIwIC8q
IFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwICovOyB9OworCQk1MUQxMjQyQzFFNkQ0MUZEMDAyQjI4
MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJBMUU2RDQxQkMwMDJCMjgyMCAvKiBXZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwICovOyB9OworCQk1MUQxMjQzMzFFNkRFNkNBMDAyQjI4
MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzIxRTZERTUyMTAwMkIyODIwIC8qIFdlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYS5tbSAqLzsgfTsKKwkJNTFEMTI0MzQxRTZERjY0MzAwMkIyODIw
IC8qIFdLVVJMU2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMTI0MkQxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFu
ZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJ
NTFEMTI0MzUxRTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJGMUU2RERE
RDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk1MUQxMjQzNjFFNkRGQjM5MDAyQjI4MjAg
LyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDMwMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVt
ZUhhbmRsZXJUYXNrLm1tICovOyB9OworCQk1MUQxMjQzQTFFNkUwQUFCMDAyQjI4MjAgLyogQVBJ
VVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhh
bmRsZXJUYXNrLmNwcCAqLzsgfTsKIAkJNTFEMTMwNTMxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0
ZW1SZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNw
cCAqLzsgfTsKIAkJNTFEMTMwNTQxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMw
NTAxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovOyB9OwogCQk1MUQx
MzA1NTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MTEzODJFQUMwMDAz
NTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgKi87IH07CkBAIC0xMDY5LDYgKzEwNzcs
NyBAQAogCQk1MUUzNTIwMjE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFjLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFMzUyMDEx
ODBGNUQxRTAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc01hYy5tbSAqLzsgfTsKIAkJNTFFMzUy
MDkxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwODE4MEY1RDZC
MDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSAqLzsgfTsKIAkJNTFFMzk5
MDYxRDZGNTRDNzAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzOTkwNTFENkY1NEM1MDA5
Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSAqLzsgfTsKKwkJNTFFOEI2OEUxRTcx
Mjg3NzAwMUI3MTMyIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRThCNjhEMUU3MTI4NzMwMDFCNzEz
MiAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi87IH07CiAJCTUxRTk0OTk3MUQ3NjIx
MTMwMEVDOUVCOSAvKiBVSUdhbWVwYWRQcm92aWRlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTk0OTk2MUQ3NjFDQzcwMEVDOUVCOSAvKiBV
SUdhbWVwYWRQcm92aWRlcklPUy5tbSAqLzsgfTsKIAkJNTFFRkMxQ0YxNTI0RTYyNTAwQzlBOTM4
IC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUZBMkQ1NDE1MjExMTg2MDBDMUJBMEIgLyogV0tCdW5k
bGVET01XaW5kb3dFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MUYwNjBFMDE2NTQzMTdGMDBGMzI4MUIgLyogV2ViUmVzb3VyY2VM
b2FkZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFGMDYwREUxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2Fn
ZXMuaCAqLzsgfTsKQEAgLTMyNTMsNiArMzI2MiwyMSBAQAogCQk1MUQwMkY2NzEzMkVDNzM3MDBC
RUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTFEMDJGNjgxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMDJGNjkxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRh
YmFzZVByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
SWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUQxMjQyMTFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxTY2hlbWVI
YW5kbGVyVGFza1Byb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0
MjIxRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyNDFFNkQzQ0MzMDAyQjI4
MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFEMTI0MjUxRTZEM0NDMzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyNzFFNkQzRjFGMDAyQjI4MjAg
LyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTFEMTI0MkExRTZENDFCQzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyQjFF
NkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyRDFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxT
Y2hlbWVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2No
ZW1lSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyRjFFNkRE
REQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxRDEyNDMwMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tV
UkxTY2hlbWVIYW5kbGVyVGFzay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFE
MTI0MzExRTZERTUyMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MzIxRTZERTUyMTAwMkIyODIwIC8q
IFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MzcxRTZERkQyQTAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFu
ZGxlclRhc2tJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VS
TFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVVSTFNjaGVtZUhhbmRs
ZXJUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MzkxRTZERkRC
OTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVz
dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJl
cXVlc3REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNTAxMzgy
RUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTZWNJdGVtUmVxdWVzdERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2VjSXRlbVJlc3BvbnNl
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjcxLDYgKzMyOTUsNyBA
QAogCQk1MUUzNTIwNzE4MEY1RDYxMDBFNTNCRTkgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRo
ID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFMzUyMDgxODBG
NUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUzOTkwNTFENkY1NEM1MDA5Qzg4MzEg
LyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxRThCNjhEMUU3MTI4NzMwMDFCNzEzMiAvKiBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTk0
OTk2MUQ3NjFDQzcwMEVDOUVCOSAvKiBVSUdhbWVwYWRQcm92aWRlcklPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVJR2FtZXBhZFByb3ZpZGVySU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyog
V2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUMgLyogV2ViUlRDU29ja2V0TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJUQ1NvY2tldE1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDU4LDYgKzUwODMsOCBA
QAogCQkJCTJEQUY0RkZBMUI2MzYxODEwMDYwMTNENiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIu
Y3BwICovLAogCQkJCTJEMTI1QzVDMTg1N0VBMDUwMDNCQTNDQiAvKiBWaWV3R2VzdHVyZUNvbnRy
b2xsZXIuaCAqLywKIAkJCQkyRDFCNUQ1QTE4NTg2NTk5MDA2QzY1OTYgLyogVmlld0dlc3R1cmVD
b250cm9sbGVyLm1lc3NhZ2VzLmluICovLAorCQkJCTUxRDEyNDMxMUU2REU1MjEwMDJCMjgyMCAv
KiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCAqLywKKwkJCQk1MUQxMjQzMjFFNkRFNTIxMDAy
QjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tICovLAogCQkJCTFBQzAyNzNFMTk2
NjIyRDYwMEMxMkI3NSAvKiBXZWJQYWdlUHJveHlDb2NvYS5tbSAqLywKIAkJCQk3QzQ2OTRDQjFB
NEI1MTBBMDBBRDU4NDUgLyogV2ViUGFzdGVib2FyZFByb3h5Q29jb2EubW0gKi8sCiAJCQkJQ0RB
MjlBMUUxQ0JFQjVGQjAwOTAxQ0NGIC8qIFdlYlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5o
ICovLApAQCAtNTU0MCw2ICs1NTY3LDEwIEBACiAJCQkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5
IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tICovLAogCQkJCTFBRDg3OTA5MThCNkMzOEEw
MDZDQUZENyAvKiBXS1VJRGVsZWdhdGUuaCAqLywKIAkJCQkzNzQzOTI1NzE4QkM0QzYwMDAxQzg2
NzUgLyogV0tVSURlbGVnYXRlUHJpdmF0ZS5oICovLAorCQkJCTUxRDEyNDJEMUU2RERERDcwMDJC
MjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXIuaCAqLywKKwkJCQk1MUQxMjQyRjFFNkREREQ3MDAy
QjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovLAorCQkJCTUxRDEyNDMwMUU2RERE
RDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tICovLAorCQkJCTUxRDEyNDM3
MUU2REZEMkEwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLywK
IAkJCQkxQUZBM0FDNzE4RTYxQzYxMDAzQ0NCQUUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXIu
aCAqLywKIAkJCQkxQUZBM0FDNjE4RTYxQzYxMDAzQ0NCQUUgLyogV0tVc2VyQ29udGVudENvbnRy
b2xsZXIubW0gKi8sCiAJCQkJMUFBRjA4QTMxOTI2ODJEQTAwQjYzOTBDIC8qIFdLVXNlckNvbnRl
bnRDb250cm9sbGVySW50ZXJuYWwuaCAqLywKQEAgLTY0NzQsNiArNjUwNSwxMCBAQAogCQkJCUJD
N0I2MjEzMTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oICovLAogCQkJCTJE
NUM5RDAzMTlDODFEOEYwMEIzQzVDMSAvKiBXZWJQYWdlT3ZlcmxheS5jcHAgKi8sCiAJCQkJMkQ1
QzlEMDQxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmggKi8sCisJCQkJNTFEMTI0
MkExRTZENDFCQzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgKi8sCisJ
CQkJNTFEMTI0MkIxRTZENDFCQzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5o
ICovLAorCQkJCTUxRDEyNDIxMUU2RDM0OUEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVy
VGFza1Byb3h5LmNwcCAqLywKKwkJCQk1MUQxMjQyMjFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJM
U2NoZW1lSGFuZGxlclRhc2tQcm94eS5oICovLAogCQkJCUJDQTBFRjdFMTIzMzFFNzgwMDdEM0NG
QiAvKiBXZWJVbmRvU3RlcC5jcHAgKi8sCiAJCQkJQkNBMEVGN0QxMjMzMUU3ODAwN0QzQ0ZCIC8q
IFdlYlVuZG9TdGVwLmggKi8sCiAJCQkpOwpAQCAtNjYzOSw2ICs2Njc0LDEwIEBACiAJCQkJN0E5
Q0Q4QzAxQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgKi8sCiAJCQkJN0E5Q0Q4QzExQzc3OTg0OTAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oICovLAogCQkJCTdBOUNEOEMyMUM3NzlBRDYwMEQ5RjZDNyAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUubWVzc2FnZXMuaW4gKi8sCisJCQkJNTFEMTI0MjQx
RTZEM0NDMzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwICovLAorCQkJCTUxRDEy
NDI1MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmggKi8sCisJCQkJNTFF
OEI2OEQxRTcxMjg3MzAwMUI3MTMyIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLywK
KwkJCQk1MUQxMjQyNzFFNkQzRjFGMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2su
aCAqLywKIAkJCSk7CiAJCQlwYXRoID0gVUlQcm9jZXNzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTY2ODksNiArNjcyOCw4IEBACiAJCQkJMUFGREU2NUYxOTU0RTlCMTAwQzQ4RkZB
IC8qIEFQSVNlc3Npb25TdGF0ZS5jcHAgKi8sCiAJCQkJMUFGREU2NjAxOTU0RTlCMTAwQzQ4RkZB
IC8qIEFQSVNlc3Npb25TdGF0ZS5oICovLAogCQkJCTFBNEQ2NjQ3MThBMkQ5MUEwMEQ4MkUyMSAv
KiBBUElVSUNsaWVudC5oICovLAorCQkJCTUxRDEyNDM4MUU2REZEQjkwMDJCMjgyMCAvKiBBUElV
UkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi8sCisJCQkJNTFEMTI0MzkxRTZERkRCOTAwMkIyODIw
IC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi8sCiAJCQkJN0M4OUQyQjExQTZCMDY4QzAw
M0E1RkRFIC8qIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uLmNwcCAqLywKIAkJCQk3Qzg5RDJCMjFB
NkIwNjhDMDAzQTVGREUgLyogQVBJVXNlckNvbnRlbnRFeHRlbnNpb24uaCAqLywKIAkJCQk3QzNB
MDZBNTFBQUI5MDNFMDA5RDc0QkEgLyogQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZS5jcHAg
Ki8sCkBAIC04MTU2LDYgKzgxOTcsNyBAQAogCQkJCTBGRENEN0Y3MUQ0N0U5MkEwMDlGMDhCQyAv
KiBMb2dJbml0aWFsaXphdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2RDg2QzIxREY3NTI2
NTAwNzc0NUU4IC8qIE1hY2hNZXNzYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0M1NkY3OTEx
NTk5NTdEMDAxQ0NBRjkgLyogTWFjaFBvcnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRDEyNDM0
MUU2REY2NDMwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBMjRCNUYzMTFGNTMxRTgwMEMzODI2OSAvKiBNYWNoVXRpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlDRTFBMEJENTFBNDhFNkM2MDA1NEVGNzQgLyogTWFuYWdlZENvbmZpZ3VyYXRp
b25TUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOTMzREVGMTk2NUVCMzEwMDhBQzNFQSAvKiBN
ZW51VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTgyODAsNiArODMyMiw3IEBACiAJCQkJ
ODMwNDhBRTYxQUNBNDVEQzAwODJDODMyIC8qIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExMThBOUVGMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1
bWVudERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENDdCNTZEMTgxMDcxNEUwMDNBM0FFRSAv
KiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFEMTI0MzUx
RTZERjY1MjAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCBpbiBIZWFkZXJzICov
LAogCQkJCTJEREY3MzE1MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZUNvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2
MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDI5RUNE
MDE5MkYyQzJFMDA5ODRCNzggLyogUmVtb3RlTGF5ZXJUcmVlRGlzcGxheVJlZnJlc2hNb25pdG9y
LmggaW4gSGVhZGVycyAqLywKQEAgLTk0ODQsNiArOTUyNyw3IEBACiAJCQkJMUE1NzA0RjcxQkUw
MUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBMUE0RkU1QjE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzNzlBODczOTE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlv
bi5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDJDMUU2RDQxRkQwMDJCMjgyMCAvKiBXZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEMDFCQzgxOTA1
RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE3RkU3Q0UxQzQ4N0RCODAwQTBDQTg5IC8qIF9XS0V4cGVyaW1lbnRhbEZlYXR1
cmUubW0gaW4gU291cmNlcyAqLywKIAkJCQkzNzNEMTIyMjE4QTQ3MzAxMDA2NkQ5Q0MgLyogX1dL
RnJhbWVIYW5kbGUubW0gaW4gU291cmNlcyAqLywKQEAgLTk2MzUsNiArOTY3OSw3IEBACiAJCQkJ
MkRBMDQ5QjcxODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUM3NUExRTFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlv
bkRpc2FibGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFDMEM5NzUxRERENzYwMzAwMzJD
QUQzIC8qIEljb25Mb2FkaW5nRGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQy
MzFFNkQzNEExMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MUUzNTFDQTE4MEYyQ0NDMDBFNTNCRTkgLyogSURCVXRpbGl0aWVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMjA0RUUyMTFDODNFOTgwMDhGMzM3NSAvKiBJbmpl
Y3RlZEJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzVFRUJBMTEyNzc2MUNDMDAzMzIy
QjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC05ODA0LDYgKzk4NDksNyBAQAogCQkJCTFBMEVDNzVGMTI0QkM3QjIwMDdFRjRBNSAvKiBQbHVn
aW5Qcm9jZXNzUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDkwQkIxMjgxQzkzMTAw
MUVCOTYyIC8qIFBsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFB
MDQzQjVEMTI0RDVFOUQwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0MzYxRTZERkIzOTAwMkIyODIwIC8qIFdL
VVJMU2NoZW1lSGFuZGxlclRhc2subW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTA0M0RDMjEyNEZG
ODc1MDBGRkJGQjUgLyogUGx1Z2luUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyRDky
MjExMjgxREMxQjAwMUVCOTYyIC8qIFBsdWdpblByb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUE4RUZBNzAxMjUyQjg0MTAwRjcwNjdGIC8qIFBsdWdpblByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTk1Nyw2ICsxMDAwMyw3IEBACiAJCQkJMUFBODNGNkMx
QTVCNjNGRjAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQ0QxOUEyNkQxQTEzRTgyQTAwOEQ2NTBFIC8qIFdlYkRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUIxQzU0MTg5ODdFREYwMDRGQ0Y5QiAvKiBX
ZWJEb2N1bWVudExvYWRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQyODFFNkQzRjVE
MDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
QzExMUE1RDExMkY0RkJCMDAzMzdCQUIgLyogV2ViRHJhZ0NsaWVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlDNTc0QTM3NzEyRTYwOTlEMDAyREZFOTggLyogV2ViRHJhZ0NsaWVudE1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDQTBFRkEwMTIzMzI2NDIwMDdEM0NGQiAvKiBXZWJFZGl0Q29t
bWFuZFByb3h5LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTk4Niw2ICsxMDAzMyw3IEBACiAJCQkJ
QkMxQkUxRTExMkQ1NEE0MTAwMDRBMjI4IC8qIFdlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDMEU1RkU2MTJENjk3MTYwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlv
bk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTYwNjExMkQ2QkE5MTAwMTJBNzJB
IC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MUQxMjQzMzFFNkRFNkNBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1NENBQ0MxMkQ2NDI5MTAwNUM2N0IwIC8qIFdl
Ykdlb2xvY2F0aW9uTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMEU2MTgy
MTJENkNCMUQwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTMwNzVBRTFERTg1RjU4MDAzOUVDNjkgLyog
TGliV2ViUlRDU29ja2V0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAxMDIsNiArMTAxNTAsNyBA
QAogCQkJCTJEQTk0NEIwMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQcm9jZXNzUHJveHlJT1MubW0g
aW4gU291cmNlcyAqLywKIAkJCQk1MUQxMzA1ODEzODJGMTA1MDAzNTFFREQgLyogV2ViUHJvY2Vz
c1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRTdBRDAxMjgxNzk4ODAwOTgyN0RB
IC8qIFdlYlByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MUQxMjQzQTFFNkUwQUFCMDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRTA5MzMxODg2MUQzODAwRDJEQzQ5IC8qIFdlYlByb2dy
ZXNzVHJhY2tlckNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTJGNTg5QzEyQTg4Mzg4
MDA2Mjk1MzAgLyogV2ViUHJvdGVjdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEx
QzUxMkM4MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0xMDI4Myw2ICsxMDMzMiw3IEBACiAJCQkJQkM4NTgwNjIxMkI4NTA1
NzAwRURFQjJFIC8qIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNENTk3RDYxMTJCNTZEQzAwRUM4QzIzIC8qIFdLUGFnZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3Qzg5RDI5QjFBNjc4MzdCMDAzQTVGREUgLyogV0tQYWdlQ29uZmlndXJhdGlvblJl
Zi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUU4QjY4RTFFNzEyODc3MDAxQjcxMzIgLyogV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM3QjYzMzgxMkE0
NUFCQTAwRDE3NEE0IC8qIFdLUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTE3
QjdEMTM4MUYxMTcwMDEyQTY0MSAvKiBXS1BhZ2VQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ2QUI1NDIxOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRv
ci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMDc1OWU3YzNlOTdlNTEwMGFl
NzgxMTJjOGMyYmU1ZjRhNDZjNWMzMy4uMTgyODI3NDNmMDMyYTMyYWUyYjU1YjgxOTQ0N2Q0MmY2
ZmFiMGZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0zOSw4ICszOSwxMSBAQAogI2luY2x1ZGUgIldl
YkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRl
ci5oIgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIgorI2luY2x1ZGUgIldl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0
aW9uQ2FjaGVIb3N0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRSZXNvdXJjZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KQEAgLTE5NCw2ICsxOTcs
MTYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVy
JiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICB9CiAjZW5kaWYKIAorICAgIGlmICh3
ZWJQYWdlKSB7CisgICAgICAgIGlmIChhdXRvKiBoYW5kbGVyID0gd2ViUGFnZS0+dXJsU2NoZW1l
SGFuZGxlckZvclNjaGVtZShyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2wo
KS50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkpKSB7CisgICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
VVJMICclcycgd2lsbCBiZSBoYW5kbGVkIGJ5IGEgVUlQcm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxl
ci4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxv
YWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nlc3MgVVJMIHNjaGVtZSBoYW5kbGVy
IChmcmFtZSA9ICVwLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgaWRlbnRpZmllcik7CisKKyAgICAgICAgICAgIGhhbmRsZXItPnN0YXJ0TmV3VGFz
ayhyZXNvdXJjZUxvYWRlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9
CisKICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgd2l0aCB0aGUg
TmV0d29ya1Byb2Nlc3Mgd2l0aCBwcmlvcml0eSAlZCIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0
cmluZygpLmxhdGluMSgpLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkucHJpb3JpdHkoKSkpOwogCiAgICAgQ29udGVudFNuaWZmaW5nUG9saWN5IGNvbnRl
bnRTbmlmZmluZ1BvbGljeSA9IHJlc291cmNlTG9hZGVyLnNob3VsZFNuaWZmQ29udGVudCgpID8g
U25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNvbnRlbnQ7CkBAIC0yNjAsNiArMjczLDExIEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2Fk
ZXIpCiAgICAgICAgIG1faW50ZXJuYWxseUZhaWxlZFJlc291cmNlTG9hZGVycy5yZW1vdmUocmVz
b3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgaWYgKGF1dG8gdGFz
ayA9IG1fdXJsU2NoZW1lSGFuZGxlclRhc2tzLnRha2UocmVzb3VyY2VMb2FkZXItPmlkZW50aWZp
ZXIoKSkpIHsKKyAgICAgICAgdGFzay0+c3RvcExvYWRpbmcoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KICAgICAKICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIgPSByZXNv
dXJjZUxvYWRlci0+aWRlbnRpZmllcigpOwogICAgIGlmICghaWRlbnRpZmllcikgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
aAppbmRleCBiN2UxYjE5OTQwMDczZjJlNjRjMWY0ZGQ4MTIzZGFlMjc1MjE4ZWNkLi4yOTA0NzVi
NjE5MzM2OTk3OGRiNTI1MzMwZWUzYmE0MjdjMmMzOGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtMzUsNiAr
MzUsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjsKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk7CiB0eXBlZGVmIHVpbnQ2
NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CiAKIGNsYXNzIFdlYkxvYWRlclN0cmF0ZWd5IDog
cHVibGljIFdlYkNvcmU6OkxvYWRlclN0cmF0ZWd5IHsKQEAgLTc0LDYgKzc1LDcgQEAgcHJpdmF0
ZToKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJMb2FkZXJTdHJhdGVneT4gbV9pbnRlcm5hbGx5RmFp
bGVkTG9hZFRpbWVyOwogICAgIAogICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgUmVmUHRyPFdl
YlJlc291cmNlTG9hZGVyPj4gbV93ZWJSZXNvdXJjZUxvYWRlcnM7CisgICAgSGFzaE1hcDx1bnNp
Z25lZCBsb25nLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eT4+
IG1fdXJsU2NoZW1lSGFuZGxlclRhc2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzMw
YmExODc2ZjZjYWI1YTQyYzQ4MTU0MTY4YWYwZWIyZjE4MmI2Yy4uN2Q0NDI2MGY3NDcyZjNhODQ3
ZWZhOGYzNzBjNDIxN2MyOTZmNWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTEwLDYgKzExMCw3IEBACiAjaW5jbHVkZSAiV2ViUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0UHJvdmlkZXIuaCIKICNp
bmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJVUkxT
Y2hlbWVIYW5kbGVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJVbmRvU3RlcC5oIgogI2luY2x1ZGUg
IldlYlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJNZWRpYUNsaWVu
dC5oIgpAQCAtNTYxLDYgKzU2Miw5IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgZW5hYmxl
RW51bWVyYXRpbmdBbGxOZXR3b3JrSW50ZXJmYWNlcygpOwogI2VuZGlmCiAjZW5kaWYKKworICAg
IGZvciAoYXV0byBpdGVyYXRvciA6IHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpCisgICAg
ICAgIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpdGVyYXRvci52YWx1ZSwgaXRlcmF0b3Iua2V5
KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpyZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQpAQCAtNTczOSw0ICs1NzQzLDQyIEBAIHZvaWQgV2Vi
UGFnZTo6c2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1c2VJY29uTG9hZGluZ0NsaWVudCkK
ICAgICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCY+KGNvcmVQYWdlKCktPm1haW5G
cmFtZSgpLmxvYWRlcigpLmNsaWVudCgpKS5zZXRVc2VJY29uTG9hZGluZ0NsaWVudCh1c2VJY29u
TG9hZGluZ0NsaWVudCk7CiB9CiAKK1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSogV2ViUGFnZTo6
dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBy
ZXR1cm4gbV9zY2hlbWVUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoc2NoZW1lKTsKK30K
Kwordm9pZCBXZWJQYWdlOjpyZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIodWludDY0X3QgaGFuZGxl
cklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIGF1dG8gc2NoZW1lUmVz
dWx0ID0gbV9zY2hlbWVUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5hZGQoc2NoZW1lLCBzdGQ6
Om1ha2VfdW5pcXVlPFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eT4oKnRoaXMsIGhhbmRsZXJJZGVu
dGlmaWVyKSk7CisgICAgQVNTRVJUKHNjaGVtZVJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGF1
dG8gaWRlbnRpZmllclJlc3VsdCA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5
TWFwLmFkZChoYW5kbGVySWRlbnRpZmllciwgc2NoZW1lUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChpZGVudGlmaWVyUmVzdWx0LCBpZGVudGlmaWVyUmVz
dWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZUhhbmRsZXJUYXNr
RGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAg
YXV0byogaGFuZGxlciA9IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdl
dChoYW5kbGVySWRlbnRpZmllcik7CisgICAgQVNTRVJUKGhhbmRsZXIpOworCisgICAgaGFuZGxl
ci0+dGFza0RpZFJlY2VpdmVSZXNwb25zZSh0YXNrSWRlbnRpZmllciwgcmVzcG9uc2UpOworfQor
Cit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0
X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpCit7CisgICAgYXV0byogaGFuZGxlciA9IG1faWRlbnRpZmll
clRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRpZmllcik7CisgICAg
QVNTRVJUKGhhbmRsZXIpOworCisgICAgaGFuZGxlci0+dGFza0RpZFJlY2VpdmVEYXRhKHRhc2tJ
ZGVudGlmaWVyLCBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCkpOworfQorCit2b2lkIFdlYlBhZ2U6
OnVybFNjaGVtZUhhbmRsZXJUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
K3sKKyAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJv
eHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoaGFuZGxlcik7CisKKyAg
ICBoYW5kbGVyLT50YXNrRGlkQ29tcGxldGUodGFza0lkZW50aWZpZXIsIGVycm9yKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAppbmRleCBjODMyZTJjY2VjODlmNzk2NzgzYzI4MDRhNGY0MmI1NzYxY2QyOWFl
Li4zN2Q4MTQ0NzM5ZjU3YzYwMDY3NzYxZDdjMzc4NTE5OWE0MGE5YWMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1
ZGUgIlVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oIgorI2luY2x1ZGUgIldlYlVS
TFNjaGVtZUhhbmRsZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RpY3RhdGlvbkFsdGVybmF0aXZlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaWN0aW9uYXJ5UG9wdXBJbmZvLmg+CkBAIC0xNzgsNiArMTc5LDcgQEAgY2xhc3MgV2ViSW5z
cGVjdG9yQ2xpZW50OwogY2xhc3MgV2ViSW5zcGVjdG9yVUk7CiBjbGFzcyBXZWJHZXN0dXJlRXZl
bnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50OworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudDsK
IGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyOwpAQCAtOTY5LDYgKzk3MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZENvbmNsdWRlRWRpdERhdGFJbnRlcmFjdGlvbigpOwogI2VuZGlm
CiAKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkqIHVybFNjaGVtZUhhbmRsZXJGb3JTY2hl
bWUoY29uc3QgU3RyaW5nJik7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEyNjIsNiArMTI2NiwxMiBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1l
bnQoY29uc3QgU3RyaW5nJik7CiAjZW5kaWYKIAorICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVI
YW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKworICAg
IHZvaWQgdXJsU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgaGFu
ZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdm9pZCB1cmxTY2hlbWVIYW5kbGVyVGFza0RpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCB1cmxTY2hlbWVIYW5kbGVy
VGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNr
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworCiAgICAgdWludDY0
X3QgbV9wYWdlSUQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdl
OwpAQCAtMTU0MCw2ICsxNTUwLDkgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IFdlYkNv
cmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUiB9OwogCiAgICAgY29uc3QgU3Ry
aW5nIG1fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CisKKyAgICBIYXNoTWFwPFN0cmlu
Zywgc3RkOjp1bmlxdWVfcHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eT4+IG1fc2NoZW1lVG9V
UkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5Kj4gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXA7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzQ2ZTI1ZDlkMDdl
MmNlNjlmMDMyY2I1NGFlNTk0Njc3Njc1YTZiZS4uY2Y0ZjQ2NTYyYjViOGFhNmI4MTVjOTg0M2Ni
MGI3YWM5MmI3NmVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTQ2OSw0ICs0NjksMTAgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgRGlk
UmVjZWl2ZVBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQoU3RyaW5nIHBhc3N3b3JkKQogI2Vu
ZGlmCisKKyAgICBSZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllciwg
U3RyaW5nIHNjaGVtZSkKKworICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZVJlc3Bv
bnNlKHVpbnQ2NF90IHByb3ZpZGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCisgICAgVVJMU2NoZW1lSGFuZGxl
clRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBwcm92aWRlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBVUkxTY2hlbWVI
YW5kbGVyVGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IHByb3ZpZGVySWRlbnRpZmllciwgdWludDY0
X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxT
Y2hlbWVIYW5kbGVyUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMGE4ZDEyYzU1ZjcyZmE2Y2VjNTVh
Nzc1NTAxNDg4NDg0ODI1YzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtMCwwICsxLDgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6V2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5KFdlYlBhZ2UmIHBhZ2UsIHVpbnQ2NF90IGlkZW50aWZpZXIpCisgICAg
OiBtX3dlYlBhZ2UocGFnZSkKKyAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQoreworfQor
CitXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6On5XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkoKQor
eworICAgIEFTU0VSVChtX3Rhc2tzLmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5OjpzdGFydE5ld1Rhc2soUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKK3sKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKGxvYWRlci5pZGVudGlmaWVyKCksIHN0ZDo6bWFr
ZV91bmlxdWU8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eT4oKnRoaXMsIGxvYWRlcikpOwor
ICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICByZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLT5zdGFydExvYWRpbmcoKTsKK30KKworCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6dGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgYXV0byogdGFzayA9IG1fdGFza3Mu
Z2V0KHRhc2tJZGVudGlmaWVyKTsKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIHRhc2stPmRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Cit9CisKK3ZvaWQgV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgdGFza0lkZW50
aWZpZXIsIHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQoreworICAgIGF1dG8qIHRh
c2sgPSBtX3Rhc2tzLmdldCh0YXNrSWRlbnRpZmllcik7CisgICAgaWYgKCF0YXNrKQorICAgICAg
ICByZXR1cm47CisKKyAgICB0YXNrLT5kaWRSZWNlaXZlRGF0YShzaXplLCBkYXRhKTsKK30KKwor
dm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB0
YXNrID0gbV90YXNrcy50YWtlKHRhc2tJZGVudGlmaWVyKTsKKyAgICBpZiAoIXRhc2spCisgICAg
ICAgIHJldHVybjsKKworICAgIHRhc2stPmRpZENvbXBsZXRlKGVycm9yKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE0NmMx
MjZjNDViNmM2ZTk1N2M4YjNjM2RmZmMxMzk2NDRlYTE2MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHku
aApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJl
c291cmNlTG9hZGVyOworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eSB7CitwdWJsaWM6CisgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KFdlYlBhZ2UmLCB1aW50
NjRfdCBpZGVudGlmaWVyKTsKKyAgICB+V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KCk7CisKKyAg
ICB2b2lkIHN0YXJ0TmV3VGFzayhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOworCisgICAgdWlu
dDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFdl
YlBhZ2UmIHBhZ2UoKSB7IHJldHVybiBtX3dlYlBhZ2U7IH0KKworICAgIHZvaWQgdGFza0RpZFJl
Y2VpdmVSZXNwb25zZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgdGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHRh
c2tJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpOworICAgIHZvaWQgdGFz
a0RpZENvbXBsZXRlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZSYgbV93ZWJQYWdlOworICAgIHVp
bnQ2NF90IG1faWRlbnRpZmllciB7IDAgfTsKKworICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywg
c3RkOjp1bmlxdWVfcHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk+PiBtX3Rhc2tzOwor
fTsgLy8gY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM4ZTYz
NmQ4Y2Q0ZTlhNjQyYjgzMzlhOTYwNzkzYTllYzVmMThmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQ
cm94eS5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgiCisKKyNpbmNsdWRl
ICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtM
b2FkTWV0cmljcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5
KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYgaGFuZGxlciwgUmVzb3VyY2VMb2FkZXImIGxvYWRl
cikKKyAgICA6IG1fdXJsU2NoZW1lSGFuZGxlcihoYW5kbGVyKQorICAgICwgbV9jb3JlTG9hZGVy
KCZsb2FkZXIpCisgICAgLCBtX3JlcXVlc3QobG9hZGVyLnJlcXVlc3QoKSkKK3sKK30KKwordm9p
ZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdGFydExvYWRpbmcoKQoreworICAgIEFT
U0VSVChtX2NvcmVMb2FkZXIpOworICAgIG1fdXJsU2NoZW1lSGFuZGxlci5wYWdlKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNrKG1fdXJsU2No
ZW1lSGFuZGxlci5pZGVudGlmaWVyKCksIG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBtX3Jl
cXVlc3QpKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdG9wTG9h
ZGluZygpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fdXJsU2NoZW1lSGFuZGxlci5wYWdlKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
dG9wVVJMU2NoZW1lSGFuZGxlclRhc2sobV91cmxTY2hlbWVIYW5kbGVyLmlkZW50aWZpZXIoKSwg
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpKTsKKyAgICBtX2NvcmVMb2FkZXIgPSBudWxscHRy
OworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBpZiAoIW1fY29y
ZUxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZl
UmVzcG9uc2UocmVzcG9uc2UpOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJv
eHk6OmRpZFJlY2VpdmVEYXRhKHNpemVfdCBzaXplLCBjb25zdCB1aW50OF90KiBkYXRhKQorewor
ICAgIGlmICghbV9jb3JlTG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvcmVMb2Fk
ZXItPmRpZFJlY2VpdmVEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEpLCBz
aXplLCAwLCBEYXRhUGF5bG9hZFR5cGU6OkRhdGFQYXlsb2FkQnl0ZXMpOworfQorCit2b2lkIFdl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCisgICAgICAgIG1fY29yZUxvYWRlci0+ZGlkRmluaXNo
TG9hZGluZyhOZXR3b3JrTG9hZE1ldHJpY3MoKSk7CisgICAgZWxzZQorICAgICAgICBtX2NvcmVM
b2FkZXItPmRpZEZhaWwoZXJyb3IpOworCisgICAgbV9jb3JlTG9hZGVyID0gbnVsbHB0cjsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iOWEzNjg4ZDEwYTZmYTYzYWVlZTNiMmY5ZDNmM2Q0OTJlNGU3MjIzCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrUHJveHkuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VMb2Fk
ZXI7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Y2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OworCitjbGFzcyBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFza1Byb3h5IHsKK3B1YmxpYzoKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5
KFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJik7CisK
KyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJl
dHVybiBtX3JlcXVlc3Q7IH0KKworICAgIHZvaWQgc3RhcnRMb2FkaW5nKCk7CisgICAgdm9pZCBz
dG9wTG9hZGluZygpOworCisgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90LCBj
b25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKKworcHJpdmF0ZToKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkmIG1fdXJsU2NoZW1lSGFuZGxlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXI+IG1fY29yZUxvYWRlcjsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0
OworCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303962</attachid>
            <date>2017-03-09 12:59:49 -0800</date>
            <delta_ts>2017-03-09 13:42:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169422-20170309125949.patch</filename>
            <type>text/plain</type>
            <size>104206</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZjNzNkM2VlY2NmNjYw
ZTA0Yjk1NTUxZDRiMmQ1ZmIwZDQ1ZTY3OC4uYzk5MjdkYmY5N2JiNDQ2OTE4MWQ2NWRiZTg0Zjk0
MWZkN2E3NGFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAzLTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tVUkxTY2hlbWVI
YW5kbGVyIEFQSSBmb3IgaGFuZGxpbmcgY3VzdG9tIHByb3RvY29scy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUp
OgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUpOgorICAgICAg
ICAqIHBsYXRmb3JtL1VSTFBhcnNlci5oOgorCiAyMDE3LTAzLTA4ICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkNyeXB0b10gSW1wbGVtZW50IFN1YnRs
ZUNyeXB0bzo6RGVyaXZlS2V5IG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDlmYTU1YmU3NzY1NDVhOGU0
ODk5ZTA2MTdjZjYwOWUzN2U1OTVhOWEuLmFkYjkwNmFjOWRjZDFjYjg5ZWYwOGRmOTY1YzJlNjgy
NmVlZjFkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzkgQEAKKzIwMTctMDMtMDkgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS1VSTFNjaGVtZUhh
bmRsZXIgQVBJIGZvciBoYW5kbGluZyBjdXN0b20gcHJvdG9jb2xzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NDIyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIHR3byBuZXcg
cHJvdG9jb2xzIHRvIHRoZSBXSzIgQVBJIHN1cmZhY2U6CisgICAgICAgIC0gV0tVUkxTY2hlbWVI
YW5kbGVyCisgICAgICAgIC0gV0tVUkxTY2hlbWVIYW5kbGVyVGFzaworICAgICAgICAKKyAgICAg
ICAgQnkgcmVnaXN0ZXJpbmcgYW4gb2JqZWN0IHRoYXQgY29uZm9ybXMgdG8gdGhlIFdLVVJMU2No
ZW1lSGFuZGxlciBwcm90b2NvbCB3aXRoIGEgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbiBhcHBs
aWNhdGlvbiB3aWxsCisgICAgICAgIGJlIGhhbmRlZCBhbiBvYmplY3QgY29uZm9ybWluZyB0byBX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrIGZvciBlYWNoIHJlc291cmNlIGxvYWQgaW4gdGhhdCBXS1dl
YlZpZXcgd2l0aCBhIGN1c3RvbSBVUkwgc2NoZW1lLgorICAgICAgICAKKyAgICAgICAgVXNpbmcg
dGhhdCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4sIHRoZSBhcHBsaWNhdGlvbiBjYW4gY29t
bXVuaWNhdGUgdGhlIGRhdGEgZm9yIHRoZSByZXNvdXJjZSBiYWNrIHRvIFdlYktpdC4KKyAgICAg
ICAgCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisK
KyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOiAKKyAgICAgICAgKEFQSTo6VVJMU2NoZW1l
SGFuZGxlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNr
OjpVUkxTY2hlbWVIYW5kbGVyVGFzayk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oOiAKKworICAgICAgICBBZGQgdGhlIFdLVVJMU2NoZW1lSGFuZGxl
ciBAcHJvdG9jb2w6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXIuaDogQWRkZWQuCisKKyAgICAgICAgQWRkIHRoZSBXS1VSTFNjaGVtZUhhbmRsZXJUYXNr
IEBwcm90b2NvbCwgYXMgd2VsbCBhcyBXZWJLaXQncyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBv
ZiBpdDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRh
c2suaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tOiBBZGRlZC4KKyAgICAgICAgKHJhaXNlRXhjZXB0aW9uSWZOZWNlc3Nhcnkp
OgorICAgICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCByZXF1ZXN0XSk6CisgICAg
ICAgICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZFJlY2VpdmVSZXNwb25zZTpdKToK
KyAgICAgICAgKC1bV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgZGlkUmVjZWl2ZURhdGE6XSk6
CisgICAgICAgICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZEZpbmlzaF0pOgorICAg
ICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBkaWRGYWlsV2l0aEVycm9yOl0pOgor
ICAgICAgICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBfYXBpT2JqZWN0XSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwu
aDogCisgICAgICAgIChXZWJLaXQ6OndyYXBwZXIpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRp
b246XSk6CisgICAgICAgICgtW1dLV2ViVmlldyB1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1l
Ol0pOgorICAgICAgICAoK1tXS1dlYlZpZXcgaGFuZGxlc1VSTFNjaGVtZTpdKToKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgICgt
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpmb3JVUkxTY2hlbWU6
XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gdXJsU2NoZW1lSGFuZGxlckZv
clVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdXJsU2No
ZW1lSGFuZGxlcnNdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYS5oOiAKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hOjphcGlIYW5kbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVVJM
U2NoZW1lSGFuZGxlckNvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlckNvY29hOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2E6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6cGxhdGZvcm1TdGFydFRhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RvcFRhc2spOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpzdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNrKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lSGFuZGxlclRhc2spOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuY3BwOiAKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVXZWJVUkxTY2hlbWVIYW5kbGVySWRl
bnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OldlYlVSTFNj
aGVtZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjp+V2Vi
VVJMU2NoZW1lSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6
OnN0YXJ0VGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BU
YXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oOiAKKyAgICAg
ICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcjo6aWRlbnRpZmllcik6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2
ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkQ29t
cGxldGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6cGFnZURl
c3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpzdG9w
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjppZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OnJlcXVlc3QpOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpyZW1vdmUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVnaXN0ZXJVUkxTY2hl
bWVIYW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxlclRh
c2tEaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hl
bWVIYW5kbGVyVGFza0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXJsU2NoZW1lSGFuZGxlclRhc2tEaWRDb21wbGV0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6On5XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0YXJ0TmV3VGFzayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFJlY2VpdmVS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFz
a0RpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5Ojp0YXNrRGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjpwYWdlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdGFydExvYWRp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpzdG9w
TG9hZGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6
OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclRhc2tQcm94eTo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk6OnJlcXVlc3QpOgorCisgICAgICAgICogV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorCiAyMDE3LTAzLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBwbHVtYmluZyBmb3IgV2ViQ29yZSB0byBub3RpZnkgV2ViS2l0MiB3aGVu
IGFuIGVkaXQgZHJhZyBoYXMgY29uY2x1ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2Vy
LmNwcAppbmRleCBkMWY4ZmU4NGE4ZTYzZjQ3NGMyM2NkYjdkM2Q4MzkwMDkyMDcyZGFiLi5hNjkx
NGNjZTM5ODc3OWZjODJiZjdkNjQ3MWRlNDQ0OTJmNzQwODJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTFBhcnNlci5jcHAKQEAgLTc5MCw2ICs3OTAsMjggQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgU2NoZW1lIHNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkKICAgICB9CiB9CiAKK3N0ZDo6b3B0
aW9uYWw8U3RyaW5nPiBVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKGNvbnN0IFN0
cmluZyYgc2NoZW1lKQoreworICAgIGlmIChzY2hlbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCFpc0FTQ0lJQWxwaGEoc2NoZW1lWzBdKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwg
c2NoZW1lLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYgKGlzQVNDSUlBbHBoYW51bWVyaWMo
c2NoZW1lW2ldKSB8fCBzY2hlbWVbaV0gPT0gJysnIHx8IHNjaGVtZVtpXSA9PSAnLScgfHwgc2No
ZW1lW2ldID09ICcuJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIH0KKworICAgIHJldHVybiBzY2hlbWUuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKTsKK30KKworYm9vbCBVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZUFyZykKK3sKKyAgICByZXR1cm4gc2NoZW1lKHNjaGVtZUFyZykgIT0gU2NoZW1l
OjpOb25TcGVjaWFsOworfQorCiBlbnVtIGNsYXNzIFVSTFBhcnNlcjo6VVJMUGFydCB7CiAgICAg
U2NoZW1lRW5kLAogICAgIFVzZXJTdGFydCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTFBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgK
aW5kZXggNzNjYTE4OGZkN2VmMGIyZGE4ODcyMTYwY2E4ODY4YzE4NzkzMDU5NS4uNTcwOGE0ZmY3
Y2Y2NzFiNGQ1OTM1MjM2NzExZDY3MmY1OGM1NTlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
UGFyc2VyLmgKQEAgLTUwLDYgKzUwLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IFVJ
RE5BJiBpbnRlcm5hdGlvbmFsRG9tYWluTmFtZVRyYW5zY29kZXIoKTsKIAorICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIGlzU3BlY2lhbFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXliZUNh
bm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisKIHByaXZhdGU6CiAgICAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0Rm9yUHJvdG9jb2woU3Ry
aW5nVmlldyk7CiAgICAgZnJpZW5kIHN0ZDo6b3B0aW9uYWw8dWludDE2X3Q+IGRlZmF1bHRQb3J0
Rm9yUHJvdG9jb2woU3RyaW5nVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDBmZDJlZjIy
ZmRiMmVlNTU1OGFkNTUwNmE2MmM2MDFjOTI5Y2Y0MzAuLjUyNWRmNTkyNGRlZGRiZjZhMWEyNzNm
YTkxMTU0ZGM4NmQyYzJkOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0zMjYsNiArMzI2LDgg
QEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVU
cmFja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKICAgICBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
LmNwcAorICAgIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKICAgICBVSVBy
b2Nlc3MvV2ViVmlicmF0aW9uUHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlv
blByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCkBAIC0z
MzksNiArMzQxLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJ
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJT3BlblBh
bmVsUGFyYW1ldGVycy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVNlc3Npb25TdGF0ZS5jcHAK
KyAgICBVSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRFeHRlbnNpb24uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9B
UElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJVXNl
ckNvbnRlbnRXb3JsZC5jcHAKQEAgLTU3OSwxMCArNTgyLDEwIEBAIHNldChXZWJLaXQyX1NPVVJD
RVMKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKICAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUdyb3VwUHJveHkuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VPdmVybGF5LmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNr
UHJveHkuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVuZG9TdGVwLmNwcAogCi0KLQog
ICAgICR7TmV0d29ya1Byb2Nlc3NfQ09NTU9OX1NPVVJDRVN9CiApCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IGYyY2IwNTQwYTMxZDA1NDQ4ZmUyYjhmNWU4MzVhMmYz
ZDdkYWM4MDkuLmNhZGQ5YTU5Njg3OThmYzVkNzNiM2Q5OTk3ZTUyOTc1MTBlZWIzNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTIwLDYgKzEyMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgSWNvbkRhdGFiYXNlLAogICAgICAgICBJbnNwZWN0b3IsCiAgICAgICAgIEtl
eVZhbHVlU3RvcmFnZU1hbmFnZXIsCisgICAgICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrLAogICAg
ICAgICBNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgTmF2aWdhdGlvbiwKICAgICAgICAgTmF2
aWdhdGlvbkFjdGlvbiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9B
UElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmlu
ZGV4IDhlY2I1MzMzODYwMmMwN2Y4MmYyMWFjNzg1NTViYzZkMmE5NWYwYmMuLjg0YTg0ZTY5NzJj
Y2VjZjAwODdkMmUxM2Y3NWM4NzM3YmVkNmJkOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbQpAQCAtNTEsNiArNTEsNyBAQAogI2ltcG9ydCAiV0tQcmVmZXJlbmNl
c0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5kbGVy
VGFza0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFs
LmgiCiAjaW1wb3J0ICJXS1VzZXJTY3JpcHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKQEAgLTE4Myw2ICsx
ODQsMTAgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkK
ICAgICAgICAgYnJlYWs7CiAjZW5kaWYKIAorICAgIGNhc2UgVHlwZTo6VVJMU2NoZW1lSGFuZGxl
clRhc2s6CisgICAgICAgIHdyYXBwZXIgPSBbV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgYWxs
b2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbjoKICAgICAg
ICAgd3JhcHBlciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCAxNDI5MmY5OWE3MmJjZDc3OGVhZThlNzM2OTZlOTczMWVmY2E2MGEwLi5lODVjZDEwZjVl
MDUxNWU4Y2ZlMWYwZWQyMDAyYTg5YjllZDZhNTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC05Myw2ICs5Myw3IEBA
IHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0odXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbik7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG9ic2VydmVkTGF5b3V0TWlsZXN0b25l
cyk7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKKyAgICBl
bmNvZGVyIDw8IHVybFNjaGVtZUhhbmRsZXJzOwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGVu
Y29kZXIgPDwgaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZDsKICNpZiBVU0UoTElCV0VCUlRD
KQpAQCAtMjIxLDYgKzIyMiw5IEBAIGJvb2wgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgV2ViUGFnZUNyZWF0aW9uUGFyCiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5KSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0
ZXJzLnVybFNjaGVtZUhhbmRsZXJzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgRU5B
QkxFKFdFQl9SVEMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLmljZUNhbmRp
ZGF0ZUZpbHRlcmluZ0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAyMDgx
YjA3OTMxNTg2MzE4Zjk1NWJhYmQ5N2NjNGYxY2FiMTNkMzcxLi5iNGZlNmU2NjQ1YmM5NzExOTA3
YmM0YzQ3OTJkYWU5OTZkZjc2ZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTQ2LDYgKzE0Nyw4IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIHsKIAogICAgIFN0cmluZyBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsK
IAorICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gdXJsU2NoZW1lSGFuZGxlcnM7CisKICNp
ZiBFTkFCTEUoV0VCX1JUQykKICAgICBib29sIGljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQg
eyB0cnVlIH07CiAjaWYgVVNFKExJQldFQlJUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGM0MjAxYzkxNTIwNDMzZWYxNGYzZjc2ZDk2OGNlNTRhNjQ4MGEyZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2su
Y3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKworI2luY2x1ZGUgIldlYlVSTFNj
aGVtZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorCitu
YW1lc3BhY2UgQVBJIHsKKworUmVmPFVSTFNjaGVtZUhhbmRsZXJUYXNrPiBVUkxTY2hlbWVIYW5k
bGVyVGFzazo6Y3JlYXRlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smIHdlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFVSTFNjaGVtZUhh
bmRsZXJUYXNrKHdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrKSk7Cit9CisKK1VSTFNjaGVtZUhhbmRs
ZXJUYXNrOjpVUkxTY2hlbWVIYW5kbGVyVGFzayhXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrJiB3ZWJVUkxTY2hlbWVIYW5kbGVyVGFzaykKKyAgICA6IG1fd2ViVVJMU2NoZW1lSGFuZGxl
clRhc2sod2ViVVJMU2NoZW1lSGFuZGxlclRhc2spCit7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43ZTMxNTA4ZmQwOWUyNWE5NDNlY2I3YzQ0ZTkyMmFkNjk2ZjA5YWMzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrOworfQorCituYW1lc3BhY2UgQVBJIHsKKworY2xhc3MgVVJMU2No
ZW1lSGFuZGxlclRhc2sgZmluYWwgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlVS
TFNjaGVtZUhhbmRsZXJUYXNrPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxVUkxTY2hlbWVI
YW5kbGVyVGFzaz4gY3JlYXRlKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smKTsKKwor
ICAgIFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smIHRhc2soKSB7IHJldHVybiBtX3dl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgVVJMU2NoZW1l
SGFuZGxlclRhc2soV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayYpOworCisgICAgUmVm
PFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s+IG1fd2ViVVJMU2NoZW1lSGFuZGxlclRh
c2s7Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDMxYmM1MDU3YzUyZTBkOTkz
ZGYzNTgwNjM3N2VlOTY4ZTMzZTE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tf
QVBJX0VOQUJMRUQKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisKK05TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCisKK0BjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wgV0tVUkxT
Y2hlbWVIYW5kbGVyVGFzazsKKworLyohIEEgY2xhc3MgY29uZm9ybWluZyB0byB0aGUgV0tVUkxT
Y2hlbWVIYW5kbGVyIHByb3RvY29sIHByb3ZpZGVzIG1ldGhvZHMgZm9yCisgbG9hZGluZyByZXNv
dXJjZXMgd2l0aCBVUkwgc2NoZW1lcyB0aGF0IFdlYktpdCBkb2Vzbid0IGtub3cgaG93IHRvIGhh
bmRsZSBpdHNlbGYuCisgKi8KK1dLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpCitAcHJvdG9jb2wgV0tVUkxTY2hlbWVIYW5kbGVyIDxOU09iamVjdD4K
KworLyohIEBhYnN0cmFjdCBOb3RpZmllcyB5b3VyIGFwcCB0byBzdGFydCBsb2FkaW5nIHRoZSBk
YXRhIGZvciBhIHBhcnRpY3VsYXIgcmVzb3VyY2UgCisgcmVwcmVzZW50ZWQgYnkgdGhlIFVSTCBz
Y2hlbWUgaGFuZGxlciB0YXNrLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyBpbnZva2lu
ZyB0aGUgbWV0aG9kLgorIEBwYXJhbSB1cmxTY2hlbWVIYW5kbGVyVGFzayBUaGUgdGFzayB0aGF0
IHlvdXIgYXBwIHNob3VsZCBzdGFydCBsb2FkaW5nIGRhdGEgZm9yLgorICovCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRUYXNrOihpZCA8V0tVUkxTY2hlbWVIYW5k
bGVyVGFzaz4pdXJsU2NoZW1lSGFuZGxlclRhc2s7CisKKy8qISBAYWJzdHJhY3QgTm90aWZpZXMg
eW91ciBhcHAgdG8gc3RvcCBoYW5kbGluZyBhIFVSTCBzY2hlbWUgaGFuZGxlciB0YXNrLgorIEBw
YXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyBpbnZva2luZyB0aGUgbWV0aG9kLgorIEBwYXJhbSB1
cmxTY2hlbWVIYW5kbGVyVGFzayBUaGUgdGFzayB0aGF0IHlvdXIgYXBwIHNob3VsZCBzdG9wIGhh
bmRsaW5nLgorIEBkaXNjdXNzaW9uIEFmdGVyIHlvdXIgYXBwIGlzIHRvbGQgdG8gc3RvcCBsb2Fk
aW5nIGRhdGEgZm9yIGEgVVJMIHNjaGVtZSBoYW5kbGVyIHRhc2sKKyBpdCBtdXN0IG5vdCBwZXJm
b3JtIGFueSBjYWxsYmFja3MgZm9yIHRoYXQgdGFzay4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0
aHJvd24gaWYgYW55IGNhbGxiYWNrcyBhcmUgbWFkZSBvbiB0aGUgVVJMIHNjaGVtZSBoYW5kbGVy
IHRhc2sKKyBhZnRlciB5b3VyIGFwcCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyBmb3Ig
aXQuCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVGFzazoo
aWQgPFdLVVJMU2NoZW1lSGFuZGxlclRhc2s+KXVybFNjaGVtZUhhbmRsZXJUYXNrOworCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjlmZTM5NjVlOGIzOGUwMDc2MmM1OTM2MGI3ZWViZmZiNTZmNWEyOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
V0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0Bw
cm90b2NvbCBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrIDxOU09iamVjdD4KKworLyohIEBhYnN0cmFj
dCBUaGUgcmVxdWVzdCB0byBsb2FkIGZvciB0aGlzIHRhc2suCisgKi8KK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0OworCisvKiEgQGFi
c3RyYWN0IFNldCB0aGUgY3VycmVudCByZXNwb25zZSBvYmplY3QgZm9yIHRoZSB0YXNrLgorIEBw
YXJhbSByZXNwb25zZSBUaGUgcmVzcG9uc2UgdG8gdXNlLgorIEBkaXNjdXNzaW9uIFRoaXMgbWV0
aG9kIG11c3QgYmUgY2FsbGVkIGF0IGxlYXN0IG9uY2UgZm9yIGVhY2ggVVJMIHNjaGVtZSBoYW5k
bGVyIHRhc2suCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8gc2Vu
ZCBhIG5ldyByZXNwb25zZSBvYmplY3QgYWZ0ZXIgdGhlIHRhc2sgaGFzIGFscmVhZHkgYmVlbiBj
b21wbGV0ZWQuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdXIgYXBwIGhhcyBi
ZWVuIHRvbGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJlZ2lzdGVyZWQgV0tV
UkxTY2hlbWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZClkaWRSZWNlaXZlUmVzcG9uc2U6
KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKKworLyohIEBhYnN0cmFjdCBBZGQgcmVjZWl2ZWQg
ZGF0YSB0byB0aGUgdGFzay4KKyBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byBhZGQuCisgQGRpc2N1
c3Npb24gQWZ0ZXIgYSBVUkwgc2NoZW1lIGhhbmRsZXIgdGFzaydzIGZpbmFsIHJlc3BvbnNlIG9i
amVjdCBpcyByZWNlaXZlZCB5b3Ugc2hvdWxkCisgc3RhcnQgc2VuZGluZyBpdCBkYXRhLgorIEVh
Y2ggdGltZSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgdGhlIGRhdGEgeW91IHNlbmQgd2lsbCBiZSBh
cHBlbmRlZCB0byBhbGwgcHJldmlvdXMgZGF0YS4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJv
d24gaWYgeW91IHRyeSB0byBzZW5kIHRoZSB0YXNrIGFueSBkYXRhIGJlZm9yZSBzZW5kaW5nIGl0
IGEgcmVzcG9uc2UuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8g
c2VuZCB0aGUgdGFzayBhbnkgZGF0YSBhZnRlciB0aGUgdGFzayBoYXMgYWxyZWFkeSBiZWVuIGNv
bXBsZXRlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91ciBhcHAgaGFzIGJl
ZW4gdG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0YXNrIHZpYSB0aGUgcmVnaXN0ZXJlZCBXS1VS
TFNjaGVtZUhhbmRsZXIgb2JqZWN0LgorICovCistICh2b2lkKWRpZFJlY2VpdmVEYXRhOihOU0Rh
dGEgKilkYXRhOworCisvKiEgQGFic3RyYWN0IE1hcmsgdGhlIHRhc2sgYXMgc3VjY2Vzc2Z1bGx5
IGNvbXBsZXRlZC4KKyBAZGlzY3Vzc2lvbiBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYg
eW91IHRyeSB0byBmaW5pc2ggdGhlIHRhc2sgYmVmb3JlIHNlbmRpbmcgaXQgYSByZXNwb25zZS4K
KyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRyeSB0byBtYXJrIGEgdGFzayBj
b21wbGV0ZWQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBtYXJrZWQgY29tcGxldGVkIG9yIGZh
aWxlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91ciBhcHAgaGFzIGJlZW4g
dG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0YXNrIHZpYSB0aGUgcmVnaXN0ZXJlZCBXS1VSTFNj
aGVtZUhhbmRsZXIgb2JqZWN0LgorICovCistICh2b2lkKWRpZEZpbmlzaDsKKworLyohIEBhYnN0
cmFjdCBNYXJrIHRoZSB0YXNrIGFzIGZhaWxlZC4KKyBAcGFyYW0gZXJyb3IgQSBkZXNjcmlwdGlv
biBvZiB0aGUgZXJyb3IgdGhhdCBjYXVzZWQgdGhlIHRhc2sgdG8gZmFpbC4KKyBAZGlzY3Vzc2lv
biAgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdSB0cnkgdG8gbWFyayBhIHRhc2sg
ZmFpbGVkIGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gbWFya2VkIGNvbXBsZXRlZCBvciBmYWls
ZWQuCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlvdXIgYXBwIGhhcyBiZWVuIHRv
bGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJlZ2lzdGVyZWQgV0tVUkxTY2hl
bWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZClkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9y
ICopZXJyb3I7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXJUYXNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMzU0NTQ3ZmYwMmMyNWI4MTJkZDA1NTY5
ZWI0ZTFmZmI0MjhlNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2subW0KQEAgLTAsMCArMSw5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5k
bGVyVGFza0ludGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW5jbHVkZSAiV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZEJ1ZmZlci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGlj
IHZvaWQgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrOjpFeGNlcHRpb25UeXBlIGV4Y2VwdGlvblR5cGUpCit7CisgICAgaWYgKGV4Y2VwdGlv
blR5cGUgPT0gV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6
VGFza0FscmVhZHlTdG9wcGVkKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5h
bEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiVGhpcyB0YXNrIGhhcyBhbHJlYWR5IGJl
ZW4gc3RvcHBlZCJdOworICAgIGlmIChleGNlcHRpb25UeXBlID09IFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZCkKKyAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9u
IGZvcm1hdDpAIltXS1VSTFNjaGVtZUhhbmRsZXJUYXNrIHRhc2tEaWRDb21wbGV0ZVdpdGhFcnJv
cjpdIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGZvciB0aGlzIHRhc2siXTsKKyAgICBpZiAoZXhj
ZXB0aW9uVHlwZSA9PSBXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25U
eXBlOjpEYXRhQWxyZWFkeVNlbnQpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVy
bmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJbV0tVUkxTY2hlbWVIYW5kbGVyVGFz
ayB0YXNrRGlkUmVjZWl2ZURhdGE6XSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBmb3IgdGhpcyB0
YXNrIl07CisgICAgaWYgKGV4Y2VwdGlvblR5cGUgPT0gV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9SZXNwb25zZVNlbnQpCisgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJObyBy
ZXNwb25zZSBoYXMgYmVlbiBzZW50IGZvciB0aGlzIHRhc2siXTsKK30KKworQGltcGxlbWVudGF0
aW9uIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsCisKKy0gKE5TVVJMUmVxdWVzdCAqKXJlcXVl
c3QKK3sKKyAgICByZXR1cm4gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkucmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAodm9pZClkaWRSZWNl
aXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQoreworICAgIGF1dG8gcmVzdWx0
ID0gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3Bv
bnNlKTsKKyAgICByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7Cit9CisKKy0gKHZv
aWQpZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGEKK3sKKyAgICBhdXRvIHJlc3VsdCA9IF91
cmxTY2hlbWVIYW5kbGVyVGFzay0+dGFzaygpLmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7CisgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2Fy
eShyZXN1bHQpOworfQorCistICh2b2lkKWRpZEZpbmlzaAoreworICAgIGF1dG8gcmVzdWx0ID0g
X3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNrKCkuZGlkQ29tcGxldGUoeyB9KTsKKyAgICByYWlz
ZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7Cit9CisKKy0gKHZvaWQpZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgYXV0byByZXN1bHQgPSBfdXJsU2NoZW1lSGFu
ZGxlclRhc2stPnRhc2soKS5kaWRDb21wbGV0ZShlcnJvcik7CisgICAgcmFpc2VFeGNlcHRpb25J
Zk5lY2Vzc2FyeShyZXN1bHQpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wg
aW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1
cm4gKl91cmxTY2hlbWVIYW5kbGVyVGFzazsKK30KKworQGVuZAorCisjZW5kaWYgLy8gI2lmIFdL
X0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yMjQ2ODAxZjU4MzY2NmNhMzE1ODE2MDZhZDI4NjA4ZjYyYTQ4ZGU4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhh
bmRsZXJUYXNrSW50ZXJuYWwuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCAiQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisK
K0BpbnRlcmZhY2UgV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgOiBOU09iamVjdCA8V0tVUkxT
Y2hlbWVIYW5kbGVyVGFzaz4KK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBp
ZDxXS1VSTFNjaGVtZUhhbmRsZXJUYXNrPiB3cmFwcGVyKEFQSTo6VVJMU2NoZW1lSGFuZGxlclRh
c2smIHVybFNjaGVtZUhhbmRsZXJUYXNrKQoreworICAgIEFTU0VSVChbdXJsU2NoZW1lSGFuZGxl
clRhc2sud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBs
IGNsYXNzXV0pOworICAgIHJldHVybiAoaWQ8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4pdXJsU2No
ZW1lSGFuZGxlclRhc2sud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgV0tVUkxTY2hl
bWVIYW5kbGVyVGFza0ltcGwgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6OlVSTFNjaGVtZUhhbmRsZXJUYXNrPiBfdXJsU2NoZW1lSGFuZGxlclRh
c2s7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNWMyZWNjOGUwNDdhN2I1
NmRjOTc0ZDJmZTMxMzBlYTgxMzE3MzhiMi4uMDkwNThkYjQ4ZGI0MDc5N2I0ZTZkNWU2MGI0YWUy
YmI3MGE2ODEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5oCkBAIC0yNzksNiArMjc5LDExIEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3go
MTAuMTApLCBpb3MoOC4wKSkKIAogI2VuZGlmCiAKKy8qIEBhYnN0cmFjdCBDaGVja3Mgd2hldGhl
ciBvciBub3QgV0tXZWJWaWV3cyBoYW5kbGUgdGhlIGdpdmVuIFVSTCBzY2hlbWUgYnkgZGVmYXVs
dC4KKyBAcGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRvIGNoZWNrLgorICovCisrIChCT09M
KWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiAhVEFS
R0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCA4OTdhMmI3ODMzYzcwZTkzMmYwYTk1M2ZiOGY3NzA0ZTMyODQzYmJj
Li5iZTQyYTQxYzllZWY2NWUwZDM1NzNmZGJiNjY2NzAxNWZmZGU0MzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNzgsNiArNzgs
NyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UG9vbC5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2EuaCIKICNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0ICJfV0tE
aWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIK
QEAgLTEwMCw2ICsxMDEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNr
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4
dFN0cmVhbS5oPgorI2ltcG9ydCA8V2ViQ29yZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9Xcml0aW5nTW9kZS5oPgog
I2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KQEAgLTU3Myw2ICs1NzUsMTAgQEAgLSAodm9pZClfaW5p
dGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmln
dXJhdGlvbgogICAgIFtzZWxmIF9zZXRVcFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudF07CiAj
ZW5kaWYKIAorICAgIGF1dG8gKmhhbmRsZXJzID0gX2NvbmZpZ3VyYXRpb24uZ2V0KCkuX3VybFNj
aGVtZUhhbmRsZXJzOworICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBoYW5kbGVycykKKyAgICAg
ICAgX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShoYW5kbGVyc1trZXldKSwga2V5KTsKKwogICAgIHBhZ2VU
b1ZpZXdNYXAoKS5hZGQoX3BhZ2UuZ2V0KCksIHNlbGYpOwogfQogCkBAIC0zNDk2LDYgKzM1MDIs
MTcgQEAgLSAodm9pZClfaW50ZXJhY3RXaXRoTWVkaWFDb250cm9sc0ZvclRlc3RpbmcKIAogI2Vu
ZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQogCistIChpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxT
Y2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIGF1
dG8qIGhhbmRsZXIgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YSo+KF9wYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKHVybFNjaGVtZSkpOworICAgIHJl
dHVybiBoYW5kbGVyID8gaGFuZGxlci0+YXBpSGFuZGxlcigpIDogbmlsOworfQorCisrIChCT09M
KWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCit7CisgICAgcmV0dXJuIFdl
YkNvcmU6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKHVybFNjaGVtZSk7Cit9CisKIEBlbmQK
IAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoV0tQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24uaAppbmRleCAzYWRhYmJjMTI4ZTlhOTBmNzU4YzMxYjgyODUxMjFjNDA3ZTNhYmZkLi5jYmQ3
NDk0OGQ1Y2RkMTVmOWVkOGFmMzMxZTQ1NDc4NzY5MTA0Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24uaApAQCAtMzYsNiArMzYsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdL
UHJvY2Vzc1Bvb2w7CiBAY2xhc3MgV0tVc2VyQ29udGVudENvbnRyb2xsZXI7CiBAY2xhc3MgV0tX
ZWJzaXRlRGF0YVN0b3JlOworQHByb3RvY29sIFdLVVJMU2NoZW1lSGFuZGxlcjsKIAogI2lmIFRB
UkdFVF9PU19JUEhPTkUKIApAQCAtMTc1LDYgKzE3NiwyNSBAQCBXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCiAKICNlbmRpZgogCisvKiBAYWJzdHJhY3QgU2V0cyB0
aGUgVVJMIHNjaGVtZSBoYW5kbGVyIG9iamVjdCBmb3IgdGhlIGdpdmVuIFVSTCBzY2hlbWUuCisg
QHBhcmFtIHVybFNjaGVtZUhhbmRsZXIgVGhlIG9iamVjdCB0byByZWdpc3Rlci4KKyBAcGFyYW0g
c2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRoZSBvYmplY3Qgd2lsbCBoYW5kbGUuCisgQGRpc2N1c3Np
b24gRWFjaCBVUkwgc2NoZW1lIGNhbiBvbmx5IGhhdmUgb25lIFVSTCBzY2hlbWUgaGFuZGxlciBv
YmplY3QgcmVnaXN0ZXJlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRy
eSB0byByZWdpc3RlciBhbiBvYmplY3QgZm9yIGEgcGFydGljdWxhciBVUkwgc2NoZW1lIG1vcmUg
dGhhbiBvbmNlLgorIFVSTCBzY2hlbWVzIGFyZSBjYXNlIGluc2Vuc2l0aXZlLiBlLmcuICJteXBy
b3RvY29sIiBhbmQgIk15UHJvdG9jb2wiIGFyZSBlcXVpdmFsZW50LgorIFZhbGlkIFVSTCBzY2hl
bWVzIG11c3Qgc3RhcnQgd2l0aCBhbiBBU0NJSSBsZXR0ZXIgYW5kIGNhbiBvbmx5IGNvbnRhaW4g
QVNDSUkgbGV0dGVycywgbnVtYmVycywgdGhlICcrJyBjaGFyYWN0ZXIsCisgdGhlICctJyBjaGFy
YWN0ZXIsIGFuZCB0aGUgJy4nIGNoYXJhY3Rlci4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJv
d24gaWYgeW91IHRyeSB0byByZWdpc3RlciBhIFVSTCBzY2hlbWUgaGFuZGxlciBmb3IgYW4gaW52
YWxpZCBVUkwgc2NoZW1lLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5
IHRvIHJlZ2lzdGVyIGEgVVJMIHNjaGVtZSBoYW5kbGVyIGZvciBhIFVSTCBzY2hlbWUgdGhhdCBX
ZWJLaXQgaGFuZGxlcyBpbnRlcm5hbGx5LgorIFlvdSBjYW4gdXNlICtbV0tXZWJWaWV3IGhhbmRs
ZXNVUkxTY2hlbWU6XSB0byBjaGVjayB0aGUgYXZhaWxhYmlsaXR5IG9mIGEgZ2l2ZW4gVVJMIHNj
aGVtZS4KKyAqLworLSAodm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihudWxsYWJsZSBpZCA8V0tV
UkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcg
Kil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKKy8qIEBhYnN0cmFjdCBSZXR1cm5zIHRoZSBjdXJyZW50bHkgcmVnaXN0ZXJl
ZCBVUkwgc2NoZW1lIGhhbmRsZXIgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gVVJMIHNjaGVtZS4KKyBA
cGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRvIGxvb2t1cC4KKyAqLworLSAobnVsbGFibGUg
aWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTooTlNT
dHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAogQGludGVyZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0
aW9uIChXS0RlcHJlY2F0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggNThjMTg1MjM4
MzdlNzZjNTY0NzlhMjA5MTQ0MGVhOTBkODZhYzM4Yi4uZGE4NTUxMzgzNzE0MThhZjFmMTk4OWQw
MTAxOTgwZWJmMTEzNmE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQpAQCAtMzMsMTEgKzMz
LDEzIEBACiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29s
LmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tXZWJW
aWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgogI2lt
cG9ydCAiV2Vha09iakNQdHIuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCIKICNp
bXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9S
dW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4KKyNpbXBvcnQgPFdlYkNvcmUvVVJMUGFyc2VyLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC05NCw2
ICs5Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdDb25maWd1cmF0aW9uIHsKICAgICBX
ZWJLaXQ6OldlYWtPYmpDUHRyPFdLV2ViVmlldz4gX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0
aW9uR2VzdHVyZXM7CiAgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfZ3JvdXBJZGVudGlmaWVyOwog
ICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8TlNTdHJpbmc+PiBfYXBwbGljYXRpb25OYW1l
Rm9yVXNlckFnZW50OworICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5QdHI8TlNNdXRhYmxlRGlj
dGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4+PiBfdXJsU2NoZW1l
SGFuZGxlcnM7CiAgICAgTlNUaW1lSW50ZXJ2YWwgX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb25UaW1lb3V0OwogICAgIEJPT0wgX3RyZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0lu
c2VjdXJlOwogICAgIEJPT0wgX3Jlc3BlY3RzSW1hZ2VPcmllbnRhdGlvbjsKQEAgLTMyOCw2ICsz
MzEsOCBAQCAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0
aW9uLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcmsgPSBzZWxmLT5fbmVlZHNT
dG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVpcms7CiAgICAgY29uZmlndXJhdGlvbi0+X292ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0gc2VsZi0+X292ZXJyaWRlQ29udGVudFNlY3VyaXR5
UG9saWN5OwogCisgICAgY29uZmlndXJhdGlvbi0+X3VybFNjaGVtZUhhbmRsZXJzLnNldChhZG9w
dE5TKFtzZWxmLl91cmxTY2hlbWVIYW5kbGVycyBtdXRhYmxlQ29weVdpdGhab25lOnpvbmVdKSk7
CisKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIApAQCAtNDAwLDYgKzQwNSwzMyBAQCAt
ICh2b2lkKV9zZXRWaXNpdGVkTGlua1N0b3JlOihfV0tWaXNpdGVkTGlua1N0b3JlICopdmlzaXRl
ZExpbmtTdG9yZQogICAgIF92aXNpdGVkTGlua1N0b3JlLnNldCh2aXNpdGVkTGlua1N0b3JlKTsK
IH0KIAorLSAodm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVy
Pil1cmxTY2hlbWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKK3sK
KyAgICBhdXRvICp1cmxTY2hlbWVIYW5kbGVycyA9IF91cmxTY2hlbWVIYW5kbGVycy5nZXQoW10g
eyByZXR1cm4gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsgfSk7
CisKKyAgICBpZiAoW1dLV2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOnVybFNjaGVtZV0pCisgICAg
ICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6
QCInJUAnIGlzIGEgVVJMIHNjaGVtZSB0aGF0IFdLV2ViVmlldyBoYW5kbGVzIG5hdGl2ZWx5Iiwg
dXJsU2NoZW1lXTsKKworICAgIGF1dG8gY2Fub25pY2FsU2NoZW1lID0gV2ViQ29yZTo6VVJMUGFy
c2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOworICAgIGlmICghY2Fub25p
Y2FsU2NoZW1lKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBub3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJsU2No
ZW1lXTsKKworICAgIGlmIChbdXJsU2NoZW1lSGFuZGxlcnMgb2JqZWN0Rm9yS2V5OihOU1N0cmlu
ZyAqKWNhbm9uaWNhbFNjaGVtZS52YWx1ZSgpXSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIlVSTCBzY2hlbWUgJyVAJyBhbHJl
YWR5IGhhcyBhIHJlZ2lzdGVyZWQgVVJMIHNjaGVtZSBoYW5kbGVyIiwgdXJsU2NoZW1lXTsKKwor
ICAgIFt1cmxTY2hlbWVIYW5kbGVycyBzZXRPYmplY3Q6dXJsU2NoZW1lSGFuZGxlciBmb3JLZXk6
KE5TU3RyaW5nICopY2Fub25pY2FsU2NoZW1lLnZhbHVlKCldOworfQorCistIChudWxsYWJsZSBp
ZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihOU1N0
cmluZyAqKXVybFNjaGVtZQoreworICAgIGF1dG8gY2Fub25pY2FsU2NoZW1lID0gV2ViQ29yZTo6
VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOworICAgIGlmICgh
Y2Fub25pY2FsU2NoZW1lKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgYXV0byAqdXJsU2No
ZW1lSGFuZGxlcnMgPSBfdXJsU2NoZW1lSGFuZGxlcnMuZ2V0KFtdIHsgcmV0dXJuIGFkb3B0TlMo
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7IH0pOworICAgIHJldHVybiBbdXJs
U2NoZW1lSGFuZGxlcnMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWNhbm9uaWNhbFNjaGVtZS52
YWx1ZSgpXTsKK30KKwogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogCkBAIC00
MTUsNiArNDQ3LDExIEBAIC0gKHZvaWQpX3NldFdlYnNpdGVEYXRhU3RvcmU6KF9XS1dlYnNpdGVE
YXRhU3RvcmUgKil3ZWJzaXRlRGF0YVN0b3JlCiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
b3AKIAorLSAoTlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVI
YW5kbGVyPj4gKilfdXJsU2NoZW1lSGFuZGxlcnMKK3sKKyAgICByZXR1cm4gX3VybFNjaGVtZUhh
bmRsZXJzLmdldChbXSB7IHJldHVybiBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF0pOyB9KTsKK30KKwogI2lmIFBMQVRGT1JNKElPUykKIC0gKFdLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5ICopX2NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5CiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaAppbmRleCBlZjhlMjEwYjZiMTMwZGJmMDFlYWNl
NDExNDQ4ZjliZWY2ZDJkOTQ2Li5lNDhjMDJkMzIxMTg1ZjgwNjEwOGQyYTFkYjA2NzdkNDFkMWE3
ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmgKQEAgLTMyLDYgKzMy
LDggQEAKIAogQGludGVyZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0aW9uICgpCiAKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4gKl91cmxTY2hlbWVIYW5kbGVyczsKKwogI2lmIFBMQVRG
T1JNKElPUykKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldENvbnRlbnRQcm92aWRl
clJlZ2lzdHJ5OikgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgKl9jb250ZW50UHJv
dmlkZXJSZWdpc3RyeTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZWFj
NDUwOTEwMDgwODllMTMzYjQ2ZDhlZWZhNzg1OGRkOTQzNzcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
V2ViVVJMU2NoZW1lSGFuZGxlci5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworQHBy
b3RvY29sIFdLVVJMU2NoZW1lSGFuZGxlcjsKKworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBVUkxT
Y2hlbWVIYW5kbGVyVGFzazsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYSA6IHB1YmxpYyBXZWJVUkxTY2hlbWVIYW5kbGVyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYT4gY3JlYXRlKGlkIDxX
S1VSTFNjaGVtZUhhbmRsZXI+KTsKKworICAgIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+IGFwaUhh
bmRsZXIoKSBjb25zdCB7IHJldHVybiBtX2FwaUhhbmRsZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToK
KyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EoaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pOwor
CisgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTY2hlbWVI
YW5kbGVyVGFzayYpIGZpbmFsOworICAgIHZvaWQgcGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJv
eHkmLCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayYpIGZpbmFsOworCisgICAgUmV0YWluUHRyPGlk
IDxXS1VSTFNjaGVtZUhhbmRsZXI+PiBtX2FwaUhhbmRsZXI7CisgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmPEFQSTo6VVJMU2NoZW1lSGFuZGxlclRhc2s+PiBtX2FwaVRhc2tzOworCit9OyAvLyBj
bGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5k
bGVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRiNGNjMTkwZWIzZTA0MDQ1Yzc0MmVmOThlNjczYWU0
OGNhNDQyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0KQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlckNvY29h
LmgiCisKKyNpbXBvcnQgIkFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmgiCisjaW1wb3J0ICJXS0Zv
dW5kYXRpb24uaCIKKyNpbXBvcnQgIldLVVJMU2NoZW1lSGFuZGxlci5oIgorI2ltcG9ydCAiV0tV
UkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5h
bC5oIgorI2ltcG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitSZWY8V2ViVVJMU2NoZW1lSGFu
ZGxlckNvY29hPiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShpZCA8V0tVUkxTY2hl
bWVIYW5kbGVyPiBhcGlIYW5kbGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYShhcGlIYW5kbGVyKSk7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYTo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+
IGFwaUhhbmRsZXIpCisgICAgOiBtX2FwaUhhbmRsZXIoYXBpSGFuZGxlcikKK3sKKyNpZiAhV0tf
QVBJX0VOQUJMRUQKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9
CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrJiB0YXNrKQoreworI2lmIFdL
X0FQSV9FTkFCTEVECisgICAgYXV0byByZXN1bHQgPSBtX2FwaVRhc2tzLmFkZCh0YXNrLmlkZW50
aWZpZXIoKSwgQVBJOjpVUkxTY2hlbWVIYW5kbGVyVGFzazo6Y3JlYXRlKHRhc2spKTsKKyAgICBB
U1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgW21fYXBpSGFuZGxlci5nZXQoKSB3ZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgc3RhcnRUYXNrOndyYXBwZXIocmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5nZXQoKSldOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAg
VU5VU0VEX1BBUkFNKHRhc2spOworI2VuZGlmCit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxl
ckNvY29hOjpwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2smIHRhc2spCit7CisjaWYgV0tfQVBJX0VOQUJMRUQKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV9hcGlUYXNrcy5maW5kKHRhc2suaWRlbnRpZmllcigpKTsKKyAgICBpZiAoaXRlcmF0
b3IgPT0gbV9hcGlUYXNrcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fYXBpSGFu
ZGxlci5nZXQoKSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgc3RvcFRhc2s6d3JhcHBl
cihpdGVyYXRvci0+dmFsdWUuZ2V0KCkpXTsKKworICAgIG1fYXBpVGFza3MucmVtb3ZlKGl0ZXJh
dG9yKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTSh0
YXNrKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTIyZjZhMTQ1ZTk1YjYxNjYyYTY0Njk3
NWViYzY2MGFjNGMyNmU2NC4uY2JiMjk4ZDY0OGQwNmZjYjBiZmMyODM1ZjEwMzM2N2FlYTgzNWRh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwOCw2
ICsxMDgsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCisjaW5jbHVkZSAi
V2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQml0bWFwSW1hZ2UuaD4KQEAgLTEyNyw2ICsxMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC01NTg4LDYgKzU1OTAs
OSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLm9ic2VydmVkTGF5b3V0TWlsZXN0b25lcyA9IG1fb2Jz
ZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzOwogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OwogCisgICAgZm9y
IChhdXRvJiBpdGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKKyAgICAgICAg
cGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52
YWx1ZS0+aWRlbnRpZmllcigpKTsKKwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHBhcmFtZXRl
cnMuaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCA9IG1fcHJlZmVyZW5jZXMtPmljZUNhbmRp
ZGF0ZUZpbHRlcmluZ0VuYWJsZWQoKTsKICNpZiBVU0UoTElCV0VCUlRDKQpAQCAtNjg0Myw1ICs2
ODQ4LDQxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUo
UmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUp
Cit7CisgICAgYXV0byBjYW5vbmljYWxpemVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9u
aWNhbGl6ZVNjaGVtZShzY2hlbWUpOworICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsK
KyAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hl
bWUudmFsdWUoKSkpOworCisgICAgYXV0byBzY2hlbWVSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRs
ZXJzQnlTY2hlbWUuYWRkKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSwgaGFuZGxlci5nZXQo
KSk7CisgICAgQVNTRVJUX1VOVVNFRChzY2hlbWVSZXN1bHQsIHNjaGVtZVJlc3VsdC5pc05ld0Vu
dHJ5KTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9IGhhbmRsZXItPmlkZW50aWZpZXIoKTsKKyAg
ICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVy
LmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGlk
ZW50aWZpZXJSZXN1bHQsIGlkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihp
ZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpLCBtX3BhZ2VJRCk7Cit9CisK
K1dlYlVSTFNjaGVtZUhhbmRsZXIqIFdlYlBhZ2VQcm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICByZXR1cm4gbV91cmxTY2hlbWVIYW5k
bGVyc0J5U2NoZW1lLmdldChzY2hlbWUpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRV
UkxTY2hlbWVIYW5kbGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZp
ZXIuZmluZChoYW5kbGVySWRlbnRpZmllcik7CisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdXJs
U2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuZW5kKCkpOworCisgICAgaXRlcmF0b3ItPnZhbHVl
LT5zdGFydFRhc2soKnRoaXMsIHJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lSGFuZGxlclRhc2sodWludDY0X3QgaGFuZGxl
cklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKGhhbmRsZXJJZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRl
bnRpZmllci5lbmQoKSk7CisKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0b3BUYXNrKCp0aGlzLCBy
ZXNvdXJjZUlkZW50aWZpZXIpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjMWE4MmRjOWQ1YWZkYmIxMzAxNzRi
ZGZiYzFhMDA5YTg1YmYxNGNmLi4zN2RmNmJiNGFiZDg1YTJjZTg4OTY4OTQ5MDMyOGIxYTc5N2Vi
YTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDIsNiAr
MjAyLDcgQEAgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2Vi
TmF2aWdhdGlvblN0YXRlOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Owog
Y2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBjbGFz
cyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsK
IGNsYXNzIFdlYlBhZ2VHcm91cDsKQEAgLTExOTEsNiArMTE5Miw5IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0U2hvdWxkU2tpcFdhaXRpbmdGb3JQYWludEFmdGVyTmV4dFZpZXdEaWRNb3ZlVG9X
aW5kb3coYm9vbCBzaG91bGRTa2lwKSB7IG1fc2hvdWxkU2tpcFdhaXRpbmdGb3JQYWludEFmdGVy
TmV4dFZpZXdEaWRNb3ZlVG9XaW5kb3cgPSBzaG91bGRTa2lwOyB9CiAKKyAgICB2b2lkIHNldFVS
TFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYsIGNvbnN0
IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyKiB1cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKwogcHJpdmF0ZToKICAgICBXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKCk7CkBAIC0xNTk0LDYgKzE1OTgsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAor
ICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVIYW5kbGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRp
ZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0b3BVUkxTY2hlbWVIYW5kbGVyVGFzayh1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKKwogICAgIHZv
aWQgaGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgdm9p
ZCBmaW5pc2hJbml0aWFsaXppbmdXZWJQYWdlQWZ0ZXJQcm9jZXNzTGF1bmNoKCk7CkBAIC0xOTc5
LDYgKzE5ODYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1VzaW5nSGlnaFBlcmZvcm1hbmNl
V2ViR0wgeyBmYWxzZSB9OwogICAgICAgICAKICAgICBXZWFrUHRyRmFjdG9yeTxXZWJQYWdlUHJv
eHk+IG1fd2Vha1B0ckZhY3Rvcnk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFdlYlVSTFNj
aGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWU7CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzQnlJ
ZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYzkzYzQ4MDdk
YTE5OWJmOTQ2N2MwMjZkZjM0OTVkODcyMDk5MzI2Li45NmIyZWZmMWMzZDdkNDNkYzUyMjU2Yzc1
Mzg1MmYzYzY4YzZhZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ5MCw0ICs0OTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogI2VuZGlmCiAKICAgICBTZXRJc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wo
Ym9vbCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpCisKKyAgICBTdGFydFVSTFNjaGVtZUhh
bmRsZXJUYXNrKHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisgICAgU3RvcFVSTFNj
aGVtZUhhbmRsZXJUYXNrKHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTk5ZWMyZjNlMWZmMjEyMWE3YmZmMzc1MDEx
NjllY2EzNmI2YzUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorCisj
aW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVX
ZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IG5l
eHRJZGVudGlmaWVyID0gMTsKKyAgICByZXR1cm4gbmV4dElkZW50aWZpZXIrKzsKK30KKworV2Vi
VVJMU2NoZW1lSGFuZGxlcjo6V2ViVVJMU2NoZW1lSGFuZGxlcigpCisgICAgOiBtX2lkZW50aWZp
ZXIoZ2VuZXJhdGVXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllcigpKQoreworfQorCitXZWJV
UkxTY2hlbWVIYW5kbGVyOjp+V2ViVVJMU2NoZW1lSGFuZGxlcigpCit7CisgICAgQVNTRVJUKG1f
dGFza3MuaXNFbXB0eSgpKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRh
c2soV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3Mu
YWRkKHJlc291cmNlSWRlbnRpZmllciwgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZSgq
dGhpcywgcGFnZSwgcmVzb3VyY2VJZGVudGlmaWVyLCByZXF1ZXN0KSk7CisgICAgQVNTRVJUKHJl
c3VsdC5pc05ld0VudHJ5KTsKKworICAgIHBsYXRmb3JtU3RhcnRUYXNrKHBhZ2UsIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUpOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BUYXNr
KFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKQoreworICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3Rhc2tzLmZpbmQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBp
ZiAoaXRlcmF0b3IgPT0gbV90YXNrcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXRl
cmF0b3ItPnZhbHVlLT5zdG9wKCk7CisKKyAgICBwbGF0Zm9ybVN0b3BUYXNrKHBhZ2UsIGl0ZXJh
dG9yLT52YWx1ZSk7CisKKyAgICBtX3Rhc2tzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdiNjgwMDVlNjQ5MTI0MTk5NzA5ZTUyOGRjNmU4NmUx
MmU3MDRjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVIYW5kbGVyLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFdlYlVSTFNjaGVtZUhhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVIYW5k
bGVyPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViVVJMU2NoZW1lSGFuZGxlcigpOworCisg
ICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQor
CisgICAgdm9pZCBzdGFydFRhc2soV2ViUGFnZVByb3h5JiwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0b3BU
YXNrKFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CisKK3Byb3Rl
Y3RlZDoKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyKCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQ
cm94eSYsIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrJikgPSAwOworCisgICAgdWludDY0X3QgbV9p
ZGVudGlmaWVyIHsgMSB9OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrPj4gbV90YXNrczsKKworfTsgLy8gY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxl
cgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyMGFiM2Y5NTUx
OTg1ZDgwZWM4MjJjNTQ3ODA5NDNmMjk3OWRlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwCkBAIC0wLDAgKzEs
MTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrLmgiCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5j
bHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxXZWJVUkxTY2hlbWVIYW5kbGVyVGFzaz4gV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVy
LCBXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrKGhhbmRsZXIsIHBhZ2UsIHJlc291cmNlSWRlbnRpZmllciwg
cmVxdWVzdCkpOworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6V2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwYWdl
LCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkKKyAgICA6IG1fdXJsU2NoZW1lSGFuZGxlcihoYW5kbGVyKQorICAgICwgbV9wYWdlKCZw
YWdlKQorICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNlSWRlbnRpZmllcikKKyAgICAsIG1fcmVx
dWVzdChyZXF1ZXN0KQoreworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9u
VHlwZSBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAg
IHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6VGFza0FscmVh
ZHlTdG9wcGVkOworCisgICAgaWYgKG1fY29tcGxldGVkKQorICAgICAgICByZXR1cm4gV2ViVVJM
U2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZDsK
KworICAgIGlmIChtX2RhdGFTZW50KQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2s6OkV4Y2VwdGlvblR5cGU6OkRhdGFBbHJlYWR5U2VudDsKKworICAgIG1fcmVzcG9uc2VT
ZW50ID0gdHJ1ZTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVt
ZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRp
ZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIFdlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpOb25lOworfQorCitXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzazo6RXhjZXB0aW9uVHlwZSBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2
ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQoreworICAgIGlmIChtX3N0b3BwZWQpCisg
ICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6VGFz
a0FscmVhZHlTdG9wcGVkOworCisgICAgaWYgKG1fY29tcGxldGVkKQorICAgICAgICByZXR1cm4g
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNh
bGxlZDsKKworICAgIGlmICghbV9yZXNwb25zZVNlbnQpCisgICAgICAgIHJldHVybiBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9SZXNwb25zZVNlbnQ7CisKKyAgICBt
X2RhdGFTZW50ID0gdHJ1ZTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVS
TFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVu
dGlmaWVyKCksIG1faWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGJ1
ZmZlci5wdHIoKSkpKTsKKyAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2Vw
dGlvblR5cGU6Ok5vbmU7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25U
eXBlIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm4gV2ViVVJM
U2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZDsKKwor
ICAgIGlmIChtX2NvbXBsZXRlZCkKKyAgICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrOjpFeGNlcHRpb25UeXBlOjpDb21wbGV0ZUFscmVhZHlDYWxsZWQ7CisKKyAgICBpZiAoIW1f
cmVzcG9uc2VTZW50ICYmIGVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gV2ViVVJMU2No
ZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OworCisgICAgbV9j
b21wbGV0ZWQgPSB0cnVlOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJM
U2NoZW1lSGFuZGxlclRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZp
ZXIoKSwgbV9pZGVudGlmaWVyLCBlcnJvcikpOworICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9uZTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzazo6cGFnZURlc3Ryb3llZCgpCit7CisgICAgQVNTRVJUKG1fcGFnZSk7CisgICAgbV9w
YWdlID0gbnVsbHB0cjsKKyAgICBtX3N0b3BwZWQgPSB0cnVlOworfQorCit2b2lkIFdlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrOjpzdG9wKCkKK3sKKyAgICBBU1NFUlQoIW1fc3RvcHBlZCk7CisgICAg
bV9zdG9wcGVkID0gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQzYmFjYjNjOWUxOTViNThhZjFlODA5OGUwMjBkNjY3MTJjNDNhOGMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2su
aApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBS
ZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZl
cjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7
CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrIDog
cHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1l
SGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisKKyAgICBlbnVt
IGNsYXNzIEV4Y2VwdGlvblR5cGUgeworICAgICAgICBEYXRhQWxyZWFkeVNlbnQsCisgICAgICAg
IENvbXBsZXRlQWxyZWFkeUNhbGxlZCwKKyAgICAgICAgVGFza0FscmVhZHlTdG9wcGVkLAorICAg
ICAgICBOb1Jlc3BvbnNlU2VudCwKKyAgICAgICAgTm9uZSwKKyAgICB9OworICAgIEV4Y2VwdGlv
blR5cGUgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+KTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKTsKKworICAgIHZvaWQgc3RvcCgpOworICAgIHZvaWQgcGFnZURlc3Ryb3ll
ZCgpOworCitwcml2YXRlOgorICAgIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrKFdlYlVSTFNjaGVt
ZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKworICAgIFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyPiBt
X3VybFNjaGVtZUhhbmRsZXI7CisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CisgICAgdWludDY0
X3QgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7
CisgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9yZXNwb25zZVNlbnQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9kYXRhU2VudCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Nv
bXBsZXRlZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3MTBh
MGQzY2Y4ZWQ5YmQ5MzVjOTkxNWRmNjZhNGM1ZDQ1NDdkOTM0Li5mZTk1Y2Q3YjJlZWExODkzOGU4
YzI0N2NjOTdiYWE2NTRjOTFjNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDU1LDYgKzEwNTUsMTQgQEAKIAkJNTFEMDJG
NkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2NzEzMkVDNzM3MDBC
RUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTFEMDJGNkIxMzJF
QzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDAyRjY4MTMy
RUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTUxRDAyRjZDMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94
eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUQwMkY2OTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdl
cy5oICovOyB9OworCQk1MUQxMjQyMzFFNkQzNEExMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2tQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUQxMjQyMTFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2tQcm94eS5jcHAgKi87IH07CisJCTUxRDEyNDI4MUU2RDNGNUQwMDJCMjgyMCAvKiBXZWJVUkxT
Y2hlbWVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxRDEyNDI0MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmNw
cCAqLzsgfTsKKwkJNTFEMTI0MkMxRTZENDFGRDAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUQxMjQyQTFFNkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNw
cCAqLzsgfTsKKwkJNTFEMTI0MzMxRTZERTZDQTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxRDEyNDMyMUU2REU1MjEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0g
Ki87IH07CisJCTUxRDEyNDM0MUU2REY2NDMwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDJE
MUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTUxRDEyNDM1MUU2REY2NTIwMDJCMjgy
MCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQyRjFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hl
bWVIYW5kbGVyVGFzay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKKwkJNTFEMTI0MzYxRTZERkIzOTAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRh
c2subW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQx
MjQzMDFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSAqLzsgfTsK
KwkJNTFEMTI0M0ExRTZFMEFBQjAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEyNDM4
MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi87IH07CiAJ
CTUxRDEzMDUzMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTMwNEYxMzgyRUFD
MDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi87IH07CiAJCTUxRDEzMDU0MTM4
MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBT
ZWNJdGVtUmVxdWVzdERhdGEuaCAqLzsgfTsKIAkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8q
IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25z
ZURhdGEuY3BwICovOyB9OwpAQCAtMTA2OSw2ICsxMDc3LDcgQEAKIAkJNTFFMzUyMDIxODBGNUQx
RTAwRTUzQkU5IC8qIERhdGFiYXNlUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM1MjAxMTgwRjVEMUUwMEU1M0JFOSAvKiBEYXRh
YmFzZVByb2Nlc3NNYWMubW0gKi87IH07CiAJCTUxRTM1MjA5MTgwRjVENkIwMEU1M0JFOSAvKiBE
YXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFMzUyMDgxODBGNUQ2QjAwRTUzQkU5IC8qIERhdGFiYXNlU2Vy
dmljZUVudHJ5UG9pbnQubW0gKi87IH07CiAJCTUxRTM5OTA2MUQ2RjU0QzcwMDlDODgzMSAvKiBV
SUdhbWVwYWRQcm92aWRlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFMzk5MDUxRDZGNTRDNTAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3Zp
ZGVyQ29jb2EubW0gKi87IH07CisJCTUxRThCNjhFMUU3MTI4NzcwMDFCNzEzMiAvKiBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUU4QjY4RDFFNzEyODczMDAxQjcxMzIgLyogV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2suY3BwICovOyB9OwogCQk1MUU5NDk5NzFENzYyMTEzMDBFQzlFQjkgLyogVUlHYW1lcGFk
UHJvdmlkZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUU5NDk5NjFENzYxQ0M3MDBFQzlFQjkgLyogVUlHYW1lcGFkUHJvdmlkZXJJT1MubW0g
Ki87IH07CiAJCTUxRUZDMUNGMTUyNEU2MjUwMEM5QTkzOCAvKiBXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8qIFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGMDYw
RTAxNjU0MzE3RjAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjA2MERFMTY1NDMxNzUw
MEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggKi87IH07CkBAIC0zMjUzLDYg
KzMyNjIsMjEgQEAKIAkJNTFEMDJGNjcxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFz
ZU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRh
YmFzZU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDAyRjY4MTMy
RUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDAy
RjY5MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2Fn
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MjExRTZEMzQ5QTAwMkIy
ODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDIyMUU2RDM0OUEwMDJCMjgyMCAvKiBX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFEMTI0MjQxRTZEM0NDMzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVVJMU2NoZW1l
SGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDI1MUU2RDND
QzMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTFEMTI0MjcxRTZEM0YxRjAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDJBMUU2RDQxQkMw
MDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MkIxRTZENDFCQzAwMkIyODIwIC8qIFdlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTFEMTI0MkQxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1VSTFNjaGVtZUhhbmRsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MkYxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2No
ZW1lSGFuZGxlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQz
MDFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDMxMUU2REU1MjEwMDJCMjgyMCAv
KiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxRDEyNDMyMUU2REU1MjEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJVUkxTY2hl
bWVIYW5kbGVyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDM3
MUU2REZEMkEwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVy
bmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDM4MUU2REZEQjkwMDJC
MjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDM5MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hl
bWVIYW5kbGVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA0
RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUwMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVxdWVzdERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjSXRlbVJl
cXVlc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRDEzMDUxMTM4MkVB
QzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzI3MSw2ICszMjk1LDcgQEAKIAkJNTFFMzUyMDcxODBGNUQ2MTAw
RTUzQkU5IC8qIEluZm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnhtbDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFz
ZVNlcnZpY2VFbnRyeVBvaW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFFMzk5MDUxRDZGNTRDNTAwOUM4ODMxIC8qIFVJR2FtZXBhZFByb3ZpZGVyQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVSUdhbWVwYWRQ
cm92aWRlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUU4QjY4RDFF
NzEyODczMDAxQjcxMzIgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU5NDk5NjFENzYxQ0M3MDBFQzlFQjkgLyog
VUlHYW1lcGFkUHJvdmlkZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBVSUdhbWVwYWRQcm92aWRlcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTFGMDYwREQxNjU0MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGMDYwREQxNjU0
MzE3NTAwRjMyODFDIC8qIFdlYlJUQ1NvY2tldE1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTA1OCw2ICs1MDgzLDggQEAKIAkJCQkyREFGNEZGQTFCNjM2MTgx
MDA2MDEzRDYgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCAqLywKIAkJCQkyRDEyNUM1QzE4
NTdFQTA1MDAzQkEzQ0IgLyogVmlld0dlc3R1cmVDb250cm9sbGVyLmggKi8sCiAJCQkJMkQxQjVE
NUExODU4NjU5OTAwNkM2NTk2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdlcy5pbiAq
LywKKwkJCQk1MUQxMjQzMTFFNkRFNTIxMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hLmggKi8sCisJCQkJNTFEMTI0MzIxRTZERTUyMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYS5tbSAqLywKIAkJCQkxQUMwMjczRTE5NjYyMkQ2MDBDMTJCNzUgLyogV2ViUGFn
ZVByb3h5Q29jb2EubW0gKi8sCiAJCQkJN0M0Njk0Q0IxQTRCNTEwQTAwQUQ1ODQ1IC8qIFdlYlBh
c3RlYm9hcmRQcm94eUNvY29hLm1tICovLAogCQkJCUNEQTI5QTFFMUNCRUI1RkIwMDkwMUNDRiAv
KiBXZWJQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkuaCAqLywKQEAgLTU1NDAsNiArNTU2Nywx
MCBAQAogCQkJCTkzRjU0OUI1MUUzMTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJh
dGlvbi5tbSAqLywKIAkJCQkxQUQ4NzkwOTE4QjZDMzhBMDA2Q0FGRDcgLyogV0tVSURlbGVnYXRl
LmggKi8sCiAJCQkJMzc0MzkyNTcxOEJDNEM2MDAwMUM4Njc1IC8qIFdLVUlEZWxlZ2F0ZVByaXZh
dGUuaCAqLywKKwkJCQk1MUQxMjQyRDFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5k
bGVyLmggKi8sCisJCQkJNTFEMTI0MkYxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFu
ZGxlclRhc2suaCAqLywKKwkJCQk1MUQxMjQzMDFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hl
bWVIYW5kbGVyVGFzay5tbSAqLywKKwkJCQk1MUQxMjQzNzFFNkRGRDJBMDAyQjI4MjAgLyogV0tV
UkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmggKi8sCiAJCQkJMUFGQTNBQzcxOEU2MUM2MTAw
M0NDQkFFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLmggKi8sCiAJCQkJMUFGQTNBQzYxOEU2
MUM2MTAwM0NDQkFFIC8qIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLm1tICovLAogCQkJCTFBQUYw
OEEzMTkyNjgyREEwMEI2MzkwQyAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlckludGVybmFsLmgg
Ki8sCkBAIC02NDc0LDYgKzY1MDUsMTAgQEAKIAkJCQlCQzdCNjIxMzEyQTQyMTlBMDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwUHJveHkuaCAqLywKIAkJCQkyRDVDOUQwMzE5QzgxRDhGMDBCM0M1QzEg
LyogV2ViUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5RDA0MTlDODFEOEYwMEIzQzVDMSAv
KiBXZWJQYWdlT3ZlcmxheS5oICovLAorCQkJCTUxRDEyNDJBMUU2RDQxQkMwMDJCMjgyMCAvKiBX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwICovLAorCQkJCTUxRDEyNDJCMUU2RDQxQkMwMDJC
MjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCAqLywKKwkJCQk1MUQxMjQyMTFFNkQz
NDlBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5jcHAgKi8sCisJCQkJ
NTFEMTI0MjIxRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHku
aCAqLywKIAkJCQlCQ0EwRUY3RTEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuY3BwICov
LAogCQkJCUJDQTBFRjdEMTIzMzFFNzgwMDdEM0NGQiAvKiBXZWJVbmRvU3RlcC5oICovLAogCQkJ
KTsKQEAgLTY2MzksNiArNjY3NCwxMCBAQAogCQkJCTdBOUNEOEMwMUM3Nzk4NDkwMEQ5RjZDNyAv
KiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAogCQkJCTdBOUNEOEMxMUM3
Nzk4NDkwMEQ5RjZDNyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLywKIAkJ
CQk3QTlDRDhDMjFDNzc5QUQ2MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLm1lc3NhZ2VzLmluICovLAorCQkJCTUxRDEyNDI0MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJV
UkxTY2hlbWVIYW5kbGVyLmNwcCAqLywKKwkJCQk1MUQxMjQyNTFFNkQzQ0MzMDAyQjI4MjAgLyog
V2ViVVJMU2NoZW1lSGFuZGxlci5oICovLAorCQkJCTUxRThCNjhEMUU3MTI4NzMwMDFCNzEzMiAv
KiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgKi8sCisJCQkJNTFEMTI0MjcxRTZEM0YxRjAw
MkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IFVJUHJvY2VzczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC02Njg5LDYgKzY3Mjgs
OCBAQAogCQkJCTFBRkRFNjVGMTk1NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuY3Bw
ICovLAogCQkJCTFBRkRFNjYwMTk1NEU5QjEwMEM0OEZGQSAvKiBBUElTZXNzaW9uU3RhdGUuaCAq
LywKIAkJCQkxQTRENjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGllbnQuaCAqLywKKwkJ
CQk1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3Bw
ICovLAorCQkJCTUxRDEyNDM5MUU2REZEQjkwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVy
VGFzay5oICovLAogCQkJCTdDODlEMkIxMUE2QjA2OEMwMDNBNUZERSAvKiBBUElVc2VyQ29udGVu
dEV4dGVuc2lvbi5jcHAgKi8sCiAJCQkJN0M4OUQyQjIxQTZCMDY4QzAwM0E1RkRFIC8qIEFQSVVz
ZXJDb250ZW50RXh0ZW5zaW9uLmggKi8sCiAJCQkJN0MzQTA2QTUxQUFCOTAzRTAwOUQ3NEJBIC8q
IEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUuY3BwICovLApAQCAtODE1Niw2ICs4MTk3LDcg
QEAKIAkJCQkwRkRDRDdGNzFENDdFOTJBMDA5RjA4QkMgLyogTG9nSW5pdGlhbGl6YXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTFBNkQ4NkMyMURGNzUyNjUwMDc3NDVFOCAvKiBNYWNoTWVzc2Fn
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNDNTZGNzkxMTU5OTU3RDAwMUNDQUY5IC8qIE1hY2hQ
b3J0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUQxMjQzNDFFNkRGNjQzMDAyQjI4MjAgLyogV0tV
UkxTY2hlbWVIYW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI0QjVGMzExRjUzMUU4MDBD
MzgyNjkgLyogTWFjaFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxQTBCRDUxQTQ4
RTZDNjAwNTRFRjc0IC8qIE1hbmFnZWRDb25maWd1cmF0aW9uU1BJLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTkzM0RFRjE5NjVFQjMxMDA4QUMzRUEgLyogTWVudVV0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC04MjgwLDYgKzgzMjIsNyBAQAogCQkJCTgzMDQ4QUU2MUFDQTQ1REMwMDgyQzgz
MiAvKiBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTE4QTlF
RjE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRDQ3QjU2RDE4MTA3MTRFMDAzQTNBRUUgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRDEyNDM1MUU2REY2NTIwMDJCMjgyMCAvKiBXS1VS
TFNjaGVtZUhhbmRsZXJUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRERGNzMxNTE4RTk1MDYw
MDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUIxNkFFQTE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQyOUVDRDAxOTJGMkMyRTAwOTg0Qjc4IC8qIFJl
bW90ZUxheWVyVHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC05
NDg0LDYgKzk1MjcsNyBAQAogCQkJCTFBNTcwNEY3MUJFMDFGRjQwMDg3NEFGMSAvKiBfV0tDb250
ZXh0TWVudUVsZW1lbnRJbmZvLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFBNEZFNUIxOERDRTlG
QTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzc5QTg3Mzkx
OEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk1MUQxMjQyQzFFNkQ0MUZEMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBRDAxQkM4MTkwNUQzN0UwMEM5QzQ1RiAvKiBfV0tFcnJv
clJlY292ZXJ5QXR0ZW1wdGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxN0ZFN0NFMUM0ODdE
QjgwMEEwQ0E4OSAvKiBfV0tFeHBlcmltZW50YWxGZWF0dXJlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMzczRDEyMjIxOEE0NzMwMTAwNjZEOUNDIC8qIF9XS0ZyYW1lSGFuZGxlLm1tIGluIFNvdXJj
ZXMgKi8sCkBAIC05NjM1LDYgKzk2NzksNyBAQAogCQkJCTJEQTA0OUI3MTgwQ0NEMEEwMEFBRkE5
RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFDNzVB
MUUxQjMzNjk1RTAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxQzBDOTc1MURERDc2MDMwMDMyQ0FEMyAvKiBJY29uTG9hZGluZ0RlbGVn
YXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0MjMxRTZEMzRBMTAwMkIyODIwIC8qIFdl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMzUx
Q0ExODBGMkNDQzAwRTUzQkU5IC8qIElEQlV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzIwNEVFMjExQzgzRTk4MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTM1RUVCQTExMjc3NjFDQzAwMzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFj
a0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTgwNCw2ICs5ODQ5LDcgQEAKIAkJ
CQkxQTBFQzc1RjEyNEJDN0IyMDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBMkQ5MEJCMTI4MUM5MzEwMDFFQjk2MiAvKiBQbHVnaW5Qcm9jZXNz
UHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTA0M0I1RDEyNEQ1RTlEMDBGRkJGQjUg
LyogUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTUxRDEyNDM2MUU2REZCMzkwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwNDNEQzIxMjRGRjg3NTAwRkZCRkI1IC8qIFBsdWdpblBy
b3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBMkQ5MjIxMTI4MURDMUIwMDFFQjk2MiAvKiBQ
bHVnaW5Qcm94eU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBOEVGQTcwMTI1MkI4NDEwMEY3
MDY3RiAvKiBQbHVnaW5Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTk5NTcsNiArMTAwMDMsNyBAQAogCQkJCTFBQTgzRjZDMUE1QjYzRkYwMDAyNkVDNiAvKiBXZWJE
YXRhYmFzZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEMTlBMjZEMUExM0U4MkEw
MDhENjUwRSAvKiBXZWJEaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQTVCMUM1NDE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0MjgxRTZEM0Y1RDAwMkIyODIwIC8qIFdlYlVSTFNjaGVt
ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMxMTFBNUQxMTJGNEZCQjAwMzM3QkFC
IC8qIFdlYkRyYWdDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzU3NEEzNzcxMkU2MDk5
RDAwMkRGRTk4IC8qIFdlYkRyYWdDbGllbnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Ew
RUZBMDEyMzMyNjQyMDA3RDNDRkIgLyogV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTk5ODYsNiArMTAwMzMsNyBAQAogCQkJCUJDMUJFMUUxMTJENTRBNDEwMDA0QTIy
OCAvKiBXZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBFNUZF
NjEyRDY5NzE2MDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMEU2MDYxMTJENkJBOTEwMDEyQTcyQSAvKiBXZWJHZW9sb2NhdGlvbk1hbmFn
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0MzMxRTZERTZD
QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJDNTRDQUNDMTJENjQyOTEwMDVDNjdCMCAvKiBXZWJHZW9sb2NhdGlvbk1hbmFnZXJQcm94
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBFNjE4MjEyRDZDQjFEMDAxMkE3MkEgLyogV2Vi
R2VvbG9jYXRpb25NYW5hZ2VyUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDEzMDc1QUUxREU4NUY1ODAwMzlFQzY5IC8qIExpYldlYlJUQ1NvY2tldC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTEwMTAyLDYgKzEwMTUwLDcgQEAKIAkJCQkyREE5NDRCMDE4ODRFOUJB
MDBFRDg2REIgLyogV2ViUHJvY2Vzc1Byb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFE
MTMwNTgxMzgyRjEwNTAwMzUxRUREIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDRUU3QUQwMTI4MTc5ODgwMDk4MjdEQSAvKiBXZWJQcm9jZXNzUHJveHlNZXNz
YWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0M0ExRTZFMEFBQjAwMkIy
ODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
MUUwOTMzMTg4NjFEMzgwMEQyREM0OSAvKiBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4OUMxMkE4ODM4ODAwNjI5NTMwIC8qIFdlYlByb3RlY3Rp
b25TcGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUM1MTJDODE5MDY1NkU1MDA0NDg5MTQg
LyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTAyODMs
NiArMTAzMzIsNyBAQAogCQkJCUJDODU4MDYyMTJCODUwNTcwMEVERUIyRSAvKiBXS09wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDU5N0Q2MTEyQjU2REMw
MEVDOEMyMyAvKiBXS1BhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4OUQyOUIxQTY3ODM3
QjAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTFFOEI2OEUxRTcxMjg3NzAwMUI3MTMyIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDN0I2MzM4MTJBNDVBQkEwMEQxNzRBNCAvKiBXS1BhZ2VH
cm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0UxN0I3RDEzODFGMTE3MDAxMkE2NDEgLyog
V0tQYWdlUHJpdmF0ZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENkFCNTQyMTkyQjFDNEEw
MDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IubW0gaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCmluZGV4IDA3NTllN2MzZTk3ZTUxMDBhZTc4MTEyYzhjMmJlNWY0YTQ2YzVjMzMu
LjE4MjgyNzQzZjAzMmEzMmFlMmI1NWI4MTk0NDdkNDJmNmZhYjBmZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cApAQCAtMzksOCArMzksMTEgQEAKICNpbmNsdWRlICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQYWdl
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJXZWJVUkxT
Y2hlbWVIYW5kbGVyUHJveHkuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ2FjaGVkUmVzb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0
aWNMb2dnaW5nQ2xpZW50Lmg+CkBAIC0xOTQsNiArMTk3LDE2IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hl
ZFJlc291CiAgICAgfQogI2VuZGlmCiAKKyAgICBpZiAod2ViUGFnZSkgeworICAgICAgICBpZiAo
YXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUocmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWlu
ZygpKSkgeworICAgICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3Mp
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIFVSTCAnJXMnIHdpbGwgYmUgaGFuZGxl
ZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRsZXIuIiwgcmVzb3VyY2VMb2FkZXIudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVk
IGJ5IGEgVUlQcm9jZXNzIFVSTCBzY2hlbWUgaGFuZGxlciAoZnJhbWUgPSAlcCwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIGlkZW50aWZpZXIpOwor
CisgICAgICAgICAgICBoYW5kbGVyLT5zdGFydE5ld1Rhc2socmVzb3VyY2VMb2FkZXIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgTE9HKE5ldHdvcmtTY2hl
ZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVy
bCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIHdpdGggcHJp
b3JpdHkgJWQiLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCks
IHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpKTsK
IAogICAgIENvbnRlbnRTbmlmZmluZ1BvbGljeSBjb250ZW50U25pZmZpbmdQb2xpY3kgPSByZXNv
dXJjZUxvYWRlci5zaG91bGRTbmlmZkNvbnRlbnQoKSA/IFNuaWZmQ29udGVudCA6IERvTm90U25p
ZmZDb250ZW50OwpAQCAtMjYwLDYgKzI3MywxMSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpy
ZW1vdmUoUmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyKQogICAgICAgICBtX2ludGVybmFs
bHlGYWlsZWRSZXNvdXJjZUxvYWRlcnMucmVtb3ZlKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKworICAgIGlmIChhdXRvIHRhc2sgPSBtX3VybFNjaGVtZUhhbmRsZXJU
YXNrcy50YWtlKHJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCkpKSB7CisgICAgICAgIHRhc2st
PnN0b3BMb2FkaW5nKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCiAgICAgUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVyID0gcmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIo
KTsKICAgICBpZiAoIWlkZW50aWZpZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggYjdlMWIxOTk0MDA3M2Yy
ZTY0YzFmNGRkODEyM2RhZTI3NTIxOGVjZC4uMjkwNDc1YjYxOTMzNjk5NzhkYjUyNTMzMGVlM2Jh
NDI3YzJjMzhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CitjbGFzcyBXZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5OwogdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyOwogCiBjbGFzcyBXZWJMb2FkZXJTdHJhdGVneSA6IHB1YmxpYyBXZWJDb3JlOjpMb2FkZXJT
dHJhdGVneSB7CkBAIC03NCw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgUnVuTG9vcDo6VGltZXI8
V2ViTG9hZGVyU3RyYXRlZ3k+IG1faW50ZXJuYWxseUZhaWxlZExvYWRUaW1lcjsKICAgICAKICAg
ICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIFJlZlB0cjxXZWJSZXNvdXJjZUxvYWRlcj4+IG1fd2Vi
UmVzb3VyY2VMb2FkZXJzOworICAgIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgc3RkOjp1bmlxdWVf
cHRyPFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHk+PiBtX3VybFNjaGVtZUhhbmRsZXJUYXNr
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGMzMGJhMTg3NmY2Y2FiNWE0MmM0ODE1NDE2
OGFmMGViMmYxODJiNmMuLjdkNDQyNjBmNzQ3MmYzYTg0N2VmYThmMzcwYzQyMTdjMjk2ZjVkYmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTExMCw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIldlYlByb2dyZXNzVHJhY2tlckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVz
cGFjZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViVW5kb1N0ZXAuaCIKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnQuaCIKQEAgLTU2MSw2ICs1NjIsOSBA
QCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiAgICAgICAgIGVuYWJsZUVudW1lcmF0aW5nQWxsTmV0d29ya0lu
dGVyZmFjZXMoKTsKICNlbmRpZgogI2VuZGlmCisKKyAgICBmb3IgKGF1dG8gaXRlcmF0b3IgOiBw
YXJhbWV0ZXJzLnVybFNjaGVtZUhhbmRsZXJzKQorICAgICAgICByZWdpc3RlclVSTFNjaGVtZUhh
bmRsZXIoaXRlcmF0b3IudmFsdWUsIGl0ZXJhdG9yLmtleSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
cmVpbml0aWFsaXplV2ViUGFnZShXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKQEAgLTU3MzksNCArNTc0Myw0MiBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZUljb25Mb2FkaW5n
Q2xpZW50KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpCiAgICAgc3RhdGljX2Nhc3Q8V2ViRnJh
bWVMb2FkZXJDbGllbnQmPihjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQo
KSkuc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQodXNlSWNvbkxvYWRpbmdDbGllbnQpOwogfQogCitX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkqIFdlYlBhZ2U6OnVybFNjaGVtZUhhbmRsZXJGb3JTY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgcmV0dXJuIG1fc2NoZW1lVG9VUkxTY2hl
bWVIYW5kbGVyUHJveHlNYXAuZ2V0KHNjaGVtZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVnaXN0
ZXJVUkxTY2hlbWVIYW5kbGVyKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHNjaGVtZSkKK3sKKyAgICBhdXRvIHNjaGVtZVJlc3VsdCA9IG1fc2NoZW1lVG9VUkxTY2hl
bWVIYW5kbGVyUHJveHlNYXAuYWRkKHNjaGVtZSwgc3RkOjptYWtlX3VuaXF1ZTxXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHk+KCp0aGlzLCBoYW5kbGVySWRlbnRpZmllcikpOworICAgIEFTU0VSVChz
Y2hlbWVSZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBt
X2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5hZGQoaGFuZGxlcklkZW50aWZp
ZXIsIHNjaGVtZVJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCkpOworICAgIEFTU0VSVF9VTlVT
RUQoaWRlbnRpZmllclJlc3VsdCwgaWRlbnRpZmllclJlc3VsdC5pc05ld0VudHJ5KTsKK30KKwor
dm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVIYW5kbGVyVGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50
aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwor
ICAgIEFTU0VSVChoYW5kbGVyKTsKKworICAgIGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlUmVzcG9u
c2UodGFza0lkZW50aWZpZXIsIHJlc3BvbnNlKTsKK30KKwordm9pZCBXZWJQYWdlOjp1cmxTY2hl
bWVIYW5kbGVyVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1
aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQor
eworICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94
eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOworICAgIEFTU0VSVChoYW5kbGVyKTsKKworICAg
IGhhbmRsZXItPnRhc2tEaWRSZWNlaXZlRGF0YSh0YXNrSWRlbnRpZmllciwgZGF0YS5zaXplKCks
IGRhdGEuZGF0YSgpKTsKK30KKwordm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVIYW5kbGVyVGFza0Rp
ZENvbXBsZXRlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRp
ZmllciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byogaGFuZGxlciA9
IG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChoYW5kbGVySWRlbnRp
Zmllcik7CisgICAgQVNTRVJUKGhhbmRsZXIpOworCisgICAgaGFuZGxlci0+dGFza0RpZENvbXBs
ZXRlKHRhc2tJZGVudGlmaWVyLCBlcnJvcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzgzMmUy
Y2NlYzg5Zjc5Njc4M2MyODA0YTRmNDJiNTc2MWNkMjlhZS4uMzdkODE0NDczOWY1N2M2MDA2Nzc2
MWQ3YzM3ODUxOTlhNDBhOWFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFw
LmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJVc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWN0YXRp
b25BbHRlcm5hdGl2ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGlvbmFyeVBvcHVwSW5mby5o
PgpAQCAtMTc4LDYgKzE3OSw3IEBAIGNsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKIGNsYXNzIFdl
Ykluc3BlY3RvclVJOwogY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogY2xhc3MgV2ViS2V5Ym9hcmRF
dmVudDsKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTsKIGNsYXNzIFdlYk1vdXNlRXZl
bnQ7CiBjbGFzcyBXZWJOb3RpZmljYXRpb25DbGllbnQ7CiBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcjsKQEAgLTk2OSw2ICs5NzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDb25j
bHVkZUVkaXREYXRhSW50ZXJhY3Rpb24oKTsKICNlbmRpZgogCisgICAgV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5KiB1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYpOworCiBw
cml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwogCkBAIC0xMjYyLDYgKzEyNjYsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZFJlY2VpdmVQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50KGNvbnN0IFN0cmluZyYpOwogI2Vu
ZGlmCiAKKyAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1aW50NjRfdCBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNjaGVtZSk7CisKKyAgICB2b2lkIHVybFNjaGVtZUhhbmRsZXJU
YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRf
dCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOworICAg
IHZvaWQgdXJsU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVy
SWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpOworICAgIHZvaWQgdXJsU2NoZW1lSGFuZGxlclRhc2tEaWRDb21wbGV0ZSh1aW50NjRf
dCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKTsKKwogICAgIHVpbnQ2NF90IG1fcGFnZUlEOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKQEAgLTE1NDAsNiArMTU1MCw5IEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBtX3Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uOjpMVFIgfTsKIAogICAgIGNvbnN0IFN0cmluZyBtX292ZXJyaWRlQ29udGVudFNl
Y3VyaXR5UG9saWN5OworCisgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHk+PiBtX3NjaGVtZVRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFw
OworICAgIEhhc2hNYXA8dWludDY0X3QsIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSo+IG1faWRl
bnRpZmllclRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCmluZGV4IDc0NmUyNWQ5ZDA3ZTJjZTY5ZjAzMmNiNTRhZTU5NDY3NzY3
NWE2YmUuLmNmNGY0NjU2MmI1YjhhYTZiODE1Yzk4NDNjYjBiN2FjOTJiNzZlYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC00NjksNCArNDY5LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2
ZXIgewogI2lmIFVTRShRVUlDS19MT09LKQogICAgIERpZFJlY2VpdmVQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50KFN0cmluZyBwYXNzd29yZCkKICNlbmRpZgorCisgICAgUmVnaXN0ZXJVUkxT
Y2hlbWVIYW5kbGVyKHVpbnQ2NF90IGlkZW50aWZpZXIsIFN0cmluZyBzY2hlbWUpCisKKyAgICBV
UkxTY2hlbWVIYW5kbGVyVGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBwcm92aWRlcklk
ZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQorICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZURhdGEodWlu
dDY0X3QgcHJvdmlkZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgSVBDOjpE
YXRhUmVmZXJlbmNlIGRhdGEpCisgICAgVVJMU2NoZW1lSGFuZGxlclRhc2tEaWRDb21wbGV0ZSh1
aW50NjRfdCBwcm92aWRlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZTBhOGQxMmM1NWY3MmZhNmNlYzU1YTc3NTUwMTQ4ODQ4NDgyNWM2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eS5jcHAKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCIKKwor
I2luY2x1ZGUgIldlYkVycm9ycy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitX
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eShXZWJQYWdl
JiBwYWdlLCB1aW50NjRfdCBpZGVudGlmaWVyKQorICAgIDogbV93ZWJQYWdlKHBhZ2UpCisgICAg
LCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK3sKK30KKworV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5Ojp+V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KCkKK3sKKyAgICBBU1NFUlQobV90YXNrcy5p
c0VtcHR5KCkpOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdU
YXNrKFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCit7CisgICAgYXV0byByZXN1bHQgPSBtX3Rhc2tz
LmFkZChsb2FkZXIuaWRlbnRpZmllcigpLCBzdGQ6Om1ha2VfdW5pcXVlPFdlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrUHJveHk+KCp0aGlzLCBsb2FkZXIpKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3
RW50cnkpOworCisgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnRMb2FkaW5nKCk7Cit9
CisKKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlUmVzcG9u
c2UodWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQoreworICAgIGF1dG8qIHRhc2sgPSBtX3Rhc2tzLmdldCh0YXNrSWRlbnRpZmllcik7Cisg
ICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICB0YXNrLT5kaWRSZWNlaXZlUmVz
cG9uc2UocmVzcG9uc2UpOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFz
a0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBzaXplX3Qgc2l6ZSwgY29u
c3QgdWludDhfdCogZGF0YSkKK3sKKyAgICBhdXRvKiB0YXNrID0gbV90YXNrcy5nZXQodGFza0lk
ZW50aWZpZXIpOworICAgIGlmICghdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgdGFzay0+
ZGlkUmVjZWl2ZURhdGEoc2l6ZSwgZGF0YSk7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxl
clByb3h5Ojp0YXNrRGlkQ29tcGxldGUodWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGF1dG8gdGFzayA9IG1fdGFza3MudGFrZSh0YXNr
SWRlbnRpZmllcik7CisgICAgaWYgKCF0YXNrKQorICAgICAgICByZXR1cm47CisKKyAgICB0YXNr
LT5kaWRDb21wbGV0ZShlcnJvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhNDZjMTI2YzQ1YjZjNmU5NTdjOGIzYzNkZmZj
MTM5NjQ0ZWExNjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2tQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFJlc291cmNlRXJyb3I7CitjbGFzcyBSZXNvdXJjZUxvYWRlcjsKK2NsYXNzIFJl
c291cmNlUmVzcG9uc2U7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdl
OworCitjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkgeworcHVibGljOgorICAgIFdlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eShXZWJQYWdlJiwgdWludDY0X3QgaWRlbnRpZmllcik7CisgICAg
fldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSgpOworCisgICAgdm9pZCBzdGFydE5ld1Rhc2soV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXImKTsKKworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBXZWJQYWdlJiBwYWdlKCkgeyByZXR1cm4g
bV93ZWJQYWdlOyB9CisKKyAgICB2b2lkIHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
dGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2
b2lkIHRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgc2l6ZV90LCBj
b25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIHRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworCitwcml2YXRl
OgorICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAw
IH07CisKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5Pj4gbV90YXNrczsKK307IC8vIGNsYXNzIFdlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5k
bGVyVGFza1Byb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGU2MzZkOGNkNGU5YTY0MmI4MzM5YTk2MDc5
M2E5ZWM1ZjE4ZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwCkBAIC0wLDAgKzEsOTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVVJMU2No
ZW1lSGFuZGxlclRhc2tQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9h
ZGVyLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQ
cm94eTo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkmIGhhbmRsZXIsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCisgICAgOiBtX3VybFNjaGVtZUhh
bmRsZXIoaGFuZGxlcikKKyAgICAsIG1fY29yZUxvYWRlcigmbG9hZGVyKQorICAgICwgbV9yZXF1
ZXN0KGxvYWRlci5yZXF1ZXN0KCkpCit7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2tQcm94eTo6c3RhcnRMb2FkaW5nKCkKK3sKKyAgICBBU1NFUlQobV9jb3JlTG9hZGVyKTsKKyAg
ICBtX3VybFNjaGVtZUhhbmRsZXIucGFnZSgpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U3RhcnRVUkxTY2hlbWVIYW5kbGVyVGFzayhtX3VybFNjaGVtZUhhbmRsZXIuaWRlbnRpZmllcigp
LCBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9yZXF1ZXN0KSk7Cit9CisKK3ZvaWQgV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3RvcExvYWRpbmcoKQoreworICAgIGlmICghbV9j
b3JlTG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3VybFNjaGVtZUhhbmRsZXIucGFn
ZSgpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcFVSTFNjaGVtZUhhbmRsZXJUYXNr
KG1fdXJsU2NoZW1lSGFuZGxlci5pZGVudGlmaWVyKCksIG1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpKSk7CisgICAgbV9jb3JlTG9hZGVyID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30K
Kwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShzaXpl
X3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBl
OjpEYXRhUGF5bG9hZEJ5dGVzKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5OjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAo
IW1fY29yZUxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGVycm9yLmlzTnVsbCgp
KQorICAgICAgICBtX2NvcmVMb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRy
aWNzKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsK
KworICAgIG1fY29yZUxvYWRlciA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjlhMzY4OGQxMGE2
ZmE2M2FlZWUzYjJmOWQzZjNkNDkyZTRlNzIyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgK
QEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlTG9hZGVyOworY2xhc3MgUmVzb3VyY2VSZXNw
b25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eTsKKworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eSB7CitwdWJsaWM6
CisgICAgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkmLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOworCisgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisKKyAg
ICB2b2lkIHN0YXJ0TG9hZGluZygpOworICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKworICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVfdCwgY29uc3QgdWludDhfdCogZGF0YSk7Cisg
ICAgdm9pZCBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisKK3By
aXZhdGU6CisgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5JiBtX3VybFNjaGVtZUhhbmRsZXI7
CisgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CisgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303981</attachid>
            <date>2017-03-09 13:42:51 -0800</date>
            <delta_ts>2017-03-09 15:20:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169422-20170309134251.patch</filename>
            <type>text/plain</type>
            <size>104668</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZjNzNkM2VlY2NmNjYw
ZTA0Yjk1NTUxZDRiMmQ1ZmIwZDQ1ZTY3OC4uYjVjMDFmMTllMDA4ZWY5MGY0ZGExNTUxZTJkNTFj
OTgyMDY4NTdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAzLTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tVUkxTY2hlbWVI
YW5kbGVyIEFQSSBmb3IgaGFuZGxpbmcgY3VzdG9tIHByb3RvY29scy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZSk6CisgICAgICAgICog
cGxhdGZvcm0vVVJMUGFyc2VyLmg6CisKIDIwMTctMDMtMDggIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQ3J5cHRvXSBJbXBsZW1lbnQgU3VidGxlQ3J5
cHRvOjpEZXJpdmVLZXkgbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWZhNTViZTc3NjU0NWE4ZTQ4OTll
MDYxN2NmNjA5ZTM3ZTU5NWE5YS4uOTcwODkyMDM2YjU1ZTcyY2FkMjc4MDliNDBmZmY3M2ZmNzBk
NDZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAxNy0wMy0wOSAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdLVVJMU2NoZW1lSGFuZGxl
ciBBUEkgZm9yIGhhbmRsaW5nIGN1c3RvbSBwcm90b2NvbHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW0gSG9ydG9uLgorCisgICAgICAgIFRoaXMgaW50cm9kdWNlcyB0d28gbmV3IHByb3RvY29s
cyB0byB0aGUgV0syIEFQSSBzdXJmYWNlOgorICAgICAgICAtIFdLVVJMU2NoZW1lSGFuZGxlcgor
ICAgICAgICAtIFdLVVJMU2NoZW1lSGFuZGxlclRhc2sKKyAgICAgICAgCisgICAgICAgIEJ5IHJl
Z2lzdGVyaW5nIGFuIG9iamVjdCB0aGF0IGNvbmZvcm1zIHRvIHRoZSBXS1VSTFNjaGVtZUhhbmRs
ZXIgcHJvdG9jb2wgd2l0aCBhIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gYW4gYXBwbGljYXRpb24g
d2lsbAorICAgICAgICBiZSBoYW5kZWQgYW4gb2JqZWN0IGNvbmZvcm1pbmcgdG8gV0tVUkxTY2hl
bWVIYW5kbGVyVGFzayBmb3IgZWFjaCByZXNvdXJjZSBsb2FkIGluIHRoYXQgV0tXZWJWaWV3IHdp
dGggYSBjdXN0b20gVVJMIHNjaGVtZS4KKyAgICAgICAgCisgICAgICAgIFVzaW5nIHRoYXQgaWQg
PFdLVVJMU2NoZW1lSGFuZGxlclRhc2s+LCB0aGUgYXBwbGljYXRpb24gY2FuIGNvbW11bmljYXRl
IHRoZSBkYXRhIGZvciB0aGUgcmVzb3VyY2UgYmFjayB0byBXZWJLaXQuCisgICAgICAgIAorICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorCisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVS
TFNjaGVtZUhhbmRsZXJUYXNrLmNwcDogCisgICAgICAgIChBUEk6OlVSTFNjaGVtZUhhbmRsZXJU
YXNrOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpVUkxTY2hlbWVIYW5kbGVyVGFzazo6VVJMU2No
ZW1lSGFuZGxlclRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFu
ZGxlclRhc2suaDogCisKKyAgICAgICAgQWRkIHRoZSBXS1VSTFNjaGVtZUhhbmRsZXIgQHByb3Rv
Y29sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLmg6
IEFkZGVkLgorCisgICAgICAgIEFkZCB0aGUgV0tVUkxTY2hlbWVIYW5kbGVyVGFzayBAcHJvdG9j
b2wsIGFzIHdlbGwgYXMgV2ViS2l0J3MgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgaXQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFz
ay5tbTogQWRkZWQuCisgICAgICAgIChyYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKC1bV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgcmVxdWVzdF0pOgorICAgICAgICAoLVtX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAg
ICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAg
ICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBkaWRGaW5pc2hdKToKKyAgICAgICAgKC1b
V0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAg
KC1bV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmg6IAorICAg
ICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTpdKToKKyAg
ICAgICAgKCtbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6XSk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6Zm9yVVJMU2NoZW1lOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIHVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hl
bWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3VybFNjaGVtZUhhbmRs
ZXJzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uSW50ZXJuYWwuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2EuaDogCisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YTo6YXBpSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hOjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpwbGF0Zm9ybVN0b3BUYXNrKToKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c3RhcnRVUkxTY2hlbWVIYW5kbGVyVGFzayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3RvcFVSTFNjaGVtZUhhbmRsZXJUYXNrKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDog
CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpXZWJVUkxTY2hlbWVIYW5k
bGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcjo6fldlYlVSTFNjaGVt
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRh
c2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdG9wVGFzayk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaDogCisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OmlkZW50aWZpZXIpOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyVGFzazo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmRpZENvbXBsZXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OnBhZ2VEZXN0cm95ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6c3RvcCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6aWRlbnRpZmllcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpyZXF1ZXN0KToKKworICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxlckZvclNj
aGVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxl
clRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVt
ZUhhbmRsZXJUYXNrRGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5Ojp+V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OjpzdGFydE5ld1Rhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFz
a0RpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6cGFnZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2tQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyVGFza1Byb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3RhcnRMb2FkaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3RvcExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5OjpyZXF1ZXN0KToKKworICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAx
Ny0wMy0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgcGx1bWJpbmcgZm9yIFdlYkNvcmUgdG8gbm90aWZ5IFdlYktpdDIgd2hlbiBhbiBlZGl0
IGRyYWcgaGFzIGNvbmNsdWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKaW5k
ZXggZDFmOGZlODRhOGU2M2Y0NzRjMjNjZGI3ZDNkODM5MDA5MjA3MmRhYi4uYTY5MTRjY2UzOTg3
NzlmYzgyYmY3ZDY0NzFkZTQ0NDkyZjc0MDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQ
YXJzZXIuY3BwCkBAIC03OTAsNiArNzkwLDI4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjaGVt
ZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCiAgICAgfQogfQogCitzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNj
aGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVswXSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5s
ZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtp
XSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9
PSAnLicpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB9CisKKyAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWVBcmcpCit7CisgICAgcmV0dXJuIHNjaGVtZShzY2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3Bl
Y2lhbDsKK30KKwogZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVSTFBhcnQgewogICAgIFNjaGVtZUVu
ZCwKICAgICBVc2VyU3RhcnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmluZGV4IDcz
Y2ExODhmZDdlZjBiMmRhODg3MjE2MGNhODg2OGMxODc5MzA1OTUuLjU3MDhhNGZmN2NmNjcxYjRk
NTkzNTIzNjcxMWQ2NzJmNThjNTU5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5o
CkBAIC01MCw2ICs1MCw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBVSUROQSYgaW50
ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBpc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmljYWxp
emVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcp
OwogICAgIGZyaWVuZCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sKFN0cmluZ1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCAwZmQyZWYyMmZkYjJlZTU1
NThhZDU1MDZhNjJjNjAxYzkyOWNmNDMwLi41MjVkZjU5MjRkZWRkYmY2YTFhMjczZmE5MTE1NGRj
ODZkMmMyZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMzI2LDYgKzMyNiw4IEBAIHNldChX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5j
cHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKyAgICBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKKyAg
ICBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwCiAgICAgVUlQcm9jZXNzL1dl
YlZpYnJhdGlvblByb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5j
cHAKICAgICBVSVByb2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNwcApAQCAtMzM5LDYgKzM0
MSw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFt
ZXRlcnMuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uU3RhdGUuY3BwCisgICAgVUlQ
cm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwCkBAIC01NzksMTAgKzU4MiwxMCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2VHcm91cFByb3h5LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3Zlcmxh
eS5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNw
cAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNw
cAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvU3RlcC5jcHAKIAotCi0KICAgICAke05l
dHdvcmtQcm9jZXNzX0NPTU1PTl9TT1VSQ0VTfQogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9B
UElPYmplY3QuaAppbmRleCBmMmNiMDU0MGEzMWQwNTQ0OGZlMmI4ZjVlODM1YTJmM2Q3ZGFjODA5
Li43N2EyNjc1ZWQ1MzQ0OTlmMDcyYmEyMmJiZGYwYTgzMTNmYjI3YWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFT
Y3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgVGV4dENoZWNrZXIsCisgICAgICAg
IFVSTFNjaGVtZUhhbmRsZXJUYXNrLAogICAgICAgICBVc2VyQ29udGVudENvbnRyb2xsZXIsCiAg
ICAgICAgIFVzZXJDb250ZW50RXh0ZW5zaW9uLAogICAgICAgICBVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggOGVj
YjUzMzM4NjAyYzA3ZjgyZjIxYWM3ODU1NWJjNmQyYTk1ZjBiYy4uZmJiOGU4OGRhOWZmZmUwODg1
MDhlYTIzYjk1ZWE1ODEwYTA3MzU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCkBAIC01MSw2ICs1MSw3IEBACiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tTZWN1
cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0ICJXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLVXNlclNjcmlwdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgpAQCAtMjI1LDYgKzIyNiwxMCBA
QCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAg
ICB3cmFwcGVyID0gTlNBbGxvY2F0ZU9iamVjdChbV0tOU1VSTFJlcXVlc3QgY2xhc3NdLCBzaXpl
LCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6OlVSTFNjaGVtZUhh
bmRsZXJUYXNrOgorICAgICAgICB3cmFwcGVyID0gW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBs
IGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6OlVzZXJDb250ZW50Q29u
dHJvbGxlcjoKICAgICAgICAgd3JhcHBlciA9IFtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhbGxv
Y107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDE0MjkyZjk5YTcyYmNkNzc4ZWFlOGU3MzY5
NmU5NzMxZWZjYTYwYTAuLmU4NWNkMTBmNWUwNTE1ZThjZmUxZjBlZDIwMDJhODliOWVkNmE1NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTkzLDYgKzkzLDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5jb2Rl
RW51bSh1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0ob2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzKTsKICAgICBlbmNvZGVyIDw8IG92ZXJyaWRlQ29u
dGVudFNlY3VyaXR5UG9saWN5OworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lSGFuZGxlcnM7CiAj
aWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgZW5jb2RlciA8PCBpY2VDYW5kaWRhdGVGaWx0ZXJpbmdF
bmFibGVkOwogI2lmIFVTRShMSUJXRUJSVEMpCkBAIC0yMjEsNiArMjIyLDkgQEAgYm9vbCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQ
YWdlQ3JlYXRpb25QYXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCmluZGV4IDIwODFiMDc5MzE1ODYzMThmOTU1YmFiZDk3Y2M0ZjFjYWIx
M2QzNzEuLmI0ZmU2ZTY2NDViYzk3MTE5MDdiYzRjNDc5MmRhZTk5NmRmNzZkZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNDYsNiArMTQ3LDgg
QEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgU3RyaW5nIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5OwogCisgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90
PiB1cmxTY2hlbWVIYW5kbGVyczsKKwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGJvb2wgaWNl
Q2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCB7IHRydWUgfTsKICNpZiBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhh
bmRsZXJUYXNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzQyMDFjOTE1MjA0MzNlZjE0ZjNmNzZkOTY4Y2U1
NGE2NDgwYTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElVUkxTY2hlbWVIYW5kbGVyVGFz
ay5oIgorCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorI2luY2x1ZGUgIldlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrLmgiCisKK25hbWVzcGFjZSBBUEkgeworCitSZWY8VVJMU2NoZW1l
SGFuZGxlclRhc2s+IFVSTFNjaGVtZUhhbmRsZXJUYXNrOjpjcmVhdGUoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzayYgd2ViVVJMU2NoZW1lSGFuZGxlclRhc2spCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVVJMU2NoZW1lSGFuZGxlclRhc2sod2ViVVJMU2NoZW1lSGFuZGxlclRh
c2spKTsKK30KKworVVJMU2NoZW1lSGFuZGxlclRhc2s6OlVSTFNjaGVtZUhhbmRsZXJUYXNrKFdl
YktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smIHdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrKQor
ICAgIDogbV93ZWJVUkxTY2hlbWVIYW5kbGVyVGFzayh3ZWJVUkxTY2hlbWVIYW5kbGVyVGFzaykK
K3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
UkxTY2hlbWVIYW5kbGVyVGFzay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
UkxTY2hlbWVIYW5kbGVyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMzE1MDhmZDA5ZTI1YTk0M2VjYjdj
NDRlOTIyYWQ2OTZmMDlhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmgKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s7Cit9CisKK25hbWVz
cGFjZSBBUEkgeworCitjbGFzcyBVUkxTY2hlbWVIYW5kbGVyVGFzayBmaW5hbCA6IHB1YmxpYyBP
YmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMU2NoZW1lSGFuZGxlclRhc2s+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFVSTFNjaGVtZUhhbmRsZXJUYXNrPiBjcmVhdGUoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyVGFzayYpOworCisgICAgV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVy
VGFzayYgdGFzaygpIHsgcmV0dXJuIG1fd2ViVVJMU2NoZW1lSGFuZGxlclRhc2suZ2V0KCk7IH0K
KworcHJpdmF0ZToKKyAgICBVUkxTY2hlbWVIYW5kbGVyVGFzayhXZWJLaXQ6OldlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrJik7CisKKyAgICBSZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFz
az4gbV93ZWJVUkxTY2hlbWVIYW5kbGVyVGFzazsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM0MzFiYzUwNTdjNTJlMGQ5OTNkZjM1ODA2Mzc3ZWU5NjhlMzNlMTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQv
V0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIFdL
V2ViVmlldzsKK0Bwcm90b2NvbCBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrOworCisvKiEgQSBjbGFz
cyBjb25mb3JtaW5nIHRvIHRoZSBXS1VSTFNjaGVtZUhhbmRsZXIgcHJvdG9jb2wgcHJvdmlkZXMg
bWV0aG9kcyBmb3IKKyBsb2FkaW5nIHJlc291cmNlcyB3aXRoIFVSTCBzY2hlbWVzIHRoYXQgV2Vi
S2l0IGRvZXNuJ3Qga25vdyBob3cgdG8gaGFuZGxlIGl0c2VsZi4KKyAqLworV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0Bwcm90b2NvbCBXS1VS
TFNjaGVtZUhhbmRsZXIgPE5TT2JqZWN0PgorCisvKiEgQGFic3RyYWN0IE5vdGlmaWVzIHlvdXIg
YXBwIHRvIHN0YXJ0IGxvYWRpbmcgdGhlIGRhdGEgZm9yIGEgcGFydGljdWxhciByZXNvdXJjZSAK
KyByZXByZXNlbnRlZCBieSB0aGUgVVJMIHNjaGVtZSBoYW5kbGVyIHRhc2suCisgQHBhcmFtIHdl
YlZpZXcgVGhlIHdlYiB2aWV3IGludm9raW5nIHRoZSBtZXRob2QuCisgQHBhcmFtIHVybFNjaGVt
ZUhhbmRsZXJUYXNrIFRoZSB0YXNrIHRoYXQgeW91ciBhcHAgc2hvdWxkIHN0YXJ0IGxvYWRpbmcg
ZGF0YSBmb3IuCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFy
dFRhc2s6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXJUYXNrPil1cmxTY2hlbWVIYW5kbGVyVGFzazsK
KworLyohIEBhYnN0cmFjdCBOb3RpZmllcyB5b3VyIGFwcCB0byBzdG9wIGhhbmRsaW5nIGEgVVJM
IHNjaGVtZSBoYW5kbGVyIHRhc2suCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IGludm9r
aW5nIHRoZSBtZXRob2QuCisgQHBhcmFtIHVybFNjaGVtZUhhbmRsZXJUYXNrIFRoZSB0YXNrIHRo
YXQgeW91ciBhcHAgc2hvdWxkIHN0b3AgaGFuZGxpbmcuCisgQGRpc2N1c3Npb24gQWZ0ZXIgeW91
ciBhcHAgaXMgdG9sZCB0byBzdG9wIGxvYWRpbmcgZGF0YSBmb3IgYSBVUkwgc2NoZW1lIGhhbmRs
ZXIgdGFzaworIGl0IG11c3Qgbm90IHBlcmZvcm0gYW55IGNhbGxiYWNrcyBmb3IgdGhhdCB0YXNr
LgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiBhbnkgY2FsbGJhY2tzIGFyZSBtYWRl
IG9uIHRoZSBVUkwgc2NoZW1lIGhhbmRsZXIgdGFzaworIGFmdGVyIHlvdXIgYXBwIGhhcyBiZWVu
IHRvbGQgdG8gc3RvcCBsb2FkaW5nIGZvciBpdC4KKyAqLworLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHN0b3BUYXNrOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4pdXJs
U2NoZW1lSGFuZGxlclRhc2s7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VS
TFNjaGVtZUhhbmRsZXJUYXNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVVJMU2NoZW1lSGFuZGxlclRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWZlMzk2NWU4YjM4ZTAwNzYy
YzU5MzYwYjdlZWJmZmI1NmY1YTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmgKQEAgLTAsMCArMSw3
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lm
IFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQHByb3RvY29sIFdLVVJMU2NoZW1lSGFuZGxlclRhc2sg
PE5TT2JqZWN0PgorCisvKiEgQGFic3RyYWN0IFRoZSByZXF1ZXN0IHRvIGxvYWQgZm9yIHRoaXMg
dGFzay4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTFJl
cXVlc3QgKnJlcXVlc3Q7CisKKy8qISBAYWJzdHJhY3QgU2V0IHRoZSBjdXJyZW50IHJlc3BvbnNl
IG9iamVjdCBmb3IgdGhlIHRhc2suCisgQHBhcmFtIHJlc3BvbnNlIFRoZSByZXNwb25zZSB0byB1
c2UuCisgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYXQgbGVhc3Qgb25j
ZSBmb3IgZWFjaCBVUkwgc2NoZW1lIGhhbmRsZXIgdGFzay4KKyBBbiBleGNlcHRpb24gd2lsbCBi
ZSB0aHJvd24gaWYgeW91IHRyeSB0byBzZW5kIGEgbmV3IHJlc3BvbnNlIG9iamVjdCBhZnRlciB0
aGUgdGFzayBoYXMgYWxyZWFkeSBiZWVuIGNvbXBsZXRlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBi
ZSB0aHJvd24gaWYgeW91ciBhcHAgaGFzIGJlZW4gdG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0
YXNrIHZpYSB0aGUgcmVnaXN0ZXJlZCBXS1VSTFNjaGVtZUhhbmRsZXIgb2JqZWN0LgorICovCist
ICh2b2lkKWRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOworCisv
KiEgQGFic3RyYWN0IEFkZCByZWNlaXZlZCBkYXRhIHRvIHRoZSB0YXNrLgorIEBwYXJhbSBkYXRh
IFRoZSBkYXRhIHRvIGFkZC4KKyBAZGlzY3Vzc2lvbiBBZnRlciBhIFVSTCBzY2hlbWUgaGFuZGxl
ciB0YXNrJ3MgZmluYWwgcmVzcG9uc2Ugb2JqZWN0IGlzIHJlY2VpdmVkIHlvdSBzaG91bGQKKyBz
dGFydCBzZW5kaW5nIGl0IGRhdGEuCisgRWFjaCB0aW1lIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB0
aGUgZGF0YSB5b3Ugc2VuZCB3aWxsIGJlIGFwcGVuZGVkIHRvIGFsbCBwcmV2aW91cyBkYXRhLgor
IEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5IHRvIHNlbmQgdGhlIHRhc2sg
YW55IGRhdGEgYmVmb3JlIHNlbmRpbmcgaXQgYSByZXNwb25zZS4KKyBBbiBleGNlcHRpb24gd2ls
bCBiZSB0aHJvd24gaWYgeW91IHRyeSB0byBzZW5kIHRoZSB0YXNrIGFueSBkYXRhIGFmdGVyIHRo
ZSB0YXNrIGhhcyBhbHJlYWR5IGJlZW4gY29tcGxldGVkLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJl
IHRocm93biBpZiB5b3VyIGFwcCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyB0aGlzIHRh
c2sgdmlhIHRoZSByZWdpc3RlcmVkIFdLVVJMU2NoZW1lSGFuZGxlciBvYmplY3QuCisgKi8KKy0g
KHZvaWQpZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGE7CisKKy8qISBAYWJzdHJhY3QgTWFy
ayB0aGUgdGFzayBhcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLgorIEBkaXNjdXNzaW9uIEFuIGV4
Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5IHRvIGZpbmlzaCB0aGUgdGFzayBiZWZv
cmUgc2VuZGluZyBpdCBhIHJlc3BvbnNlLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBp
ZiB5b3UgdHJ5IHRvIG1hcmsgYSB0YXNrIGNvbXBsZXRlZCBhZnRlciBpdCBoYXMgYWxyZWFkeSBi
ZWVuIG1hcmtlZCBjb21wbGV0ZWQgb3IgZmFpbGVkLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRo
cm93biBpZiB5b3VyIGFwcCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyB0aGlzIHRhc2sg
dmlhIHRoZSByZWdpc3RlcmVkIFdLVVJMU2NoZW1lSGFuZGxlciBvYmplY3QuCisgKi8KKy0gKHZv
aWQpZGlkRmluaXNoOworCisvKiEgQGFic3RyYWN0IE1hcmsgdGhlIHRhc2sgYXMgZmFpbGVkLgor
IEBwYXJhbSBlcnJvciBBIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciB0aGF0IGNhdXNlZCB0aGUg
dGFzayB0byBmYWlsLgorIEBkaXNjdXNzaW9uICBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24g
aWYgeW91IHRyeSB0byBtYXJrIGEgdGFzayBmYWlsZWQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVl
biBtYXJrZWQgY29tcGxldGVkIG9yIGZhaWxlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJv
d24gaWYgeW91ciBhcHAgaGFzIGJlZW4gdG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0YXNrIHZp
YSB0aGUgcmVnaXN0ZXJlZCBXS1VSTFNjaGVtZUhhbmRsZXIgb2JqZWN0LgorICovCistICh2b2lk
KWRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKworQGVuZAorCitOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2subW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDBlODY4YjgxOTgyYjlkZGNjMDA2NjExNjliOTdmMjEzNzIzNDc5YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
VGFzay5tbQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgdm9pZCByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5
KFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGUgZXhjZXB0aW9u
VHlwZSkKK3sKKyAgICBzd2l0Y2ggKGV4Y2VwdGlvblR5cGUpIHsKKyAgICBjYXNlIFdlYktpdDo6
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vbmU6CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlv
blR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZDoKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRoaXMgdGFzayBoYXMgYWxy
ZWFkeSBiZWVuIHN0b3BwZWQiXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpDb21wbGV0ZUFscmVhZHlDYWxs
ZWQ6CisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4
Y2VwdGlvbiBmb3JtYXQ6QCJbV0tVUkxTY2hlbWVIYW5kbGVyVGFzayB0YXNrRGlkQ29tcGxldGVX
aXRoRXJyb3I6XSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBmb3IgdGhpcyB0YXNrIl07CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhj
ZXB0aW9uVHlwZTo6RGF0YUFscmVhZHlTZW50OgorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6
TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiW1dLVVJMU2NoZW1lSGFu
ZGxlclRhc2sgdGFza0RpZFJlY2VpdmVEYXRhOl0gaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9y
IHRoaXMgdGFzayJdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OgorICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0
OkAiTm8gcmVzcG9uc2UgaGFzIGJlZW4gc2VudCBmb3IgdGhpcyB0YXNrIl07CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworQGltcGxlbWVudGF0aW9uIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJ
bXBsCisKKy0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICByZXR1cm4gX3VybFNjaGVt
ZUhhbmRsZXJUYXNrLT50YXNrKCkucmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhU
VFBCb2R5KTsKK30KKworLSAodm9pZClkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2Ug
KilyZXNwb25zZQoreworICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50
YXNrKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICByYWlzZUV4Y2VwdGlvbklm
TmVjZXNzYXJ5KHJlc3VsdCk7Cit9CisKKy0gKHZvaWQpZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAq
KWRhdGEKK3sKKyAgICBhdXRvIHJlc3VsdCA9IF91cmxTY2hlbWVIYW5kbGVyVGFzay0+dGFzaygp
LmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7
CisgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShyZXN1bHQpOworfQorCistICh2b2lkKWRp
ZEZpbmlzaAoreworICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNr
KCkuZGlkQ29tcGxldGUoeyB9KTsKKyAgICByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3Vs
dCk7Cit9CisKKy0gKHZvaWQpZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7Cisg
ICAgYXV0byByZXN1bHQgPSBfdXJsU2NoZW1lSGFuZGxlclRhc2stPnRhc2soKS5kaWRDb21wbGV0
ZShlcnJvcik7CisgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShyZXN1bHQpOworfQorCisj
cHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpP
YmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl91cmxTY2hlbWVIYW5kbGVyVGFzazsK
K30KKworQGVuZAorCisjZW5kaWYgLy8gI2lmIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVt
ZUhhbmRsZXJUYXNrSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjQ2ODAxZjU4MzY2NmNhMzE1ODE2
MDZhZDI4NjA4ZjYyYTQ4ZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5o
IgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJVVJMU2NoZW1lSGFuZGxlclRh
c2suaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK0BpbnRlcmZhY2UgV0tVUkxTY2hlbWVIYW5k
bGVyVGFza0ltcGwgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4KK0BlbmQKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBpZDxXS1VSTFNjaGVtZUhhbmRsZXJUYXNrPiB3
cmFwcGVyKEFQSTo6VVJMU2NoZW1lSGFuZGxlclRhc2smIHVybFNjaGVtZUhhbmRsZXJUYXNrKQor
eworICAgIEFTU0VSVChbdXJsU2NoZW1lSGFuZGxlclRhc2sud3JhcHBlcigpIGlzS2luZE9mQ2xh
c3M6W1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGNsYXNzXV0pOworICAgIHJldHVybiAoaWQ8
V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4pdXJsU2NoZW1lSGFuZGxlclRhc2sud3JhcHBlcigpOwor
fQorCit9CisKK0BpbnRlcmZhY2UgV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgKCkgPFdLT2Jq
ZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlVSTFNjaGVtZUhh
bmRsZXJUYXNrPiBfdXJsU2NoZW1lSGFuZGxlclRhc2s7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3LmgKaW5kZXggNWMyZWNjOGUwNDdhN2I1NmRjOTc0ZDJmZTMxMzBlYTgxMzE3MzhiMi4u
MDkwNThkYjQ4ZGI0MDc5N2I0ZTZkNWU2MGI0YWUyYmI3MGE2ODEzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC0yNzksNiArMjc5LDEx
IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSkKIAogI2VuZGlm
CiAKKy8qIEBhYnN0cmFjdCBDaGVja3Mgd2hldGhlciBvciBub3QgV0tXZWJWaWV3cyBoYW5kbGUg
dGhlIGdpdmVuIFVSTCBzY2hlbWUgYnkgZGVmYXVsdC4KKyBAcGFyYW0gc2NoZW1lIFRoZSBVUkwg
c2NoZW1lIHRvIGNoZWNrLgorICovCisrIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5n
ICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4OTdhMmI3ODMz
YzcwZTkzMmYwYTk1M2ZiOGY3NzA0ZTMyODQzYmJjLi5iZTQyYTQxYzllZWY2NWUwZDM1NzNmZGJi
NjY2NzAxNWZmZGU0MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtNzgsNiArNzgsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5j
ZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW1wb3J0ICJXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKICNpbXBvcnQg
IldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgi
CiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKQEAgLTEwMCw2ICsxMDEsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFN0cmVhbS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Xcml0aW5nTW9kZS5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KQEAg
LTU3Myw2ICs1NzUsMTAgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihX
S1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogICAgIFtzZWxmIF9zZXRVcFNR
TGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudF07CiAjZW5kaWYKIAorICAgIGF1dG8gKmhhbmRsZXJz
ID0gX2NvbmZpZ3VyYXRpb24uZ2V0KCkuX3VybFNjaGVtZUhhbmRsZXJzOworICAgIGZvciAoTlNT
dHJpbmcgKmtleSBpbiBoYW5kbGVycykKKyAgICAgICAgX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRs
ZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShoYW5k
bGVyc1trZXldKSwga2V5KTsKKwogICAgIHBhZ2VUb1ZpZXdNYXAoKS5hZGQoX3BhZ2UuZ2V0KCks
IHNlbGYpOwogfQogCkBAIC0zNDk2LDYgKzM1MDIsMTcgQEAgLSAodm9pZClfaW50ZXJhY3RXaXRo
TWVkaWFDb250cm9sc0ZvclRlc3RpbmcKIAogI2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQogCist
IChpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihO
U1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIGF1dG8qIGhhbmRsZXIgPSBzdGF0aWNfY2FzdDxX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSo+KF9wYWdlLT51cmxTY2hlbWVIYW5kbGVy
Rm9yU2NoZW1lKHVybFNjaGVtZSkpOworICAgIHJldHVybiBoYW5kbGVyID8gaGFuZGxlci0+YXBp
SGFuZGxlcigpIDogbmlsOworfQorCisrIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5n
ICopdXJsU2NoZW1lCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVSTFBhcnNlcjo6aXNTcGVjaWFs
U2NoZW1lKHVybFNjaGVtZSk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmll
dyAoV0tQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAppbmRleCAzYWRhYmJjMTI4ZTlhOTBm
NzU4YzMxYjgyODUxMjFjNDA3ZTNhYmZkLi5jYmQ3NDk0OGQ1Y2RkMTVmOWVkOGFmMzMxZTQ1NDc4
NzY5MTA0Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaApAQCAtMzYsNiArMzYsNyBAQCBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdLUHJvY2Vzc1Bvb2w7CiBAY2xhc3MgV0tVc2Vy
Q29udGVudENvbnRyb2xsZXI7CiBAY2xhc3MgV0tXZWJzaXRlRGF0YVN0b3JlOworQHByb3RvY29s
IFdLVVJMU2NoZW1lSGFuZGxlcjsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIApAQCAtMTc1LDYg
KzE3NiwyNSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCiAK
ICNlbmRpZgogCisvKiBAYWJzdHJhY3QgU2V0cyB0aGUgVVJMIHNjaGVtZSBoYW5kbGVyIG9iamVj
dCBmb3IgdGhlIGdpdmVuIFVSTCBzY2hlbWUuCisgQHBhcmFtIHVybFNjaGVtZUhhbmRsZXIgVGhl
IG9iamVjdCB0byByZWdpc3Rlci4KKyBAcGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRoZSBv
YmplY3Qgd2lsbCBoYW5kbGUuCisgQGRpc2N1c3Npb24gRWFjaCBVUkwgc2NoZW1lIGNhbiBvbmx5
IGhhdmUgb25lIFVSTCBzY2hlbWUgaGFuZGxlciBvYmplY3QgcmVnaXN0ZXJlZC4KKyBBbiBleGNl
cHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRyeSB0byByZWdpc3RlciBhbiBvYmplY3QgZm9y
IGEgcGFydGljdWxhciBVUkwgc2NoZW1lIG1vcmUgdGhhbiBvbmNlLgorIFVSTCBzY2hlbWVzIGFy
ZSBjYXNlIGluc2Vuc2l0aXZlLiBlLmcuICJteXByb3RvY29sIiBhbmQgIk15UHJvdG9jb2wiIGFy
ZSBlcXVpdmFsZW50LgorIFZhbGlkIFVSTCBzY2hlbWVzIG11c3Qgc3RhcnQgd2l0aCBhbiBBU0NJ
SSBsZXR0ZXIgYW5kIGNhbiBvbmx5IGNvbnRhaW4gQVNDSUkgbGV0dGVycywgbnVtYmVycywgdGhl
ICcrJyBjaGFyYWN0ZXIsCisgdGhlICctJyBjaGFyYWN0ZXIsIGFuZCB0aGUgJy4nIGNoYXJhY3Rl
ci4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRyeSB0byByZWdpc3RlciBh
IFVSTCBzY2hlbWUgaGFuZGxlciBmb3IgYW4gaW52YWxpZCBVUkwgc2NoZW1lLgorIEFuIGV4Y2Vw
dGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5IHRvIHJlZ2lzdGVyIGEgVVJMIHNjaGVtZSBo
YW5kbGVyIGZvciBhIFVSTCBzY2hlbWUgdGhhdCBXZWJLaXQgaGFuZGxlcyBpbnRlcm5hbGx5Lgor
IFlvdSBjYW4gdXNlICtbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6XSB0byBjaGVjayB0aGUg
YXZhaWxhYmlsaXR5IG9mIGEgZ2l2ZW4gVVJMIHNjaGVtZS4KKyAqLworLSAodm9pZClzZXRVUkxT
Y2hlbWVIYW5kbGVyOihudWxsYWJsZSBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVI
YW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qIEBhYnN0cmFjdCBS
ZXR1cm5zIHRoZSBjdXJyZW50bHkgcmVnaXN0ZXJlZCBVUkwgc2NoZW1lIGhhbmRsZXIgb2JqZWN0
IGZvciB0aGUgZ2l2ZW4gVVJMIHNjaGVtZS4KKyBAcGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1l
IHRvIGxvb2t1cC4KKyAqLworLSAobnVsbGFibGUgaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJs
U2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAog
QGludGVyZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0aW9uIChXS0RlcHJlY2F0ZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KaW5kZXggNThjMTg1MjM4MzdlNzZjNTY0NzlhMjA5MTQ0MGVhOTBkODZh
YzM4Yi4uZGE4NTUxMzgzNzE0MThhZjFmMTk4OWQwMTAxOTgwZWJmMTEzNmE0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbQpAQCAtMzMsMTEgKzMzLDEzIEBACiAjaW1wb3J0ICJXS1ByZWZlcmVu
Y2VzLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50
Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdD
b250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKICNpbXBv
cnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVJ
bnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC05NCw2ICs5Niw3IEBAIEBpbXBsZW1lbnRhdGlvbiBX
S1dlYlZpZXdDb25maWd1cmF0aW9uIHsKICAgICBXZWJLaXQ6OldlYWtPYmpDUHRyPFdLV2ViVmll
dz4gX2FsdGVybmF0ZVdlYlZpZXdGb3JOYXZpZ2F0aW9uR2VzdHVyZXM7CiAgICAgUmV0YWluUHRy
PE5TU3RyaW5nPiBfZ3JvdXBJZGVudGlmaWVyOwogICAgIExhenlJbml0aWFsaXplZDxSZXRhaW5Q
dHI8TlNTdHJpbmc+PiBfYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OworICAgIExhenlJbml0
aWFsaXplZDxSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tV
UkxTY2hlbWVIYW5kbGVyPj4+PiBfdXJsU2NoZW1lSGFuZGxlcnM7CiAgICAgTlNUaW1lSW50ZXJ2
YWwgX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0OwogICAgIEJPT0wgX3Ry
ZWF0c1NIQTFTaWduZWRDZXJ0aWZpY2F0ZXNBc0luc2VjdXJlOwogICAgIEJPT0wgX3Jlc3BlY3Rz
SW1hZ2VPcmllbnRhdGlvbjsKQEAgLTMyOCw2ICszMzEsOCBAQCAtIChpZCljb3B5V2l0aFpvbmU6
KE5TWm9uZSAqKXpvbmUKICAgICBjb25maWd1cmF0aW9uLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJv
bUZpbGVVUkxzUXVpcmsgPSBzZWxmLT5fbmVlZHNTdG9yYWdlQWNjZXNzRnJvbUZpbGVVUkxzUXVp
cms7CiAgICAgY29uZmlndXJhdGlvbi0+X292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5ID0g
c2VsZi0+X292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OwogCisgICAgY29uZmlndXJhdGlv
bi0+X3VybFNjaGVtZUhhbmRsZXJzLnNldChhZG9wdE5TKFtzZWxmLl91cmxTY2hlbWVIYW5kbGVy
cyBtdXRhYmxlQ29weVdpdGhab25lOnpvbmVdKSk7CisKICAgICByZXR1cm4gY29uZmlndXJhdGlv
bjsKIH0KIApAQCAtNDAwLDYgKzQwNSwzMyBAQCAtICh2b2lkKV9zZXRWaXNpdGVkTGlua1N0b3Jl
OihfV0tWaXNpdGVkTGlua1N0b3JlICopdmlzaXRlZExpbmtTdG9yZQogICAgIF92aXNpdGVkTGlu
a1N0b3JlLnNldCh2aXNpdGVkTGlua1N0b3JlKTsKIH0KIAorLSAodm9pZClzZXRVUkxTY2hlbWVI
YW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyIGZvclVSTFNj
aGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKK3sKKyAgICBhdXRvICp1cmxTY2hlbWVIYW5kbGVy
cyA9IF91cmxTY2hlbWVIYW5kbGVycy5nZXQoW10geyByZXR1cm4gYWRvcHROUyhbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsgfSk7CisKKyAgICBpZiAoW1dLV2ViVmlldyBoYW5k
bGVzVVJMU2NoZW1lOnVybFNjaGVtZV0pCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCInJUAnIGlzIGEgVVJMIHNjaGVtZSB0aGF0
IFdLV2ViVmlldyBoYW5kbGVzIG5hdGl2ZWx5IiwgdXJsU2NoZW1lXTsKKworICAgIGF1dG8gY2Fu
b25pY2FsU2NoZW1lID0gV2ViQ29yZTo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVt
ZSh1cmxTY2hlbWUpOworICAgIGlmICghY2Fub25pY2FsU2NoZW1lKQorICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBu
b3QgYSB2YWxpZCBVUkwgc2NoZW1lIiwgdXJsU2NoZW1lXTsKKworICAgIGlmIChbdXJsU2NoZW1l
SGFuZGxlcnMgb2JqZWN0Rm9yS2V5OihOU1N0cmluZyAqKWNhbm9uaWNhbFNjaGVtZS52YWx1ZSgp
XSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u
IGZvcm1hdDpAIlVSTCBzY2hlbWUgJyVAJyBhbHJlYWR5IGhhcyBhIHJlZ2lzdGVyZWQgVVJMIHNj
aGVtZSBoYW5kbGVyIiwgdXJsU2NoZW1lXTsKKworICAgIFt1cmxTY2hlbWVIYW5kbGVycyBzZXRP
YmplY3Q6dXJsU2NoZW1lSGFuZGxlciBmb3JLZXk6KE5TU3RyaW5nICopY2Fub25pY2FsU2NoZW1l
LnZhbHVlKCldOworfQorCistIChudWxsYWJsZSBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxT
Y2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIGF1
dG8gY2Fub25pY2FsU2NoZW1lID0gV2ViQ29yZTo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6
ZVNjaGVtZSh1cmxTY2hlbWUpOworICAgIGlmICghY2Fub25pY2FsU2NoZW1lKQorICAgICAgICBy
ZXR1cm4gbmlsOworCisgICAgYXV0byAqdXJsU2NoZW1lSGFuZGxlcnMgPSBfdXJsU2NoZW1lSGFu
ZGxlcnMuZ2V0KFtdIHsgcmV0dXJuIGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0XSk7IH0pOworICAgIHJldHVybiBbdXJsU2NoZW1lSGFuZGxlcnMgb2JqZWN0Rm9yS2V5
OihOU1N0cmluZyAqKWNhbm9uaWNhbFNjaGVtZS52YWx1ZSgpXTsKK30KKwogI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Rl
cHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogCkBAIC00MTUsNiArNDQ3LDExIEBAIC0gKHZvaWQpX3Nl
dFdlYnNpdGVEYXRhU3RvcmU6KF9XS1dlYnNpdGVEYXRhU3RvcmUgKil3ZWJzaXRlRGF0YVN0b3Jl
CiAKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAorLSAoTlNNdXRhYmxlRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4gKilfdXJsU2NoZW1lSGFuZGxl
cnMKK3sKKyAgICByZXR1cm4gX3VybFNjaGVtZUhhbmRsZXJzLmdldChbXSB7IHJldHVybiBhZG9w
dE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOyB9KTsKK30KKwogI2lmIFBM
QVRGT1JNKElPUykKIC0gKFdLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5ICopX2NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwu
aAppbmRleCBlZjhlMjEwYjZiMTMwZGJmMDFlYWNlNDExNDQ4ZjliZWY2ZDJkOTQ2Li5lNDhjMDJk
MzIxMTg1ZjgwNjEwOGQyYTFkYjA2NzdkNDFkMWE3ODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbkludGVybmFsLmgKQEAgLTMyLDYgKzMyLDggQEAKIAogQGludGVyZmFjZSBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICgpCiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNN
dXRhYmxlRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4gKl91
cmxTY2hlbWVIYW5kbGVyczsKKwogI2lmIFBMQVRGT1JNKElPUykKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBzZXR0ZXI9X3NldENvbnRlbnRQcm92aWRlclJlZ2lzdHJ5OikgV0tXZWJWaWV3Q29udGVu
dFByb3ZpZGVyUmVnaXN0cnkgKl9jb250ZW50UHJvdmlkZXJSZWdpc3RyeTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhZWFjNDUwOTEwMDgwODllMTMzYjQ2ZDhlZWZhNzg1
OGRkOTQzNzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworQHByb3RvY29sIFdLVVJMU2NoZW1lSGFuZGxlcjsK
KworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBVUkxTY2hlbWVIYW5kbGVyVGFzazsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSA6IHB1Ymxp
YyBXZWJVUkxTY2hlbWVIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYlVSTFNj
aGVtZUhhbmRsZXJDb2NvYT4gY3JlYXRlKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KTsKKworICAg
IGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+IGFwaUhhbmRsZXIoKSBjb25zdCB7IHJldHVybiBtX2Fw
aUhhbmRsZXIuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyQ29j
b2EoaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pOworCisgICAgdm9pZCBwbGF0Zm9ybVN0YXJ0VGFz
ayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayYpIGZpbmFsOworICAgIHZv
aWQgcGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJveHkmLCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFz
ayYpIGZpbmFsOworCisgICAgUmV0YWluUHRyPGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+PiBtX2Fw
aUhhbmRsZXI7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPEFQSTo6VVJMU2NoZW1lSGFuZGxl
clRhc2s+PiBtX2FwaVRhc2tzOworCit9OyAvLyBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRi
NGNjMTkwZWIzZTA0MDQ1Yzc0MmVmOThlNjczYWU0OGNhNDQyZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2Eu
bW0KQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgiCisKKyNpbXBvcnQgIkFQSVVSTFNjaGVt
ZUhhbmRsZXJUYXNrLmgiCisjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKKyNpbXBvcnQgIldLVVJM
U2NoZW1lSGFuZGxlci5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFs
LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitSZWY8V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hPiBXZWJVUkxTY2hlbWVIYW5k
bGVyQ29jb2E6OmNyZWF0ZShpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPiBhcGlIYW5kbGVyKQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYShhcGlIYW5k
bGVyKSk7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6V2ViVVJMU2NoZW1lSGFuZGxl
ckNvY29hKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+IGFwaUhhbmRsZXIpCisgICAgOiBtX2FwaUhh
bmRsZXIoYXBpSGFuZGxlcikKK3sKKyNpZiAhV0tfQVBJX0VOQUJMRUQKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxl
ckNvY29hOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrJiB0YXNrKQoreworI2lmIFdLX0FQSV9FTkFCTEVECisgICAgYXV0byByZXN1
bHQgPSBtX2FwaVRhc2tzLmFkZCh0YXNrLmlkZW50aWZpZXIoKSwgQVBJOjpVUkxTY2hlbWVIYW5k
bGVyVGFzazo6Y3JlYXRlKHRhc2spKTsKKyAgICBBU1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOwor
CisgICAgW21fYXBpSGFuZGxlci5nZXQoKSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkg
c3RhcnRUYXNrOndyYXBwZXIocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKSldOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAgVU5VU0VEX1BBUkFNKHRhc2spOworI2VuZGlm
Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpwbGF0Zm9ybVN0b3BUYXNrKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2smIHRhc2spCit7CisjaWYg
V0tfQVBJX0VOQUJMRUQKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV9hcGlUYXNrcy5maW5kKHRhc2su
aWRlbnRpZmllcigpKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV9hcGlUYXNrcy5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW21fYXBpSGFuZGxlci5nZXQoKSB3ZWJWaWV3OmZyb21XZWJQ
YWdlUHJveHkocGFnZSkgc3RvcFRhc2s6d3JhcHBlcihpdGVyYXRvci0+dmFsdWUuZ2V0KCkpXTsK
KworICAgIG1fYXBpVGFza3MucmVtb3ZlKGl0ZXJhdG9yKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTSh0YXNrKTsKKyNlbmRpZgorfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggMTIyZjZhMTQ1ZTk1YjYxNjYyYTY0Njk3NWViYzY2MGFjNGMyNmU2NC4uY2JiMjk4ZDY0
OGQwNmZjYjBiZmMyODM1ZjEwMzM2N2FlYTgzNWRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQAogI2luY2x1ZGUgIldlYlBy
b2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UHJvdGVjdGlvblNwYWNlLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2lu
Y2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0
ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4KQEAgLTEyNyw2
ICsxMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9WYWxpZGF0
aW9uQnViYmxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1
ZGUgPHN0ZGlvLmg+CkBAIC01NTg4LDYgKzU1OTAsOSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLm9i
c2VydmVkTGF5b3V0TWlsZXN0b25lcyA9IG1fb2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzOwogICAg
IHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBtX292ZXJyaWRlQ29u
dGVudFNlY3VyaXR5UG9saWN5OwogCisgICAgZm9yIChhdXRvJiBpdGVyYXRvciA6IG1fdXJsU2No
ZW1lSGFuZGxlcnNCeVNjaGVtZSkKKyAgICAgICAgcGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVy
cy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52YWx1ZS0+aWRlbnRpZmllcigpKTsKKwogI2lm
IEVOQUJMRShXRUJfUlRDKQogICAgIHBhcmFtZXRlcnMuaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5h
YmxlZCA9IG1fcHJlZmVyZW5jZXMtPmljZUNhbmRpZGF0ZUZpbHRlcmluZ0VuYWJsZWQoKTsKICNp
ZiBVU0UoTElCV0VCUlRDKQpAQCAtNjg0Myw1ICs2ODQ4LDQxIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6
OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYg
aGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgYXV0byBjYW5vbmljYWxpemVk
U2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShzY2hlbWUpOworICAg
IEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsKKyAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNT
cGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOworCisgICAgYXV0byBz
Y2hlbWVSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWUuYWRkKGNhbm9uaWNhbGl6
ZWRTY2hlbWUudmFsdWUoKSwgaGFuZGxlci5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChzY2hl
bWVSZXN1bHQsIHNjaGVtZVJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIGF1dG8gaWRlbnRpZmll
ciA9IGhhbmRsZXItPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBt
X3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGhh
bmRsZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGlkZW50aWZpZXJSZXN1bHQsIGlkZW50aWZpZXJS
ZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2No
ZW1lLnZhbHVlKCkpLCBtX3BhZ2VJRCk7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXIqIFdlYlBh
Z2VQcm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkK
K3sKKyAgICByZXR1cm4gbV91cmxTY2hlbWVIYW5kbGVyc0J5U2NoZW1lLmdldChzY2hlbWUpOwor
fQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRVUkxTY2hlbWVIYW5kbGVyVGFzayh1aW50NjRf
dCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgYXV0byBpdGVyYXRvciA9
IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuZmluZChoYW5kbGVySWRlbnRpZmllcik7
CisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIu
ZW5kKCkpOworCisgICAgaXRlcmF0b3ItPnZhbHVlLT5zdGFydFRhc2soKnRoaXMsIHJlc291cmNl
SWRlbnRpZmllciwgcmVxdWVzdCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdG9wVVJMU2No
ZW1lSGFuZGxlclRhc2sodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV91cmxTY2hlbWVIYW5kbGVy
c0J5SWRlbnRpZmllci5maW5kKGhhbmRsZXJJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoaXRlcmF0
b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5lbmQoKSk7CisKKyAgICBpdGVy
YXRvci0+dmFsdWUtPnN0b3BUYXNrKCp0aGlzLCByZXNvdXJjZUlkZW50aWZpZXIpOworfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCBjMWE4MmRjOWQ1YWZkYmIxMzAxNzRiZGZiYzFhMDA5YTg1YmYxNGNmLi4zN2RmNmJi
NGFiZDg1YTJjZTg4OTY4OTQ5MDMyOGIxYTc5N2ViYTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDIsNiArMjAyLDcgQEAgY2xhc3MgV2ViUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2ViTmF2aWdhdGlvblN0YXRlOwogY2xhc3MgV2Vi
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2Ns
YXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VHcm91cDsKQEAgLTEx
OTEsNiArMTE5Miw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2hvdWxkU2tpcFdhaXRpbmdG
b3JQYWludEFmdGVyTmV4dFZpZXdEaWRNb3ZlVG9XaW5kb3coYm9vbCBzaG91bGRTa2lwKSB7IG1f
c2hvdWxkU2tpcFdhaXRpbmdGb3JQYWludEFmdGVyTmV4dFZpZXdEaWRNb3ZlVG9XaW5kb3cgPSBz
aG91bGRTa2lwOyB9CiAKKyAgICB2b2lkIHNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVm
PFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYsIGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXZWJV
UkxTY2hlbWVIYW5kbGVyKiB1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlBy
b2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CkBAIC0xNTk0LDYgKzE1OTgsOSBA
QCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAorICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVIYW5k
bGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0b3BV
UkxTY2hlbWVIYW5kbGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyKTsKKwogICAgIHZvaWQgaGFuZGxlQXV0b0ZpbGxCdXR0b25DbGlj
ayhjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgdm9pZCBmaW5pc2hJbml0aWFsaXppbmdXZWJQYWdl
QWZ0ZXJQcm9jZXNzTGF1bmNoKCk7CkBAIC0xOTc5LDYgKzE5ODYsOSBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wgeyBmYWxzZSB9OwogICAgICAgICAK
ICAgICBXZWFrUHRyRmFjdG9yeTxXZWJQYWdlUHJveHk+IG1fd2Vha1B0ckZhY3Rvcnk7CisKKyAg
ICBIYXNoTWFwPFN0cmluZywgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhh
bmRsZXJzQnlTY2hlbWU7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZUhh
bmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBkYzkzYzQ4MDdkYTE5OWJmOTQ2N2MwMjZkZjM0OTVkODcyMDk5
MzI2Li45NmIyZWZmMWMzZDdkNDNkYzUyMjU2Yzc1Mzg1MmYzYzY4YzZhZWFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ5
MCw0ICs0OTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAKICAgICBT
ZXRJc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0woYm9vbCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNl
V2ViR0wpCisKKyAgICBTdGFydFVSTFNjaGVtZUhhbmRsZXJUYXNrKHVpbnQ2NF90IGxvYWRlcklk
ZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QpCisgICAgU3RvcFVSTFNjaGVtZUhhbmRsZXJUYXNrKHVpbnQ2NF90IGxv
YWRlcklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcikKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lNTk5ZWMyZjNlMWZmMjEyMWE3YmZmMzc1MDExNjllY2EzNmI2YzUyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBA
IC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmll
cigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IG5leHRJZGVudGlmaWVyID0gMTsKKyAgICByZXR1
cm4gbmV4dElkZW50aWZpZXIrKzsKK30KKworV2ViVVJMU2NoZW1lSGFuZGxlcjo6V2ViVVJMU2No
ZW1lSGFuZGxlcigpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVXZWJVUkxTY2hlbWVIYW5k
bGVySWRlbnRpZmllcigpKQoreworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyOjp+V2ViVVJMU2No
ZW1lSGFuZGxlcigpCit7CisgICAgQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgpKTsKK30KKwordm9p
ZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKHJlc291cmNlSWRlbnRpZmllciwgV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZSgqdGhpcywgcGFnZSwgcmVzb3VyY2VJZGVudGlm
aWVyLCByZXF1ZXN0KSk7CisgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIHBs
YXRmb3JtU3RhcnRUYXNrKHBhZ2UsIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOworfQorCit2b2lk
IFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0
X3QgcmVzb3VyY2VJZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rhc2tzLmZp
bmQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgPT0gbV90YXNrcy5lbmQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXRlcmF0b3ItPnZhbHVlLT5zdG9wKCk7CisKKyAg
ICBwbGF0Zm9ybVN0b3BUYXNrKHBhZ2UsIGl0ZXJhdG9yLT52YWx1ZSk7CisKKyAgICBtX3Rhc2tz
LnJlbW92ZShpdGVyYXRvcik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRj
ZmQ1ZGRmOTg2YjJlNjMxYjI0NzIzODE3NmY3YWVjZDA2NzYyMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViVVJMU2No
ZW1lSGFuZGxlclRhc2suaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVIYW5kbGVyPiB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoV2ViVVJMU2NoZW1lSGFuZGxlcik7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViVVJM
U2NoZW1lSGFuZGxlcigpOworCisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgdm9pZCBzdGFydFRhc2soV2ViUGFnZVByb3h5Jiwg
dWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmKTsKKyAgICB2b2lkIHN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90IHJlc291cmNl
SWRlbnRpZmllcik7CisKK3Byb3RlY3RlZDoKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyKCk7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94
eSYsIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrJikgPSAw
OworCisgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOworCisgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmPFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrPj4gbV90YXNrczsKKworfTsgLy8gY2xhc3MgV2Vi
VVJMU2NoZW1lSGFuZGxlcgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjEyMGFiM2Y5NTUxOTg1ZDgwZWM4MjJjNTQ3ODA5NDNmMjk3OWRlNjEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2su
Y3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmgiCisKKyNpbmNsdWRlICJEYXRhUmVm
ZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxXZWJVUkxTY2hlbWVI
YW5kbGVyVGFzaz4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZShXZWJVUkxTY2hlbWVI
YW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrKGhhbmRsZXIsIHBhZ2UsIHJlc291
cmNlSWRlbnRpZmllciwgcmVxdWVzdCkpOworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2Vi
UGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICA6IG1fdXJsU2NoZW1lSGFuZGxlcihoYW5kbGVyKQor
ICAgICwgbV9wYWdlKCZwYWdlKQorICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNlSWRlbnRpZmll
cikKKyAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQoreworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVy
VGFzazo6RXhjZXB0aW9uVHlwZSBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmIChtX3N0
b3BwZWQpCisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9u
VHlwZTo6VGFza0FscmVhZHlTdG9wcGVkOworCisgICAgaWYgKG1fY29tcGxldGVkKQorICAgICAg
ICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRl
QWxyZWFkeUNhbGxlZDsKKworICAgIGlmIChtX2RhdGFTZW50KQorICAgICAgICByZXR1cm4gV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkRhdGFBbHJlYWR5U2VudDsKKwor
ICAgIG1fcmVzcG9uc2VTZW50ID0gdHJ1ZTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVSTFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSk7CisgICAgcmV0
dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpOb25lOworfQorCitX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZSBXZWJVUkxTY2hlbWVIYW5kbGVy
VGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQoreworICAgIGlm
IChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhj
ZXB0aW9uVHlwZTo6VGFza0FscmVhZHlTdG9wcGVkOworCisgICAgaWYgKG1fY29tcGxldGVkKQor
ICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNv
bXBsZXRlQWxyZWFkeUNhbGxlZDsKKworICAgIGlmICghbV9yZXNwb25zZVNlbnQpCisgICAgICAg
IHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9SZXNwb25z
ZVNlbnQ7CisKKyAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVSTFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hl
bWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJE
YXRhUmVmZXJlbmNlKGJ1ZmZlci5wdHIoKSkpKTsKKyAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vbmU7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrOjpFeGNlcHRpb25UeXBlIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpkaWRDb21wbGV0ZShj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAg
ICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OlRhc2tBbHJl
YWR5U3RvcHBlZDsKKworICAgIGlmIChtX2NvbXBsZXRlZCkKKyAgICAgICAgcmV0dXJuIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpDb21wbGV0ZUFscmVhZHlDYWxsZWQ7
CisKKyAgICBpZiAoIW1fcmVzcG9uc2VTZW50ICYmIGVycm9yLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vUmVzcG9uc2VT
ZW50OworCisgICAgbV9jb21wbGV0ZWQgPSB0cnVlOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VVJMU2NoZW1lSGFuZGxlclRhc2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhh
bmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCBlcnJvcikpOworICAgIHJldHVybiBX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6Tm9uZTsKK30KKwordm9pZCBX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6cGFnZURlc3Ryb3llZCgpCit7CisgICAgQVNTRVJUKG1f
cGFnZSk7CisgICAgbV9wYWdlID0gbnVsbHB0cjsKKyAgICBtX3N0b3BwZWQgPSB0cnVlOworfQor
Cit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpzdG9wKCkKK3sKKyAgICBBU1NFUlQoIW1f
c3RvcHBlZCk7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
VGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc3ZGIzMmQ5NTU2MzVlYmRlMjNmZmFmNTViYTE5NWM0MzZmMGYw
NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlclRhc2suaApAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2Ns
YXNzIFNoYXJlZEJ1ZmZlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVS
TFNjaGVtZUhhbmRsZXI7CitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIFdlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s+
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayk7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyVGFzaz4gY3JlYXRlKFdl
YlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKworICAgIHVpbnQ2NF90IGlkZW50aWZp
ZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQor
CisgICAgZW51bSBjbGFzcyBFeGNlcHRpb25UeXBlIHsKKyAgICAgICAgRGF0YUFscmVhZHlTZW50
LAorICAgICAgICBDb21wbGV0ZUFscmVhZHlDYWxsZWQsCisgICAgICAgIFRhc2tBbHJlYWR5U3Rv
cHBlZCwKKyAgICAgICAgTm9SZXNwb25zZVNlbnQsCisgICAgICAgIE5vbmUsCisgICAgfTsKKyAg
ICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPik7CisgICAgRXhjZXB0aW9uVHlwZSBkaWRDb21wbGV0ZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisKKyAgICB2b2lkIHN0b3AoKTsKKyAgICB2b2lkIHBh
Z2VEZXN0cm95ZWQoKTsKKworcHJpdmF0ZToKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayhX
ZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgdWludDY0X3QgaWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisKKyAgICBSZWY8V2ViVVJMU2NoZW1l
SGFuZGxlcj4gbV91cmxTY2hlbWVIYW5kbGVyOworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwor
ICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
bV9yZXF1ZXN0OworICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVz
cG9uc2VTZW50IHsgZmFsc2UgfTsKKyAgICBib29sIG1fZGF0YVNlbnQgeyBmYWxzZSB9OworICAg
IGJvb2wgbV9jb21wbGV0ZWQgeyBmYWxzZSB9OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNzEwYTBkM2NmOGVkOWJkOTM1Yzk5MTVkZjY2YTRjNWQ0NTQ3ZDkzNC4uZmU5NWNkN2Iy
ZWVhMTg5MzhlOGMyNDdjYzk3YmFhNjU0YzkxYzRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA1NSw2ICsxMDU1LDE0IEBA
CiAJCTUxRDAyRjZBMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjcx
MzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3NhZ2VzLmggKi87IH07CiAJCTUx
RDAyRjZCMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUQwMkY2ODEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovOyB9OwogCQk1MUQwMkY2QzEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRh
dGFiYXNlUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFEMDJGNjkxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVBy
b3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJNTFEMTI0MjMxRTZEMzRBMTAwMkIyODIwIC8qIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MjExRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrUHJveHkuY3BwICovOyB9OworCQk1MUQxMjQyODFFNkQzRjVEMDAyQjI4MjAg
LyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQyNDFFNkQzQ0MzMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1l
SGFuZGxlci5jcHAgKi87IH07CisJCTUxRDEyNDJDMUU2RDQxRkQwMDJCMjgyMCAvKiBXZWJVUkxT
Y2hlbWVIYW5kbGVyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTFEMTI0MkExRTZENDFCQzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eS5jcHAgKi87IH07CisJCTUxRDEyNDMzMUU2REU2Q0EwMDJCMjgyMCAvKiBXZWJVUkxT
Y2hlbWVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUQxMjQzMjFFNkRFNTIxMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxl
ckNvY29hLm1tICovOyB9OworCQk1MUQxMjQzNDFFNkRGNjQzMDAyQjI4MjAgLyogV0tVUkxTY2hl
bWVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUQxMjQyRDFFNkREREQ3MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk1MUQxMjQzNTFFNkRG
NjUyMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MkYxRTZERERENzAwMkIyODIwIC8q
IFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CisJCTUxRDEyNDM2MUU2REZCMzkwMDJCMjgyMCAvKiBXS1VSTFNjaGVt
ZUhhbmRsZXJUYXNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTFEMTI0MzAxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2su
bW0gKi87IH07CisJCTUxRDEyNDNBMUU2RTBBQUIwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3Bw
ICovOyB9OwogCQk1MUQxMzA1MzEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEz
MDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwICovOyB9OwogCQk1
MUQxMzA1NDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMzA1MDEzODJFQUMwMDAz
NTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggKi87IH07CiAJCTUxRDEzMDU1MTM4MkVBQzAw
MDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJ
dGVtUmVzcG9uc2VEYXRhLmNwcCAqLzsgfTsKQEAgLTEwNjksNiArMTA3Nyw3IEBACiAJCTUxRTM1
MjAyMTgwRjVEMUUwMEU1M0JFOSAvKiBEYXRhYmFzZVByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUUzNTIwMTE4MEY1RDFFMDBFNTNC
RTkgLyogRGF0YWJhc2VQcm9jZXNzTWFjLm1tICovOyB9OwogCQk1MUUzNTIwOTE4MEY1RDZCMDBF
NTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBE
YXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tICovOyB9OwogCQk1MUUzOTkwNjFENkY1NEM3MDA5
Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5OTA1MUQ2RjU0QzUwMDlDODgzMSAvKiBVSUdh
bWVwYWRQcm92aWRlckNvY29hLm1tICovOyB9OworCQk1MUU4QjY4RTFFNzEyODc3MDAxQjcxMzIg
LyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFOEI2OEQxRTcxMjg3MzAwMUI3MTMyIC8qIFdlYlVSTFNj
aGVtZUhhbmRsZXJUYXNrLmNwcCAqLzsgfTsKIAkJNTFFOTQ5OTcxRDc2MjExMzAwRUM5RUI5IC8q
IFVJR2FtZXBhZFByb3ZpZGVySU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTFFOTQ5OTYxRDc2MUNDNzAwRUM5RUI5IC8qIFVJR2FtZXBhZFByb3Zp
ZGVySU9TLm1tICovOyB9OwogCQk1MUVGQzFDRjE1MjRFNjI1MDBDOUE5MzggLyogV0tCdW5kbGVE
T01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4
dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTUxRjA2MEUwMTY1NDMxN0YwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBE
RTE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovOyB9OwpA
QCAtMzI1Myw2ICszMjYyLDIxIEBACiAJCTUxRDAyRjY3MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJ
Y29uRGF0YWJhc2VNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUQwMkY2ODEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViSWNvbkRh
dGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUQwMkY2OTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VQ
cm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDIxMUU2
RDM0OUEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJv
eHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyMjFFNkQzNDlBMDAy
QjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDI0MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxT
Y2hlbWVIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YlVSTFNjaGVtZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQx
MjQyNTFFNkQzQ0MzMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDI3MUU2RDNGMUYwMDJCMjgyMCAvKiBXZWJVUkxTY2hl
bWVIYW5kbGVyVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQy
QTFFNkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDJCMUU2RDQxQkMwMDJCMjgy
MCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxRDEyNDJEMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDJGMUU2RERERDcwMDJCMjgyMCAv
KiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFEMTI0MzAxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1VSTFNjaGVtZUhhbmRs
ZXJUYXNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQzMTFFNkRFNTIx
MDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUQxMjQzMjFFNkRFNTIxMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1l
SGFuZGxlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MUQxMjQzNzFFNkRGRDJBMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVy
bmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2NoZW1lSGFuZGxl
clRhc2tJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQzODFF
NkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQzOTFFNkRGREI5MDAyQjI4MjAgLyog
QVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWNJdGVtUmVxdWVzdERhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQg
LyogU2VjSXRlbVJlcXVlc3REYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNlY0l0ZW1SZXF1ZXN0RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQx
MzA1MTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNzEsNiArMzI5NSw3IEBACiAJCTUxRTM1MjA3
MTgwRjVENjEwMEU1M0JFOSAvKiBJbmZvLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSBJbmZvLnBsaXN0
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUUzNTIwODE4MEY1RDZCMDBFNTNCRTkg
LyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERhdGFiYXNlU2VydmljZUVudHJ5UG9pbnQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxRTM5OTA1MUQ2RjU0QzUwMDlDODgzMSAvKiBVSUdhbWVwYWRQ
cm92aWRlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTFFOEI2OEQxRTcxMjg3MzAwMUI3MTMyIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFOTQ5OTYxRDc2MUNDNzAw
RUM5RUI5IC8qIFVJR2FtZXBhZFByb3ZpZGVySU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVUlHYW1lcGFkUHJvdmlkZXJJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxv
YWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxv
YWRlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
RjA2MEREMTY1NDMxNzUwMEYzMjgxQyAvKiBXZWJSVENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUlRDU29ja2V0TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwNTgsNiArNTA4Myw4IEBACiAJCQkJMkRBRjRG
RkExQjYzNjE4MTAwNjAxM0Q2IC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJ
MkQxMjVDNUMxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlci5oICovLAog
CQkJCTJEMUI1RDVBMTg1ODY1OTkwMDZDNjU5NiAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVz
c2FnZXMuaW4gKi8sCisJCQkJNTFEMTI0MzExRTZERTUyMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVt
ZUhhbmRsZXJDb2NvYS5oICovLAorCQkJCTUxRDEyNDMyMUU2REU1MjEwMDJCMjgyMCAvKiBXZWJV
UkxTY2hlbWVIYW5kbGVyQ29jb2EubW0gKi8sCiAJCQkJMUFDMDI3M0UxOTY2MjJENjAwQzEyQjc1
IC8qIFdlYlBhZ2VQcm94eUNvY29hLm1tICovLAogCQkJCTdDNDY5NENCMUE0QjUxMEEwMEFENTg0
NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5tbSAqLywKIAkJCQlDREEyOUExRTFDQkVCNUZC
MDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmggKi8sCkBAIC01NTQw
LDYgKzU1NjcsMTAgQEAKIAkJCQk5M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24ubW0gKi8sCiAJCQkJMUFEODc5MDkxOEI2QzM4QTAwNkNBRkQ3IC8qIFdL
VUlEZWxlZ2F0ZS5oICovLAogCQkJCTM3NDM5MjU3MThCQzRDNjAwMDFDODY3NSAvKiBXS1VJRGVs
ZWdhdGVQcml2YXRlLmggKi8sCisJCQkJNTFEMTI0MkQxRTZERERENzAwMkIyODIwIC8qIFdLVVJM
U2NoZW1lSGFuZGxlci5oICovLAorCQkJCTUxRDEyNDJGMUU2RERERDcwMDJCMjgyMCAvKiBXS1VS
TFNjaGVtZUhhbmRsZXJUYXNrLmggKi8sCisJCQkJNTFEMTI0MzAxRTZERERENzAwMkIyODIwIC8q
IFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gKi8sCisJCQkJNTFEMTI0MzcxRTZERkQyQTAwMkIy
ODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oICovLAogCQkJCTFBRkEzQUM3
MThFNjFDNjEwMDNDQ0JBRSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlci5oICovLAogCQkJCTFB
RkEzQUM2MThFNjFDNjEwMDNDQ0JBRSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSAqLywK
IAkJCQkxQUFGMDhBMzE5MjY4MkRBMDBCNjM5MEMgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJJ
bnRlcm5hbC5oICovLApAQCAtNjQ3NCw2ICs2NTA1LDEwIEBACiAJCQkJQkM3QjYyMTMxMkE0MjE5
QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5LmggKi8sCiAJCQkJMkQ1QzlEMDMxOUM4MUQ4
RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmNwcCAqLywKIAkJCQkyRDVDOUQwNDE5QzgxRDhG
MDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCAqLywKKwkJCQk1MUQxMjQyQTFFNkQ0MUJDMDAy
QjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCAqLywKKwkJCQk1MUQxMjQyQjFF
NkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggKi8sCisJCQkJNTFE
MTI0MjExRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3Bw
ICovLAorCQkJCTUxRDEyNDIyMUU2RDM0OUEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVy
VGFza1Byb3h5LmggKi8sCiAJCQkJQkNBMEVGN0UxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9T
dGVwLmNwcCAqLywKIAkJCQlCQ0EwRUY3RDEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAu
aCAqLywKIAkJCSk7CkBAIC02NjM5LDYgKzY2NzQsMTAgQEAKIAkJCQk3QTlDRDhDMDFDNzc5ODQ5
MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCAqLywKIAkJCQk3
QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmggKi8sCiAJCQkJN0E5Q0Q4QzIxQzc3OUFENjAwRDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbiAqLywKKwkJCQk1MUQxMjQyNDFFNkQzQ0MzMDAyQjI4
MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgKi8sCisJCQkJNTFEMTI0MjUxRTZEM0NDMzAw
MkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIuaCAqLywKKwkJCQk1MUU4QjY4RDFFNzEyODcz
MDAxQjcxMzIgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovLAorCQkJCTUxRDEyNDI3
MUU2RDNGMUYwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBVSVByb2Nlc3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjY4
OSw2ICs2NzI4LDggQEAKIAkJCQkxQUZERTY1RjE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lv
blN0YXRlLmNwcCAqLywKIAkJCQkxQUZERTY2MDE5NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lv
blN0YXRlLmggKi8sCiAJCQkJMUE0RDY2NDcxOEEyRDkxQTAwRDgyRTIxIC8qIEFQSVVJQ2xpZW50
LmggKi8sCisJCQkJNTFEMTI0MzgxRTZERkRCOTAwMkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRs
ZXJUYXNrLmNwcCAqLywKKwkJCQk1MUQxMjQzOTFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2No
ZW1lSGFuZGxlclRhc2suaCAqLywKIAkJCQk3Qzg5RDJCMTFBNkIwNjhDMDAzQTVGREUgLyogQVBJ
VXNlckNvbnRlbnRFeHRlbnNpb24uY3BwICovLAogCQkJCTdDODlEMkIyMUE2QjA2OEMwMDNBNUZE
RSAvKiBBUElVc2VyQ29udGVudEV4dGVuc2lvbi5oICovLAogCQkJCTdDM0EwNkE1MUFBQjkwM0Uw
MDlENzRCQSAvKiBBUElVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlLmNwcCAqLywKQEAgLTgxNTYs
NiArODE5Nyw3IEBACiAJCQkJMEZEQ0Q3RjcxRDQ3RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxp
emF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTZEODZDMjFERjc1MjY1MDA3NzQ1RTggLyog
TWFjaE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQzU2Rjc5MTE1OTk1N0QwMDFDQ0FG
OSAvKiBNYWNoUG9ydC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFEMTI0MzQxRTZERjY0MzAwMkIy
ODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyNEI1RjMx
MUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNF
MUEwQkQ1MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTE5MzNERUYxOTY1RUIzMTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLApAQCAtODI4MCw2ICs4MzIyLDcgQEAKIAkJCQk4MzA0OEFFNjFBQ0E0
NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQ0N0I1NkQxODEwNzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUQxMjQzNTFFNkRGNjUyMDAyQjI4
MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjcz
MTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMTZBRUExNjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxh
eWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEMjlFQ0QwMTkyRjJDMkUwMDk4
NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJz
ICovLApAQCAtOTQ4NCw2ICs5NTI3LDcgQEAKIAkJCQkxQTU3MDRGNzFCRTAxRkY0MDA4NzRBRjEg
LyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExQTRG
RTVCMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTM3OUE4NzM5MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNTFEMTI0MkMxRTZENDFGRDAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUQwMUJDODE5MDVEMzdFMDBDOUM0NUYg
LyogX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTdG
RTdDRTFDNDg3REI4MDBBMENBODkgLyogX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTM3M0QxMjIyMThBNDczMDEwMDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5t
bSBpbiBTb3VyY2VzICovLApAQCAtOTYzNSw2ICs5Njc5LDcgQEAKIAkJCQkyREEwNDlCNzE4MEND
RDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBQzc1QTFFMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUMwQzk3NTFEREQ3NjAzMDAzMkNBRDMgLyogSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDIzMUU2RDM0QTEwMDJC
MjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxRTM1MUNBMTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJVdGlsaXRpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMyMDRFRTIxMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUVFQkExMTI3NzYxQ0MwMDMzMjJCOCAvKiBJbmplY3Rl
ZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk4MDQsNiArOTg0
OSw3IEBACiAJCQkJMUEwRUM3NUYxMjRCQzdCMjAwN0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94
eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEOTBCQjEyODFDOTMxMDAxRUI5NjIgLyogUGx1
Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwNDNCNUQxMjRENUU5
RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MUQxMjQzNjFFNkRGQjM5MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5k
bGVyVGFzay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBMDQzREMyMTI0RkY4NzUwMEZGQkZCNSAv
KiBQbHVnaW5Qcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJEOTIyMTEyODFEQzFCMDAx
RUI5NjIgLyogUGx1Z2luUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQThFRkE3MDEy
NTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCkBAIC05OTU3LDYgKzEwMDAzLDcgQEAKIAkJCQkxQUE4M0Y2QzFBNUI2M0ZGMDAwMjZF
QzYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDE5QTI2
RDFBMTNFODJBMDA4RDY1MEUgLyogV2ViRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMUE1QjFDNTQxODk4N0VERjAwNEZDRjlCIC8qIFdlYkRvY3VtZW50TG9h
ZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDI4MUU2RDNGNUQwMDJCMjgyMCAvKiBX
ZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDMTExQTVEMTEyRjRG
QkIwMDMzN0JBQiAvKiBXZWJEcmFnQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1NzRB
Mzc3MTJFNjA5OUQwMDJERkU5OCAvKiBXZWJEcmFnQ2xpZW50TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNBMEVGQTAxMjMzMjY0MjAwN0QzQ0ZCIC8qIFdlYkVkaXRDb21tYW5kUHJveHkuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC05OTg2LDYgKzEwMDMzLDcgQEAKIAkJCQlCQzFCRTFFMTEyRDU0
QTQxMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkMwRTVGRTYxMkQ2OTcxNjAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzBFNjA2MTEyRDZCQTkxMDAxMkE3MkEgLyogV2ViR2VvbG9j
YXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEy
NDMzMUU2REU2Q0EwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0gaW4gU291
cmNlcyAqLywKIAkJCQlCQzU0Q0FDQzEyRDY0MjkxMDA1QzY3QjAgLyogV2ViR2VvbG9jYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTYxODIxMkQ2Q0IxRDAwMTJB
NzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQxMzA3NUFFMURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2Nr
ZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDEwMiw2ICsxMDE1MCw3IEBACiAJCQkJMkRBOTQ0
QjAxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nlc3NQcm94eUlPUy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTUxRDEzMDU4MTM4MkYxMDUwMDM1MUVERCAvKiBXZWJQcm9jZXNzUHJveHlNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCQ0VFN0FEMDEyODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDNBMUU2
RTBBQUIwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTFFMDkzMzE4ODYxRDM4MDBEMkRDNDkgLyogV2ViUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMkY1ODlDMTJBODgzODgwMDYyOTUzMCAvKiBX
ZWJQcm90ZWN0aW9uU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFDNTEyQzgxOTA2NTZF
NTAwNDQ4OTE0IC8qIFdlYlF1aWNrTG9va0hhbmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTEwMjgzLDYgKzEwMzMyLDcgQEAKIAkJCQlCQzg1ODA2MjEyQjg1MDU3MDBFREVCMkUgLyog
V0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q1OTdE
NjExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODlE
MjlCMUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTUxRThCNjhFMUU3MTI4NzcwMDFCNzEzMiAvKiBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdCNjMzODEyQTQ1QUJBMDBEMTc0QTQg
LyogV0tQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFMTdCN0QxMzgxRjExNzAw
MTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDZBQjU0
MjE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9yLm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwNzU5ZTdjM2U5N2U1MTAwYWU3ODExMmM4YzJiZTVm
NGE0NmM1YzMzLi4xODI4Mjc0M2YwMzJhMzJhZTJiNTViODE5NDQ3ZDQyZjZmYWIwZmZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKQEAgLTM5LDggKzM5LDExIEBACiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVk
ZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2tQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFJlc291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgpAQCAtMTk0LDYgKzE5NywxNiBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9h
ZGVyLCBDYWNoZWRSZXNvdQogICAgIH0KICNlbmRpZgogCisgICAgaWYgKHdlYlBhZ2UpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIGhhbmRsZXIgPSB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2No
ZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0
aG91dENvcHlpbmcoKSkpIHsKKyAgICAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihX
ZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCBVUkwgJyVzJyB3aWxs
IGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nlc3MgVVJMIHNjaGVtZSBoYW5kbGVyLiIsIHJlc291cmNl
TG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwg
YmUgaGFuZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRsZXIgKGZyYW1lID0gJXAs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBpZGVu
dGlmaWVyKTsKKworICAgICAgICAgICAgaGFuZGxlci0+c3RhcnROZXdUYXNrKHJlc291cmNlTG9h
ZGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIExPRyhO
ZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2Vz
cyB3aXRoIHByaW9yaXR5ICVkIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlv
cml0eSgpKSk7CiAKICAgICBDb250ZW50U25pZmZpbmdQb2xpY3kgY29udGVudFNuaWZmaW5nUG9s
aWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkU25pZmZDb250ZW50KCkgPyBTbmlmZkNvbnRlbnQg
OiBEb05vdFNuaWZmQ29udGVudDsKQEAgLTI2MCw2ICsyNzMsMTEgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6cmVtb3ZlKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKICAgICAgICAg
bV9pbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VMb2FkZXJzLnJlbW92ZShyZXNvdXJjZUxvYWRlcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBpZiAoYXV0byB0YXNrID0gbV91cmxTY2hl
bWVIYW5kbGVyVGFza3MudGFrZShyZXNvdXJjZUxvYWRlci0+aWRlbnRpZmllcigpKSkgeworICAg
ICAgICB0YXNrLT5zdG9wTG9hZGluZygpOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIAog
ICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllciA9IHJlc291cmNlTG9hZGVyLT5p
ZGVudGlmaWVyKCk7CiAgICAgaWYgKCFpZGVudGlmaWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IGI3ZTFi
MTk5NDAwNzNmMmU2NGMxZjRkZDgxMjNkYWUyNzUyMThlY2QuLjI5MDQ3NWI2MTkzMzY5OTc4ZGI1
MjUzMzBlZTNiYTQyN2MyYzM4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOworY2xhc3Mg
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTsKIHR5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VM
b2FkSWRlbnRpZmllcjsKIAogY2xhc3MgV2ViTG9hZGVyU3RyYXRlZ3kgOiBwdWJsaWMgV2ViQ29y
ZTo6TG9hZGVyU3RyYXRlZ3kgewpAQCAtNzQsNiArNzUsNyBAQCBwcml2YXRlOgogICAgIFJ1bkxv
b3A6OlRpbWVyPFdlYkxvYWRlclN0cmF0ZWd5PiBtX2ludGVybmFsbHlGYWlsZWRMb2FkVGltZXI7
CiAgICAgCiAgICAgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBSZWZQdHI8V2ViUmVzb3VyY2VMb2Fk
ZXI+PiBtX3dlYlJlc291cmNlTG9hZGVyczsKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIHN0
ZDo6dW5pcXVlX3B0cjxXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Pj4gbV91cmxTY2hlbWVI
YW5kbGVyVGFza3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjMzBiYTE4NzZmNmNhYjVh
NDJjNDgxNTQxNjhhZjBlYjJmMTgyYjZjLi43ZDQ0MjYwZjc0NzJmM2E4NDdlZmE4ZjM3MGM0MjE3
YzI5NmY1ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC0xMTAsNiArMTEwLDcgQEAKICNpbmNsdWRlICJXZWJQcm9ncmVzc1RyYWNrZXJD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwLmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2ViVXNlck1lZGlhQ2xpZW50LmgiCkBAIC01NjEs
NiArNTYyLDkgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBlbmFibGVFbnVtZXJhdGluZ0Fs
bE5ldHdvcmtJbnRlcmZhY2VzKCk7CiAjZW5kaWYKICNlbmRpZgorCisgICAgZm9yIChhdXRvIGl0
ZXJhdG9yIDogcGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycykKKyAgICAgICAgcmVnaXN0ZXJV
UkxTY2hlbWVIYW5kbGVyKGl0ZXJhdG9yLnZhbHVlLCBpdGVyYXRvci5rZXkpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCkBAIC01NzM5LDQgKzU3NDMsNDIgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VJ
Y29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25Mb2FkaW5nQ2xpZW50KQogICAgIHN0YXRpY19j
YXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4oY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVy
KCkuY2xpZW50KCkpLnNldFVzZUljb25Mb2FkaW5nQ2xpZW50KHVzZUljb25Mb2FkaW5nQ2xpZW50
KTsKIH0KIAorV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KiBXZWJQYWdlOjp1cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQoreworICAgIHJldHVybiBtX3NjaGVt
ZVRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdldChzY2hlbWUpOworfQorCit2b2lkIFdlYlBh
Z2U6OnJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAgYXV0byBzY2hlbWVSZXN1bHQgPSBtX3NjaGVt
ZVRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmFkZChzY2hlbWUsIHN0ZDo6bWFrZV91bmlxdWU8
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5PigqdGhpcywgaGFuZGxlcklkZW50aWZpZXIpKTsKKyAg
ICBBU1NFUlQoc2NoZW1lUmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgYXV0byBpZGVudGlmaWVy
UmVzdWx0ID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuYWRkKGhhbmRs
ZXJJZGVudGlmaWVyLCBzY2hlbWVSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKGlkZW50aWZpZXJSZXN1bHQsIGlkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRy
eSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBhdXRvKiBoYW5kbGVy
ID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlQoaGFuZGxlcik7CisKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVj
ZWl2ZVJlc3BvbnNlKHRhc2tJZGVudGlmaWVyLCByZXNwb25zZSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZTo6dXJsU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRl
bnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSkKK3sKKyAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVI
YW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoaGFuZGxl
cik7CisKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRh
dGEuc2l6ZSgpLCBkYXRhLmRhdGEoKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lSGFu
ZGxlclRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3Qg
dGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQoreworICAgIGF1dG8q
IGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFu
ZGxlcklkZW50aWZpZXIpOworICAgIEFTU0VSVChoYW5kbGVyKTsKKworICAgIGhhbmRsZXItPnRh
c2tEaWRDb21wbGV0ZSh0YXNrSWRlbnRpZmllciwgZXJyb3IpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmlu
ZGV4IGM4MzJlMmNjZWM4OWY3OTY3ODNjMjgwNGE0ZjQyYjU3NjFjZDI5YWUuLjM3ZDgxNDQ3Mzlm
NTdjNjAwNjc3NjFkN2MzNzg1MTk5YTQwYTlhYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIlNoYXJl
YWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQ
b3B1cEluZm8uaD4KQEAgLTE3OCw2ICsxNzksNyBAQCBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7
CiBjbGFzcyBXZWJJbnNwZWN0b3JVSTsKIGNsYXNzIFdlYkdlc3R1cmVFdmVudDsKIGNsYXNzIFdl
YktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk7CiBjbGFzcyBX
ZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50OwogY2xhc3MgV2ViT3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXI7CkBAIC05NjksNiArOTcxLDggQEAgcHVibGljOgogICAgIHZv
aWQgZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0aW9uKCk7CiAjZW5kaWYKIAorICAgIFdlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eSogdXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJp
bmcmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKIApAQCAtMTI2Miw2ICsxMjY2LDEyIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChjb25zdCBTdHJp
bmcmKTsKICNlbmRpZgogCisgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIodWludDY0
X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgdm9pZCB1cmxTY2hl
bWVIYW5kbGVyVGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmll
ciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0
X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZUhhbmRsZXJUYXNrRGlkQ29tcGxl
dGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CkBAIC0xNTQwLDYg
KzE1NTAsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24gbV91c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHsgV2ViQ29yZTo6VXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbjo6TFRSIH07CiAKICAgICBjb25zdCBTdHJpbmcgbV9vdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1
ZV9wdHI8V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Pj4gbV9zY2hlbWVUb1VSTFNjaGVtZUhhbmRs
ZXJQcm94eU1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkqPiBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA3NDZlMjVkOWQwN2UyY2U2OWYwMzJjYjU0
YWU1OTQ2Nzc2NzVhNmJlLi5jZjRmNDY1NjJiNWI4YWE2YjgxNWM5ODQzY2IwYjdhYzkyYjc2ZWM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNDY5LDQgKzQ2OSwxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBEaWRSZWNlaXZlUGFzc3dv
cmRGb3JRdWlja0xvb2tEb2N1bWVudChTdHJpbmcgcGFzc3dvcmQpCiAjZW5kaWYKKworICAgIFJl
Z2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyLCBTdHJpbmcgc2NoZW1l
KQorCisgICAgVVJMU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
cHJvdmlkZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBVUkxTY2hlbWVIYW5kbGVyVGFza0RpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHByb3ZpZGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZp
ZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrRGlk
Q29tcGxldGUodWludDY0X3QgcHJvdmlkZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQ
cm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UwYThkMTJjNTVmNzJmYTZjZWM1NWE3NzU1MDE0ODg0ODQ4
MjVjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmgiCisKKyNpbmNsdWRlICJXZWJFcnJvcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZGVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJv
eHkoV2ViUGFnZSYgcGFnZSwgdWludDY0X3QgaWRlbnRpZmllcikKKyAgICA6IG1fd2ViUGFnZShw
YWdlKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eTo6fldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSgpCit7CisgICAgQVNTRVJU
KG1fdGFza3MuaXNFbXB0eSgpKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6
OnN0YXJ0TmV3VGFzayhSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQoreworICAgIGF1dG8gcmVzdWx0
ID0gbV90YXNrcy5hZGQobG9hZGVyLmlkZW50aWZpZXIoKSwgc3RkOjptYWtlX3VuaXF1ZTxXZWJV
UkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5PigqdGhpcywgbG9hZGVyKSk7CisgICAgQVNTRVJUKHJl
c3VsdC5pc05ld0VudHJ5KTsKKworICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnN0YXJ0TG9h
ZGluZygpOworfQorCisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVj
ZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKK3sKKyAgICBhdXRvKiB0YXNrID0gbV90YXNrcy5nZXQodGFza0lkZW50
aWZpZXIpOworICAgIGlmICghdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgdGFzay0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgc2l6ZV90
IHNpemUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpCit7CisgICAgYXV0byogdGFzayA9IG1fdGFza3Mu
Z2V0KHRhc2tJZGVudGlmaWVyKTsKKyAgICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybjsKKwor
ICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKHNpemUsIGRhdGEpOworfQorCit2b2lkIFdlYlVSTFNj
aGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVy
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBhdXRvIHRhc2sgPSBtX3Rhc2tz
LnRha2UodGFza0lkZW50aWZpZXIpOworICAgIGlmICghdGFzaykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdGFzay0+ZGlkQ29tcGxldGUoZXJyb3IpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxT
Y2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZWZjM2FmMWE1M2VlMWY5Yjgz
ODc2YjhjMDlmNmM0MTk1ZjA2MDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC0wLDAgKzEs
NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrUHJveHkuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3MgUmVzb3VyY2VMb2FkZXI7
CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViUGFnZTsKKworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5IHsKKyAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkpOworcHVibGljOgorICAg
IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eShXZWJQYWdlJiwgdWludDY0X3QgaWRlbnRpZmllcik7
CisgICAgfldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSgpOworCisgICAgdm9pZCBzdGFydE5ld1Rh
c2soV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsKKworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBXZWJQYWdlJiBwYWdlKCkgeyBy
ZXR1cm4gbV93ZWJQYWdlOyB9CisKKyAgICB2b2lkIHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWlu
dDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
KyAgICB2b2lkIHRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgc2l6
ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAgICB2b2lkIHRhc2tEaWRDb21wbGV0ZSh1aW50
NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOworCitw
cml2YXRlOgorICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZp
ZXIgeyAwIH07CisKKyAgICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Pj4gbV90YXNrczsKK307IC8vIGNsYXNzIFdlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFz
a1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyVGFza1Byb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGU2MzZkOGNkNGU5YTY0MmI4MzM5
YTk2MDc5M2E5ZWM1ZjE4ZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwCkBAIC0wLDAg
KzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
VVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2tQcm94eTo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5k
bGVyUHJveHkmIGhhbmRsZXIsIFJlc291cmNlTG9hZGVyJiBsb2FkZXIpCisgICAgOiBtX3VybFNj
aGVtZUhhbmRsZXIoaGFuZGxlcikKKyAgICAsIG1fY29yZUxvYWRlcigmbG9hZGVyKQorICAgICwg
bV9yZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpCit7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2tQcm94eTo6c3RhcnRMb2FkaW5nKCkKK3sKKyAgICBBU1NFUlQobV9jb3JlTG9hZGVy
KTsKKyAgICBtX3VybFNjaGVtZUhhbmRsZXIucGFnZSgpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U3RhcnRVUkxTY2hlbWVIYW5kbGVyVGFzayhtX3VybFNjaGVtZUhhbmRsZXIuaWRlbnRp
ZmllcigpLCBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgbV9yZXF1ZXN0KSk7Cit9CisKK3Zv
aWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3RvcExvYWRpbmcoKQoreworICAgIGlm
ICghbV9jb3JlTG9hZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3VybFNjaGVtZUhhbmRs
ZXIucGFnZSgpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RvcFVSTFNjaGVtZUhhbmRs
ZXJUYXNrKG1fdXJsU2NoZW1lSGFuZGxlci5pZGVudGlmaWVyKCksIG1fY29yZUxvYWRlci0+aWRl
bnRpZmllcigpKSk7CisgICAgbV9jb3JlTG9hZGVyID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJV
UkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKCFtX2NvcmVMb2FkZXIpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY29yZUxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNl
KTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0
YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCogZGF0YSkKK3sKKyAgICBpZiAoIW1fY29yZUxv
YWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0
YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKSwgc2l6ZSwgMCwgRGF0YVBheWxv
YWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVy
VGFza1Byb3h5OjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAg
ICBpZiAoIW1fY29yZUxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGVycm9yLmlz
TnVsbCgpKQorICAgICAgICBtX2NvcmVMb2FkZXItPmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xv
YWRNZXRyaWNzKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9jb3JlTG9hZGVyLT5kaWRGYWlsKGVy
cm9yKTsKKworICAgIG1fY29yZUxvYWRlciA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3ZjI2
MzY1ZWJjNzg5YzA3ZDMwNTg4ZDJiMjMxNDc3NjU0YWE4NwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJlc291cmNlTG9hZGVyOworY2xhc3MgUmVzb3Vy
Y2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eTsKKworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eSB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eSk7Citw
dWJsaWM6CisgICAgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5k
bGVyUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOworCisgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9
CisKKyAgICB2b2lkIHN0YXJ0TG9hZGluZygpOworICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKwor
ICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVfdCwgY29uc3QgdWludDhfdCogZGF0
YSk7CisgICAgdm9pZCBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CisKK3ByaXZhdGU6CisgICAgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5JiBtX3VybFNjaGVtZUhh
bmRsZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJlc291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7
CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKKworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303999</attachid>
            <date>2017-03-09 15:20:29 -0800</date>
            <delta_ts>2017-03-09 16:38:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169422-20170309152029.patch</filename>
            <type>text/plain</type>
            <size>104980</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZjNzNkM2VlY2NmNjYw
ZTA0Yjk1NTUxZDRiMmQ1ZmIwZDQ1ZTY3OC4uYjVjMDFmMTllMDA4ZWY5MGY0ZGExNTUxZTJkNTFj
OTgyMDY4NTdjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTAzLTA5ICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgV0tVUkxTY2hlbWVI
YW5kbGVyIEFQSSBmb3IgaGFuZGxpbmcgY3VzdG9tIHByb3RvY29scy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTQyMgorCisgICAgICAgIFJldmll
d2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpVUkxQYXJzZXI6OmlzU3BlY2lhbFNjaGVtZSk6CisgICAgICAgICog
cGxhdGZvcm0vVVJMUGFyc2VyLmg6CisKIDIwMTctMDMtMDggIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQ3J5cHRvXSBJbXBsZW1lbnQgU3VidGxlQ3J5
cHRvOjpEZXJpdmVLZXkgbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWZhNTViZTc3NjU0NWE4ZTQ4OTll
MDYxN2NmNjA5ZTM3ZTU5NWE5YS4uOTcwODkyMDM2YjU1ZTcyY2FkMjc4MDliNDBmZmY3M2ZmNzBk
NDZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzOSBAQAorMjAxNy0wMy0wOSAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdLVVJMU2NoZW1lSGFuZGxl
ciBBUEkgZm9yIGhhbmRsaW5nIGN1c3RvbSBwcm90b2NvbHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk0MjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBUaW0gSG9ydG9uLgorCisgICAgICAgIFRoaXMgaW50cm9kdWNlcyB0d28gbmV3IHByb3RvY29s
cyB0byB0aGUgV0syIEFQSSBzdXJmYWNlOgorICAgICAgICAtIFdLVVJMU2NoZW1lSGFuZGxlcgor
ICAgICAgICAtIFdLVVJMU2NoZW1lSGFuZGxlclRhc2sKKyAgICAgICAgCisgICAgICAgIEJ5IHJl
Z2lzdGVyaW5nIGFuIG9iamVjdCB0aGF0IGNvbmZvcm1zIHRvIHRoZSBXS1VSTFNjaGVtZUhhbmRs
ZXIgcHJvdG9jb2wgd2l0aCBhIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gYW4gYXBwbGljYXRpb24g
d2lsbAorICAgICAgICBiZSBoYW5kZWQgYW4gb2JqZWN0IGNvbmZvcm1pbmcgdG8gV0tVUkxTY2hl
bWVIYW5kbGVyVGFzayBmb3IgZWFjaCByZXNvdXJjZSBsb2FkIGluIHRoYXQgV0tXZWJWaWV3IHdp
dGggYSBjdXN0b20gVVJMIHNjaGVtZS4KKyAgICAgICAgCisgICAgICAgIFVzaW5nIHRoYXQgaWQg
PFdLVVJMU2NoZW1lSGFuZGxlclRhc2s+LCB0aGUgYXBwbGljYXRpb24gY2FuIGNvbW11bmljYXRl
IHRoZSBkYXRhIGZvciB0aGUgcmVzb3VyY2UgYmFjayB0byBXZWJLaXQuCisgICAgICAgIAorICAg
ICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorCisgICAgICAg
ICogU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVS
TFNjaGVtZUhhbmRsZXJUYXNrLmNwcDogCisgICAgICAgIChBUEk6OlVSTFNjaGVtZUhhbmRsZXJU
YXNrOjpjcmVhdGUpOgorICAgICAgICAoQVBJOjpVUkxTY2hlbWVIYW5kbGVyVGFzazo6VVJMU2No
ZW1lSGFuZGxlclRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVVJMU2NoZW1lSGFu
ZGxlclRhc2suaDogCisKKyAgICAgICAgQWRkIHRoZSBXS1VSTFNjaGVtZUhhbmRsZXIgQHByb3Rv
Y29sOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLmg6
IEFkZGVkLgorCisgICAgICAgIEFkZCB0aGUgV0tVUkxTY2hlbWVIYW5kbGVyVGFzayBAcHJvdG9j
b2wsIGFzIHdlbGwgYXMgV2ViS2l0J3MgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgaXQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmg6IEFk
ZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFz
ay5tbTogQWRkZWQuCisgICAgICAgIChyYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKC1bV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgcmVxdWVzdF0pOgorICAgICAgICAoLVtX
S1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAg
ICgtW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGRpZFJlY2VpdmVEYXRhOl0pOgorICAgICAg
ICAoLVtXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW1wbCBkaWRGaW5pc2hdKToKKyAgICAgICAgKC1b
V0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAg
KC1bV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmg6IAorICAg
ICAgICAoV2ViS2l0Ojp3cmFwcGVyKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06
CisgICAgICAgICgtW1dLV2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgdXJsU2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTpdKToKKyAg
ICAgICAgKCtbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6XSk6CisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gY29weVdpdGhab25lOl0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6Zm9yVVJMU2NoZW1lOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXdDb25maWd1cmF0aW9uIHVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hl
bWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3VybFNjaGVtZUhhbmRs
ZXJzXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uSW50ZXJuYWwuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2EuaDogCisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2Nv
YTo6YXBpSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJDb2NvYTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hOjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyQ29jb2E6OnBsYXRmb3JtU3RhcnRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpwbGF0Zm9ybVN0b3BUYXNrKToKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c3RhcnRVUkxTY2hlbWVIYW5kbGVyVGFzayk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6c3RvcFVSTFNjaGVtZUhhbmRsZXJUYXNrKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcDog
CisgICAgICAgIChXZWJLaXQ6OmdlbmVyYXRlV2ViVVJMU2NoZW1lSGFuZGxlcklkZW50aWZpZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpXZWJVUkxTY2hlbWVIYW5k
bGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcjo6fldlYlVSTFNjaGVt
ZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRh
c2spOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdG9wVGFzayk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaDogCisgICAgICAgIChXZWJL
aXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI6OmlkZW50aWZpZXIpOgorCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyVGFzazo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmRpZFJlY2VpdmVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmRpZENvbXBsZXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OnBhZ2VEZXN0cm95ZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6c3RvcCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6aWRlbnRpZmllcik6CisgICAgICAg
IChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpyZXF1ZXN0KToKKworICAgICAgICAq
IFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxlckZvclNj
aGVtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxl
cik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVtZUhhbmRsZXJUYXNrRGlkUmVj
ZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxl
clRhc2tEaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVt
ZUhhbmRsZXJUYXNrRGlkQ29tcGxldGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5Ojp+V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OjpzdGFydE5ld1Rhc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNl
aXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFz
a0RpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6cGFnZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2tQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyVGFza1Byb3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3RhcnRMb2FkaW5nKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3RvcExvYWRpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRSZWNl
aXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1By
b3h5OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrUHJveHk6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFza1Byb3h5OjpyZXF1ZXN0KToKKworICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAx
Ny0wMy0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgcGx1bWJpbmcgZm9yIFdlYkNvcmUgdG8gbm90aWZ5IFdlYktpdDIgd2hlbiBhbiBlZGl0
IGRyYWcgaGFzIGNvbmNsdWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5jcHAKaW5k
ZXggZDFmOGZlODRhOGU2M2Y0NzRjMjNjZGI3ZDNkODM5MDA5MjA3MmRhYi4uYTY5MTRjY2UzOTg3
NzlmYzgyYmY3ZDY0NzFkZTQ0NDkyZjc0MDgyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQ
YXJzZXIuY3BwCkBAIC03OTAsNiArNzkwLDI4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIFNjaGVt
ZSBzY2hlbWUoU3RyaW5nVmlldyBzY2hlbWUpCiAgICAgfQogfQogCitzdGQ6Om9wdGlvbmFsPFN0
cmluZz4gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShjb25zdCBTdHJpbmcmIHNj
aGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKworICAgIGlmICghaXNBU0NJSUFscGhhKHNjaGVtZVswXSkpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHNjaGVtZS5s
ZW5ndGgoKTsgKytpKSB7CisgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFudW1lcmljKHNjaGVtZVtp
XSkgfHwgc2NoZW1lW2ldID09ICcrJyB8fCBzY2hlbWVbaV0gPT0gJy0nIHx8IHNjaGVtZVtpXSA9
PSAnLicpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB9CisKKyAgICByZXR1cm4gc2NoZW1lLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7
Cit9CisKK2Jvb2wgVVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hl
bWVBcmcpCit7CisgICAgcmV0dXJuIHNjaGVtZShzY2hlbWVBcmcpICE9IFNjaGVtZTo6Tm9uU3Bl
Y2lhbDsKK30KKwogZW51bSBjbGFzcyBVUkxQYXJzZXI6OlVSTFBhcnQgewogICAgIFNjaGVtZUVu
ZCwKICAgICBVc2VyU3RhcnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9V
UkxQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5oCmluZGV4IDcz
Y2ExODhmZDdlZjBiMmRhODg3MjE2MGNhODg2OGMxODc5MzA1OTUuLjU3MDhhNGZmN2NmNjcxYjRk
NTkzNTIzNjcxMWQ2NzJmNThjNTU5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1VSTFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5o
CkBAIC01MCw2ICs1MCw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBVSUROQSYgaW50
ZXJuYXRpb25hbERvbWFpbk5hbWVUcmFuc2NvZGVyKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgYm9vbCBpc1NwZWNpYWxTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWF5YmVDYW5vbmljYWxp
emVTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCiBwcml2YXRlOgogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3RvY29sKFN0cmluZ1ZpZXcp
OwogICAgIGZyaWVuZCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBkZWZhdWx0UG9ydEZvclByb3Rv
Y29sKFN0cmluZ1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCAwZmQyZWYyMmZkYjJlZTU1
NThhZDU1MDZhNjJjNjAxYzkyOWNmNDMwLi41MjVkZjU5MjRkZWRkYmY2YTFhMjczZmE5MTE1NGRj
ODZkMmMyZDk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMzI2LDYgKzMyNiw4IEBAIHNldChX
ZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5j
cHAKICAgICBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKyAgICBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKKyAg
ICBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwCiAgICAgVUlQcm9jZXNzL1dl
YlZpYnJhdGlvblByb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5j
cHAKICAgICBVSVByb2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNwcApAQCAtMzM5LDYgKzM0
MSw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSU9wZW5QYW5lbFBhcmFt
ZXRlcnMuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElTZXNzaW9uU3RhdGUuY3BwCisgICAgVUlQ
cm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKICAgICBVSVByb2Nlc3MvQVBJ
L0FQSVVzZXJDb250ZW50RXh0ZW5zaW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwCkBAIC01NzksMTAgKzU4MiwxMCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2VHcm91cFByb3h5LmNwcAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlT3Zlcmxh
eS5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNw
cAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNw
cAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVbmRvU3RlcC5jcHAKIAotCi0KICAgICAke05l
dHdvcmtQcm9jZXNzX0NPTU1PTl9TT1VSQ0VTfQogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9B
UElPYmplY3QuaAppbmRleCBmMmNiMDU0MGEzMWQwNTQ0OGZlMmI4ZjVlODM1YTJmM2Q3ZGFjODA5
Li43N2EyNjc1ZWQ1MzQ0OTlmMDcyYmEyMmJiZGYwYTgzMTNmYjI3YWFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIFJ1bkphdmFTY3JpcHRDb25maXJtUmVzdWx0TGlzdGVuZXIsCiAgICAgICAgIFJ1bkphdmFT
Y3JpcHRQcm9tcHRSZXN1bHRMaXN0ZW5lciwKICAgICAgICAgVGV4dENoZWNrZXIsCisgICAgICAg
IFVSTFNjaGVtZUhhbmRsZXJUYXNrLAogICAgICAgICBVc2VyQ29udGVudENvbnRyb2xsZXIsCiAg
ICAgICAgIFVzZXJDb250ZW50RXh0ZW5zaW9uLAogICAgICAgICBVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggOGVj
YjUzMzM4NjAyYzA3ZjgyZjIxYWM3ODU1NWJjNmQyYTk1ZjBiYy4uZmJiOGU4OGRhOWZmZmUwODg1
MDhlYTIzYjk1ZWE1ODEwYTA3MzU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCkBAIC01MSw2ICs1MSw3IEBACiAjaW1wb3J0ICJXS1ByZWZlcmVuY2VzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLUHJvY2Vzc1Bvb2xJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tTZWN1
cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0ICJXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldLVXNlckNvbnRlbnRDb250cm9sbGVySW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLVXNlclNjcmlwdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlByb2Nlc3NQbHVn
SW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJJbnRlcm5hbC5oIgpAQCAtMjI1LDYgKzIyNiwxMCBA
QCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAg
ICB3cmFwcGVyID0gTlNBbGxvY2F0ZU9iamVjdChbV0tOU1VSTFJlcXVlc3QgY2xhc3NdLCBzaXpl
LCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6OlVSTFNjaGVtZUhh
bmRsZXJUYXNrOgorICAgICAgICB3cmFwcGVyID0gW1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBs
IGFsbG9jXTsKKyAgICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6OlVzZXJDb250ZW50Q29u
dHJvbGxlcjoKICAgICAgICAgd3JhcHBlciA9IFtXS1VzZXJDb250ZW50Q29udHJvbGxlciBhbGxv
Y107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDE0MjkyZjk5YTcyYmNkNzc4ZWFlOGU3MzY5
NmU5NzMxZWZjYTYwYTAuLmU4NWNkMTBmNWUwNTE1ZThjZmUxZjBlZDIwMDJhODliOWVkNmE1NDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5jcHAKQEAgLTkzLDYgKzkzLDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIuZW5jb2Rl
RW51bSh1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0ob2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzKTsKICAgICBlbmNvZGVyIDw8IG92ZXJyaWRlQ29u
dGVudFNlY3VyaXR5UG9saWN5OworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lSGFuZGxlcnM7CiAj
aWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgZW5jb2RlciA8PCBpY2VDYW5kaWRhdGVGaWx0ZXJpbmdF
bmFibGVkOwogI2lmIFVTRShMSUJXRUJSVEMpCkBAIC0yMjEsNiArMjIyLDkgQEAgYm9vbCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBXZWJQ
YWdlQ3JlYXRpb25QYXIKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJp
ZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lSGFuZGxlcnMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhcmFtZXRlcnMuaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCmluZGV4IDIwODFiMDc5MzE1ODYzMThmOTU1YmFiZDk3Y2M0ZjFjYWIx
M2QzNzEuLmI0ZmU2ZTY2NDViYzk3MTE5MDdiYzRjNDc5MmRhZTk5NmRmNzZkZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC0xNDYsNiArMTQ3LDgg
QEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgU3RyaW5nIG92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5OwogCisgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90
PiB1cmxTY2hlbWVIYW5kbGVyczsKKwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIGJvb2wgaWNl
Q2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCB7IHRydWUgfTsKICNpZiBVU0UoTElCV0VCUlRDKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVUkxTY2hlbWVIYW5k
bGVyVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhh
bmRsZXJUYXNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzQyMDFjOTE1MjA0MzNlZjE0ZjNmNzZkOTY4Y2U1
NGE2NDgwYTJmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElVUkxTY2hlbWVIYW5kbGVyVGFz
ay5oIgorCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorI2luY2x1ZGUgIldlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrLmgiCisKK25hbWVzcGFjZSBBUEkgeworCitSZWY8VVJMU2NoZW1l
SGFuZGxlclRhc2s+IFVSTFNjaGVtZUhhbmRsZXJUYXNrOjpjcmVhdGUoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzayYgd2ViVVJMU2NoZW1lSGFuZGxlclRhc2spCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVVJMU2NoZW1lSGFuZGxlclRhc2sod2ViVVJMU2NoZW1lSGFuZGxlclRh
c2spKTsKK30KKworVVJMU2NoZW1lSGFuZGxlclRhc2s6OlVSTFNjaGVtZUhhbmRsZXJUYXNrKFdl
YktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2smIHdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrKQor
ICAgIDogbV93ZWJVUkxTY2hlbWVIYW5kbGVyVGFzayh3ZWJVUkxTY2hlbWVIYW5kbGVyVGFzaykK
K3sKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
UkxTY2hlbWVIYW5kbGVyVGFzay5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElV
UkxTY2hlbWVIYW5kbGVyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlMzE1MDhmZDA5ZTI1YTk0M2VjYjdj
NDRlOTIyYWQ2OTZmMDlhYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmgKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s7Cit9CisKK25hbWVz
cGFjZSBBUEkgeworCitjbGFzcyBVUkxTY2hlbWVIYW5kbGVyVGFzayBmaW5hbCA6IHB1YmxpYyBP
YmplY3RJbXBsPE9iamVjdDo6VHlwZTo6VVJMU2NoZW1lSGFuZGxlclRhc2s+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPFVSTFNjaGVtZUhhbmRsZXJUYXNrPiBjcmVhdGUoV2ViS2l0OjpXZWJV
UkxTY2hlbWVIYW5kbGVyVGFzayYpOworCisgICAgV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVy
VGFzayYgdGFzaygpIHsgcmV0dXJuIG1fd2ViVVJMU2NoZW1lSGFuZGxlclRhc2suZ2V0KCk7IH0K
KworcHJpdmF0ZToKKyAgICBVUkxTY2hlbWVIYW5kbGVyVGFzayhXZWJLaXQ6OldlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrJik7CisKKyAgICBSZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFz
az4gbV93ZWJVUkxTY2hlbWVIYW5kbGVyVGFzazsKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM0MzFiYzUwNTdjNTJlMGQ5OTNkZjM1ODA2Mzc3ZWU5NjhlMzNlMTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQv
V0tGb3VuZGF0aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGNsYXNzIFdL
V2ViVmlldzsKK0Bwcm90b2NvbCBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrOworCisvKiEgQSBjbGFz
cyBjb25mb3JtaW5nIHRvIHRoZSBXS1VSTFNjaGVtZUhhbmRsZXIgcHJvdG9jb2wgcHJvdmlkZXMg
bWV0aG9kcyBmb3IKKyBsb2FkaW5nIHJlc291cmNlcyB3aXRoIFVSTCBzY2hlbWVzIHRoYXQgV2Vi
S2l0IGRvZXNuJ3Qga25vdyBob3cgdG8gaGFuZGxlIGl0c2VsZi4KKyAqLworV0tfQVBJX0FWQUlM
QUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0Bwcm90b2NvbCBXS1VS
TFNjaGVtZUhhbmRsZXIgPE5TT2JqZWN0PgorCisvKiEgQGFic3RyYWN0IE5vdGlmaWVzIHlvdXIg
YXBwIHRvIHN0YXJ0IGxvYWRpbmcgdGhlIGRhdGEgZm9yIGEgcGFydGljdWxhciByZXNvdXJjZSAK
KyByZXByZXNlbnRlZCBieSB0aGUgVVJMIHNjaGVtZSBoYW5kbGVyIHRhc2suCisgQHBhcmFtIHdl
YlZpZXcgVGhlIHdlYiB2aWV3IGludm9raW5nIHRoZSBtZXRob2QuCisgQHBhcmFtIHVybFNjaGVt
ZUhhbmRsZXJUYXNrIFRoZSB0YXNrIHRoYXQgeW91ciBhcHAgc2hvdWxkIHN0YXJ0IGxvYWRpbmcg
ZGF0YSBmb3IuCisgKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFy
dFRhc2s6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXJUYXNrPil1cmxTY2hlbWVIYW5kbGVyVGFzazsK
KworLyohIEBhYnN0cmFjdCBOb3RpZmllcyB5b3VyIGFwcCB0byBzdG9wIGhhbmRsaW5nIGEgVVJM
IHNjaGVtZSBoYW5kbGVyIHRhc2suCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IGludm9r
aW5nIHRoZSBtZXRob2QuCisgQHBhcmFtIHVybFNjaGVtZUhhbmRsZXJUYXNrIFRoZSB0YXNrIHRo
YXQgeW91ciBhcHAgc2hvdWxkIHN0b3AgaGFuZGxpbmcuCisgQGRpc2N1c3Npb24gQWZ0ZXIgeW91
ciBhcHAgaXMgdG9sZCB0byBzdG9wIGxvYWRpbmcgZGF0YSBmb3IgYSBVUkwgc2NoZW1lIGhhbmRs
ZXIgdGFzaworIGl0IG11c3Qgbm90IHBlcmZvcm0gYW55IGNhbGxiYWNrcyBmb3IgdGhhdCB0YXNr
LgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiBhbnkgY2FsbGJhY2tzIGFyZSBtYWRl
IG9uIHRoZSBVUkwgc2NoZW1lIGhhbmRsZXIgdGFzaworIGFmdGVyIHlvdXIgYXBwIGhhcyBiZWVu
IHRvbGQgdG8gc3RvcCBsb2FkaW5nIGZvciBpdC4KKyAqLworLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHN0b3BUYXNrOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4pdXJs
U2NoZW1lSGFuZGxlclRhc2s7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VS
TFNjaGVtZUhhbmRsZXJUYXNrLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVVJMU2NoZW1lSGFuZGxlclRhc2suaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOWZlMzk2NWU4YjM4ZTAwNzYy
YzU5MzYwYjdlZWJmZmI1NmY1YTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmgKQEAgLTAsMCArMSw3
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lm
IFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorCitO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQHByb3RvY29sIFdLVVJMU2NoZW1lSGFuZGxlclRhc2sg
PE5TT2JqZWN0PgorCisvKiEgQGFic3RyYWN0IFRoZSByZXF1ZXN0IHRvIGxvYWQgZm9yIHRoaXMg
dGFzay4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTFJl
cXVlc3QgKnJlcXVlc3Q7CisKKy8qISBAYWJzdHJhY3QgU2V0IHRoZSBjdXJyZW50IHJlc3BvbnNl
IG9iamVjdCBmb3IgdGhlIHRhc2suCisgQHBhcmFtIHJlc3BvbnNlIFRoZSByZXNwb25zZSB0byB1
c2UuCisgQGRpc2N1c3Npb24gVGhpcyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgYXQgbGVhc3Qgb25j
ZSBmb3IgZWFjaCBVUkwgc2NoZW1lIGhhbmRsZXIgdGFzay4KKyBBbiBleGNlcHRpb24gd2lsbCBi
ZSB0aHJvd24gaWYgeW91IHRyeSB0byBzZW5kIGEgbmV3IHJlc3BvbnNlIG9iamVjdCBhZnRlciB0
aGUgdGFzayBoYXMgYWxyZWFkeSBiZWVuIGNvbXBsZXRlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBi
ZSB0aHJvd24gaWYgeW91ciBhcHAgaGFzIGJlZW4gdG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0
YXNrIHZpYSB0aGUgcmVnaXN0ZXJlZCBXS1VSTFNjaGVtZUhhbmRsZXIgb2JqZWN0LgorICovCist
ICh2b2lkKWRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOworCisv
KiEgQGFic3RyYWN0IEFkZCByZWNlaXZlZCBkYXRhIHRvIHRoZSB0YXNrLgorIEBwYXJhbSBkYXRh
IFRoZSBkYXRhIHRvIGFkZC4KKyBAZGlzY3Vzc2lvbiBBZnRlciBhIFVSTCBzY2hlbWUgaGFuZGxl
ciB0YXNrJ3MgZmluYWwgcmVzcG9uc2Ugb2JqZWN0IGlzIHJlY2VpdmVkIHlvdSBzaG91bGQKKyBz
dGFydCBzZW5kaW5nIGl0IGRhdGEuCisgRWFjaCB0aW1lIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB0
aGUgZGF0YSB5b3Ugc2VuZCB3aWxsIGJlIGFwcGVuZGVkIHRvIGFsbCBwcmV2aW91cyBkYXRhLgor
IEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5IHRvIHNlbmQgdGhlIHRhc2sg
YW55IGRhdGEgYmVmb3JlIHNlbmRpbmcgaXQgYSByZXNwb25zZS4KKyBBbiBleGNlcHRpb24gd2ls
bCBiZSB0aHJvd24gaWYgeW91IHRyeSB0byBzZW5kIHRoZSB0YXNrIGFueSBkYXRhIGFmdGVyIHRo
ZSB0YXNrIGhhcyBhbHJlYWR5IGJlZW4gY29tcGxldGVkLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJl
IHRocm93biBpZiB5b3VyIGFwcCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyB0aGlzIHRh
c2sgdmlhIHRoZSByZWdpc3RlcmVkIFdLVVJMU2NoZW1lSGFuZGxlciBvYmplY3QuCisgKi8KKy0g
KHZvaWQpZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAqKWRhdGE7CisKKy8qISBAYWJzdHJhY3QgTWFy
ayB0aGUgdGFzayBhcyBzdWNjZXNzZnVsbHkgY29tcGxldGVkLgorIEBkaXNjdXNzaW9uIEFuIGV4
Y2VwdGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5IHRvIGZpbmlzaCB0aGUgdGFzayBiZWZv
cmUgc2VuZGluZyBpdCBhIHJlc3BvbnNlLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93biBp
ZiB5b3UgdHJ5IHRvIG1hcmsgYSB0YXNrIGNvbXBsZXRlZCBhZnRlciBpdCBoYXMgYWxyZWFkeSBi
ZWVuIG1hcmtlZCBjb21wbGV0ZWQgb3IgZmFpbGVkLgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRo
cm93biBpZiB5b3VyIGFwcCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyB0aGlzIHRhc2sg
dmlhIHRoZSByZWdpc3RlcmVkIFdLVVJMU2NoZW1lSGFuZGxlciBvYmplY3QuCisgKi8KKy0gKHZv
aWQpZGlkRmluaXNoOworCisvKiEgQGFic3RyYWN0IE1hcmsgdGhlIHRhc2sgYXMgZmFpbGVkLgor
IEBwYXJhbSBlcnJvciBBIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvciB0aGF0IGNhdXNlZCB0aGUg
dGFzayB0byBmYWlsLgorIEBkaXNjdXNzaW9uICBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24g
aWYgeW91IHRyeSB0byBtYXJrIGEgdGFzayBmYWlsZWQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVl
biBtYXJrZWQgY29tcGxldGVkIG9yIGZhaWxlZC4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJv
d24gaWYgeW91ciBhcHAgaGFzIGJlZW4gdG9sZCB0byBzdG9wIGxvYWRpbmcgdGhpcyB0YXNrIHZp
YSB0aGUgcmVnaXN0ZXJlZCBXS1VSTFNjaGVtZUhhbmRsZXIgb2JqZWN0LgorICovCistICh2b2lk
KWRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKworQGVuZAorCitOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2subW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDBlODY4YjgxOTgyYjlkZGNjMDA2NjExNjliOTdmMjEzNzIzNDc5YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
VGFzay5tbQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQ
SV9FTkFCTEVECisKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgdm9pZCByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5
KFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGUgZXhjZXB0aW9u
VHlwZSkKK3sKKyAgICBzd2l0Y2ggKGV4Y2VwdGlvblR5cGUpIHsKKyAgICBjYXNlIFdlYktpdDo6
V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vbmU6CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlv
blR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZDoKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIlRoaXMgdGFzayBoYXMgYWxy
ZWFkeSBiZWVuIHN0b3BwZWQiXTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlOjpDb21wbGV0ZUFscmVhZHlDYWxs
ZWQ6CisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludGVybmFsSW5jb25zaXN0ZW5jeUV4
Y2VwdGlvbiBmb3JtYXQ6QCJbV0tVUkxTY2hlbWVIYW5kbGVyVGFzayB0YXNrRGlkQ29tcGxldGVX
aXRoRXJyb3I6XSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBmb3IgdGhpcyB0YXNrIl07CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhj
ZXB0aW9uVHlwZTo6RGF0YUFscmVhZHlTZW50OgorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6
TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiW1dLVVJMU2NoZW1lSGFu
ZGxlclRhc2sgdGFza0RpZFJlY2VpdmVEYXRhOl0gaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9y
IHRoaXMgdGFzayJdOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYktpdDo6V2ViVVJMU2No
ZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OgorICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0
OkAiTm8gcmVzcG9uc2UgaGFzIGJlZW4gc2VudCBmb3IgdGhpcyB0YXNrIl07CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworQGltcGxlbWVudGF0aW9uIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJ
bXBsCisKKy0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICByZXR1cm4gX3VybFNjaGVt
ZUhhbmRsZXJUYXNrLT50YXNrKCkucmVxdWVzdCgpLm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhU
VFBCb2R5KTsKK30KKworLSAodm9pZClkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2Ug
KilyZXNwb25zZQoreworICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50
YXNrKCkuZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKyAgICByYWlzZUV4Y2VwdGlvbklm
TmVjZXNzYXJ5KHJlc3VsdCk7Cit9CisKKy0gKHZvaWQpZGlkUmVjZWl2ZURhdGE6KE5TRGF0YSAq
KWRhdGEKK3sKKyAgICBhdXRvIHJlc3VsdCA9IF91cmxTY2hlbWVIYW5kbGVyVGFzay0+dGFzaygp
LmRpZFJlY2VpdmVEYXRhKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShkYXRhKSk7
CisgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShyZXN1bHQpOworfQorCistICh2b2lkKWRp
ZEZpbmlzaAoreworICAgIGF1dG8gcmVzdWx0ID0gX3VybFNjaGVtZUhhbmRsZXJUYXNrLT50YXNr
KCkuZGlkQ29tcGxldGUoeyB9KTsKKyAgICByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3Vs
dCk7Cit9CisKKy0gKHZvaWQpZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7Cisg
ICAgYXV0byByZXN1bHQgPSBfdXJsU2NoZW1lSGFuZGxlclRhc2stPnRhc2soKS5kaWRDb21wbGV0
ZShlcnJvcik7CisgICAgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShyZXN1bHQpOworfQorCisj
cHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpP
YmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl91cmxTY2hlbWVIYW5kbGVyVGFzazsK
K30KKworQGVuZAorCisjZW5kaWYgLy8gI2lmIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVt
ZUhhbmRsZXJUYXNrSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjQ2ODAxZjU4MzY2NmNhMzE1ODE2
MDZhZDI4NjA4ZjYyYTQ4ZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaApAQCAtMCww
ICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5o
IgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJVVJMU2NoZW1lSGFuZGxlclRh
c2suaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK0BpbnRlcmZhY2UgV0tVUkxTY2hlbWVIYW5k
bGVyVGFza0ltcGwgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4KK0BlbmQKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2lubGluZSBpZDxXS1VSTFNjaGVtZUhhbmRsZXJUYXNrPiB3
cmFwcGVyKEFQSTo6VVJMU2NoZW1lSGFuZGxlclRhc2smIHVybFNjaGVtZUhhbmRsZXJUYXNrKQor
eworICAgIEFTU0VSVChbdXJsU2NoZW1lSGFuZGxlclRhc2sud3JhcHBlcigpIGlzS2luZE9mQ2xh
c3M6W1dLVVJMU2NoZW1lSGFuZGxlclRhc2tJbXBsIGNsYXNzXV0pOworICAgIHJldHVybiAoaWQ8
V0tVUkxTY2hlbWVIYW5kbGVyVGFzaz4pdXJsU2NoZW1lSGFuZGxlclRhc2sud3JhcHBlcigpOwor
fQorCit9CisKK0BpbnRlcmZhY2UgV0tVUkxTY2hlbWVIYW5kbGVyVGFza0ltcGwgKCkgPFdLT2Jq
ZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6OlVSTFNjaGVtZUhh
bmRsZXJUYXNrPiBfdXJsU2NoZW1lSGFuZGxlclRhc2s7Cit9CitAZW5kCisKKyNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3LmgKaW5kZXggNWMyZWNjOGUwNDdhN2I1NmRjOTc0ZDJmZTMxMzBlYTgxMzE3MzhiMi4u
MDkwNThkYjQ4ZGI0MDc5N2I0ZTZkNWU2MGI0YWUyYmI3MGE2ODEzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC0yNzksNiArMjc5LDEx
IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSkKIAogI2VuZGlm
CiAKKy8qIEBhYnN0cmFjdCBDaGVja3Mgd2hldGhlciBvciBub3QgV0tXZWJWaWV3cyBoYW5kbGUg
dGhlIGdpdmVuIFVSTCBzY2hlbWUgYnkgZGVmYXVsdC4KKyBAcGFyYW0gc2NoZW1lIFRoZSBVUkwg
c2NoZW1lIHRvIGNoZWNrLgorICovCisrIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5n
ICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworCiBAZW5kCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4OTdhMmI3ODMz
YzcwZTkzMmYwYTk1M2ZiOGY3NzA0ZTMyODQzYmJjLi5iZTQyYTQxYzllZWY2NWUwZDM1NzNmZGJi
NjY2NzAxNWZmZGU0MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQpAQCAtNzgsNiArNzgsNyBAQAogI2ltcG9ydCAiV2ViUHJlZmVyZW5j
ZXNLZXlzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisjaW1wb3J0ICJXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKICNpbXBvcnQg
IldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgi
CiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKQEAgLTEwMCw2ICsxMDEsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFN0cmVhbS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9VUkxQYXJzZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVmFsaWRhdGlvbkJ1YmJsZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Xcml0aW5nTW9kZS5oPgogI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KQEAg
LTU3Myw2ICs1NzUsMTAgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihX
S1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogICAgIFtzZWxmIF9zZXRVcFNR
TGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudF07CiAjZW5kaWYKIAorICAgIGF1dG8gKmhhbmRsZXJz
ID0gX2NvbmZpZ3VyYXRpb24uZ2V0KCkuX3VybFNjaGVtZUhhbmRsZXJzOworICAgIGZvciAoTlNT
dHJpbmcgKmtleSBpbiBoYW5kbGVycykKKyAgICAgICAgX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRs
ZXJGb3JTY2hlbWUoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2E6OmNyZWF0ZShoYW5k
bGVyc1trZXldKSwga2V5KTsKKwogICAgIHBhZ2VUb1ZpZXdNYXAoKS5hZGQoX3BhZ2UuZ2V0KCks
IHNlbGYpOwogfQogCkBAIC0zNDk2LDYgKzM1MDIsMTcgQEAgLSAodm9pZClfaW50ZXJhY3RXaXRo
TWVkaWFDb250cm9sc0ZvclRlc3RpbmcKIAogI2VuZGlmIC8vIEhBVkUoVE9VQ0hfQkFSKQogCist
IChpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyRm9yVVJMU2NoZW1lOihO
U1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIGF1dG8qIGhhbmRsZXIgPSBzdGF0aWNfY2FzdDxX
ZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSo+KF9wYWdlLT51cmxTY2hlbWVIYW5kbGVy
Rm9yU2NoZW1lKHVybFNjaGVtZSkpOworICAgIHJldHVybiBoYW5kbGVyID8gaGFuZGxlci0+YXBp
SGFuZGxlcigpIDogbmlsOworfQorCisrIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5n
ICopdXJsU2NoZW1lCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVSTFBhcnNlcjo6aXNTcGVjaWFs
U2NoZW1lKHVybFNjaGVtZSk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmll
dyAoV0tQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAppbmRleCAzYWRhYmJjMTI4ZTlhOTBm
NzU4YzMxYjgyODUxMjFjNDA3ZTNhYmZkLi5jYmQ3NDk0OGQ1Y2RkMTVmOWVkOGFmMzMxZTQ1NDc4
NzY5MTA0Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaApAQCAtMzYsNiArMzYsNyBAQCBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdLUHJvY2Vzc1Bvb2w7CiBAY2xhc3MgV0tVc2Vy
Q29udGVudENvbnRyb2xsZXI7CiBAY2xhc3MgV0tXZWJzaXRlRGF0YVN0b3JlOworQHByb3RvY29s
IFdLVVJMU2NoZW1lSGFuZGxlcjsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIApAQCAtMTc1LDYg
KzE3NiwyNSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCiAK
ICNlbmRpZgogCisvKiBAYWJzdHJhY3QgU2V0cyB0aGUgVVJMIHNjaGVtZSBoYW5kbGVyIG9iamVj
dCBmb3IgdGhlIGdpdmVuIFVSTCBzY2hlbWUuCisgQHBhcmFtIHVybFNjaGVtZUhhbmRsZXIgVGhl
IG9iamVjdCB0byByZWdpc3Rlci4KKyBAcGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRoZSBv
YmplY3Qgd2lsbCBoYW5kbGUuCisgQGRpc2N1c3Npb24gRWFjaCBVUkwgc2NoZW1lIGNhbiBvbmx5
IGhhdmUgb25lIFVSTCBzY2hlbWUgaGFuZGxlciBvYmplY3QgcmVnaXN0ZXJlZC4KKyBBbiBleGNl
cHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRyeSB0byByZWdpc3RlciBhbiBvYmplY3QgZm9y
IGEgcGFydGljdWxhciBVUkwgc2NoZW1lIG1vcmUgdGhhbiBvbmNlLgorIFVSTCBzY2hlbWVzIGFy
ZSBjYXNlIGluc2Vuc2l0aXZlLiBlLmcuICJteXByb3RvY29sIiBhbmQgIk15UHJvdG9jb2wiIGFy
ZSBlcXVpdmFsZW50LgorIFZhbGlkIFVSTCBzY2hlbWVzIG11c3Qgc3RhcnQgd2l0aCBhbiBBU0NJ
SSBsZXR0ZXIgYW5kIGNhbiBvbmx5IGNvbnRhaW4gQVNDSUkgbGV0dGVycywgbnVtYmVycywgdGhl
ICcrJyBjaGFyYWN0ZXIsCisgdGhlICctJyBjaGFyYWN0ZXIsIGFuZCB0aGUgJy4nIGNoYXJhY3Rl
ci4KKyBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgeW91IHRyeSB0byByZWdpc3RlciBh
IFVSTCBzY2hlbWUgaGFuZGxlciBmb3IgYW4gaW52YWxpZCBVUkwgc2NoZW1lLgorIEFuIGV4Y2Vw
dGlvbiB3aWxsIGJlIHRocm93biBpZiB5b3UgdHJ5IHRvIHJlZ2lzdGVyIGEgVVJMIHNjaGVtZSBo
YW5kbGVyIGZvciBhIFVSTCBzY2hlbWUgdGhhdCBXZWJLaXQgaGFuZGxlcyBpbnRlcm5hbGx5Lgor
IFlvdSBjYW4gdXNlICtbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6XSB0byBjaGVjayB0aGUg
YXZhaWxhYmlsaXR5IG9mIGEgZ2l2ZW4gVVJMIHNjaGVtZS4KKyAqLworLSAodm9pZClzZXRVUkxT
Y2hlbWVIYW5kbGVyOihudWxsYWJsZSBpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVI
YW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qIEBhYnN0cmFjdCBS
ZXR1cm5zIHRoZSBjdXJyZW50bHkgcmVnaXN0ZXJlZCBVUkwgc2NoZW1lIGhhbmRsZXIgb2JqZWN0
IGZvciB0aGUgZ2l2ZW4gVVJMIHNjaGVtZS4KKyBAcGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1l
IHRvIGxvb2t1cC4KKyAqLworLSAobnVsbGFibGUgaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJs
U2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAog
QGludGVyZmFjZSBXS1dlYlZpZXdDb25maWd1cmF0aW9uIChXS0RlcHJlY2F0ZWQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24ubW0KaW5kZXggNThjMTg1MjM4MzdlNzZjNTY0NzlhMjA5MTQ0MGVhOTBkODZh
YzM4Yi4uM2QwMTgyNWRmNjVhNjU0YjA3OWQzNjcyYzEzODM1Zjc1NWZhYjg3ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi5tbQpAQCAtMzMsMTEgKzMzLDE0IEBACiAjaW1wb3J0ICJXS1ByZWZlcmVu
Y2VzLmgiCiAjaW1wb3J0ICJXS1Byb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJXS1VzZXJDb250ZW50
Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdD
b250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgogI2ltcG9ydCAiV2Vha09iakNQdHIuaCIKKyNpbXBv
cnQgIldlYktpdDJJbml0aWFsaXplLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlLmgi
CiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNv
cmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1VSTFBhcnNl
ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAt
OTQsNiArOTcsNyBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3Q29uZmlndXJhdGlvbiB7CiAg
ICAgV2ViS2l0OjpXZWFrT2JqQ1B0cjxXS1dlYlZpZXc+IF9hbHRlcm5hdGVXZWJWaWV3Rm9yTmF2
aWdhdGlvbkdlc3R1cmVzOwogICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2dyb3VwSWRlbnRpZmll
cjsKICAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPE5TU3RyaW5nPj4gX2FwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudDsKKyAgICBMYXp5SW5pdGlhbGl6ZWQ8UmV0YWluUHRyPE5TTXV0YWJs
ZURpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4+Pj4gX3VybFNj
aGVtZUhhbmRsZXJzOwogICAgIE5TVGltZUludGVydmFsIF9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1
cHByZXNzaW9uVGltZW91dDsKICAgICBCT09MIF90cmVhdHNTSEExU2lnbmVkQ2VydGlmaWNhdGVz
QXNJbnNlY3VyZTsKICAgICBCT09MIF9yZXNwZWN0c0ltYWdlT3JpZW50YXRpb247CkBAIC0xNDEs
NyArMTQ1LDkgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKKworICAgIFdlYktpdDo6SW5p
dGlhbGl6ZVdlYktpdDIoKTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBfYWxsb3dzUGljdHVy
ZUluUGljdHVyZU1lZGlhUGxheWJhY2sgPSBZRVM7CiAgICAgX2FsbG93c0lubGluZU1lZGlhUGxh
eWJhY2sgPSBXZWJDb3JlOjpkZXZpY2VDbGFzcygpID09IE1HRGV2aWNlQ2xhc3NpUGFkOwpAQCAt
MzI4LDYgKzMzNCw4IEBAIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQogICAgIGNv
bmZpZ3VyYXRpb24tPl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyayA9IHNlbGYt
Pl9uZWVkc1N0b3JhZ2VBY2Nlc3NGcm9tRmlsZVVSTHNRdWlyazsKICAgICBjb25maWd1cmF0aW9u
LT5fb3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBzZWxmLT5fb3ZlcnJpZGVDb250ZW50
U2VjdXJpdHlQb2xpY3k7CiAKKyAgICBjb25maWd1cmF0aW9uLT5fdXJsU2NoZW1lSGFuZGxlcnMu
c2V0KGFkb3B0TlMoW3NlbGYuX3VybFNjaGVtZUhhbmRsZXJzIG11dGFibGVDb3B5V2l0aFpvbmU6
em9uZV0pKTsKKwogICAgIHJldHVybiBjb25maWd1cmF0aW9uOwogfQogCkBAIC00MDAsNiArNDA4
LDMzIEBAIC0gKHZvaWQpX3NldFZpc2l0ZWRMaW5rU3RvcmU6KF9XS1Zpc2l0ZWRMaW5rU3RvcmUg
Kil2aXNpdGVkTGlua1N0b3JlCiAgICAgX3Zpc2l0ZWRMaW5rU3RvcmUuc2V0KHZpc2l0ZWRMaW5r
U3RvcmUpOwogfQogCistICh2b2lkKXNldFVSTFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVt
ZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXIgZm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNj
aGVtZQoreworICAgIGF1dG8gKnVybFNjaGVtZUhhbmRsZXJzID0gX3VybFNjaGVtZUhhbmRsZXJz
LmdldChbXSB7IHJldHVybiBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF0pOyB9KTsKKworICAgIGlmIChbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6dXJsU2NoZW1l
XSkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u
IGZvcm1hdDpAIiclQCcgaXMgYSBVUkwgc2NoZW1lIHRoYXQgV0tXZWJWaWV3IGhhbmRsZXMgbmF0
aXZlbHkiLCB1cmxTY2hlbWVdOworCisgICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXZWJDb3Jl
OjpVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7CisgICAgaWYg
KCFjYW5vbmljYWxTY2hlbWUpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRB
cmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCInJUAnIGlzIG5vdCBhIHZhbGlkIFVSTCBzY2hlbWUi
LCB1cmxTY2hlbWVdOworCisgICAgaWYgKFt1cmxTY2hlbWVIYW5kbGVycyBvYmplY3RGb3JLZXk6
KE5TU3RyaW5nICopY2Fub25pY2FsU2NoZW1lLnZhbHVlKCldKQorICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVVJMIHNjaGVtZSAn
JUAnIGFscmVhZHkgaGFzIGEgcmVnaXN0ZXJlZCBVUkwgc2NoZW1lIGhhbmRsZXIiLCB1cmxTY2hl
bWVdOworCisgICAgW3VybFNjaGVtZUhhbmRsZXJzIHNldE9iamVjdDp1cmxTY2hlbWVIYW5kbGVy
IGZvcktleTooTlNTdHJpbmcgKiljYW5vbmljYWxTY2hlbWUudmFsdWUoKV07Cit9CisKKy0gKG51
bGxhYmxlIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hl
bWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCit7CisgICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBX
ZWJDb3JlOjpVUkxQYXJzZXI6Om1heWJlQ2Fub25pY2FsaXplU2NoZW1lKHVybFNjaGVtZSk7Cisg
ICAgaWYgKCFjYW5vbmljYWxTY2hlbWUpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBhdXRv
ICp1cmxTY2hlbWVIYW5kbGVycyA9IF91cmxTY2hlbWVIYW5kbGVycy5nZXQoW10geyByZXR1cm4g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsgfSk7CisgICAgcmV0
dXJuIFt1cmxTY2hlbWVIYW5kbGVycyBvYmplY3RGb3JLZXk6KE5TU3RyaW5nICopY2Fub25pY2Fs
U2NoZW1lLnZhbHVlKCldOworfQorCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAogI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMi
CiAKQEAgLTQxNSw2ICs0NTAsMTEgQEAgLSAodm9pZClfc2V0V2Vic2l0ZURhdGFTdG9yZTooX1dL
V2Vic2l0ZURhdGFTdG9yZSAqKXdlYnNpdGVEYXRhU3RvcmUKIAogI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHBvcAogCistIChOU011dGFibGVEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkIDxXS1VS
TFNjaGVtZUhhbmRsZXI+PiAqKV91cmxTY2hlbWVIYW5kbGVycworeworICAgIHJldHVybiBfdXJs
U2NoZW1lSGFuZGxlcnMuZ2V0KFtdIHsgcmV0dXJuIGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7IH0pOworfQorCiAjaWYgUExBVEZPUk0oSU9TKQogLSAoV0tXZWJW
aWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkgKilfY29udGVudFByb3ZpZGVyUmVnaXN0cnkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Q29uZmlndXJhdGlvbkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCmluZGV4IGVmOGUyMTBiNmIxMzBk
YmYwMWVhY2U0MTE0NDhmOWJlZjZkMmQ5NDYuLmU0OGMwMmQzMjExODVmODA2MTA4ZDJhMWRiMDY3
N2Q0MWQxYTc4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbkludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uSW50ZXJuYWwuaApAQCAt
MzIsNiArMzIsOCBAQAogCiBAaW50ZXJmYWNlIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKCkKIAor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU011dGFibGVEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+PiAqX3VybFNjaGVtZUhhbmRsZXJzOworCiAj
aWYgUExBVEZPUk0oSU9TKQogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0Q29udGVu
dFByb3ZpZGVyUmVnaXN0cnk6KSBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeSAqX2Nv
bnRlbnRQcm92aWRlclJlZ2lzdHJ5OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGFlYWM0NTA5MTAwODA4OWUxMzNiNDZkOGVlZmE3ODU4ZGQ5NDM3NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJVUkxTY2hlbWVIYW5kbGVy
Q29jb2EuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorCitAcHJvdG9jb2wgV0tVUkxTY2hlbWVIYW5kbGVyOworCituYW1lc3BhY2UgQVBJIHsKK2Ns
YXNzIFVSTFNjaGVtZUhhbmRsZXJUYXNrOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hIDogcHVibGljIFdlYlVSTFNjaGVtZUhhbmRsZXIg
eworcHVibGljOgorICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hPiBjcmVh
dGUoaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pOworCisgICAgaWQgPFdLVVJMU2NoZW1lSGFuZGxl
cj4gYXBpSGFuZGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fYXBpSGFuZGxlci5nZXQoKTsgfQorCitw
cml2YXRlOgorICAgIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYShpZCA8V0tVUkxTY2hlbWVIYW5k
bGVyPik7CisKKyAgICB2b2lkIHBsYXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrJikgZmluYWw7CisgICAgdm9pZCBwbGF0Zm9ybVN0b3BUYXNrKFdl
YlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrJikgZmluYWw7CisKKyAgICBSZXRh
aW5QdHI8aWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4+IG1fYXBpSGFuZGxlcjsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWY8QVBJOjpVUkxTY2hlbWVIYW5kbGVyVGFzaz4+IG1fYXBpVGFza3M7CisK
K307IC8vIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXIKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVVJMU2NoZW1l
SGFuZGxlckNvY29hLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlVSTFNj
aGVtZUhhbmRsZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OWMwMWM4MjdkMzE3YzczY2RlNzIxYzQ1
MmQwOWE3NmVlM2I1MGVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5tbQpAQCAtMCwwICsxLDgyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJVUkxTY2hlbWVIYW5k
bGVyQ29jb2EuaCIKKworI2ltcG9ydCAiQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbXBv
cnQgIldLRm91bmRhdGlvbi5oIgorI2ltcG9ydCAiV0tVUkxTY2hlbWVIYW5kbGVyLmgiCisjaW1w
b3J0ICJXS1VSTFNjaGVtZUhhbmRsZXJUYXNrSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLV2ViVmll
d0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxXZWJVUkxT
Y2hlbWVIYW5kbGVyQ29jb2E+IFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYTo6Y3JlYXRlKGlkIDxX
S1VSTFNjaGVtZUhhbmRsZXI+IGFwaUhhbmRsZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hKGFwaUhhbmRsZXIpKTsKK30KKworV2ViVVJMU2No
ZW1lSGFuZGxlckNvY29hOjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EoaWQgPFdLVVJMU2NoZW1l
SGFuZGxlcj4gYXBpSGFuZGxlcikKKyAgICA6IG1fYXBpSGFuZGxlcihhcGlIYW5kbGVyKQorewor
I2lmICFXS19BUElfRU5BQkxFRAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9
CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpwbGF0Zm9ybVN0YXJ0VGFzayhXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrJiB0YXNrKQoreworI2lmIFdL
X0FQSV9FTkFCTEVECisgICAgYXV0byByZXN1bHQgPSBtX2FwaVRhc2tzLmFkZCh0YXNrLmlkZW50
aWZpZXIoKSwgQVBJOjpVUkxTY2hlbWVIYW5kbGVyVGFzazo6Y3JlYXRlKHRhc2spKTsKKyAgICBB
U1NFUlQocmVzdWx0LmlzTmV3RW50cnkpOworCisgICAgW21fYXBpSGFuZGxlci5nZXQoKSB3ZWJW
aWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgc3RhcnRUYXNrOndyYXBwZXIocmVzdWx0Lml0ZXJh
dG9yLT52YWx1ZS5nZXQoKSldOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7CisgICAg
VU5VU0VEX1BBUkFNKHRhc2spOworI2VuZGlmCit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxl
ckNvY29hOjpwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViVVJMU2NoZW1l
SGFuZGxlclRhc2smIHRhc2spCit7CisjaWYgV0tfQVBJX0VOQUJMRUQKKyAgICBhdXRvIGl0ZXJh
dG9yID0gbV9hcGlUYXNrcy5maW5kKHRhc2suaWRlbnRpZmllcigpKTsKKyAgICBpZiAoaXRlcmF0
b3IgPT0gbV9hcGlUYXNrcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fYXBpSGFu
ZGxlci5nZXQoKSB3ZWJWaWV3OmZyb21XZWJQYWdlUHJveHkocGFnZSkgc3RvcFRhc2s6d3JhcHBl
cihpdGVyYXRvci0+dmFsdWUuZ2V0KCkpXTsKKworICAgIG1fYXBpVGFza3MucmVtb3ZlKGl0ZXJh
dG9yKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOworICAgIFVOVVNFRF9QQVJBTSh0
YXNrKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTIyZjZhMTQ1ZTk1YjYxNjYyYTY0Njk3
NWViYzY2MGFjNGMyNmU2NC4uY2JiMjk4ZDY0OGQwNmZjYjBiZmMyODM1ZjEwMzM2N2FlYTgzNWRh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwOCw2
ICsxMDgsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCisjaW5jbHVkZSAi
V2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQml0bWFwSW1hZ2UuaD4KQEAgLTEyNyw2ICsxMjgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
VGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9WYWxpZGF0aW9uQnViYmxlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC01NTg4LDYgKzU1OTAs
OSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKCkKICAgICBwYXJhbWV0ZXJzLm9ic2VydmVkTGF5b3V0TWlsZXN0b25lcyA9IG1fb2Jz
ZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzOwogICAgIHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2Vj
dXJpdHlQb2xpY3kgPSBtX292ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5OwogCisgICAgZm9y
IChhdXRvJiBpdGVyYXRvciA6IG1fdXJsU2NoZW1lSGFuZGxlcnNCeVNjaGVtZSkKKyAgICAgICAg
cGFyYW1ldGVycy51cmxTY2hlbWVIYW5kbGVycy5zZXQoaXRlcmF0b3Iua2V5LCBpdGVyYXRvci52
YWx1ZS0+aWRlbnRpZmllcigpKTsKKwogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIHBhcmFtZXRl
cnMuaWNlQ2FuZGlkYXRlRmlsdGVyaW5nRW5hYmxlZCA9IG1fcHJlZmVyZW5jZXMtPmljZUNhbmRp
ZGF0ZUZpbHRlcmluZ0VuYWJsZWQoKTsKICNpZiBVU0UoTElCV0VCUlRDKQpAQCAtNjg0Myw1ICs2
ODQ4LDQxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCiB9CiAj
ZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUo
UmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFuZGxlciwgY29uc3QgU3RyaW5nJiBzY2hlbWUp
Cit7CisgICAgYXV0byBjYW5vbmljYWxpemVkU2NoZW1lID0gVVJMUGFyc2VyOjptYXliZUNhbm9u
aWNhbGl6ZVNjaGVtZShzY2hlbWUpOworICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsK
KyAgICBBU1NFUlQoIVVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hl
bWUudmFsdWUoKSkpOworCisgICAgYXV0byBzY2hlbWVSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRs
ZXJzQnlTY2hlbWUuYWRkKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSwgaGFuZGxlci5nZXQo
KSk7CisgICAgQVNTRVJUX1VOVVNFRChzY2hlbWVSZXN1bHQsIHNjaGVtZVJlc3VsdC5pc05ld0Vu
dHJ5KTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9IGhhbmRsZXItPmlkZW50aWZpZXIoKTsKKyAg
ICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVy
LmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGlk
ZW50aWZpZXJSZXN1bHQsIGlkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7CisKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihp
ZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpLCBtX3BhZ2VJRCk7Cit9CisK
K1dlYlVSTFNjaGVtZUhhbmRsZXIqIFdlYlBhZ2VQcm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNj
aGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICByZXR1cm4gbV91cmxTY2hlbWVIYW5k
bGVyc0J5U2NoZW1lLmdldChzY2hlbWUpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRV
UkxTY2hlbWVIYW5kbGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCit7CisgICAgYXV0byBpdGVyYXRvciA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZp
ZXIuZmluZChoYW5kbGVySWRlbnRpZmllcik7CisgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdXJs
U2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuZW5kKCkpOworCisgICAgaXRlcmF0b3ItPnZhbHVl
LT5zdGFydFRhc2soKnRoaXMsIHJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lSGFuZGxlclRhc2sodWludDY0X3QgaGFuZGxl
cklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGl0
ZXJhdG9yID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKGhhbmRsZXJJZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRl
bnRpZmllci5lbmQoKSk7CisKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0b3BUYXNrKCp0aGlzLCBy
ZXNvdXJjZUlkZW50aWZpZXIpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjMWE4MmRjOWQ1YWZkYmIxMzAxNzRi
ZGZiYzFhMDA5YTg1YmYxNGNmLi4zN2RmNmJiNGFiZDg1YTJjZTg4OTY4OTQ5MDMyOGIxYTc5N2Vi
YTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDIsNiAr
MjAyLDcgQEAgY2xhc3MgV2ViUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OwogY2xhc3MgV2Vi
TmF2aWdhdGlvblN0YXRlOwogY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Owog
Y2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBjbGFz
cyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eTsK
IGNsYXNzIFdlYlBhZ2VHcm91cDsKQEAgLTExOTEsNiArMTE5Miw5IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgc2V0U2hvdWxkU2tpcFdhaXRpbmdGb3JQYWludEFmdGVyTmV4dFZpZXdEaWRNb3ZlVG9X
aW5kb3coYm9vbCBzaG91bGRTa2lwKSB7IG1fc2hvdWxkU2tpcFdhaXRpbmdGb3JQYWludEFmdGVy
TmV4dFZpZXdEaWRNb3ZlVG9XaW5kb3cgPSBzaG91bGRTa2lwOyB9CiAKKyAgICB2b2lkIHNldFVS
TFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYsIGNvbnN0
IFN0cmluZyYgc2NoZW1lKTsKKyAgICBXZWJVUkxTY2hlbWVIYW5kbGVyKiB1cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKKwogcHJpdmF0ZToKICAgICBXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKCk7CkBAIC0xNTk0LDYgKzE1OTgsOSBAQCBwcml2YXRlOgogI2VuZGlmCiAjZW5kaWYKIAor
ICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVIYW5kbGVyVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRp
ZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0b3BVUkxTY2hlbWVIYW5kbGVyVGFzayh1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKTsKKwogICAgIHZv
aWQgaGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgdm9p
ZCBmaW5pc2hJbml0aWFsaXppbmdXZWJQYWdlQWZ0ZXJQcm9jZXNzTGF1bmNoKCk7CkBAIC0xOTc5
LDYgKzE5ODYsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1VzaW5nSGlnaFBlcmZvcm1hbmNl
V2ViR0wgeyBmYWxzZSB9OwogICAgICAgICAKICAgICBXZWFrUHRyRmFjdG9yeTxXZWJQYWdlUHJv
eHk+IG1fd2Vha1B0ckZhY3Rvcnk7CisKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFdlYlVSTFNj
aGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzQnlTY2hlbWU7CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+PiBtX3VybFNjaGVtZUhhbmRsZXJzQnlJ
ZGVudGlmaWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBkYzkzYzQ4MDdk
YTE5OWJmOTQ2N2MwMjZkZjM0OTVkODcyMDk5MzI2Li45NmIyZWZmMWMzZDdkNDNkYzUyMjU2Yzc1
Mzg1MmYzYzY4YzZhZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ5MCw0ICs0OTAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogI2VuZGlmCiAKICAgICBTZXRJc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wo
Ym9vbCBpc1VzaW5nSGlnaFBlcmZvcm1hbmNlV2ViR0wpCisKKyAgICBTdGFydFVSTFNjaGVtZUhh
bmRsZXJUYXNrKHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpCisgICAgU3RvcFVSTFNj
aGVtZUhhbmRsZXJUYXNrKHVpbnQ2NF90IGxvYWRlcklkZW50aWZpZXIsIHVpbnQ2NF90IHJlc291
cmNlSWRlbnRpZmllcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTk5ZWMyZjNlMWZmMjEyMWE3YmZmMzc1MDEx
NjllY2EzNmI2YzUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorCisj
aW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVX
ZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllcigpCit7CisgICAgc3RhdGljIHVpbnQ2NF90IG5l
eHRJZGVudGlmaWVyID0gMTsKKyAgICByZXR1cm4gbmV4dElkZW50aWZpZXIrKzsKK30KKworV2Vi
VVJMU2NoZW1lSGFuZGxlcjo6V2ViVVJMU2NoZW1lSGFuZGxlcigpCisgICAgOiBtX2lkZW50aWZp
ZXIoZ2VuZXJhdGVXZWJVUkxTY2hlbWVIYW5kbGVySWRlbnRpZmllcigpKQoreworfQorCitXZWJV
UkxTY2hlbWVIYW5kbGVyOjp+V2ViVVJMU2NoZW1lSGFuZGxlcigpCit7CisgICAgQVNTRVJUKG1f
dGFza3MuaXNFbXB0eSgpKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRh
c2soV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3Mu
YWRkKHJlc291cmNlSWRlbnRpZmllciwgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OmNyZWF0ZSgq
dGhpcywgcGFnZSwgcmVzb3VyY2VJZGVudGlmaWVyLCByZXF1ZXN0KSk7CisgICAgQVNTRVJUKHJl
c3VsdC5pc05ld0VudHJ5KTsKKworICAgIHBsYXRmb3JtU3RhcnRUYXNrKHBhZ2UsIHJlc3VsdC5p
dGVyYXRvci0+dmFsdWUpOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0b3BUYXNr
KFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyKQoreworICAg
IGF1dG8gaXRlcmF0b3IgPSBtX3Rhc2tzLmZpbmQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICBp
ZiAoaXRlcmF0b3IgPT0gbV90YXNrcy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXRl
cmF0b3ItPnZhbHVlLT5zdG9wKCk7CisKKyAgICBwbGF0Zm9ybVN0b3BUYXNrKHBhZ2UsIGl0ZXJh
dG9yLT52YWx1ZSk7CisKKyAgICBtX3Rhc2tzLnJlbW92ZShpdGVyYXRvcik7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzRjZmQ1ZGRmOTg2YjJlNjMxYjI0NzIzODE3NmY3YWVj
ZDA2NzYyMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVIYW5kbGVyLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCIKKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNz
IFdlYlVSTFNjaGVtZUhhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVIYW5k
bGVyPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViVVJMU2NoZW1lSGFuZGxlcik7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+V2ViVVJMU2NoZW1lSGFuZGxlcigpOworCisgICAgdWludDY0
X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgdm9p
ZCBzdGFydFRhc2soV2ViUGFnZVByb3h5JiwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKKyAgICB2b2lkIHN0b3BUYXNrKFdlYlBh
Z2VQcm94eSYsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllcik7CisKK3Byb3RlY3RlZDoKKyAg
ICBXZWJVUkxTY2hlbWVIYW5kbGVyKCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHBs
YXRmb3JtU3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIFdl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrJikgPSAwOworCisgICAgdWludDY0X3QgbV9pZGVudGlmaWVy
OworCisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrPj4g
bV90YXNrczsKKworfTsgLy8gY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcgorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlclRhc2suY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEyMGFiM2Y5NTUxOTg1ZDgwZWM4MjJjNTQ3
ODA5NDNmMjk3OWRlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJU
YXNrLmgiCisKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiV2ViUGFnZU1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViVVJMU2No
ZW1lSGFuZGxlci5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1JlZjxXZWJVUkxTY2hlbWVIYW5kbGVyVGFzaz4gV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2s6OmNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkm
IHBhZ2UsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVSTFNjaGVtZUhhbmRs
ZXJUYXNrKGhhbmRsZXIsIHBhZ2UsIHJlc291cmNlSWRlbnRpZmllciwgcmVxdWVzdCkpOworfQor
CitXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6V2ViVVJMU2NoZW1lSGFuZGxlclRhc2soV2ViVVJM
U2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCByZXNv
dXJjZUlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKKyAgICA6IG1f
dXJsU2NoZW1lSGFuZGxlcihoYW5kbGVyKQorICAgICwgbV9wYWdlKCZwYWdlKQorICAgICwgbV9p
ZGVudGlmaWVyKHJlc291cmNlSWRlbnRpZmllcikKKyAgICAsIG1fcmVxdWVzdChyZXF1ZXN0KQor
eworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZSBXZWJVUkxTY2hl
bWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6VGFza0FscmVhZHlTdG9wcGVkOworCisg
ICAgaWYgKG1fY29tcGxldGVkKQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZDsKKworICAgIGlmIChtX2Rh
dGFTZW50KQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlv
blR5cGU6OkRhdGFBbHJlYWR5U2VudDsKKworICAgIG1fcmVzcG9uc2VTZW50ID0gdHJ1ZTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZUhhbmRsZXJUYXNrRGlk
UmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50
aWZpZXIsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpF
eGNlcHRpb25UeXBlOjpOb25lOworfQorCitXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0
aW9uVHlwZSBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0aW9uVHlwZTo6VGFza0FscmVhZHlTdG9wcGVk
OworCisgICAgaWYgKG1fY29tcGxldGVkKQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFu
ZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZDsKKworICAgIGlm
ICghbV9yZXNwb25zZVNlbnQpCisgICAgICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFz
azo6RXhjZXB0aW9uVHlwZTo6Tm9SZXNwb25zZVNlbnQ7CisKKyAgICBtX2RhdGFTZW50ID0gdHJ1
ZTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZUhhbmRsZXJU
YXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRl
bnRpZmllciwgSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlKGJ1ZmZlci5wdHIoKSkpKTsK
KyAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6OkV4Y2VwdGlvblR5cGU6Ok5vbmU7
Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25UeXBlIFdlYlVSTFNjaGVt
ZUhhbmRsZXJUYXNrOjpkaWRDb21wbGV0ZShjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKK3sK
KyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2s6OkV4Y2VwdGlvblR5cGU6OlRhc2tBbHJlYWR5U3RvcHBlZDsKKworICAgIGlmIChtX2NvbXBs
ZXRlZCkKKyAgICAgICAgcmV0dXJuIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrOjpFeGNlcHRpb25U
eXBlOjpDb21wbGV0ZUFscmVhZHlDYWxsZWQ7CisKKyAgICBpZiAoIW1fcmVzcG9uc2VTZW50ICYm
IGVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gV2ViVVJMU2NoZW1lSGFuZGxlclRhc2s6
OkV4Y2VwdGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OworCisgICAgbV9jb21wbGV0ZWQgPSB0cnVl
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lSGFuZGxlclRh
c2tEaWRDb21wbGV0ZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlm
aWVyLCBlcnJvcikpOworICAgIHJldHVybiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6RXhjZXB0
aW9uVHlwZTo6Tm9uZTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzazo6cGFnZURl
c3Ryb3llZCgpCit7CisgICAgQVNTRVJUKG1fcGFnZSk7CisgICAgbV9wYWdlID0gbnVsbHB0cjsK
KyAgICBtX3N0b3BwZWQgPSB0cnVlOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNr
OjpzdG9wKCkKK3sKKyAgICBBU1NFUlQoIW1fc3RvcHBlZCk7CisgICAgbV9zdG9wcGVkID0gdHJ1
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3ZGIzMmQ5NTU2
MzVlYmRlMjNmZmFmNTViYTE5NWM0MzZmMGYwNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suaApAQCAtMCwwICsxLDc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVycm9yOwor
Y2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CitjbGFzcyBXZWJQYWdl
UHJveHk7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViVVJMU2NoZW1lSGFuZGxlclRhc2s+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShX
ZWJVUkxTY2hlbWVIYW5kbGVyVGFzayk7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxXZWJVUkxT
Y2hlbWVIYW5kbGVyVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJv
eHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KTsKKworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKworICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQorCisgICAgZW51bSBjbGFzcyBFeGNlcHRpb25UeXBl
IHsKKyAgICAgICAgRGF0YUFscmVhZHlTZW50LAorICAgICAgICBDb21wbGV0ZUFscmVhZHlDYWxs
ZWQsCisgICAgICAgIFRhc2tBbHJlYWR5U3RvcHBlZCwKKyAgICAgICAgTm9SZXNwb25zZVNlbnQs
CisgICAgICAgIE5vbmUsCisgICAgfTsKKyAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgRXhjZXB0aW9uVHlw
ZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPik7CisgICAgRXhjZXB0
aW9uVHlwZSBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisKKyAg
ICB2b2lkIHN0b3AoKTsKKyAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKKworcHJpdmF0ZToKKyAg
ICBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVBy
b3h5JiwgdWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CisKKyAgICBSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4gbV91cmxTY2hlbWVIYW5kbGVyOwor
ICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOworICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKKyAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OworICAgIGJvb2wgbV9zdG9wcGVk
IHsgZmFsc2UgfTsKKyAgICBib29sIG1fcmVzcG9uc2VTZW50IHsgZmFsc2UgfTsKKyAgICBib29s
IG1fZGF0YVNlbnQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9jb21wbGV0ZWQgeyBmYWxzZSB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzEwYTBkM2NmOGVkOWJkOTM1Yzk5MTVk
ZjY2YTRjNWQ0NTQ3ZDkzNC4uZmU5NWNkN2IyZWVhMTg5MzhlOGMyNDdjYzk3YmFhNjU0YzkxYzRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTA1NSw2ICsxMDU1LDE0IEBACiAJCTUxRDAyRjZBMTMyRUM3MzcwMEJFQUE5NiAv
KiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjcxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRh
YmFzZU1lc3NhZ2VzLmggKi87IH07CiAJCTUxRDAyRjZCMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJ
Y29uRGF0YWJhc2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQwMkY2ODEzMkVDNzM3MDBCRUFBOTYgLyogV2Vi
SWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MUQwMkY2QzEz
MkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMDJGNjkxMzJFQzczNzAw
QkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCAqLzsgfTsKKwkJNTFEMTI0
MjMxRTZEMzRBMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MjExRTZE
MzQ5QTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwICovOyB9Owor
CQk1MUQxMjQyODFFNkQzRjVEMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQyNDFFNkQz
Q0MzMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgKi87IH07CisJCTUxRDEyNDJD
MUU2RDQxRkQwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MkExRTZENDFCQzAw
MkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgKi87IH07CisJCTUxRDEyNDMz
MUU2REU2Q0EwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQzMjFFNkRFNTIxMDAy
QjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tICovOyB9OworCQk1MUQxMjQzNDFF
NkRGNjQzMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQyRDFFNkREREQ3MDAyQjI4MjAgLyog
V0tVUkxTY2hlbWVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OworCQk1MUQxMjQzNTFFNkRGNjUyMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5k
bGVyVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTFEMTI0MkYxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTUxRDEyNDM2MUU2
REZCMzkwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFEMTI0MzAxRTZERERENzAwMkIyODIw
IC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gKi87IH07CisJCTUxRDEyNDNBMUU2RTBBQUIw
MDJCMjgyMCAvKiBBUElVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyog
QVBJVVJMU2NoZW1lSGFuZGxlclRhc2suY3BwICovOyB9OwogCQk1MUQxMzA1MzEzODJFQUMwMDAz
NTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEzMDRGMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVt
UmVxdWVzdERhdGEuY3BwICovOyB9OwogCQk1MUQxMzA1NDEzODJFQUMwMDAzNTFFREQgLyogU2Vj
SXRlbVJlcXVlc3REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmgg
Ki87IH07CiAJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRDEz
MDUxMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCAqLzsgfTsKQEAg
LTEwNjksNiArMTA3Nyw3IEBACiAJCTUxRTM1MjAyMTgwRjVEMUUwMEU1M0JFOSAvKiBEYXRhYmFz
ZVByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUUzNTIwMTE4MEY1RDFFMDBFNTNCRTkgLyogRGF0YWJhc2VQcm9jZXNzTWFjLm1tICov
OyB9OwogCQk1MUUzNTIwOTE4MEY1RDZCMDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQ
b2ludC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTM1MjA4MTgwRjVENkIwMEU1M0JFOSAvKiBEYXRhYmFzZVNlcnZpY2VFbnRyeVBvaW50Lm1tICov
OyB9OwogCQk1MUUzOTkwNjFENkY1NEM3MDA5Qzg4MzEgLyogVUlHYW1lcGFkUHJvdmlkZXJDb2Nv
YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTM5
OTA1MUQ2RjU0QzUwMDlDODgzMSAvKiBVSUdhbWVwYWRQcm92aWRlckNvY29hLm1tICovOyB9Owor
CQk1MUU4QjY4RTFFNzEyODc3MDAxQjcxMzIgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRhc2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFOEI2OEQx
RTcxMjg3MzAwMUI3MTMyIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLzsgfTsKIAkJ
NTFFOTQ5OTcxRDc2MjExMzAwRUM5RUI5IC8qIFVJR2FtZXBhZFByb3ZpZGVySU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFOTQ5OTYxRDc2MUND
NzAwRUM5RUI5IC8qIFVJR2FtZXBhZFByb3ZpZGVySU9TLm1tICovOyB9OwogCQk1MUVGQzFDRjE1
MjRFNjI1MDBDOUE5MzggLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkEyRDU0MTUyMTExODYwMEMx
QkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjA2MEUwMTY1NDMxN0YwMEYzMjgxQiAv
KiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBERTE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3Vy
Y2VMb2FkZXJNZXNzYWdlcy5oICovOyB9OwpAQCAtMzI1Myw2ICszMjYyLDIxIEBACiAJCTUxRDAy
RjY3MTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VNZXNzYWdlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQwMkY2ODEzMkVDNzM3MDBCRUFBOTYgLyogV2Vi
SWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQwMkY2OTEzMkVDNzM3MDBCRUFBOTYg
LyogV2ViSWNvbkRhdGFiYXNlUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxRDEyNDIxMUU2RDM0OUEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVI
YW5kbGVyVGFza1Byb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MUQxMjQyMjFFNkQzNDlBMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclRh
c2tQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkxTY2hlbWVI
YW5kbGVyVGFza1Byb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDI0
MUU2RDNDQzMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyNTFFNkQzQ0MzMDAyQjI4MjAgLyogV2ViVVJM
U2NoZW1lSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkxT
Y2hlbWVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDI3MUU2
RDNGMUYwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQyQTFFNkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxRDEyNDJCMUU2RDQxQkMwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRDEyNDJEMUU2RERERDcwMDJC
MjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tVUkxTY2hlbWVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxRDEyNDJGMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFEMTI0MzAxRTZERERENzAwMkIyODIwIC8q
IFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MUQxMjQzMTFFNkRFNTIxMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxl
ckNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQzMjFFNkRF
NTIxMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUQxMjQzNzFFNkRGRDJBMDAyQjI4MjAgLyog
V0tVUkxTY2hlbWVIYW5kbGVyVGFza0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MUQxMjQzODFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1l
SGFuZGxlclRhc2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJ
VVJMU2NoZW1lSGFuZGxlclRhc2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MUQxMjQzOTFFNkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFEMTMwNEYxMzgyRUFDMDAwMzUxRUREIC8q
IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTZWNJdGVtUmVxdWVzdERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlY0l0ZW1SZXF1ZXN0RGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MUQxMzA1MTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRl
bVJlc3BvbnNlRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
ZWNJdGVtUmVzcG9uc2VEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMy
NzEsNiArMzI5NSw3IEBACiAJCTUxRTM1MjA3MTgwRjVENjEwMEU1M0JFOSAvKiBJbmZvLnBsaXN0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5w
bGlzdC54bWw7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MUUzNTIwODE4MEY1RDZCMDBFNTNCRTkgLyogRGF0YWJhc2VTZXJ2aWNlRW50cnlQb2ludC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFiYXNlU2Vydmlj
ZUVudHJ5UG9pbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTM5OTA1MUQ2
RjU0QzUwMDlDODgzMSAvKiBVSUdhbWVwYWRQcm92aWRlckNvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlHYW1lcGFkUHJvdmlkZXJDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFOEI2OEQxRTcxMjg3MzAwMUI3MTMyIC8qIFdl
YlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTFFOTQ5OTYxRDc2MUNDNzAwRUM5RUI5IC8qIFVJR2FtZXBhZFByb3ZpZGVySU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlHYW1lcGFkUHJv
dmlkZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjA2MEREMTY1NDMx
NzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjA2MEREMTY1NDMxNzUwMEYzMjgxQyAvKiBXZWJS
VENTb2NrZXRNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUlRDU29j
a2V0TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUw
NTgsNiArNTA4Myw4IEBACiAJCQkJMkRBRjRGRkExQjYzNjE4MTAwNjAxM0Q2IC8qIFZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJMkQxMjVDNUMxODU3RUEwNTAwM0JBM0NCIC8qIFZp
ZXdHZXN0dXJlQ29udHJvbGxlci5oICovLAogCQkJCTJEMUI1RDVBMTg1ODY1OTkwMDZDNjU5NiAv
KiBWaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4gKi8sCisJCQkJNTFEMTI0MzExRTZE
RTUyMTAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oICovLAorCQkJCTUxRDEy
NDMyMUU2REU1MjEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EubW0gKi8sCiAJ
CQkJMUFDMDI3M0UxOTY2MjJENjAwQzEyQjc1IC8qIFdlYlBhZ2VQcm94eUNvY29hLm1tICovLAog
CQkJCTdDNDY5NENCMUE0QjUxMEEwMEFENTg0NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlDb2NvYS5t
bSAqLywKIAkJCQlDREEyOUExRTFDQkVCNUZCMDA5MDFDQ0YgLyogV2ViUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5LmggKi8sCkBAIC01NTQwLDYgKzU1NjcsMTAgQEAKIAkJCQk5M0Y1NDlCNTFF
MzE3NERBMDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW0gKi8sCiAJCQkJMUFE
ODc5MDkxOEI2QzM4QTAwNkNBRkQ3IC8qIFdLVUlEZWxlZ2F0ZS5oICovLAogCQkJCTM3NDM5MjU3
MThCQzRDNjAwMDFDODY3NSAvKiBXS1VJRGVsZWdhdGVQcml2YXRlLmggKi8sCisJCQkJNTFEMTI0
MkQxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlci5oICovLAorCQkJCTUxRDEy
NDJGMUU2RERERDcwMDJCMjgyMCAvKiBXS1VSTFNjaGVtZUhhbmRsZXJUYXNrLmggKi8sCisJCQkJ
NTFEMTI0MzAxRTZERERENzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2subW0gKi8s
CisJCQkJNTFEMTI0MzcxRTZERkQyQTAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlclRhc2tJ
bnRlcm5hbC5oICovLAogCQkJCTFBRkEzQUM3MThFNjFDNjEwMDNDQ0JBRSAvKiBXS1VzZXJDb250
ZW50Q29udHJvbGxlci5oICovLAogCQkJCTFBRkEzQUM2MThFNjFDNjEwMDNDQ0JBRSAvKiBXS1Vz
ZXJDb250ZW50Q29udHJvbGxlci5tbSAqLywKIAkJCQkxQUFGMDhBMzE5MjY4MkRBMDBCNjM5MEMg
LyogV0tVc2VyQ29udGVudENvbnRyb2xsZXJJbnRlcm5hbC5oICovLApAQCAtNjQ3NCw2ICs2NTA1
LDEwIEBACiAJCQkJQkM3QjYyMTMxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cFByb3h5
LmggKi8sCiAJCQkJMkQ1QzlEMDMxOUM4MUQ4RjAwQjNDNUMxIC8qIFdlYlBhZ2VPdmVybGF5LmNw
cCAqLywKIAkJCQkyRDVDOUQwNDE5QzgxRDhGMDBCM0M1QzEgLyogV2ViUGFnZU92ZXJsYXkuaCAq
LywKKwkJCQk1MUQxMjQyQTFFNkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmNwcCAqLywKKwkJCQk1MUQxMjQyQjFFNkQ0MUJDMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5LmggKi8sCisJCQkJNTFEMTI0MjExRTZEMzQ5QTAwMkIyODIwIC8qIFdlYlVS
TFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuY3BwICovLAorCQkJCTUxRDEyNDIyMUU2RDM0OUEwMDJC
MjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmggKi8sCiAJCQkJQkNBMEVGN0Ux
MjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmNwcCAqLywKIAkJCQlCQ0EwRUY3RDEyMzMx
RTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuaCAqLywKIAkJCSk7CkBAIC02NjM5LDYgKzY2NzQs
MTAgQEAKIAkJCQk3QTlDRDhDMDFDNzc5ODQ5MDBEOUY2QzcgLyogV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmNwcCAqLywKIAkJCQk3QTlDRDhDMTFDNzc5ODQ5MDBEOUY2QzcgLyogV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCiAJCQkJN0E5Q0Q4QzIxQzc3OUFENjAw
RDlGNkM3IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5tZXNzYWdlcy5pbiAqLywK
KwkJCQk1MUQxMjQyNDFFNkQzQ0MzMDAyQjI4MjAgLyogV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAg
Ki8sCisJCQkJNTFEMTI0MjUxRTZEM0NDMzAwMkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXIu
aCAqLywKKwkJCQk1MUU4QjY4RDFFNzEyODczMDAxQjcxMzIgLyogV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2suY3BwICovLAorCQkJCTUxRDEyNDI3MUU2RDNGMUYwMDJCMjgyMCAvKiBXZWJVUkxTY2hl
bWVIYW5kbGVyVGFzay5oICovLAogCQkJKTsKIAkJCXBhdGggPSBVSVByb2Nlc3M7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjY4OSw2ICs2NzI4LDggQEAKIAkJCQkxQUZERTY1RjE5
NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lvblN0YXRlLmNwcCAqLywKIAkJCQkxQUZERTY2MDE5
NTRFOUIxMDBDNDhGRkEgLyogQVBJU2Vzc2lvblN0YXRlLmggKi8sCiAJCQkJMUE0RDY2NDcxOEEy
RDkxQTAwRDgyRTIxIC8qIEFQSVVJQ2xpZW50LmggKi8sCisJCQkJNTFEMTI0MzgxRTZERkRCOTAw
MkIyODIwIC8qIEFQSVVSTFNjaGVtZUhhbmRsZXJUYXNrLmNwcCAqLywKKwkJCQk1MUQxMjQzOTFF
NkRGREI5MDAyQjI4MjAgLyogQVBJVVJMU2NoZW1lSGFuZGxlclRhc2suaCAqLywKIAkJCQk3Qzg5
RDJCMTFBNkIwNjhDMDAzQTVGREUgLyogQVBJVXNlckNvbnRlbnRFeHRlbnNpb24uY3BwICovLAog
CQkJCTdDODlEMkIyMUE2QjA2OEMwMDNBNUZERSAvKiBBUElVc2VyQ29udGVudEV4dGVuc2lvbi5o
ICovLAogCQkJCTdDM0EwNkE1MUFBQjkwM0UwMDlENzRCQSAvKiBBUElVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlLmNwcCAqLywKQEAgLTgxNTYsNiArODE5Nyw3IEBACiAJCQkJMEZEQ0Q3RjcxRDQ3
RTkyQTAwOUYwOEJDIC8qIExvZ0luaXRpYWxpemF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTZEODZDMjFERjc1MjY1MDA3NzQ1RTggLyogTWFjaE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQzU2Rjc5MTE1OTk1N0QwMDFDQ0FGOSAvKiBNYWNoUG9ydC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTFEMTI0MzQxRTZERjY0MzAwMkIyODIwIC8qIFdLVVJMU2NoZW1lSGFuZGxlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEyNEI1RjMxMUY1MzFFODAwQzM4MjY5IC8qIE1hY2hVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMUEwQkQ1MUE0OEU2QzYwMDU0RUY3NCAvKiBNYW5h
Z2VkQ29uZmlndXJhdGlvblNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5MzNERUYxOTY1RUIz
MTAwOEFDM0VBIC8qIE1lbnVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtODI4MCw2ICs4
MzIyLDcgQEAKIAkJCQk4MzA0OEFFNjFBQ0E0NURDMDA4MkM4MzIgLyogUHJvY2Vzc1Rocm90dGxl
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJCIC8q
IFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ0N0I1NkQxODEw
NzE0RTAwM0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywK
KwkJCQk1MUQxMjQzNTFFNkRGNjUyMDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkRERjczMTUxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMTZBRUEx
NjRCM0E4ODAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTJEMjlFQ0QwMTkyRjJDMkUwMDk4NEI3OCAvKiBSZW1vdGVMYXllclRyZWVEaXNwbGF5
UmVmcmVzaE1vbml0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtOTQ4NCw2ICs5NTI3LDcgQEAKIAkJ
CQkxQTU3MDRGNzFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUExQTRGRTVCMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3du
bG9hZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3OUE4NzM5MThCQkZFMEYwMDU4OEFGMiAvKiBf
V0tFbGVtZW50QWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTFEMTI0MkMxRTZENDFGRDAw
MkIyODIwIC8qIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQUQwMUJDODE5MDVEMzdFMDBDOUM0NUYgLyogX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzMTdGRTdDRTFDNDg3REI4MDBBMENBODkgLyogX1dLRXhw
ZXJpbWVudGFsRmVhdHVyZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTM3M0QxMjIyMThBNDczMDEw
MDY2RDlDQyAvKiBfV0tGcmFtZUhhbmRsZS5tbSBpbiBTb3VyY2VzICovLApAQCAtOTYzNSw2ICs5
Njc5LDcgQEAKIAkJCQkyREEwNDlCNzE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNB
UmVtb3RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQzc1QTFFMUIzMzY5NUUwMDU2NzQ1QiAv
KiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUMwQzk3
NTFEREQ3NjAzMDAzMkNBRDMgLyogSWNvbkxvYWRpbmdEZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTUxRDEyNDIzMUU2RDM0QTEwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFz
a1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTM1MUNBMTgwRjJDQ0MwMEU1M0JFOSAv
KiBJREJVdGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyMDRFRTIxMUM4M0U5ODAw
OEYzMzc1IC8qIEluamVjdGVkQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUVFQkEx
MTI3NzYxQ0MwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTk4MDQsNiArOTg0OSw3IEBACiAJCQkJMUEwRUM3NUYxMjRCQzdCMjAw
N0VGNEE1IC8qIFBsdWdpblByb2Nlc3NQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJE
OTBCQjEyODFDOTMxMDAxRUI5NjIgLyogUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEwNDNCNUQxMjRENUU5RDAwRkZCRkI1IC8qIFBsdWdpblByb2Nlc3NQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MUQxMjQzNjFFNkRGQjM5
MDAyQjI4MjAgLyogV0tVUkxTY2hlbWVIYW5kbGVyVGFzay5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFBMDQzREMyMTI0RkY4NzUwMEZGQkZCNSAvKiBQbHVnaW5Qcm94eS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTJEOTIyMTEyODFEQzFCMDAxRUI5NjIgLyogUGx1Z2luUHJveHlNYWMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQThFRkE3MDEyNTJCODQxMDBGNzA2N0YgLyogUGx1Z2luUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05OTU3LDYgKzEwMDAzLDcgQEAK
IAkJCQkxQUE4M0Y2QzFBNUI2M0ZGMDAwMjZFQzYgLyogV2ViRGF0YWJhc2VQcm92aWRlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlDRDE5QTI2RDFBMTNFODJBMDA4RDY1MEUgLyogV2ViRGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1QjFDNTQxODk4N0VE
RjAwNEZDRjlCIC8qIFdlYkRvY3VtZW50TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUx
RDEyNDI4MUU2RDNGNUQwMDJCMjgyMCAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDMTExQTVEMTEyRjRGQkIwMDMzN0JBQiAvKiBXZWJEcmFnQ2xpZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUM1NzRBMzc3MTJFNjA5OUQwMDJERkU5OCAvKiBXZWJEcmFn
Q2xpZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMEVGQTAxMjMzMjY0MjAwN0QzQ0ZC
IC8qIFdlYkVkaXRDb21tYW5kUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC05OTg2LDYgKzEw
MDMzLDcgQEAKIAkJCQlCQzFCRTFFMTEyRDU0QTQxMDAwNEEyMjggLyogV2ViR2VvbG9jYXRpb25D
bGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwRTVGRTYxMkQ2OTcxNjAwMTJBNzJBIC8q
IFdlYkdlb2xvY2F0aW9uTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzBFNjA2MTEy
RDZCQTkxMDAxMkE3MkEgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxRDEyNDMzMUU2REU2Q0EwMDJCMjgyMCAvKiBXZWJVUkxT
Y2hlbWVIYW5kbGVyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzU0Q0FDQzEyRDY0Mjkx
MDA1QzY3QjAgLyogV2ViR2VvbG9jYXRpb25NYW5hZ2VyUHJveHkuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMwRTYxODIxMkQ2Q0IxRDAwMTJBNzJBIC8qIFdlYkdlb2xvY2F0aW9uTWFuYWdlclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxMzA3NUFFMURFODVG
NTgwMDM5RUM2OSAvKiBMaWJXZWJSVENTb2NrZXQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMDEw
Miw2ICsxMDE1MCw3IEBACiAJCQkJMkRBOTQ0QjAxODg0RTlCQTAwRUQ4NkRCIC8qIFdlYlByb2Nl
c3NQcm94eUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRDEzMDU4MTM4MkYxMDUwMDM1MUVE
RCAvKiBXZWJQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0VFN0FEMDEy
ODE3OTg4MDA5ODI3REEgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUxRDEyNDNBMUU2RTBBQUIwMDJCMjgyMCAvKiBBUElVUkxTY2hlbWVI
YW5kbGVyVGFzay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFFMDkzMzE4ODYxRDM4MDBEMkRD
NDkgLyogV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUx
MkY1ODlDMTJBODgzODgwMDYyOTUzMCAvKiBXZWJQcm90ZWN0aW9uU3BhY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTFDNTEyQzgxOTA2NTZFNTAwNDQ4OTE0IC8qIFdlYlF1aWNrTG9va0hhbmRs
ZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTEwMjgzLDYgKzEwMzMyLDcgQEAKIAkJCQlC
Qzg1ODA2MjEyQjg1MDU3MDBFREVCMkUgLyogV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0Q1OTdENjExMkI1NkRDMDBFQzhDMjMgLyogV0tQYWdlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDODlEMjlCMUE2NzgzN0IwMDNBNUZERSAvKiBXS1BhZ2VD
b25maWd1cmF0aW9uUmVmLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRThCNjhFMUU3MTI4Nzcw
MDFCNzEzMiAvKiBXZWJVUkxTY2hlbWVIYW5kbGVyVGFzay5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQzdCNjMzODEyQTQ1QUJBMDBEMTc0QTQgLyogV0tQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNFMTdCN0QxMzgxRjExNzAwMTJBNjQxIC8qIFdLUGFnZVByaXZhdGVNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkyRDZBQjU0MjE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdl
TnVtYmVySW5kaWNhdG9yLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwNzU5
ZTdjM2U5N2U1MTAwYWU3ODExMmM4YzJiZTVmNGE0NmM1YzMzLi4xODI4Mjc0M2YwMzJhMzJhZTJi
NTViODE5NDQ3ZDQyZjZmYWIwZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTM5LDggKzM5LDExIEBA
CiAjaW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBh
Z2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIldl
YlJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Lmgi
CisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQXBwbGljYXRpb25DYWNoZUhvc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZFJl
c291cmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5oPgpA
QCAtMTk0LDYgKzE5NywxNiBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQo
UmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIH0KICNlbmRp
ZgogCisgICAgaWYgKHdlYlBhZ2UpIHsKKyAgICAgICAgaWYgKGF1dG8qIGhhbmRsZXIgPSB3ZWJQ
YWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51
cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSkpIHsKKyAgICAgICAgICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCBVUkwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nlc3MgVVJM
IHNjaGVtZSBoYW5kbGVyLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwg
c2NoZW1lIGhhbmRsZXIgKGZyYW1lID0gJXAsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBpZGVudGlmaWVyKTsKKworICAgICAgICAgICAgaGFuZGxl
ci0+c3RhcnROZXdUYXNrKHJlc291cmNlTG9hZGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KKwogICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNz
KSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVk
dWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyB3aXRoIHByaW9yaXR5ICVkIiwgcmVzb3VyY2VM
b2FkZXIudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSk7CiAKICAgICBDb250ZW50U25pZmZp
bmdQb2xpY3kgY29udGVudFNuaWZmaW5nUG9saWN5ID0gcmVzb3VyY2VMb2FkZXIuc2hvdWxkU25p
ZmZDb250ZW50KCkgPyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKQEAgLTI2MCw2
ICsyNzMsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKFJlc291cmNlTG9hZGVy
KiByZXNvdXJjZUxvYWRlcikKICAgICAgICAgbV9pbnRlcm5hbGx5RmFpbGVkUmVzb3VyY2VMb2Fk
ZXJzLnJlbW92ZShyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAg
ICBpZiAoYXV0byB0YXNrID0gbV91cmxTY2hlbWVIYW5kbGVyVGFza3MudGFrZShyZXNvdXJjZUxv
YWRlci0+aWRlbnRpZmllcigpKSkgeworICAgICAgICB0YXNrLT5zdG9wTG9hZGluZygpOworICAg
ICAgICByZXR1cm47CisgICAgfQogICAgIAogICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRl
bnRpZmllciA9IHJlc291cmNlTG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgaWYgKCFpZGVudGlm
aWVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5oCmluZGV4IGI3ZTFiMTk5NDAwNzNmMmU2NGMxZjRkZDgxMjNkYWUyNzUy
MThlY2QuLjI5MDQ3NWI2MTkzMzY5OTc4ZGI1MjUzMzBlZTNiYTQyN2MyYzM4ZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5oCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTsK
IHR5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIAogY2xhc3MgV2ViTG9h
ZGVyU3RyYXRlZ3kgOiBwdWJsaWMgV2ViQ29yZTo6TG9hZGVyU3RyYXRlZ3kgewpAQCAtNzQsNiAr
NzUsNyBAQCBwcml2YXRlOgogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYkxvYWRlclN0cmF0ZWd5PiBt
X2ludGVybmFsbHlGYWlsZWRMb2FkVGltZXI7CiAgICAgCiAgICAgSGFzaE1hcDx1bnNpZ25lZCBs
b25nLCBSZWZQdHI8V2ViUmVzb3VyY2VMb2FkZXI+PiBtX3dlYlJlc291cmNlTG9hZGVyczsKKyAg
ICBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJVUkxTY2hlbWVIYW5k
bGVyVGFza1Byb3h5Pj4gbV91cmxTY2hlbWVIYW5kbGVyVGFza3M7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBjMzBiYTE4NzZmNmNhYjVhNDJjNDgxNTQxNjhhZjBlYjJmMTgyYjZjLi43ZDQ0
MjYwZjc0NzJmM2E4NDdlZmE4ZjM3MGM0MjE3YzI5NmY1ZGJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xMTAsNiArMTEwLDcgQEAKICNp
bmNsdWRlICJXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRQ
cm92aWRlci5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5oIgorI2lu
Y2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVw
LmgiCiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV2Vi
VXNlck1lZGlhQ2xpZW50LmgiCkBAIC01NjEsNiArNTYyLDkgQEAgV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQog
ICAgICAgICBlbmFibGVFbnVtZXJhdGluZ0FsbE5ldHdvcmtJbnRlcmZhY2VzKCk7CiAjZW5kaWYK
ICNlbmRpZgorCisgICAgZm9yIChhdXRvIGl0ZXJhdG9yIDogcGFyYW1ldGVycy51cmxTY2hlbWVI
YW5kbGVycykKKyAgICAgICAgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGl0ZXJhdG9yLnZhbHVl
LCBpdGVyYXRvci5rZXkpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlaW5pdGlhbGl6ZVdlYlBhZ2Uo
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCkBAIC01NzM5LDQgKzU3NDMs
NDIgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25M
b2FkaW5nQ2xpZW50KQogICAgIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Jj4oY29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkpLnNldFVzZUljb25Mb2FkaW5n
Q2xpZW50KHVzZUljb25Mb2FkaW5nQ2xpZW50KTsKIH0KIAorV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5KiBXZWJQYWdlOjp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYgc2No
ZW1lKQoreworICAgIHJldHVybiBtX3NjaGVtZVRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmdl
dChzY2hlbWUpOworfQorCit2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1
aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY2hlbWUpCit7CisgICAg
YXV0byBzY2hlbWVSZXN1bHQgPSBtX3NjaGVtZVRvVVJMU2NoZW1lSGFuZGxlclByb3h5TWFwLmFk
ZChzY2hlbWUsIHN0ZDo6bWFrZV91bmlxdWU8V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5PigqdGhp
cywgaGFuZGxlcklkZW50aWZpZXIpKTsKKyAgICBBU1NFUlQoc2NoZW1lUmVzdWx0LmlzTmV3RW50
cnkpOworCisgICAgYXV0byBpZGVudGlmaWVyUmVzdWx0ID0gbV9pZGVudGlmaWVyVG9VUkxTY2hl
bWVIYW5kbGVyUHJveHlNYXAuYWRkKGhhbmRsZXJJZGVudGlmaWVyLCBzY2hlbWVSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmdldCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKGlkZW50aWZpZXJSZXN1bHQs
IGlkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6dXJsU2No
ZW1lSGFuZGxlclRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgaGFuZGxlcklkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKK3sKKyAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5k
bGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoaGFuZGxlcik7
CisKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHRhc2tJZGVudGlmaWVyLCBy
ZXNwb25zZSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxlclRhc2tEaWRSZWNl
aXZlRGF0YSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZp
ZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKK3sKKyAgICBhdXRvKiBoYW5kbGVy
ID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVu
dGlmaWVyKTsKKyAgICBBU1NFUlQoaGFuZGxlcik7CisKKyAgICBoYW5kbGVyLT50YXNrRGlkUmVj
ZWl2ZURhdGEodGFza0lkZW50aWZpZXIsIGRhdGEuc2l6ZSgpLCBkYXRhLmRhdGEoKSk7Cit9CisK
K3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lSGFuZGxlclRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQoreworICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNj
aGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOworICAgIEFTU0VSVCho
YW5kbGVyKTsKKworICAgIGhhbmRsZXItPnRhc2tEaWRDb21wbGV0ZSh0YXNrSWRlbnRpZmllciwg
ZXJyb3IpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGM4MzJlMmNjZWM4OWY3OTY3ODNjMjgwNGE0
ZjQyYjU3NjFjZDI5YWUuLjM3ZDgxNDQ3MzlmNTdjNjAwNjc3NjFkN2MzNzg1MTk5YTQwYTlhYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDcs
NiArNDcsNyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlVzZXJE
YXRhLmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgiCisj
aW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZp
dHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RpY3Rpb25hcnlQb3B1cEluZm8uaD4KQEAgLTE3OCw2ICsxNzksNyBA
QCBjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBXZWJJbnNwZWN0b3JVSTsKIGNsYXNz
IFdlYkdlc3R1cmVFdmVudDsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7CitjbGFzcyBXZWJVUkxT
Y2hlbWVIYW5kbGVyUHJveHk7CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTm90aWZp
Y2F0aW9uQ2xpZW50OwogY2xhc3MgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI7CkBAIC05Njks
NiArOTcxLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uY2x1ZGVFZGl0RGF0YUludGVyYWN0
aW9uKCk7CiAjZW5kaWYKIAorICAgIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSogdXJsU2NoZW1l
SGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJpbmcmKTsKKwogcHJpdmF0ZToKICAgICBXZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIApAQCAtMTI2
Miw2ICsxMjY2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUGFzc3dvcmRGb3JR
dWlja0xvb2tEb2N1bWVudChjb25zdCBTdHJpbmcmKTsKICNlbmRpZgogCisgICAgdm9pZCByZWdp
c3RlclVSTFNjaGVtZUhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
Y2hlbWUpOworCisgICAgdm9pZCB1cmxTY2hlbWVIYW5kbGVyVGFza0RpZFJlY2VpdmVSZXNwb25z
ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIHVybFNjaGVtZUhhbmRs
ZXJUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHVy
bFNjaGVtZUhhbmRsZXJUYXNrRGlkQ29tcGxldGUodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIs
IHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CisKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpQYWdlPiBtX3BhZ2U7CkBAIC0xNTQwLDYgKzE1NTAsOSBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gbV91c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uIHsgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjo6TFRSIH07CiAK
ICAgICBjb25zdCBTdHJpbmcgbV9vdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKKworICAg
IEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5
Pj4gbV9zY2hlbWVUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkqPiBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhh
bmRsZXJQcm94eU1hcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRl
eCA3NDZlMjVkOWQwN2UyY2U2OWYwMzJjYjU0YWU1OTQ2Nzc2NzVhNmJlLi5jZjRmNDY1NjJiNWI4
YWE2YjgxNWM5ODQzY2IwYjdhYzkyYjc2ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNDY5LDQgKzQ2OSwx
MCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBVU0UoUVVJQ0tf
TE9PSykKICAgICBEaWRSZWNlaXZlUGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudChTdHJpbmcg
cGFzc3dvcmQpCiAjZW5kaWYKKworICAgIFJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1aW50NjRf
dCBpZGVudGlmaWVyLCBTdHJpbmcgc2NoZW1lKQorCisgICAgVVJMU2NoZW1lSGFuZGxlclRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgcHJvdmlkZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKKyAgICBV
UkxTY2hlbWVIYW5kbGVyVGFza0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHByb3ZpZGVySWRlbnRp
ZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQor
ICAgIFVSTFNjaGVtZUhhbmRsZXJUYXNrRGlkQ29tcGxldGUodWludDY0X3QgcHJvdmlkZXJJZGVu
dGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBl
cnJvcikKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UwYThkMTJj
NTVmNzJmYTZjZWM1NWE3NzU1MDE0ODg0ODQ4MjVjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3Bw
CkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCisKKyNpbmNsdWRlICJXZWJFcnJvcnMu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkoV2ViUGFnZSYgcGFnZSwgdWludDY0X3QgaWRl
bnRpZmllcikKKyAgICA6IG1fd2ViUGFnZShwYWdlKQorICAgICwgbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCit7Cit9CisKK1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6fldlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eSgpCit7CisgICAgQVNTRVJUKG1fdGFza3MuaXNFbXB0eSgpKTsKK30KKwordm9p
ZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0YXJ0TmV3VGFzayhSZXNvdXJjZUxvYWRlciYg
bG9hZGVyKQoreworICAgIGF1dG8gcmVzdWx0ID0gbV90YXNrcy5hZGQobG9hZGVyLmlkZW50aWZp
ZXIoKSwgc3RkOjptYWtlX3VuaXF1ZTxXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5PigqdGhp
cywgbG9hZGVyKSk7CisgICAgQVNTRVJUKHJlc3VsdC5pc05ld0VudHJ5KTsKKworICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUtPnN0YXJ0TG9hZGluZygpOworfQorCisKK3ZvaWQgV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IHRhc2tJZGVu
dGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBhdXRvKiB0
YXNrID0gbV90YXNrcy5nZXQodGFza0lkZW50aWZpZXIpOworICAgIGlmICghdGFzaykKKyAgICAg
ICAgcmV0dXJuOworCisgICAgdGFzay0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30K
Kwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCB0YXNrSWRlbnRpZmllciwgc2l6ZV90IHNpemUsIGNvbnN0IHVpbnQ4X3QqIGRhdGEpCit7
CisgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRhc2tJZGVudGlmaWVyKTsKKyAgICBpZiAo
IXRhc2spCisgICAgICAgIHJldHVybjsKKworICAgIHRhc2stPmRpZFJlY2VpdmVEYXRhKHNpemUs
IGRhdGEpOworfQorCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZENvbXBs
ZXRlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
K3sKKyAgICBhdXRvIHRhc2sgPSBtX3Rhc2tzLnRha2UodGFza0lkZW50aWZpZXIpOworICAgIGlm
ICghdGFzaykKKyAgICAgICAgcmV0dXJuOworCisgICAgdGFzay0+ZGlkQ29tcGxldGUoZXJyb3Ip
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZWZjM2FmMWE1M2VlMWY5YjgzODc2YjhjMDlmNmM0MTk1ZjA2MDVkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBSZXNvdXJjZUVy
cm9yOworY2xhc3MgUmVzb3VyY2VMb2FkZXI7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsKKworY2xhc3MgV2ViVVJMU2No
ZW1lSGFuZGxlclByb3h5IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJVUkxTY2hlbWVI
YW5kbGVyUHJveHkpOworcHVibGljOgorICAgIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eShXZWJQ
YWdlJiwgdWludDY0X3QgaWRlbnRpZmllcik7CisgICAgfldlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eSgpOworCisgICAgdm9pZCBzdGFydE5ld1Rhc2soV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsK
KworICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KKyAgICBXZWJQYWdlJiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlOyB9CisKKyAgICB2b2lk
IHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIHRhc2tEaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCB0YXNrSWRlbnRpZmllciwgc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKKyAg
ICB2b2lkIHRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYpOworCitwcml2YXRlOgorICAgIFdlYlBhZ2UmIG1fd2ViUGFn
ZTsKKyAgICB1aW50NjRfdCBtX2lkZW50aWZpZXIgeyAwIH07CisKKyAgICBIYXNoTWFwPHVuc2ln
bmVkIGxvbmcsIHN0ZDo6dW5pcXVlX3B0cjxXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5Pj4g
bV90YXNrczsKK307IC8vIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jOGU2MzZkOGNkNGU5YTY0MmI4MzM5YTk2MDc5M2E5ZWM1ZjE4ZmU4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhh
bmRsZXJUYXNrUHJveHkuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eS5oIgor
CisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrTG9hZE1ldHJpY3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6V2ViVVJMU2NoZW1lSGFuZGxl
clRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkmIGhhbmRsZXIsIFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCisgICAgOiBtX3VybFNjaGVtZUhhbmRsZXIoaGFuZGxlcikKKyAgICAsIG1f
Y29yZUxvYWRlcigmbG9hZGVyKQorICAgICwgbV9yZXF1ZXN0KGxvYWRlci5yZXF1ZXN0KCkpCit7
Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94eTo6c3RhcnRMb2FkaW5nKCkK
K3sKKyAgICBBU1NFUlQobV9jb3JlTG9hZGVyKTsKKyAgICBtX3VybFNjaGVtZUhhbmRsZXIucGFn
ZSgpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U3RhcnRVUkxTY2hlbWVIYW5kbGVyVGFz
ayhtX3VybFNjaGVtZUhhbmRsZXIuaWRlbnRpZmllcigpLCBtX2NvcmVMb2FkZXItPmlkZW50aWZp
ZXIoKSwgbV9yZXF1ZXN0KSk7Cit9CisKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclRhc2tQcm94
eTo6c3RvcExvYWRpbmcoKQoreworICAgIGlmICghbV9jb3JlTG9hZGVyKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3VybFNjaGVtZUhhbmRsZXIucGFnZSgpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U3RvcFVSTFNjaGVtZUhhbmRsZXJUYXNrKG1fdXJsU2NoZW1lSGFuZGxlci5pZGVu
dGlmaWVyKCksIG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSk7CisgICAgbV9jb3JlTG9hZGVy
ID0gbnVsbHB0cjsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAg
aWYgKCFtX2NvcmVMb2FkZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29yZUxvYWRlci0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKK30KKwordm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyVGFza1Byb3h5OjpkaWRSZWNlaXZlRGF0YShzaXplX3Qgc2l6ZSwgY29uc3QgdWludDhfdCog
ZGF0YSkKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9jb3JlTG9hZGVyLT5kaWRSZWNlaXZlRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIq
PihkYXRhKSwgc2l6ZSwgMCwgRGF0YVBheWxvYWRUeXBlOjpEYXRhUGF5bG9hZEJ5dGVzKTsKK30K
Kwordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5OjpkaWRDb21wbGV0ZShjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIW1fY29yZUxvYWRlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGVycm9yLmlzTnVsbCgpKQorICAgICAgICBtX2NvcmVMb2FkZXIt
PmRpZEZpbmlzaExvYWRpbmcoTmV0d29ya0xvYWRNZXRyaWNzKCkpOworICAgIGVsc2UKKyAgICAg
ICAgbV9jb3JlTG9hZGVyLT5kaWRGYWlsKGVycm9yKTsKKworICAgIG1fY29yZUxvYWRlciA9IG51
bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJUYXNrUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFz
a1Byb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZjk3ZjI2MzY1ZWJjNzg5YzA3ZDMwNTg4ZDJiMjMxNDc3NjU0
YWE4NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVIYW5kbGVyVGFza1Byb3h5LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3Qu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUmVzb3VyY2VFcnJvcjsKK2NsYXNzIFJl
c291cmNlTG9hZGVyOworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK30KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTsKKworY2xhc3MgV2ViVVJM
U2NoZW1lSGFuZGxlclRhc2tQcm94eSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViVVJM
U2NoZW1lSGFuZGxlclRhc2tQcm94eSk7CitwdWJsaWM6CisgICAgV2ViVVJMU2NoZW1lSGFuZGxl
clRhc2tQcm94eShXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlciYpOworCisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CisKKyAgICB2b2lkIHN0YXJ0TG9hZGluZygpOwor
ICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRh
KHNpemVfdCwgY29uc3QgdWludDhfdCogZGF0YSk7CisgICAgdm9pZCBkaWRDb21wbGV0ZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CisKK3ByaXZhdGU6CisgICAgV2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5JiBtX3VybFNjaGVtZUhhbmRsZXI7CisgICAgUmVmUHRyPFdlYkNvcmU6OlJl
c291cmNlTG9hZGVyPiBtX2NvcmVMb2FkZXI7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IG1fcmVxdWVzdDsKKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>