<?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>207593</bug_id>
          
          <creation_ts>2020-02-11 15:46:06 -0800</creation_ts>
          <short_desc>[WK2][Cocoa] Implement in-WebProcess cookie cache to avoid sync IPC for document.cookie in most cases</short_desc>
          <delta_ts>2020-02-24 16:23:01 -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=208165</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1617703</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-11 15:46:06 -0800</bug_when>
    <thetext>Implement in-WebProcess cookie cache to avoid sync IPC for document.cookie in most cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617704</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-11 15:46:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/56027027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617708</commentid>
    <comment_count>2</comment_count>
      <attachid>390450</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-11 15:48:55 -0800</bug_when>
    <thetext>Created attachment 390450
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1617761</commentid>
    <comment_count>3</comment_count>
      <attachid>390462</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-11 16:37:04 -0800</bug_when>
    <thetext>Created attachment 390462
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618080</commentid>
    <comment_count>4</comment_count>
      <attachid>390533</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 10:24:03 -0800</bug_when>
    <thetext>Created attachment 390533
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618101</commentid>
    <comment_count>5</comment_count>
      <attachid>390536</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 10:46:34 -0800</bug_when>
    <thetext>Created attachment 390536
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618116</commentid>
    <comment_count>6</comment_count>
      <attachid>390539</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 10:58:11 -0800</bug_when>
    <thetext>Created attachment 390539
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618177</commentid>
    <comment_count>7</comment_count>
      <attachid>390549</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 13:02:08 -0800</bug_when>
    <thetext>Created attachment 390549
WIP Patch

Now passing layout tests locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618224</commentid>
    <comment_count>8</comment_count>
      <attachid>390561</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 14:30:50 -0800</bug_when>
    <thetext>Created attachment 390561
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618244</commentid>
    <comment_count>9</comment_count>
      <attachid>390567</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 15:02:49 -0800</bug_when>
    <thetext>Created attachment 390567
WIP Patch

With more layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618275</commentid>
    <comment_count>10</comment_count>
      <attachid>390575</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-12 16:00:08 -0800</bug_when>
    <thetext>Created attachment 390575
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618662</commentid>
    <comment_count>11</comment_count>
      <attachid>390575</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-02-13 12:44:36 -0800</bug_when>
    <thetext>Comment on attachment 390575
Patch

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

&gt; Source/WTF/wtf/PlatformEnable.h:802
&gt; +#if !defined(ENABLE_COOKIE_CACHE) &amp;&amp; PLATFORM(COCOA) &amp;&amp; HAVE(CFNETWORK_COOKIE_CHANGE_LISTENER_API)
&gt; +#define ENABLE_COOKIE_CACHE 1
&gt; +#endif

Couldn&apos;t this just be a runtime no-op without CFNETWORK_COOKIE_CHANGE_LISTENER_API and avoid most #ifs?

&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:617
&gt; +    ASSERT(observers.add(&amp;observer).isNewEntry);

Why is observer only added in debug build?

&gt; Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp:131
&gt; +    if (!m_hostsWithCookieListeners.isEmpty()) {
&gt; +        auto hostsWithCookieListeners = copyToVector(m_hostsWithCookieListeners);
&gt; +        unsubscribeFromCookieChangeNotifications(hostsWithCookieListeners);
&gt; +    }

I think it would be nicer to have a separate function or just loop over m_hostsWithCookieListeners here (avoiding the vector copy). It is just call to stopListeningForCookieChangeNotifications for each.

&gt; Source/WebKit/WebProcess/WebPage/WebCookieCache.h:44
&gt; +    bool isFunctional();

isEnabled/isSupported?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618663</commentid>
    <comment_count>12</comment_count>
      <attachid>390575</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-13 12:47:58 -0800</bug_when>
    <thetext>Comment on attachment 390575
Patch

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

&gt;&gt; Source/WebCore/platform/network/cocoa/NetworkStorageSessionCocoa.mm:617
&gt;&gt; +    ASSERT(observers.add(&amp;observer).isNewEntry);
&gt; 
&gt; Why is observer only added in debug build?

ouch, last minute clean up I made :/ Thanks for catching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618664</commentid>
    <comment_count>13</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-02-13 12:50:59 -0800</bug_when>
    <thetext>&gt; ouch, last minute clean up I made :/ Thanks for catching.

Observers don&apos;t seem to have much test coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618669</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-13 13:07:21 -0800</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #13)
&gt; &gt; ouch, last minute clean up I made :/ Thanks for catching.
&gt; 
&gt; Observers don&apos;t seem to have much test coverage.

EWS does not have the CFNetwork SPI needed and thus does not cover my change. Actual layout test bots will run the tests with the cookie cache enabled (at least some of the bots will).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618710</commentid>
    <comment_count>15</comment_count>
      <attachid>390687</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-13 14:33:35 -0800</bug_when>
    <thetext>Created attachment 390687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618713</commentid>
    <comment_count>16</comment_count>
      <attachid>390688</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-13 14:37:32 -0800</bug_when>
    <thetext>Created attachment 390688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618724</commentid>
    <comment_count>17</comment_count>
      <attachid>390691</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-13 15:00:29 -0800</bug_when>
    <thetext>Created attachment 390691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618747</commentid>
    <comment_count>18</comment_count>
      <attachid>390695</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-13 15:26:52 -0800</bug_when>
    <thetext>Created attachment 390695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619690</commentid>
    <comment_count>19</comment_count>
      <attachid>390925</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-17 09:57:04 -0800</bug_when>
    <thetext>Created attachment 390925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619692</commentid>
    <comment_count>20</comment_count>
      <attachid>390926</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-17 09:58:13 -0800</bug_when>
    <thetext>Created attachment 390926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619906</commentid>
    <comment_count>21</comment_count>
      <attachid>390988</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-17 14:53:38 -0800</bug_when>
    <thetext>Created attachment 390988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1619983</commentid>
    <comment_count>22</comment_count>
      <attachid>391004</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-17 16:59:00 -0800</bug_when>
    <thetext>Created attachment 391004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620072</commentid>
    <comment_count>23</comment_count>
      <attachid>391004</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-17 22:32:49 -0800</bug_when>
    <thetext>Comment on attachment 391004
Patch

Clearing flags on attachment: 391004

Committed r256820: &lt;https://trac.webkit.org/changeset/256820&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620073</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-17 22:32:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622393</commentid>
    <comment_count>25</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-02-24 16:23:01 -0800</bug_when>
    <thetext>The new test http/tests/cookies/document-cookie-after-showModalDialog.html

is a flaky failure. tracking in https://bugs.webkit.org/show_bug.cgi?id=208165</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390450</attachid>
            <date>2020-02-11 15:48:55 -0800</date>
            <delta_ts>2020-02-11 16:37:04 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>WebCookieCache_wip.patch</filename>
            <type>text/plain</type>
            <size>56450</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGZlZGUyNGJlMzU0Li41OTliYTM4ODI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC03OTcsNiArNzk3LDEwIEBACiAjZGVmaW5lIEVOQUJM
RV9USFJFQURJTkdfR0VORVJJQyAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9DT09L
SUVfQ0FDSEUpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKyNkZWZpbmUgRU5BQkxFX0NPT0tJRV9DQUNIRSAxCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9HQ19WQUxJREFUSU9OKSAmJiAhZGVmaW5lZChOREVCVUcp
CiAjZGVmaW5lIEVOQUJMRV9HQ19WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAppbmRleCA5YjdhOGFjMTgwZi4uNjUwNGFlNjM1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBA
IC01NTYsNiArNTU2LDEwIEBACiAjZGVmaW5lIEhBVkVfREVWSUNFX0lERU5USVRZIDEKICNlbmRp
ZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0NPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJIDEKKyNlbmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjZGVmaW5lIEhBVkVfREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOIDEKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCA2
NjU4ZTcyOGM5Yy4uYTkyMDc2MGIzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdURl9FWFRFUk5fQ19FTkQK
IAogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlICgpCiArICh2b2lkKV9zZXRTaGFyZWRI
VFRQQ29va2llU3RvcmFnZTooTlNIVFRQQ29va2llU3RvcmFnZSAqKXN0b3JhZ2U7CistICh2b2lk
KV9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6KE5TU2V0PE5TU3RyaW5nKj4q
IF9fbnVsbGFibGUpZG9tYWluTGlzdDsKKy0gKHZvaWQpX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6
KHZvaWQoXl9fbnVsbGFibGUpKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGFkZGVkQ29va2llcywg
TlNVUkwqIF9fbnVsbGFibGUgdXJsRm9yQWRkZWRDb29raWVzKSljb29raWVzQWRkZWRIYW5kbGVy
IG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsKKy0gKHZvaWQpX3Nl
dENvb2tpZXNEZWxldGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBD
b29raWUqPiogX19udWxsYWJsZSBkZWxldGVkQ29va2llcywgYm9vbCBkZWxldGVkQWxsQ29va2ll
cykpY29va2llc0RlbGV0ZWRIYW5kbGVyIG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxs
YWJsZSlxdWV1ZTsKKy0gKE5TQXJyYXkqIF9fbnVsbGFibGUpX2dldENvb2tpZXNGb3JEb21haW46
KE5TU3RyaW5nKilkb21haW47CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDg0ZGJhNDBlOTI4Li4xNTU5NjZkNjdhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJM
JiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsK
IAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2FjaGUo
KSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB+Q29va2llSmFyKCk7CiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8oY29uc3QgRG9jdW1lbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDMxNmQyMTY5N2JkLi45MTQ3YWEx
NDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ29tbW9uVk0uaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05
OSw2ICsxMDAsMTIgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9u
b3VzIHN5bmNocm9ub3VzLCBNYWludGFpbkJhY2tGb3J3YXJkQ2EKIAogICAgIENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAg
UGFnZTo6Zm9yRWFjaFBhZ2UoW10oYXV0byYgcGFnZSkgeworICAgICAgICBwYWdlLmNvb2tpZUph
cigpLmNsZWFyQ2FjaGUoKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiBkb2N1
bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxEb2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1
bWVudHMoKSkpIHsKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5yZWxlYXNlTWVtb3J5
KCk7CiAgICAgICAgIGRvY3VtZW50LT5mb250U2VsZWN0b3IoKS5lbXB0eUNhY2hlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDYuLmJhNzI1ZDhlMzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgK
QEAgLTYwLDYgKzYwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENvb2tp
ZUphcjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VPYnNl
cnZlci5oIgorT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU011dGFibGVTZXQ7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzksNiArODEsMTUgQEAgZW51bSBjbGFz
cyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdCB7IEFsbCwgQWxsT25TaXRl
c1dpdGhvdXRVc2VySW4KIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0Q29va2llc0xpdmVPblRl
c3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGltZW91dCB9OwogZW51bSBj
bGFzcyBTaG91bGRBc2tJVFAgOiBib29sIHsgTm8sIFllcyB9OwogCisjaWYgSEFWRShDRk5FVFdP
UktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNlcnZl
ciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNEZWxl
dGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTQsNyArMTA1LDggQEAgcHVibGljOgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVDRlN0
b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4mJik7CisgICAgZW51bSBjbGFzcyBJc0luTWVtb3J5Q29va2llU3RvcmUgOiBib29s
IHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmLCBJc0luTWVtb3J5Q29va2llU3RvcmUgPSBJ
c0luTWVtb3J5Q29va2llU3RvcmU6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgLy8gTWF5IGJlIG51
bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCkBA
IC0xNDYsNiArMTU4LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+
IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2ll
Q2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hh
bmdlT2JzZXJ2ZXImLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpOworI2VuZGlmCisKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3Vs
ZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwpAQCAtMTczLDExICsxOTEs
MjMgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhUVFBPbmx5LCBJbmNs
dWRlSFRUUE9ubHkgfTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vz
c2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwg
SW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
PSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0cENvb2tpZXNGb3JV
UkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IE9wdGlv
bmFsPFNhbWVTaXRlSW5mbz4mLCBOU1VSTCAqKSBjb25zdDsKKyAgICBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBTaG91bGRBc2tJVFApIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKiwgTlNVUkwgKm1h
aW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJikgY29uc3Q7CisjZW5kaWYKKyNpZiBI
QVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICB2b2lkIHJlZ2lz
dGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorCiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
VVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9w
bGF0Zm9ybVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IG1f
cGxhdGZvcm1Db29raWVTdG9yYWdlOworICAgIGJvb2wgbV9pc0luTWVtb3J5Q29va2llU3RvcmUg
eyBmYWxzZSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgc3RhdGljIHZvaWQgY29va2llc0RpZENo
YW5nZShOZXR3b3JrU3RvcmFnZVNlc3Npb24qKTsKIApAQCAtMTkwLDYgKzIyMCwxMiBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwogI2VuZGlmCiAK
KyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBib29s
IG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAgIFJldGFpblB0cjxO
U011dGFibGVTZXQ+IG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOworICAgIEhh
c2hNYXA8U3RyaW5nLCBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4+IG1fY29va2llQ2hh
bmdlT2JzZXJ2ZXJzOworI2VuZGlmCisKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRlbnRp
YWxTdG9yYWdlOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKaW5kZXggYjAxYTdlNjZiZjAuLmUwZDg0ZjdjNTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtNzMsMTEgKzczLDEyIEBA
IFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25GCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQog
Ci1OZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmIHBsYXRm
b3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYgcGxhdGZvcm1D
b29raWVTdG9yYWdlKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZj4mJiBwbGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiYmIHBsYXRmb3JtQ29va2llU3RvcmFnZSwgSXNJbk1lbW9yeUNvb2tpZVN0b3JlIGlzSW5NZW1v
cnlDb29raWVTdG9yZSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fcGxh
dGZvcm1TZXNzaW9uKFdURk1vdmUocGxhdGZvcm1TZXNzaW9uKSkKKyAgICAsIG1faXNJbk1lbW9y
eUNvb2tpZVN0b3JlKGlzSW5NZW1vcnlDb29raWVTdG9yZSA9PSBJc0luTWVtb3J5Q29va2llU3Rv
cmU6OlllcykKIHsKLSAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpIHx8ICFwbGF0
Zm9ybUNvb2tpZVN0b3JhZ2UpOworICAgIEFTU0VSVChwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkg
fHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAg
ICAgbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPyBXVEZN
b3ZlKHBsYXRmb3JtQ29va2llU3RvcmFnZSkgOiBjb29raWVTdG9yYWdlKCk7CiB9CiAKQEAgLTg4
LDEwICs4OSwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UoKSBjb25zdAogewot
ICAgIGlmICghcHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQorICAgIGlmICghcHJvY2Vzc01heVVz
ZUNvb2tpZUFQSSgpICYmICFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5
Q29va2llU3RvcmUpOwogCiAgICAgaWYgKG1fcGxhdGZvcm1Db29raWVTdG9yYWdlKQogICAgICAg
ICByZXR1cm4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbQppbmRleCA5ZTlhOTFiNzI1MC4uMmQwYTA4NGE4MDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3Qg
Q29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJ
bk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
ICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWVd
OwpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2ll
KGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmls
ZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZvciAoY29uc3QgYXV0byYgY29va2ll
IDogY29va2llcykKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYKIAog
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNv
b2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29v
a2llU3RvcmUpOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENv
b2tpZSAqKWNvb2tpZV07CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAKIE5TSFRUUENvb2tpZVN0b3JhZ2UgKk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGF1
dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwogICAgIGlmICghY2ZDb29raWVT
dG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5f
Y29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBbTlNIVFRQ
Q29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CkBAIC0xNTgsMTEgKzE1OCw2
IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENG
U3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNo
ZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNob3VsZCBub3QgYmUgbmVj
ZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhlZC4KICAgICBDRlVS
TENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxDYWNoZSBzaGFyZWRV
UkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlU2Vz
c2lvbi5sZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBhdXRvIGNvb2tpZVN0b3Jh
Z2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZVN0
b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI2LDkgKzIyMSw5IEBAIHN0YXRp
YyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UsIE5T
VVJMICp1cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNvb2tpZXNQdHItPmF1dG9yZWxlYXNlKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKnVybCwgTlNVUkwg
Km1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8pCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqdXJsLCBO
U1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbykg
Y29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29v
a2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewogI2lmICEoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAmJiAhUExBVEZP
Uk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgICAgIGlmIChbTlNIVFRQQ29v
a2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tp
ZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQpAQCAtMjU1LDIx
ICsyNTAsMjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICoKICNlbmRpZgogfQogCi1zdGF0aWMg
TlNBcnJheSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYg
c2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2Us
IE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0
ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICghY29v
a2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7Cisg
ICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5N
ZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29va2ll
U3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgfQogCiAgICAgLy8g
RklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZWFj
aCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAgLy8gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2Jq
ZWN0IGZvciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFnZT4gbnNDb29raWVT
dG9yYWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENG
SFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0pOwotICAgIHJldHVybiBjb29raWVzRm9y
VVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8p
OworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQo
KSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogfQogCiBzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlv
bmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVzIGNvdW50XTsKICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogCkBAIC0zMDIsMjcgKzI5OCwyNiBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0
ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9
CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVS
TChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBj
b25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNo
b3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2NrQ29v
a2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFz
a0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5kaWYKLSAgICByZXR1cm4gaHR0cENvb2tp
ZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFn
ZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9CiAKLWVudW0gSW5j
bHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5
IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQID0g
U2hvdWxkQXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNj
ZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3Jl
KTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNv
b2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29va2ll
cyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAoIVtjb29raWVzIGNvdW50XSkKICAgICAg
ICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBhIG51bGwgc3RyaW5nLCBu
b3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBjcmVhdGUgYmVsb3cuCiAK
QEAgLTM3NCwyMiArMzY5LDIyIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKIAogc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9y
U2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRB
c2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5
KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVyRmll
bGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVy
RmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94
eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJl
Q29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHku
Zmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJv
eHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlE
LCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMp
OwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
IHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIApAQCAtNDU3LDcgKzQ1Miw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJCiAg
ICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOworICAg
IE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgTlNVSW50ZWdlciBj
b3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShj
b3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpAQCAt
NTY2LDQgKzU2MSw4NiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQogICAgIFtzdG9yYWdlIF9zYXZl
Q29va2llc107CiB9CiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlZ2lzdGVyQ29va2llQ2hhbmdl
TGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2RpZFJlZ2lzdGVyQ29va2llTGlz
dGVuZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVu
ZXJzID0gdHJ1ZTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNBZGRlZEhhbmRs
ZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqIG5zQ29va2llcywgTlNVUkwgKnVybEZvckFk
ZGVkQ29va2llcykgeworICAgICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgICAgICBO
U1VJbnRlZ2VyIGNvdW50ID0gW25zQ29va2llcyBjb3VudF07CisgICAgICAgIGNvb2tpZXMucmVz
ZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgeworICAgICAgICAgICAgTlNIVFRQQ29va2llICpuc0Nvb2tpZSA9IChOU0hU
VFBDb29raWUgKilbbnNDb29raWVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgICAgICBjb29r
aWVzLnVuY2hlY2tlZEFwcGVuZCh7IG5zQ29va2llIH0pOworICAgICAgICB9CisKKyAgICAgICAg
YXV0byBob3N0ID0gVVJMKHVybEZvckFkZGVkQ29va2llcykuaG9zdCgpLnRvU3RyaW5nKCk7Cisg
ICAgICAgIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZlcnMgPSBtX2Nvb2tp
ZUNoYW5nZU9ic2VydmVycy5nZXQoaG9zdCk7CisgICAgICAgIGZvciAoYXV0byogb2JzZXJ2ZXIg
OiBvYnNlcnZlcnMpCisgICAgICAgICAgICBvYnNlcnZlci0+Y29va2llc0FkZGVkKGhvc3QsIGNv
b2tpZXMpOworICAgIH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAgICBb
bnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNI
VFRQQ29va2llICo+ICosIGJvb2wgLypkZWxldGVkQWxsQ29va2llcyovKSB7CisgICAgICAgIEhh
c2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZlcnM7CisgICAgICAgIGZvciAoYXV0
byYgc3ViT2JzZXJ2ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMudmFsdWVzKCkpCisgICAg
ICAgICAgICBvYnNlcnZlcnMuYWRkKHN1Yk9ic2VydmVycy5iZWdpbigpLCBzdWJPYnNlcnZlcnMu
ZW5kKCkpOworICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAg
ICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNEZWxldGVkKCk7CisgICAgfSBvblF1ZXVlOmRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rh
cnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5nZU9ic2Vy
dmVyJiBvYnNlcnZlciwgY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIHJlZ2lzdGVyQ29va2ll
Q2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8mIG9ic2VydmVycyA9IG1f
Y29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuc3VyZShob3N0LCBbXSB7CisgICAgICAgIHJldHVybiBI
YXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4geyB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKKyAgICBpZiAoIW9ic2VydmVycy5hZGQoJm9ic2VydmVyKS5pc05ld0VudHJ5KQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKCFtX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcykK
KyAgICAgICAgbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKFttX3N1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0XSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGFk
ZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1
YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9w
TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZl
ciYgb2JzZXJ2ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cykKK3sKKyAgICBib29sIHN1
YnNjcmliZWRVUkxzQ2hhbmdlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaG9zdCA6IGhvc3Rz
KSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5kKGhvc3Qp
OworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBvYnNlcnZlcnMgPSBpdC0+dmFsdWU7
CisgICAgICAgIG9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKKyAgICAgICAgaWYgKG9ic2Vy
dmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnJl
bW92ZShpdCk7CisgICAgICAgICAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5n
ZXMgcmVtb3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgICAgICAgICAgc3Vic2NyaWJl
ZFVSTHNDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3Vic2NyaWJl
ZFVSTHNDaGFuZ2VkKQorICAgICAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWRV
UkxzRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcy5n
ZXQoKV07Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZG9tQ29v
a2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5TQXJyYXkgKm5zQ29va2ll
cyA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJpbmcgKilo
b3N0XTsKKyAgICBWZWN0b3I8Q29va2llPiBkb21Db29raWVzOworICAgIGZvciAoTlNIVFRQQ29v
a2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpIHsKKyAgICAgICAgaWYgKCFuc0Nvb2tpZS5IVFRQ
T25seSkKKyAgICAgICAgICAgIGRvbUNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsK
KyAgICB9CisgICAgcmV0dXJuIGRvbUNvb2tpZXM7Cit9CisKKyNlbmRpZiAvLyBIQVZFKENGTkVU
V09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBmYzA4ZWY5OWU0Yi4uY2IyNWE0MDQ5
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC02MzIsNiArNjMyLDM2IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjCiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVD
b29raWUodXJsLCBjb29raWVOYW1lKTsKIH0KIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkb21Db29raWVzRm9ySG9zdChjb25z
dCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25z
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gc3RvcmFnZVNlc3Npb24oKTsKKyAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisKKyAgICBpZiAoc3Vic2NyaWJl
VG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKQorICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPnN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygqdGhpcywgaG9z
dCk7CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRvbUNv
b2tpZXNGb3JIb3N0KGhvc3QpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6dW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaG9zdHMpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
biA9IHN0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c3Rv
cExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhvc3RzKTsKK30K
Kwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0FkZGVkKGNvbnN0
IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7
CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bjo6Q29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIGNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tpZXNEZWxldGVk
KCksIDApOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQogewogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGUzNWJkNDhiMWQzLi4wZDRjZDQyMzBmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3Nh
Z2VQb3J0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vz
c0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBA
IC04Niw2ICs4Nyw5IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAg
OiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4KICNpZiBF
TkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICAsIHB1YmxpYyBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6Q2xpZW50CisjZW5kaWYKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAg
ICwgcHVibGljIFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9ic2VydmVyCiAjZW5kaWYKICAgICAsIElQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTI2NSw2ICsyNjksMTUgQEAgcHJp
dmF0ZToKIAogICAgIHVpbnQ2NF90IG5leHRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyKEZ1bmN0aW9u
PHZvaWQoKT4mJik7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQgdW5zdWJz
Y3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aG9zdHMpOworICAgIHZvaWQgZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBi
b29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmKTsKKworICAgIC8vIFdl
YkNvcmU6OkNvb2tpZUNoYW5nZU9ic2VydmVyLgorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0
IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBmaW5hbDsKKyAg
ICB2b2lkIGNvb2tpZXNEZWxldGVkKCkgZmluYWw7CisjZW5kaWYKKwogICAgIHN0cnVjdCBSZXNv
dXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIgewogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImKSA9IGRlZmF1bHQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlOTVjYzkz
MzhhYi4uZWZhMjIyNDI5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMzQsNiArMzQsMTEgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBT
dHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxv
YWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisg
ICAgVW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhWZWN0b3I8U3RyaW5n
PiBob3N0cykKKyAgICBEb21Db29raWVzRm9ySG9zdChTdHJpbmcgaG9zdCwgYm9vbCBzdWJzY3Jp
YmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiBjb29raWVzKSBTeW5jaHJvbm91cworI2VuZGlmCisKICAgICBDb29raWVzRm9yRE9NKFVSTCBm
aXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJM
IHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3Vs
ZEFza0lUUCkgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29v
a2llcykgU3luY2hyb25vdXMKICAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwg
c3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcg
Y29va2llU3RyaW5nKQogICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVy
bCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBk
aWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggYWRiYzE3NzhhMGIuLjlhMjFjN2ZlNGFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTYxOSw2ICs2MTksNyBAQCBk
ZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6V2ViVG91Y2hFdmVu
dCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBb
JyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyc6IFsnPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKKyAgICAgICAgJ3N0cnVjdCBX
ZWJDb3JlOjpDb29raWUnOiBbJzxXZWJDb3JlL0Nvb2tpZS5oPiddLAogICAgICAgICAnc3RydWN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JzogWyc8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPidd
LAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEnOiBbJyJXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6
OldlYlVzZXJTdHlsZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNTMxMDkyMDNjYTIuLjMxMGRjZDg5MWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKQEAgLTYyMiw2ICs2MjIsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZUJhbm5l
ci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAK
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKK1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVDYWNoZS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTFmYzZmNzM3MmIuLmQyNGE4MDQ4
ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTMsNiArNjEzLDcgQEAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1MubW0KIAogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQorV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQ
YWdlQ29jb2EubW0KIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJSZW1vdGVPYmplY3RSZWdp
c3RyeS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggODBiNDUxNDRiNWUuLjcwYTllOGY2YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk0Myw2ICs5NDMsNyBAQAog
CQk0NjZCQzAzQzFGQTI2NkRBMDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkJD
MDM5MUZBMjY2QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICov
OyB9OwogCQk0NjcxRkYxRjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFG
RjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9Owog
CQk0NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0
M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICov
OyB9OworCQk0NjgwOUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIy
NTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2
MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEy
MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07
CiAJCTQ2QjA1MjQ3MjI2NjhEODUwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2QjA1MjQ0MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJE
NzAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEu
aCAqLzsgfTsKQEAgLTM0NzQsNiArMzQ3NSw4IEBACiAJCTQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRD
NyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcxRkYxRTIz
MjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vz
c0RhdGFTdG9yZVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4
MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAv
KiBQcm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQcm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0
NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEg
LyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NU
aW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04Mzk5LDYgKzg0MDIsOCBA
QAogCQkJCUJDNzJCOUY5MTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94
eS5oICovLAogCQkJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5j
cHAgKi8sCiAJCQkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51Lmgg
Ki8sCisJCQkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAq
LywKKwkJCQk0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLywK
IAkJCQk1QzdGQjQ2RTIxRTk3QzBCMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmNwcCAqLywKIAkJ
CQk1QzdGQjQ2RjIxRTk3QzBDMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggKi8sCiAJCQkJMUE1
QjFDNTIxODk4N0VERjAwNEZDRjlCIC8qIFdlYkRvY3VtZW50TG9hZGVyLmNwcCAqLywKQEAgLTEw
NzYyLDYgKzEwNzY3LDcgQEAKIAkJCQkxQTA0M0Y2QTEyNTE0RDhCMDBGRkJGQjUgLyogV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY4MjQxMjVB
NkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0Qw
IC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjZCRjEyNUE0NDIx
MDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0
RDIxQjFBNDkxNEEzMDBDN0YxNTIgLyogV2ViUHJvY2Vzc1Bvb2wuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdDRTREMjI4MUE0OTE2QzIwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDIzNDY3MGMwNzM0
Li5jMjgzMGZhMjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1h
cE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNs
dWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJJREJD
b25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIgpAQCAtMjM0LDYgKzIzNSwxOCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChIVFRQQ29v
a2llQWNjZXB0UG9saWN5CiAgICAgbV9jb29raWVBY2NlcHRQb2xpY3kgPSBuZXdQb2xpY3k7CiB9
CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiBjb29raWVzKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tp
ZUphcigpLmNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKK30KKwordm9pZCBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5jb29raWVKYXIoKS5jb29raWVzRGVsZXRlZCgpOworfQorI2VuZGlmIC8vIEVOQUJM
RShDT09LSUVfQ0FDSEUpCisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDUxZmRmMzU0NTI0Li5mYjgxMWU0ODYyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNz
IFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3QgQ29va2llOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIGVudW0gY2xhc3MgSFRU
UENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CkBAIC04Myw2ICs4NCwxMSBAQCBwdWJsaWM6
CiAKICAgICBib29sIGNvb2tpZXNFbmFibGVkKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09PS0lF
X0NBQ0hFKQorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCk7Cisj
ZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDJhYTY4ODZlNTdh
Li41NDgwZDU5M2U1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpAQCAtMzEsNiArMzEsMTEgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRPbkxpbmVTdGF0ZShib29sIGlzT25MaW5lKTsKICAg
ICBDb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKGVudW06dWludDhfdCBXZWJDb3JlOjpIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSk7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAg
IENvb2tpZXNBZGRlZChTdHJpbmcgaG9zdCwgVmVjdG9yPHN0cnVjdCBXZWJDb3JlOjpDb29raWU+
IGNvb2tpZXMpOworICAgIENvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogICAgIENoZWNrUHJv
Y2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50
aWZpZXIgcG9ydCkgLT4gKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNB
Y3Rpdml0eSBoYXNBY3Rpdml0eSkgQXN5bmMKICAgICBNZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQo
c3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tp
ZUNhY2hlQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg2
YmM2NmQ5ZDRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQpAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJDb29raWVDYWNoZS5oIgor
CisjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6OmluTWVtb3J5U3Rv
cmFnZVNlc3Npb24oKQoreworICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKSB7Cisg
ICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdEluUHJvY2Vzc1N0
b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKKyAgICAgICAgYXV0byBzdG9yYWdlU2Vz
c2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Np
b25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBjb29raWVTdG9y
YWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CisgICAgICAgIG1faW5NZW1v
cnlTdG9yYWdlU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiks
IFdURk1vdmUoY29va2llU3RvcmFnZSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6SXNJbk1lbW9y
eUNvb2tpZVN0b3JlOjpZZXMpOworICAgIH0KKyAgICByZXR1cm4gKm1faW5NZW1vcnlTdG9yYWdl
U2Vzc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjFlMTc3OGRkNDVmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCkBAIC0w
LDAgKzEsMTAwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKENPT0tJRV9DQUNIRSkKKyNpbmNsdWRlICJXZWJDb29raWVDYWNoZS5oIgorCisjaW5jbHVk
ZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXZWJDb29raWVD
YWNoZTo6V2ViQ29va2llQ2FjaGUoKQoreworfQorCitXZWJDb29raWVDYWNoZTo6fldlYkNvb2tp
ZUNhY2hlKCkKK3sKK30KKworU3RyaW5nIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3sKKyAgICBT
dHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBpZiAoIW1faG9zdHNXaXRo
SW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKSB7CisgICAgICAgIFZlY3RvcjxDb29raWU+
IGNvb2tpZXM7CisgICAgICAgIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRp
b25zID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEb21Db29raWVzRm9ySG9zdCh1cmwuaG9z
dCgpLnRvU3RyaW5nKCksIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyksIE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29va2llc0Zvckhvc3Q6
OlJlcGx5KGNvb2tpZXMpLCAwKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQ0hSSVM6IEdvdCAlbHUgY29va2llcyBmcm9tIHRoZSBuZXR3b3JrIHByb2Nl
c3MgZm9yICclcyciLCBjb29raWVzLnNpemUoKSwgdXJsLmhvc3QoKS50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAg
ICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llKGNvb2tpZSk7CisgICAgICAg
IG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmFkZChob3N0KTsKKyAgICB9CisgICAgV1RGTG9n
QWx3YXlzKCJDSFJJUzogUmV0dXJuaW5nIGNvb2tpZXMgdG8gJyVzJyBmcm9tIGNhY2hlIiwgdXJs
Lmhvc3QoKS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBpbk1lbW9yeVN0
b3JhZ2VTZXNzaW9uKCkuY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpO
bykuZmlyc3Q7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVy
bC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBpZiAobV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2Uu
Y29udGFpbnMoaG9zdCkpCisgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29r
aWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBTaG91bGRBc2tJVFA6Ok5vLCBjb29raWVTdHJpbmcpOworfQorCit2b2lkIFdlYkNvb2tpZUNh
Y2hlOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8Q29va2ll
PiYgY29va2llcykKK3sKKyAgICBpZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRh
aW5zKGhvc3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBXVEZMb2dBbHdheXMoIkNIUklTOiBX
ZWJDb29raWVDYWNoZTo6Y29va2llc0FkZGVkKCVzKSAlbHUgY29va2llcyIsIGhvc3QudXRmOCgp
LmRhdGEoKSwgY29va2llcy5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29r
aWVzKQorICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llKGNvb2tpZSk7
Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBXVEZM
b2dBbHdheXMoIkNIUklTOiBXZWJDb29raWVDYWNoZTo6Y29va2llc0RlbGV0ZWQoKSIpOworICAg
IGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNsZWFyKCkKK3sKKyAgICBXVEZM
b2dBbHdheXMoIkNIUklTOiBXZWJDb29raWVDYWNoZTo6Y2xlYXIoKSIpOworICAgIGF1dG8gaG9z
dHNUb1Vuc3Vic2NyaWJlID0gY29weVRvVmVjdG9yKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdl
KTsKKyAgICBpZiAoIWhvc3RzVG9VbnN1YnNjcmliZS5pc0VtcHR5KCkpCisgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5z
dWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhob3N0c1RvVW5zdWJzY3JpYmUp
LCAwKTsKKyAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jbGVhcigpOworICAgIG1faW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbiA9IG51bGxwdHI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi4yY2E2OWQzZDFmZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKQEAgLTAsMCArMSw2
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENPT0tJRV9DQUNI
RSkKKworI2luY2x1ZGUgPFdlYkNvcmUvU2FtZVNpdGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWVKYXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2Vu
dW0gY2xhc3MgU2hvdWxkQXNrSVRQIDogYm9vbDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkZyYW1lOworCitjbGFzcyBXZWJDb29raWVDYWNoZSB7CitwdWJsaWM6CisgICAg
V2ViQ29va2llQ2FjaGUoKTsKKyAgICB+V2ViQ29va2llQ2FjaGUoKTsKKworICAgIFN0cmluZyBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CisKKyAgICB2
b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworCisgICAgdm9pZCBjbGVh
cigpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgaW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbigpOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1faG9zdHNXaXRo
SW5NZW1vcnlTdG9yYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+IG1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDMyNTgz
MDVjNzg5Li45ZTc4MThlZjUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC00Myw2ICs0MywxNCBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NB
Q0hFKQorc3RhdGljIGJvb2wgaXNFbGlnaWJsZUZvckNhY2hlKFdlYkZyYW1lJiBmcmFtZSwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkKK3sK
KyAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGNhY2hlIGNvb2tpZXMgZm9yIGZpcnN0LXBhcnR5IGNv
bnRlbnQuIFRoaXJkLXBhcnR5IGNvb2tpZSBjYWNoaW5nIGlzIGEgYml0IG1vcmUgY29tcGxpY2F0
ZWQgZHVlIHRvIHBhcnRpdGlvbmluZyBhbmQgc3RvcmFnZSBhY2Nlc3MuCisgICAgcmV0dXJuIGZy
YW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFibGVEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9ID09IFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVzb3VyY2VVUkwgfTsKK30KKyNlbmRpZgor
CiBjbGFzcyBXZWJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3Jh
Z2VTZXNzaW9uUHJvdmlkZXIgewogICAgIC8vIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbnMgYXJlIGFj
Y2Vzc2VkIG9ubHkgaW4gdGhlIE5ldHdvcmtQcm9jZXNzLgogICAgIFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxs
cHRyOyB9CkBAIC0xMDAsMTIgKzEwOCwxOSBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVz
KFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAg
ICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAorICAgIGF1dG8gc2FtZVNpdGVJbmZvID0gQ29va2ll
SmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOworICAgIGF1dG8gaW5jbHVkZVNlY3VyZUNvb2tp
ZXMgPSBDb29raWVKYXI6OnNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwp
OwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgYXV0byBwYWdl
SUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKKyNpZiBFTkFCTEUoQ09PS0lF
X0NBQ0hFKQorICAgIGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndlYkZyYW1lLCBkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAgICByZXR1cm4gbV9jYWNoZS5jb29r
aWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyNlbmRpZgorCiAg
ICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9
IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCksIHNob3VsZEFza0lU
UEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29r
aWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKQEAgLTEyMywxMSArMTM4LDM0IEBAIHZvaWQg
V2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCisgICAgYXV0byBz
YW1lU2l0ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhkb2N1bWVudCk7CiAgICAgYXV0
byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZy
YW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIGNvb2tpZVN0
cmluZyksIDApOworI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgaWYgKGlzRWxpZ2libGVG
b3JDYWNoZSgqd2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCkp
CisgICAgICAgIG1fY2FjaGUuc2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3Ry
aW5nKTsKKyNlbmRpZgorCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91
bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKK30KKworI2lmIEVO
QUJMRShDT09LSUVfQ0FDSEUpCit2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0FkZGVkKGNvbnN0
IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7
CisgICAgbV9jYWNoZS5jb29raWVzQWRkZWQoaG9zdCwgY29va2llcyk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llSmFyOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgbV9jYWNoZS5jb29raWVzRGVsZXRl
ZCgpOworfQorCit2b2lkIFdlYkNvb2tpZUphcjo6Y2xlYXJDYWNoZSgpCit7CisgICAgbV9jYWNo
ZS5jbGVhcigpOwogfQorI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUpCiAKIGJvb2wgV2Vi
Q29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5o
CmluZGV4IDUyOTQ4YTkxZGU1Li4xMjAzNTFlYjljZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTI1LDggKzI1LDEzIEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViQ29va2llQ2FjaGUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0Nvb2tpZUphci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ29va2llOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29va2llSmFyIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkNvb2tpZUphciB7CkBAIC0zOSw4ICs0NCwyMCBAQCBwdWJsaWM6CiAgICAg
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwor
CisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBT
dHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBj
b29raWVzRGVsZXRlZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViQ29va2llSmFyKCk7
CisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQgY2xlYXJDYWNoZSgpIGZpbmFs
OworCisgICAgbXV0YWJsZSBXZWJDb29raWVDYWNoZSBtX2NhY2hlOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNjZjZjRkOTcwMDUuLjZmZTgxMzI3YzE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBA
IFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJLaXQ6Okxp
YldlYlJUQ1Byb3ZpZGVyPigpLAogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNo
ZVN0b3JhZ2VQcm92aWRlcigpLAogICAgICAgICBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y3Jl
YXRlKCp0aGlzKSwKLSAgICAgICAgV2ViQ29va2llSmFyOjpjcmVhdGUoKSwKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCksCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8
V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50PigqdGhpcyksCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8
TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpCiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAppbmRleCBmODJkZDJhYjY4MC4uOThhMWFkMjMyNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl
ICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdl
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKKyNpbmNs
dWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaCIKQEAgLTIwNSw2ICsyMDYsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAs
IG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcihXZWJJbnNwZWN0b3JJbnRlcnJ1cHRE
aXNwYXRjaGVyOjpjcmVhdGUoKSkKICAgICAsIG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBXZWJM
b2FkZXJTdHJhdGVneSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoV2ViQ2FjaGVTdG9y
YWdlUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAgICwgbV9jb29raWVKYXIoV2ViQ29va2llSmFyOjpj
cmVhdGUoKSkKICAgICAsIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShQQUw6Okh5c3Rl
cmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0
b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7IH0pCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNzI2NTJiZmQ5NjcuLmRjOGM0ZTNjZDJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBjbGFzcyBV
c2VyRGF0YTsKIGNsYXNzIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTsKIGNsYXNzIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk7CiBjbGFzcyBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNz
IFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YTsKIGNs
YXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKIGNsYXNzIFdlYkZyYW1lOwpAQCAtMjkzLDYg
KzI5NCw3IEBAIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5KiBhdXRvbWF0
aW9uU2Vzc2lvblByb3h5KCkgeyByZXR1cm4gbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5LmdldCgp
OyB9CiAKICAgICBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIo
KSB7IHJldHVybiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmdldCgpOyB9CisgICAgV2ViQ29va2ll
SmFyJiBjb29raWVKYXIoKSB7IHJldHVybiBtX2Nvb2tpZUphci5nZXQoKTsgfQogICAgIFdlYlNv
Y2tldENoYW5uZWxNYW5hZ2VyJiB3ZWJTb2NrZXRDaGFubmVsTWFuYWdlcigpIHsgcmV0dXJuIG1f
d2ViU29ja2V0Q2hhbm5lbE1hbmFnZXI7IH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBA
IC01NTQsNiArNTU2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmPFdlYkNhY2hlU3Rv
cmFnZVByb3ZpZGVyPiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZjxXZWJDb29raWVK
YXI+IG1fY29va2llSmFyOwogICAgIFdlYlNvY2tldENoYW5uZWxNYW5hZ2VyIG1fd2ViU29ja2V0
Q2hhbm5lbE1hbmFnZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDTmV0d29yaz4g
bV9saWJXZWJSVENOZXR3b3JrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390462</attachid>
            <date>2020-02-11 16:37:04 -0800</date>
            <delta_ts>2020-02-12 10:24:03 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>WebCookieCache_wip.patch</filename>
            <type>text/plain</type>
            <size>57610</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGZlZGUyNGJlMzU0Li41OTliYTM4ODI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC03OTcsNiArNzk3LDEwIEBACiAjZGVmaW5lIEVOQUJM
RV9USFJFQURJTkdfR0VORVJJQyAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9DT09L
SUVfQ0FDSEUpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKyNkZWZpbmUgRU5BQkxFX0NPT0tJRV9DQUNIRSAxCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9HQ19WQUxJREFUSU9OKSAmJiAhZGVmaW5lZChOREVCVUcp
CiAjZGVmaW5lIEVOQUJMRV9HQ19WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAppbmRleCBkMjRiODVlMmRhMi4uY2JkOGU1NDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBA
IC01NTYsNiArNTU2LDEwIEBACiAjZGVmaW5lIEhBVkVfREVWSUNFX0lERU5USVRZIDEKICNlbmRp
ZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0NPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJIDEKKyNlbmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjZGVmaW5lIEhBVkVfREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOIDEKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCA2
NjU4ZTcyOGM5Yy4uYTkyMDc2MGIzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdURl9FWFRFUk5fQ19FTkQK
IAogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlICgpCiArICh2b2lkKV9zZXRTaGFyZWRI
VFRQQ29va2llU3RvcmFnZTooTlNIVFRQQ29va2llU3RvcmFnZSAqKXN0b3JhZ2U7CistICh2b2lk
KV9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6KE5TU2V0PE5TU3RyaW5nKj4q
IF9fbnVsbGFibGUpZG9tYWluTGlzdDsKKy0gKHZvaWQpX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6
KHZvaWQoXl9fbnVsbGFibGUpKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGFkZGVkQ29va2llcywg
TlNVUkwqIF9fbnVsbGFibGUgdXJsRm9yQWRkZWRDb29raWVzKSljb29raWVzQWRkZWRIYW5kbGVy
IG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsKKy0gKHZvaWQpX3Nl
dENvb2tpZXNEZWxldGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBD
b29raWUqPiogX19udWxsYWJsZSBkZWxldGVkQ29va2llcywgYm9vbCBkZWxldGVkQWxsQ29va2ll
cykpY29va2llc0RlbGV0ZWRIYW5kbGVyIG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxs
YWJsZSlxdWV1ZTsKKy0gKE5TQXJyYXkqIF9fbnVsbGFibGUpX2dldENvb2tpZXNGb3JEb21haW46
KE5TU3RyaW5nKilkb21haW47CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDg0ZGJhNDBlOTI4Li4xNTU5NjZkNjdhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJM
JiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsK
IAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2FjaGUo
KSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB+Q29va2llSmFyKCk7CiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8oY29uc3QgRG9jdW1lbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDMxNmQyMTY5N2JkLi45MTQ3YWEx
NDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ29tbW9uVk0uaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05
OSw2ICsxMDAsMTIgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9u
b3VzIHN5bmNocm9ub3VzLCBNYWludGFpbkJhY2tGb3J3YXJkQ2EKIAogICAgIENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAg
UGFnZTo6Zm9yRWFjaFBhZ2UoW10oYXV0byYgcGFnZSkgeworICAgICAgICBwYWdlLmNvb2tpZUph
cigpLmNsZWFyQ2FjaGUoKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiBkb2N1
bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxEb2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1
bWVudHMoKSkpIHsKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5yZWxlYXNlTWVtb3J5
KCk7CiAgICAgICAgIGRvY3VtZW50LT5mb250U2VsZWN0b3IoKS5lbXB0eUNhY2hlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDYuLmJhNzI1ZDhlMzc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgK
QEAgLTYwLDYgKzYwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENvb2tp
ZUphcjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VPYnNl
cnZlci5oIgorT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU011dGFibGVTZXQ7CiAj
ZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzksNiArODEsMTUgQEAgZW51bSBjbGFz
cyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdCB7IEFsbCwgQWxsT25TaXRl
c1dpdGhvdXRVc2VySW4KIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0Q29va2llc0xpdmVPblRl
c3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGltZW91dCB9OwogZW51bSBj
bGFzcyBTaG91bGRBc2tJVFAgOiBib29sIHsgTm8sIFllcyB9OwogCisjaWYgSEFWRShDRk5FVFdP
UktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNlcnZl
ciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNEZWxl
dGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTQsNyArMTA1LDggQEAgcHVibGljOgogCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVDRlN0
b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4mJik7CisgICAgZW51bSBjbGFzcyBJc0luTWVtb3J5Q29va2llU3RvcmUgOiBib29s
IHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmLCBJc0luTWVtb3J5Q29va2llU3RvcmUgPSBJ
c0luTWVtb3J5Q29va2llU3RvcmU6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgLy8gTWF5IGJlIG51
bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCkBA
IC0xNDYsNiArMTU4LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+
IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2ll
Q2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hh
bmdlT2JzZXJ2ZXImLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpOworI2VuZGlmCisKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3Vs
ZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwpAQCAtMTczLDExICsxOTEs
MjMgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhUVFBPbmx5LCBJbmNs
dWRlSFRUUE9ubHkgfTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vz
c2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwg
SW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
PSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0cENvb2tpZXNGb3JV
UkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IE9wdGlv
bmFsPFNhbWVTaXRlSW5mbz4mLCBOU1VSTCAqKSBjb25zdDsKKyAgICBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBTaG91bGRBc2tJVFApIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKiwgTlNVUkwgKm1h
aW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJikgY29uc3Q7CisjZW5kaWYKKyNpZiBI
QVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICB2b2lkIHJlZ2lz
dGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorCiAgICAgUEFM
OjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENG
VVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9w
bGF0Zm9ybVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IG1f
cGxhdGZvcm1Db29raWVTdG9yYWdlOworICAgIGJvb2wgbV9pc0luTWVtb3J5Q29va2llU3RvcmUg
eyBmYWxzZSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgc3RhdGljIHZvaWQgY29va2llc0RpZENo
YW5nZShOZXR3b3JrU3RvcmFnZVNlc3Npb24qKTsKIApAQCAtMTkwLDYgKzIyMCwxMiBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwogI2VuZGlmCiAK
KyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBib29s
IG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAgIFJldGFpblB0cjxO
U011dGFibGVTZXQ+IG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOworICAgIEhh
c2hNYXA8U3RyaW5nLCBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4+IG1fY29va2llQ2hh
bmdlT2JzZXJ2ZXJzOworI2VuZGlmCisKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRlbnRp
YWxTdG9yYWdlOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKaW5kZXggYjAxYTdlNjZiZjAuLmUwZDg0ZjdjNTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtNzMsMTEgKzczLDEyIEBA
IFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25GCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQog
Ci1OZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmIHBsYXRm
b3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYgcGxhdGZvcm1D
b29raWVTdG9yYWdlKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZj4mJiBwbGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiYmIHBsYXRmb3JtQ29va2llU3RvcmFnZSwgSXNJbk1lbW9yeUNvb2tpZVN0b3JlIGlzSW5NZW1v
cnlDb29raWVTdG9yZSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fcGxh
dGZvcm1TZXNzaW9uKFdURk1vdmUocGxhdGZvcm1TZXNzaW9uKSkKKyAgICAsIG1faXNJbk1lbW9y
eUNvb2tpZVN0b3JlKGlzSW5NZW1vcnlDb29raWVTdG9yZSA9PSBJc0luTWVtb3J5Q29va2llU3Rv
cmU6OlllcykKIHsKLSAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpIHx8ICFwbGF0
Zm9ybUNvb2tpZVN0b3JhZ2UpOworICAgIEFTU0VSVChwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkg
fHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAg
ICAgbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPyBXVEZN
b3ZlKHBsYXRmb3JtQ29va2llU3RvcmFnZSkgOiBjb29raWVTdG9yYWdlKCk7CiB9CiAKQEAgLTg4
LDEwICs4OSwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UoKSBjb25zdAogewot
ICAgIGlmICghcHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQorICAgIGlmICghcHJvY2Vzc01heVVz
ZUNvb2tpZUFQSSgpICYmICFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5
Q29va2llU3RvcmUpOwogCiAgICAgaWYgKG1fcGxhdGZvcm1Db29raWVTdG9yYWdlKQogICAgICAg
ICByZXR1cm4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbQppbmRleCA5ZTlhOTFiNzI1MC4uYWJhNzA2ZTgwMDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3Qg
Q29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJ
bk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
ICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWVd
OwpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2ll
KGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmls
ZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZvciAoY29uc3QgYXV0byYgY29va2ll
IDogY29va2llcykKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYKIAog
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNv
b2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29v
a2llU3RvcmUpOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENv
b2tpZSAqKWNvb2tpZV07CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAKIE5TSFRUUENvb2tpZVN0b3JhZ2UgKk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QKIHsKLSAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGF1
dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwogICAgIGlmICghY2ZDb29raWVT
dG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5f
Y29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBbTlNIVFRQ
Q29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CkBAIC0xNTgsMTEgKzE1OCw2
IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENG
U3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNo
ZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNob3VsZCBub3QgYmUgbmVj
ZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhlZC4KICAgICBDRlVS
TENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxDYWNoZSBzaGFyZWRV
UkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlU2Vz
c2lvbi5sZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBhdXRvIGNvb2tpZVN0b3Jh
Z2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZVN0
b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI2LDkgKzIyMSw5IEBAIHN0YXRp
YyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UsIE5T
VVJMICp1cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNvb2tpZXNQdHItPmF1dG9yZWxlYXNlKCk7
CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKnVybCwgTlNVUkwg
Km1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8pCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqdXJsLCBO
U1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbykg
Y29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29v
a2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewogI2lmICEoUExBVEZPUk0oTUFD
KSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAmJiAhUExBVEZP
Uk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgICAgIGlmIChbTlNIVFRQQ29v
a2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tp
ZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQpAQCAtMjU1LDIx
ICsyNTAsMjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICoKICNlbmRpZgogfQogCi1zdGF0aWMg
TlNBcnJheSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYg
c2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2Us
IE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0
ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICghY29v
a2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7Cisg
ICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5N
ZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29va2ll
U3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgfQogCiAgICAgLy8g
RklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZWFj
aCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAgLy8gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2Jq
ZWN0IGZvciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFnZT4gbnNDb29raWVT
dG9yYWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENG
SFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0pOwotICAgIHJldHVybiBjb29raWVzRm9y
VVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8p
OworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQo
KSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogfQogCiBzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlv
bmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVzIGNvdW50XTsKICAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogCkBAIC0zMDIsMjcgKzI5OCwyNiBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0
ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9
CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNo
b3VsZEFza0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVS
TChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBj
b25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNo
b3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2NrQ29v
a2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFz
a0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5kaWYKLSAgICByZXR1cm4gaHR0cENvb2tp
ZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFn
ZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9CiAKLWVudW0gSW5j
bHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5
IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQID0g
U2hvdWxkQXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7
Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNj
ZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3Jl
KTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNv
b2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29va2ll
cyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAoIVtjb29raWVzIGNvdW50XSkKICAgICAg
ICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBhIG51bGwgc3RyaW5nLCBu
b3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBjcmVhdGUgYmVsb3cuCiAK
QEAgLTM3NCwyMiArMzY5LDIyIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKIAogc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9y
U2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRB
c2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5
KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVyRmll
bGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVy
RmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94
eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJl
Q29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHku
Zmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJv
eHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlE
LCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMp
OwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
IHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIApAQCAtNDU3LDcgKzQ1Miw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJCiAg
ICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOworICAg
IE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgTlNVSW50ZWdlciBj
b3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShj
b3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpAQCAt
NTY2LDQgKzU2MSw4NiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQogICAgIFtzdG9yYWdlIF9zYXZl
Q29va2llc107CiB9CiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlZ2lzdGVyQ29va2llQ2hhbmdl
TGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2RpZFJlZ2lzdGVyQ29va2llTGlz
dGVuZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVu
ZXJzID0gdHJ1ZTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNBZGRlZEhhbmRs
ZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqIG5zQ29va2llcywgTlNVUkwgKnVybEZvckFk
ZGVkQ29va2llcykgeworICAgICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgICAgICBO
U1VJbnRlZ2VyIGNvdW50ID0gW25zQ29va2llcyBjb3VudF07CisgICAgICAgIGNvb2tpZXMucmVz
ZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwg
Y291bnQ7ICsraSkgeworICAgICAgICAgICAgTlNIVFRQQ29va2llICpuc0Nvb2tpZSA9IChOU0hU
VFBDb29raWUgKilbbnNDb29raWVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgICAgICBjb29r
aWVzLnVuY2hlY2tlZEFwcGVuZCh7IG5zQ29va2llIH0pOworICAgICAgICB9CisKKyAgICAgICAg
YXV0byBob3N0ID0gVVJMKHVybEZvckFkZGVkQ29va2llcykuaG9zdCgpLnRvU3RyaW5nKCk7Cisg
ICAgICAgIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZlcnMgPSBtX2Nvb2tp
ZUNoYW5nZU9ic2VydmVycy5nZXQoaG9zdCk7CisgICAgICAgIGZvciAoYXV0byogb2JzZXJ2ZXIg
OiBvYnNlcnZlcnMpCisgICAgICAgICAgICBvYnNlcnZlci0+Y29va2llc0FkZGVkKGhvc3QsIGNv
b2tpZXMpOworICAgIH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAgICBb
bnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNI
VFRQQ29va2llICo+ICosIGJvb2wgLypkZWxldGVkQWxsQ29va2llcyovKSB7CisgICAgICAgIEhh
c2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZlcnM7CisgICAgICAgIGZvciAoYXV0
byYgc3ViT2JzZXJ2ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMudmFsdWVzKCkpCisgICAg
ICAgICAgICBvYnNlcnZlcnMuYWRkKHN1Yk9ic2VydmVycy5iZWdpbigpLCBzdWJPYnNlcnZlcnMu
ZW5kKCkpOworICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAg
ICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNEZWxldGVkKCk7CisgICAgfSBvblF1ZXVlOmRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3Rh
cnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5nZU9ic2Vy
dmVyJiBvYnNlcnZlciwgY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIHJlZ2lzdGVyQ29va2ll
Q2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8mIG9ic2VydmVycyA9IG1f
Y29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuc3VyZShob3N0LCBbXSB7CisgICAgICAgIHJldHVybiBI
YXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4geyB9OworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKKyAgICBpZiAoIW9ic2VydmVycy5hZGQoJm9ic2VydmVyKS5pc05ld0VudHJ5KQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKCFtX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcykK
KyAgICAgICAgbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKFttX3N1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0XSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGFk
ZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1
YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9w
TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZl
ciYgb2JzZXJ2ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cykKK3sKKyAgICBib29sIHN1
YnNjcmliZWRVUkxzQ2hhbmdlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaG9zdCA6IGhvc3Rz
KSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5kKGhvc3Qp
OworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBvYnNlcnZlcnMgPSBpdC0+dmFsdWU7
CisgICAgICAgIG9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKKyAgICAgICAgaWYgKG9ic2Vy
dmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnJl
bW92ZShpdCk7CisgICAgICAgICAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5n
ZXMgcmVtb3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgICAgICAgICAgc3Vic2NyaWJl
ZFVSTHNDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3Vic2NyaWJl
ZFVSTHNDaGFuZ2VkKQorICAgICAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWRE
b21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
cy5nZXQoKV07Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZG9t
Q29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5TQXJyYXkgKm5zQ29v
a2llcyA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJpbmcg
Kilob3N0XTsKKyAgICBWZWN0b3I8Q29va2llPiBkb21Db29raWVzOworICAgIGZvciAoTlNIVFRQ
Q29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpIHsKKyAgICAgICAgaWYgKCFuc0Nvb2tpZS5I
VFRQT25seSkKKyAgICAgICAgICAgIGRvbUNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2ll
KTsKKyAgICB9CisgICAgcmV0dXJuIGRvbUNvb2tpZXM7Cit9CisKKyNlbmRpZiAvLyBIQVZFKENG
TkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBlODE3MzQ0ZjE5ZC4uMTJlY2I2
YTFhMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xMjQsNiArMTI0LDExIEBA
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoKQogICAgIGZvciAoYXV0byYgcG9ydCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzKQog
ICAgICAgICBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlk
Q2xvc2VNZXNzYWdlUG9ydChwb3J0KTsKIAorICAgIGlmICghbV9ob3N0c1dpdGhDb29raWVMaXN0
ZW5lcnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gaG9zdHNXaXRoQ29va2llTGlzdGVuZXJz
ID0gY29weVRvVmVjdG9yKG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzKTsKKyAgICAgICAgdW5z
dWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhob3N0c1dpdGhDb29raWVMaXN0
ZW5lcnMpOworICAgIH0KKwogI2lmIFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKG1fcnRjUHJvdmlk
ZXIpCiAgICAgICAgIG1fcnRjUHJvdmlkZXItPmNsb3NlKCk7CkBAIC02MzMsNiArNjM4LDQ1IEBA
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjCiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxl
dGVDb29raWUodXJsLCBjb29raWVOYW1lKTsKIH0KIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkb21Db29raWVzRm9ySG9zdChj
b25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRp
b25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc3RvcmFnZVNlc3Npb24oKTsKKyAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikK
KyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisKKyAgICBpZiAoc3Vic2Ny
aWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKSB7CisgICAgICAgIEFTU0VSVCghbV9ob3N0
c1dpdGhDb29raWVMaXN0ZW5lcnMuY29udGFpbnMoaG9zdCkpOworICAgICAgICBtX2hvc3RzV2l0
aENvb2tpZUxpc3RlbmVycy5hZGQoaG9zdCk7CisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+c3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKCp0aGlzLCBob3N0
KTsKKyAgICB9CisKKyAgICBjb21wbGV0aW9uSGFuZGxlcihuZXR3b3JrU3RvcmFnZVNlc3Npb24t
PmRvbUNvb2tpZXNGb3JIb3N0KGhvc3QpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpCit7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6dW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0
aW9ucygpICVsZCBob3N0cyIsIGhvc3RzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBob3N0IDog
aG9zdHMpIHsKKyAgICAgICAgQVNTRVJUKG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLmNvbnRh
aW5zKGhvc3QpKTsKKyAgICAgICAgbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMucmVtb3ZlKGhv
c3QpOworICAgIH0KKworICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9y
YWdlU2Vzc2lvbigpKQorICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnN0b3BMaXN0ZW5p
bmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKCp0aGlzLCBob3N0cyk7Cit9CisKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcm
IGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQoreworICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tp
ZXNBZGRlZChob3N0LCBjb29raWVzKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpDb29raWVzRGVsZXRlZCgpLCAwKTsK
K30KKyNlbmRpZgorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3Rl
ckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmIGV4dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50
VHlwZSkKIHsKICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaAppbmRleCA4NmNjNjBkMWE5OS4uNDNmMTQ3MDRmYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtODcsNiAr
ODgsOSBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGlj
IFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CiAjaWYgRU5BQkxFKEFQ
UExFX1BBWV9SRU1PVEVfVUkpCiAgICAgLCBwdWJsaWMgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OkNsaWVudAorI2VuZGlmCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICAsIHB1Ymxp
YyBXZWJDb3JlOjpDb29raWVDaGFuZ2VPYnNlcnZlcgogI2VuZGlmCiAgICAgLCBJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudCB7CiBwdWJsaWM6CkBAIC0yNjYsNiArMjcwLDE1IEBAIHByaXZhdGU6CiAK
ICAgICB1aW50NjRfdCBuZXh0TWVzc2FnZUJhdGNoSWRlbnRpZmllcihGdW5jdGlvbjx2b2lkKCk+
JiYpOwogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJv
bUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RzKTsK
KyAgICB2b2lkIGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJz
Y3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJik7CisKKyAgICAvLyBXZWJDb3JlOjpD
b29raWVDaGFuZ2VPYnNlcnZlci4KKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcm
IGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgZmluYWw7CisgICAgdm9pZCBj
b29raWVzRGVsZXRlZCgpIGZpbmFsOworI2VuZGlmCisKICAgICBzdHJ1Y3QgUmVzb3VyY2VOZXR3
b3JrQWN0aXZpdHlUcmFja2VyIHsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyKCkgPSBkZWZhdWx0OwogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIo
Y29uc3QgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyJikgPSBkZWZhdWx0OwpAQCAtMzI5
LDYgKzM0Miw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgTmV0d29ya01E
TlNSZWdpc3RlciBtX21kbnNSZWdpc3RlcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT09LSUVfQ0FD
SEUpCisgICAgSGFzaFNldDxTdHJpbmc+IG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzOworI2Vu
ZGlmCiAKICAgICBib29sIG1fY2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCB7
IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmlu
ZGV4IDQzYjVmNjc0ZTU1Li40ZjRmYzI1ZjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zNCw2ICszNCwxMSBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9h
ZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VM
b2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogCisjaWYgRU5BQkxFKENPT0tJ
RV9DQUNIRSkKKyAgICBVbnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKFZl
Y3RvcjxTdHJpbmc+IGhvc3RzKQorICAgIERvbUNvb2tpZXNGb3JIb3N0KFN0cmluZyBob3N0LCBi
b29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucykgLT4gKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCisjZW5kaWYKKwogICAgIENvb2tpZXNG
b3JET00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNp
dGVJbmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRB
c2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nl
c3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwogICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBm
aXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJM
IHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFAsIFN0cmluZyBjb29raWVTdHJpbmcpCiAgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29s
IFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA4MmRiMDEyZGU2MC4uY2E1MDVlZTVl
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
KysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjIxLDYg
KzYyMSw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpX
ZWJXaGVlbEV2ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlh
RW5naW5lU3VwcG9ydFBhcmFtZXRlcnMnOiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAg
ICAgICAgICdXZWJDb3JlOjpJU09XZWJWVFRDdWUnOiBbJzxXZWJDb3JlL0lTT1ZUVEN1ZS5oPidd
LAorICAgICAgICAnc3RydWN0IFdlYkNvcmU6OkNvb2tpZSc6IFsnPFdlYkNvcmUvQ29va2llLmg+
J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3Jl
L0VsZW1lbnRDb250ZXh0Lmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2Ny
aXB0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAg
ICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3NDg5NGJkMjdi
YS4uYTVkMGJlMTQyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjI0LDYgKzYyNCw3IEBAIFdlYlByb2Nl
c3MvV2ViUGFnZS9QYWdlQmFubmVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5r
VGFibGVDb250cm9sbGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAorV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAKIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBl
MWZjNmY3MzcyYi4uZDI0YTgwNDhlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTYxMyw2
ICs2MTMsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5tbQogCiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCitX
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQogV2ViUHJvY2Vz
cy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNDg4NWI0NjMyZC4uMWJlNzdjOGI3N2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTQzLDYgKzk0Myw3IEBACiAJCTQ2NkJDMDNDMUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY2QkMwMzkxRkEyNjZDOTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAvKiBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9h
ZE9ic2VydmVyLmggKi87IH07CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CisJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi87IH07
CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9
OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2
OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtMzQ4NCw2ICszNDg1LDggQEAKIAkJNDY3
MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NzFGRjFFMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAv
KiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8q
IFdlYkNvb2tpZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkNvb2tpZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2
OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92
aXNpb25hbFBhZ2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJC
NjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTg0MjIsNiArODQyNSw4IEBACiAJCQkJQkM3MkI5RjkxMUU2NDc2QjAwMUVCNEVBIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmggKi8sCiAJCQkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMy
IC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLywKIAkJCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIg
LyogV2ViQ29udGV4dE1lbnUuaCAqLywKKwkJCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyog
V2ViQ29va2llQ2FjaGUuY3BwICovLAorCQkJCTQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5oICovLAogCQkJCTVDN0ZCNDZFMjFFOTdDMEIwMDlFMzI0MSAvKiBXZWJD
b29raWVKYXIuY3BwICovLAogCQkJCTVDN0ZCNDZGMjFFOTdDMEMwMDlFMzI0MSAvKiBXZWJDb29r
aWVKYXIuaCAqLywKIAkJCQkxQTVCMUM1MjE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRM
b2FkZXIuY3BwICovLApAQCAtMTA3OTAsNiArMTA3OTUsNyBAQAogCQkJCTFBMDQzRjZBMTI1MTRE
OEIwMEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzMwNjgyNDEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3RTQzRTgyMjQzRkY3RDAwQjEzOTI0IC8q
IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0Njgw
OUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMzA2NkJGMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdDRTREMjFCMUE0OTE0QTMwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9v
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNEQyMjgxQTQ5MTZDMjAwQzdGMTUyIC8qIFdlYlBy
b2Nlc3NQb29sTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKaW5kZXggMjhiYzEyYzM0MjMuLjI5ZTdhMThjMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3Jh
Z2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5o
IgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCkBAIC0yMzQs
NiArMjM1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVBY2NlcHRQ
b2xpY3lDaGFuZ2VkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kKICAgICBtX2Nvb2tpZUFjY2VwdFBv
bGljeSA9IG5ld1BvbGljeTsKIH0KIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCit2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuY29va2llSmFyKCkuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOwor
fQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0RlbGV0ZWQoKQorewor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tpZUphcigpLmNvb2tpZXNEZWxldGVkKCk7
Cit9CisjZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKKwogI2lmIEVOQUJMRShTSEFSRUFC
TEVfUkVTT1VSQ0UpCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNv
dXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlYWJsZVJlc291
cmNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNTFmZGYz
NTQ1MjQuLmZiODExZTQ4NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDEsNiArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVz
b3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK3N0cnVjdCBDb29raWU7CiBz
dHJ1Y3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyOwogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzOwogZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKQEAgLTgz
LDYgKzg0LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29va2llc0VuYWJsZWQoKSBjb25zdDsK
IAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3Qg
U3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQg
Y29va2llc0RlbGV0ZWQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFdlYkNvcmU6OkhUVFBDb29r
aWVBY2NlcHRQb2xpY3kpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KaW5kZXggMmFhNjg4NmU1N2EuLjU0ODBkNTkzZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMSw2ICszMSwxMSBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldE9uTGluZVN0YXRl
KGJvb2wgaXNPbkxpbmUpOwogICAgIENvb2tpZUFjY2VwdFBvbGljeUNoYW5nZWQoZW51bTp1aW50
OF90IFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KTsKIAorI2lmIEVOQUJM
RShDT09LSUVfQ0FDSEUpCisgICAgQ29va2llc0FkZGVkKFN0cmluZyBob3N0LCBWZWN0b3I8c3Ry
dWN0IFdlYkNvcmU6OkNvb2tpZT4gY29va2llcyk7CisgICAgQ29va2llc0RlbGV0ZWQoKTsKKyNl
bmRpZgorCiAgICAgQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoV2ViQ29yZTo6TWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5IGhhc0FjdGl2aXR5KSBBc3luYwogICAgIE1lc3Nh
Z2VzQXZhaWxhYmxlRm9yUG9ydChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVy
IHBvcnQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9D
b2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uODZiYzY2ZDlkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJDb29r
aWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2luTWVtb3J5
U3RvcmFnZVNlc3Npb24pIHsKKyAgICAgICAgU3RyaW5nIHNlc3Npb25OYW1lID0gbWFrZVN0cmlu
ZygiV2ViS2l0SW5Qcm9jZXNzU3RvcmFnZS0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOworICAg
ICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAg
ICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29w
eUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkp
KTsKKyAgICAgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpLCBXVEZN
b3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSwgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpJc0luTWVtb3J5Q29va2llU3RvcmU6Olllcyk7CisgICAgfQorICAgIHJldHVy
biAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWUxNzc4ZGQ0NWYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b29raWVDYWNoZS5jcHAKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorI2luY2x1ZGUgIldlYkNvb2tp
ZUNhY2hlLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
V2ViUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK1dlYkNvb2tpZUNhY2hlOjpXZWJDb29raWVDYWNoZSgpCit7Cit9CisKK1dlYkNv
b2tpZUNhY2hlOjp+V2ViQ29va2llQ2FjaGUoKQoreworfQorCitTdHJpbmcgV2ViQ29va2llQ2Fj
aGU6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKQoreworICAgIFN0cmluZyBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOwor
ICAgIGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpIHsKKyAg
ICAgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICAgICAgYm9vbCBzdWJzY3JpYmVUb0Nv
b2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMgPSB0cnVlOworICAgICAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRvbUNv
b2tpZXNGb3JIb3N0KHVybC5ob3N0KCkudG9TdHJpbmcoKSwgc3Vic2NyaWJlVG9Db29raWVDaGFu
Z2VOb3RpZmljYXRpb25zKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpEb21Db29raWVzRm9ySG9zdDo6UmVwbHkoY29va2llcyksIDApKQorICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDSFJJUzogR290ICVsdSBjb29raWVzIGZy
b20gdGhlIG5ldHdvcmsgcHJvY2VzcyBmb3IgJyVzJyIsIGNvb2tpZXMuc2l6ZSgpLCB1cmwuaG9z
dCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGZvciAoYXV0byYgY29va2ll
IDogY29va2llcykKKyAgICAgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29r
aWUoY29va2llKTsKKyAgICAgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuYWRkKGhvc3Qp
OworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNIUklTOiBSZXR1cm5pbmcgY29va2llcyB0byAn
JXMnIGZyb20gY2FjaGUiLCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFA6Ok5vKS5maXJzdDsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6
c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQorewor
ICAgIFN0cmluZyBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOworICAgIGlmIChtX2hvc3Rz
V2l0aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyhob3N0KSkKKyAgICAgICAgaW5NZW1vcnlTdG9y
YWdlU2Vzc2lvbigpLnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7Cit9
CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3Qs
IGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzKQoreworICAgIGlmICghbV9ob3N0c1dpdGhJ
bk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdU
RkxvZ0Fsd2F5cygiQ0hSSVM6IFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRkZWQoJXMpICVsdSBj
b29raWVzIiwgaG9zdC51dGY4KCkuZGF0YSgpLCBjb29raWVzLnNpemUoKSk7CisKKyAgICBmb3Ig
KGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24o
KS5zZXRDb29raWUoY29va2llKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y29va2llc0Rl
bGV0ZWQoKQoreworICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IFdlYkNvb2tpZUNhY2hlOjpjb29r
aWVzRGVsZXRlZCgpIik7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6
Y2xlYXIoKQoreworICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IFdlYkNvb2tpZUNhY2hlOjpjbGVh
cigpIik7CisgICAgYXV0byBob3N0c1RvVW5zdWJzY3JpYmUgPSBjb3B5VG9WZWN0b3IobV9ob3N0
c1dpdGhJbk1lbW9yeVN0b3JhZ2UpOworICAgIGlmICghaG9zdHNUb1Vuc3Vic2NyaWJlLmlzRW1w
dHkoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpVbnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25z
KGhvc3RzVG9VbnN1YnNjcmliZSksIDApOworICAgIG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdl
LmNsZWFyKCk7CisgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbnVsbHB0cjsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09PS0lFX0NBQ0hFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJjYTY5ZDNkMWZlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
Q2FjaGUuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorCisjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0ZUluZm8u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOworZW51bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29sOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRnJhbWU7CisKK2NsYXNzIFdlYkNvb2tpZUNh
Y2hlIHsKK3B1YmxpYzoKKyAgICBXZWJDb29raWVDYWNoZSgpOworICAgIH5XZWJDb29raWVDYWNo
ZSgpOworCisgICAgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcyk7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKTsKKworICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVk
KCk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCk7CisKKyAgICBIYXNoU2V0
PFN0cmluZz4gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09PS0lF
X0NBQ0hFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5jcHAKaW5kZXggMzI1ODMwNWM3ODkuLjllNzgxOGVmNTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTQzLDYgKzQz
LDE0IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAor
I2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCitzdGF0aWMgYm9vbCBpc0VsaWdpYmxlRm9yQ2FjaGUo
V2ViRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBV
UkwmIHJlc291cmNlVVJMKQoreworICAgIC8vIEZvciBub3csIHdlIG9ubHkgY2FjaGUgY29va2ll
cyBmb3IgZmlyc3QtcGFydHkgY29udGVudC4gVGhpcmQtcGFydHkgY29va2llIGNhY2hpbmcgaXMg
YSBiaXQgbW9yZSBjb21wbGljYXRlZCBkdWUgdG8gcGFydGl0aW9uaW5nIGFuZCBzdG9yYWdlIGFj
Y2Vzcy4KKyAgICByZXR1cm4gZnJhbWUuaXNNYWluRnJhbWUoKSB8fCBSZWdpc3RyYWJsZURvbWFp
biB7IGZpcnN0UGFydHlGb3JDb29raWVzIH0gPT0gUmVnaXN0cmFibGVEb21haW4geyByZXNvdXJj
ZVVSTCB9OworfQorI2VuZGlmCisKIGNsYXNzIFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBw
dWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiAgICAgLy8gTmV0d29ya1N0
b3JhZ2VTZXNzaW9ucyBhcmUgYWNjZXNzZWQgb25seSBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAg
ICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTEwMCwxMiArMTA4LDE5IEBAIFN0cmluZyBX
ZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBV
UkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCisgICAgYXV0byBz
YW1lU2l0ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhkb2N1bWVudCk7CisgICAgYXV0
byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IENvb2tpZUphcjo6c2hvdWxkSW5jbHVkZVNlY3VyZUNv
b2tpZXMoZG9jdW1lbnQsIHVybCk7CiAgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1l
SUQoKTsKICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsK
IAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgaWYgKGlzRWxpZ2libGVGb3JDYWNoZSgq
d2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCkpCisgICAgICAg
IHJldHVybiBtX2NhY2hlLmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpOworI2VuZGlmCisKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2Vj
dXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9N
KGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCks
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhkb2N1bWVu
dCwgdXJsKSwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5n
LCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
U3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JE
T00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUEluTmV0d29y
a1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkp
CiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gY29va2llU3RyaW5nOwpAQCAtMTIz
LDExICsxMzgsMzQgQEAgdm9pZCBXZWJDb29raWVKYXI6OnNldENvb2tpZXMoV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICAgICAgcmV0dXJuOwog
I2VuZGlmCiAKKyAgICBhdXRvIHNhbWVTaXRlSW5mbyA9IENvb2tpZUphcjo6c2FtZVNpdGVJbmZv
KGRvY3VtZW50KTsKICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOwogICAg
IGF1dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOwogCi0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpT
ZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3
b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7CisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkK
KyAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgbV9jYWNoZS5zZXRDb29raWVzRnJvbURPTShk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworI2VuZGlmCisKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9t
RE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIGNvb2tpZVN0cmlu
ZyksIDApOworfQorCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKK3ZvaWQgV2ViQ29va2llSmFy
Ojpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYgY29va2llcykKK3sKKyAgICBtX2NhY2hlLmNvb2tpZXNBZGRlZChob3N0LCBjb29r
aWVzKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBt
X2NhY2hlLmNvb2tpZXNEZWxldGVkKCk7Cit9CisKK3ZvaWQgV2ViQ29va2llSmFyOjpjbGVhckNh
Y2hlKCkKK3sKKyAgICBtX2NhY2hlLmNsZWFyKCk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPT0tJ
RV9DQUNIRSkKIAogYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3Vt
ZW50JiBkb2N1bWVudCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggNTI5NDhhOTFkZTUuLjEyMDM1MWViOWNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaApAQCAt
MjUsOCArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJXZWJDb29raWVDYWNo
ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK3N0cnVjdCBDb29raWU7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJD
b29raWVKYXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q29va2llSmFyIHsKQEAgLTM5LDggKzQ0
LDIwIEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29r
aWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CiAgICAg
Ym9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSkgZmluYWw7CisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQg
Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToK
ICAgICBXZWJDb29raWVKYXIoKTsKKworI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdm9p
ZCBjbGVhckNhY2hlKCkgZmluYWw7CisKKyAgICBtdXRhYmxlIFdlYkNvb2tpZUNhY2hlIG1fY2Fj
aGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1MDhiY2MxMDJlYi4uYmRhMWVh
ZjFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC00NjYsNyArNDY2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBtYWtl
VW5pcXVlUmVmPFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksCiAgICAgICAgIFdlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBXZWJDb29raWVKYXI6OmNy
ZWF0ZSgpLAorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jb29raWVKYXIoKSwKICAg
ICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ+KCp0aGlzKSwKICAg
ICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCkKICAgICApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRiMjQwOWI5OTRkLi4yMWI1
YTJiYzEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDgs
NiArNDgsNyBAQAogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCIKICNpbmNs
dWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgpAQCAtMjA1LDYgKzIwNiw3IEBAIFdlYlByb2Nlc3M6
OldlYlByb2Nlc3MoKQogICAgICwgbV93ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyKFdl
Ykluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXI6OmNyZWF0ZSgpKQogICAgICwgbV93ZWJMb2Fk
ZXJTdHJhdGVneSgqbmV3IFdlYkxvYWRlclN0cmF0ZWd5KQogICAgICwgbV9jYWNoZVN0b3JhZ2VQ
cm92aWRlcihXZWJDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCkpCisgICAgLCBtX2Nvb2tp
ZUphcihXZWJDb29raWVKYXI6OmNyZWF0ZSgpKQogICAgICwgbV9kbnNQcmVmZXRjaEh5c3RlcmVy
aXMoW3RoaXNdKFBBTDo6SHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IGlmIChzdGF0ZSA9PSBQQUw6
Okh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbV9kbnNQcmVmZXRjaGVkSG9zdHMuY2xlYXIoKTsg
fSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAsIG1fcGx1Z2luUHJvY2Vz
c0Nvbm5lY3Rpb25NYW5hZ2VyKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Y3JlYXRl
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA4NTNjNjYwZWM2NC4u
MTU5MDkzNjBhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTIw
LDYgKzEyMCw3IEBAIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgV2F5bGFuZENvbXBvc2l0b3JEaXNw
bGF5OwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTsKIGNsYXNzIFdlYkNhY2hlU3Rv
cmFnZVByb3ZpZGVyOworY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhOwogY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwogY2xhc3Mg
V2ViRnJhbWU7CkBAIC0yOTMsNiArMjk0LDcgQEAgcHVibGljOgogICAgIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkqIGF1dG9tYXRpb25TZXNzaW9uUHJveHkoKSB7IHJldHVybiBtX2F1dG9tYXRp
b25TZXNzaW9uUHJveHkuZ2V0KCk7IH0KIAogICAgIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyJiBj
YWNoZVN0b3JhZ2VQcm92aWRlcigpIHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuZ2V0
KCk7IH0KKyAgICBXZWJDb29raWVKYXImIGNvb2tpZUphcigpIHsgcmV0dXJuIG1fY29va2llSmFy
LmdldCgpOyB9CiAgICAgV2ViU29ja2V0Q2hhbm5lbE1hbmFnZXImIHdlYlNvY2tldENoYW5uZWxN
YW5hZ2VyKCkgeyByZXR1cm4gbV93ZWJTb2NrZXRDaGFubmVsTWFuYWdlcjsgfQogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU1NCw2ICs1NTYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBSZWY8V2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI+IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7
CisgICAgUmVmPFdlYkNvb2tpZUphcj4gbV9jb29raWVKYXI7CiAgICAgV2ViU29ja2V0Q2hhbm5l
bE1hbmFnZXIgbV93ZWJTb2NrZXRDaGFubmVsTWFuYWdlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxMaWJXZWJSVENOZXR3b3JrPiBtX2xpYldlYlJUQ05ldHdvcms7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390533</attachid>
            <date>2020-02-12 10:24:03 -0800</date>
            <delta_ts>2020-02-12 10:46:34 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>WebCookieCache_wip.patch</filename>
            <type>text/plain</type>
            <size>59831</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGZlZGUyNGJlMzU0Li41OTliYTM4ODI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC03OTcsNiArNzk3LDEwIEBACiAjZGVmaW5lIEVOQUJM
RV9USFJFQURJTkdfR0VORVJJQyAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9DT09L
SUVfQ0FDSEUpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKyNkZWZpbmUgRU5BQkxFX0NPT0tJRV9DQUNIRSAxCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9HQ19WQUxJREFUSU9OKSAmJiAhZGVmaW5lZChOREVCVUcp
CiAjZGVmaW5lIEVOQUJMRV9HQ19WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAppbmRleCBkMjRiODVlMmRhMi4uY2JkOGU1NDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBA
IC01NTYsNiArNTU2LDEwIEBACiAjZGVmaW5lIEhBVkVfREVWSUNFX0lERU5USVRZIDEKICNlbmRp
ZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0NPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJIDEKKyNlbmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjZGVmaW5lIEhBVkVfREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOIDEKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCA2
NjU4ZTcyOGM5Yy4uYTkyMDc2MGIzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdURl9FWFRFUk5fQ19FTkQK
IAogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlICgpCiArICh2b2lkKV9zZXRTaGFyZWRI
VFRQQ29va2llU3RvcmFnZTooTlNIVFRQQ29va2llU3RvcmFnZSAqKXN0b3JhZ2U7CistICh2b2lk
KV9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6KE5TU2V0PE5TU3RyaW5nKj4q
IF9fbnVsbGFibGUpZG9tYWluTGlzdDsKKy0gKHZvaWQpX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6
KHZvaWQoXl9fbnVsbGFibGUpKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGFkZGVkQ29va2llcywg
TlNVUkwqIF9fbnVsbGFibGUgdXJsRm9yQWRkZWRDb29raWVzKSljb29raWVzQWRkZWRIYW5kbGVy
IG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsKKy0gKHZvaWQpX3Nl
dENvb2tpZXNEZWxldGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBD
b29raWUqPiogX19udWxsYWJsZSBkZWxldGVkQ29va2llcywgYm9vbCBkZWxldGVkQWxsQ29va2ll
cykpY29va2llc0RlbGV0ZWRIYW5kbGVyIG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxs
YWJsZSlxdWV1ZTsKKy0gKE5TQXJyYXkqIF9fbnVsbGFibGUpX2dldENvb2tpZXNGb3JEb21haW46
KE5TU3RyaW5nKilkb21haW47CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDg0ZGJhNDBlOTI4Li4xNTU5NjZkNjdhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJM
JiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsK
IAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2FjaGUo
KSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB+Q29va2llSmFyKCk7CiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8oY29uc3QgRG9jdW1lbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDMxNmQyMTY5N2JkLi45MTQ3YWEx
NDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ29tbW9uVk0uaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05
OSw2ICsxMDAsMTIgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9u
b3VzIHN5bmNocm9ub3VzLCBNYWludGFpbkJhY2tGb3J3YXJkQ2EKIAogICAgIENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAg
UGFnZTo6Zm9yRWFjaFBhZ2UoW10oYXV0byYgcGFnZSkgeworICAgICAgICBwYWdlLmNvb2tpZUph
cigpLmNsZWFyQ2FjaGUoKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiBkb2N1
bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxEb2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1
bWVudHMoKSkpIHsKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5yZWxlYXNlTWVtb3J5
KCk7CiAgICAgICAgIGRvY3VtZW50LT5mb250U2VsZWN0b3IoKS5lbXB0eUNhY2hlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDVkM2E4OGM0OGY3Li5hMjcxZTFjOTMzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzYzLDYgKzM2Myw5IEBAIHJlcXVlc3RJZGxl
Q2FsbGJhY2tFbmFibGVkOgogSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UK
IAoraW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0aGly
ZFBhcnR5SWZyYW1lUmVkaXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDYuLmJhNzI1ZDhlMzc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKQEAgLTYwLDYgKzYwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENv
b2tpZUphcjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VP
YnNlcnZlci5oIgorT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU011dGFibGVTZXQ7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzksNiArODEsMTUgQEAgZW51bSBj
bGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdCB7IEFsbCwgQWxsT25T
aXRlc1dpdGhvdXRVc2VySW4KIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0Q29va2llc0xpdmVP
blRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGltZW91dCB9OwogZW51
bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29sIHsgTm8sIFllcyB9OwogCisjaWYgSEFWRShDRk5F
VFdPUktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNl
cnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNE
ZWxldGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTQsNyArMTA1LDggQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVD
RlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4mJik7CisgICAgZW51bSBjbGFzcyBJc0luTWVtb3J5Q29va2llU3RvcmUgOiBi
b29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmLCBJc0luTWVtb3J5Q29va2llU3RvcmUg
PSBJc0luTWVtb3J5Q29va2llU3RvcmU6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgLy8gTWF5IGJl
IG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQu
CkBAIC0xNDYsNiArMTU4LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NP
T0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29r
aWU+IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29v
a2llQ2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2ll
Q2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpOworI2VuZGlmCisK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgc2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNo
b3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwpAQCAtMTczLDExICsx
OTEsMjMgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhUVFBPbmx5LCBJ
bmNsdWRlSFRUUE9ubHkgfTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9y
U2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJ
VFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0cENvb2tpZXNG
b3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IE9w
dGlvbmFsPFNhbWVTaXRlSW5mbz4mLCBOU1VSTCAqKSBjb25zdDsKKyAgICBOU0FycmF5ICpjb29r
aWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBTaG91bGRBc2tJVFApIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKiwgTlNVUkwg
Km1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJikgY29uc3Q7CisjZW5kaWYKKyNp
ZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICB2b2lkIHJl
Z2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorCiAgICAg
UEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNF
KENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
bV9wbGF0Zm9ybVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IG1fcGxhdGZvcm1Db29raWVTdG9yYWdlOworICAgIGJvb2wgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgc3RhdGljIHZvaWQgY29va2llc0Rp
ZENoYW5nZShOZXR3b3JrU3RvcmFnZVNlc3Npb24qKTsKIApAQCAtMTkwLDYgKzIyMCwxMiBAQCBw
cml2YXRlOgogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwogI2VuZGlm
CiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBi
b29sIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAgIFJldGFpblB0
cjxOU011dGFibGVTZXQ+IG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOworICAg
IEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4+IG1fY29va2ll
Q2hhbmdlT2JzZXJ2ZXJzOworI2VuZGlmCisKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRl
bnRpYWxTdG9yYWdlOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKaW5kZXggYjAxYTdlNjZiZjAuLmUwZDg0Zjdj
NTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtNzMsMTEgKzczLDEy
IEBAIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25GCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwog
fQogCi1OZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmIHBs
YXRmb3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYgcGxhdGZv
cm1Db29raWVTdG9yYWdlKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZj4mJiBwbGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiYmIHBsYXRmb3JtQ29va2llU3RvcmFnZSwgSXNJbk1lbW9yeUNvb2tpZVN0b3JlIGlzSW5N
ZW1vcnlDb29raWVTdG9yZSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1f
cGxhdGZvcm1TZXNzaW9uKFdURk1vdmUocGxhdGZvcm1TZXNzaW9uKSkKKyAgICAsIG1faXNJbk1l
bW9yeUNvb2tpZVN0b3JlKGlzSW5NZW1vcnlDb29raWVTdG9yZSA9PSBJc0luTWVtb3J5Q29va2ll
U3RvcmU6OlllcykKIHsKLSAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpIHx8ICFw
bGF0Zm9ybUNvb2tpZVN0b3JhZ2UpOworICAgIEFTU0VSVChwcm9jZXNzTWF5VXNlQ29va2llQVBJ
KCkgfHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7
CiAgICAgbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPyBX
VEZNb3ZlKHBsYXRmb3JtQ29va2llU3RvcmFnZSkgOiBjb29raWVTdG9yYWdlKCk7CiB9CiAKQEAg
LTg4LDEwICs4OSwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UoKSBjb25zdAog
ewotICAgIGlmICghcHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQorICAgIGlmICghcHJvY2Vzc01h
eVVzZUNvb2tpZUFQSSgpICYmICFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJp
dmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVt
b3J5Q29va2llU3RvcmUpOwogCiAgICAgaWYgKG1fcGxhdGZvcm1Db29raWVTdG9yYWdlKQogICAg
ICAgICByZXR1cm4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Db2NvYS5tbQppbmRleCA5ZTlhOTFiNzI1MC4uYWJhNzA2ZTgwMDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2Nv
YS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29u
c3QgQ29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJv
Y2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9j
ZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1f
aXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29r
aWVdOwpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llKGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZvciAoY29uc3QgYXV0byYgY29v
a2llIDogY29va2llcykKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYK
IAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUm
IGNvb2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5
Q29va2llU3RvcmUpOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRU
UENvb2tpZSAqKWNvb2tpZV07CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAKIE5TSFRUUENvb2tpZVN0b3JhZ2Ug
Kk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QKIHsKLSAgICBB
U1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdD
b29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAg
IGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwogICAgIGlmICghY2ZDb29r
aWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdl
XS5fY29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBbTlNI
VFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CkBAIC0xNTgsMTEgKzE1
OCw2IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShj
YWNoZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNob3VsZCBub3QgYmUg
bmVjZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhlZC4KICAgICBD
RlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxDYWNoZSBzaGFy
ZWRVUkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGlmICghTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCi0gICAgICAgIHJldHVybiBzdG9yYWdl
U2Vzc2lvbi5sZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBhdXRvIGNvb2tpZVN0
b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tp
ZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI2LDkgKzIyMSw5IEBAIHN0
YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2Us
IE5TVVJMICp1cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNvb2tpZXNQdHItPmF1dG9yZWxlYXNl
KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0
b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKnVybCwgTlNV
UkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8pCit2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqdXJs
LCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bykgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5
Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewogI2lmICEoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgICAgIGlmIChbTlNIVFRQ
Q29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENv
b2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQpAQCAtMjU1
LDIxICsyNTAsMjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICoKICNlbmRpZgogfQogCi1zdGF0
aWMgTlNBcnJheSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29r
aWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZv
PiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3Jh
Z2UsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1l
U2l0ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICgh
Y29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJp
dmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7
CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lz
SW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29v
a2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgfQogCiAgICAg
Ly8gRklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3Qg
ZWFjaCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAgLy8gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tpZVN0b3JhZ2Ug
b2JqZWN0IGZvciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFnZT4gbnNDb29r
aWVTdG9yYWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0
aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0pOwotICAgIHJldHVybiBjb29raWVz
Rm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8pOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5n
ZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogfQogCiBzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9w
dGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICBO
U1VJbnRlZ2VyIGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVzIGNvdW50XTsKICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogCkBAIC0zMDIsMjcgKzI5OCwy
NiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5m
aWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7
CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
clVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
KSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYg
KHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2Nr
Q29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3Vs
ZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQ
YXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5kaWYKLSAgICByZXR1cm4gaHR0cENv
b2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3Rv
cmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9CiAKLWVudW0g
SW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBP
bmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
ID0gU2hvdWxkQXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2Fu
QWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0
b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkg
KmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29v
a2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAoIVtjb29raWVzIGNvdW50XSkKICAg
ICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBhIG51bGwgc3RyaW5n
LCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBjcmVhdGUgYmVsb3cu
CiAKQEAgLTM3NCwyMiArMzY5LDIyIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVz
KENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKIAogc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVz
Rm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91
bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHks
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFBy
b3h5KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVy
RmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVh
ZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQ
cm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2Vj
dXJlQ29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJv
eHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxk
UHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29u
c3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIApAQCAtNDU3LDcgKzQ1Miw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOwor
ICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgTlNVSW50ZWdl
ciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0
eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpA
QCAtNTY2LDQgKzU2MSw4NiBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQogICAgIFtzdG9yYWdlIF9z
YXZlQ29va2llc107CiB9CiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RF
TkVSX0FQSSkKKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlZ2lzdGVyQ29va2llQ2hh
bmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2RpZFJlZ2lzdGVyQ29va2ll
TGlzdGVuZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RpZFJlZ2lzdGVyQ29va2llTGlz
dGVuZXJzID0gdHJ1ZTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNBZGRlZEhh
bmRsZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqIG5zQ29va2llcywgTlNVUkwgKnVybEZv
ckFkZGVkQ29va2llcykgeworICAgICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgICAg
ICBOU1VJbnRlZ2VyIGNvdW50ID0gW25zQ29va2llcyBjb3VudF07CisgICAgICAgIGNvb2tpZXMu
cmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgTlNIVFRQQ29va2llICpuc0Nvb2tpZSA9IChO
U0hUVFBDb29raWUgKilbbnNDb29raWVzIG9iamVjdEF0SW5kZXg6aV07CisgICAgICAgICAgICBj
b29raWVzLnVuY2hlY2tlZEFwcGVuZCh7IG5zQ29va2llIH0pOworICAgICAgICB9CisKKyAgICAg
ICAgYXV0byBob3N0ID0gVVJMKHVybEZvckFkZGVkQ29va2llcykuaG9zdCgpLnRvU3RyaW5nKCk7
CisgICAgICAgIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZlcnMgPSBtX2Nv
b2tpZUNoYW5nZU9ic2VydmVycy5nZXQoaG9zdCk7CisgICAgICAgIGZvciAoYXV0byogb2JzZXJ2
ZXIgOiBvYnNlcnZlcnMpCisgICAgICAgICAgICBvYnNlcnZlci0+Y29va2llc0FkZGVkKGhvc3Qs
IGNvb2tpZXMpOworICAgIH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAg
ICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxlcjpeKE5TQXJyYXk8
TlNIVFRQQ29va2llICo+ICosIGJvb2wgLypkZWxldGVkQWxsQ29va2llcyovKSB7CisgICAgICAg
IEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZlcnM7CisgICAgICAgIGZvciAo
YXV0byYgc3ViT2JzZXJ2ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMudmFsdWVzKCkpCisg
ICAgICAgICAgICBvYnNlcnZlcnMuYWRkKHN1Yk9ic2VydmVycy5iZWdpbigpLCBzdWJPYnNlcnZl
cnMuZW5kKCkpOworICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAg
ICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNEZWxldGVkKCk7CisgICAgfSBvblF1ZXVlOmRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5nZU9i
c2VydmVyJiBvYnNlcnZlciwgY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIHJlZ2lzdGVyQ29v
a2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8mIG9ic2VydmVycyA9
IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuc3VyZShob3N0LCBbXSB7CisgICAgICAgIHJldHVy
biBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4geyB9OworICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKKyAgICBpZiAoIW9ic2VydmVycy5hZGQoJm9ic2VydmVyKS5pc05ld0VudHJ5KQorICAg
ICAgICByZXR1cm47CisgICAgaWYgKCFtX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
cykKKyAgICAgICAgbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKFttX3N1YnNjcmliZWREb21h
aW5zRm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0XSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2Vz
IGFkZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3Nl
dFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9y
Q29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNl
cnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cykKK3sKKyAgICBib29s
IHN1YnNjcmliZWRVUkxzQ2hhbmdlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaG9zdCA6IGhv
c3RzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5kKGhv
c3QpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBvYnNlcnZlcnMgPSBpdC0+dmFs
dWU7CisgICAgICAgIG9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKKyAgICAgICAgaWYgKG9i
c2VydmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJz
LnJlbW92ZShpdCk7CisgICAgICAgICAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNo
YW5nZXMgcmVtb3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgICAgICAgICAgc3Vic2Ny
aWJlZFVSTHNDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3Vic2Ny
aWJlZFVSTHNDaGFuZ2VkKQorICAgICAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmli
ZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hh
bmdlcy5nZXQoKV07Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5TQXJyYXkgKm5z
Q29va2llcyA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJp
bmcgKilob3N0XTsKKyAgICBWZWN0b3I8Q29va2llPiBkb21Db29raWVzOworICAgIGZvciAoTlNI
VFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpIHsKKyAgICAgICAgaWYgKCFuc0Nvb2tp
ZS5IVFRQT25seSkKKyAgICAgICAgICAgIGRvbUNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29v
a2llKTsKKyAgICB9CisgICAgcmV0dXJuIGRvbUNvb2tpZXM7Cit9CisKKyNlbmRpZiAvLyBIQVZF
KENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBlODE3MzQ0ZjE5ZC4uNDU5
OWNhMjMyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xMjQsNiArMTI0LDEz
IEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoKQogICAgIGZvciAoYXV0byYgcG9ydCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRz
KQogICAgICAgICBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCku
ZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0KTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisg
ICAgaWYgKCFtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
YXV0byBob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMgPSBjb3B5VG9WZWN0b3IobV9ob3N0c1dpdGhD
b29raWVMaXN0ZW5lcnMpOworICAgICAgICB1bnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3Rp
ZmljYXRpb25zKGhvc3RzV2l0aENvb2tpZUxpc3RlbmVycyk7CisgICAgfQorI2VuZGlmCisKICNp
ZiBVU0UoTElCV0VCUlRDKQogICAgIGlmIChtX3J0Y1Byb3ZpZGVyKQogICAgICAgICBtX3J0Y1By
b3ZpZGVyLT5jbG9zZSgpOwpAQCAtNjMzLDYgKzY0MCw0NSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgYwogICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llKHVybCwgY29va2ll
TmFtZSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBi
b29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KCk7CisgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOworCisgICAgaWYgKHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucykgeworICAgICAgICBBU1NFUlQoIW1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJz
LmNvbnRhaW5zKGhvc3QpKTsKKyAgICAgICAgbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMuYWRk
KGhvc3QpOworICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnN0YXJ0TGlzdGVuaW5nRm9y
Q29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygqdGhpcywgaG9zdCk7CisgICAgfQorCisgICAgY29t
cGxldGlvbkhhbmRsZXIobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kb21Db29raWVzRm9ySG9zdCho
b3N0KSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVuc3Vic2Ny
aWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhv
c3RzKQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKSAlbGQgaG9zdHMiLCBo
b3N0cy5zaXplKCkpOworICAgIGZvciAoYXV0byYgaG9zdCA6IGhvc3RzKSB7CisgICAgICAgIEFT
U0VSVChtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVycy5jb250YWlucyhob3N0KSk7CisgICAgICAg
IG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLnJlbW92ZShob3N0KTsKKyAgICB9CisKKyAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKSkKKyAgICAg
ICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucygqdGhpcywgaG9zdHMpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYgY29va2llcykKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpDb29raWVzQWRkZWQoaG9zdCwgY29va2ll
cyksIDApOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVz
RGVsZXRlZCgpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6Q29va2llc0RlbGV0ZWQoKSwgMCk7Cit9CisjZW5kaWYKKwogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBl
eHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgYXV0byog
c2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXgg
ODZjYzYwZDFhOTkuLjQzZjE0NzA0ZmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC00
Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KQEAgLTg3LDYgKzg4LDkgQEAgY2xhc3MgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzPgogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQog
ICAgICwgcHVibGljIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpDbGllbnQKKyNlbmRpZgor
I2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29va2llQ2hh
bmdlT2JzZXJ2ZXIKICNlbmRpZgogICAgICwgSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVi
bGljOgpAQCAtMjY2LDYgKzI3MCwxNSBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbmV4dE1l
c3NhZ2VCYXRjaElkZW50aWZpZXIoRnVuY3Rpb248dm9pZCgpPiYmKTsKIAorI2lmIEVOQUJMRShD
T09LSUVfQ0FDSEUpCisgICAgdm9pZCB1bnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cyk7CisgICAgdm9pZCBkb21Db29raWVz
Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VO
b3RpZmljYXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+Jik+JiYpOworCisgICAgLy8gV2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXIu
CisgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpIGZpbmFsOworICAgIHZvaWQgY29va2llc0RlbGV0ZWQoKSBmaW5h
bDsKKyNlbmRpZgorCiAgICAgc3RydWN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciB7
CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcigpID0gZGVmYXVsdDsKICAg
ICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKGNvbnN0IFJlc291cmNlTmV0d29y
a0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKQEAgLTMyOSw2ICszNDIsOSBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIE5ldHdvcmtNRE5TUmVnaXN0ZXIgbV9tZG5zUmVn
aXN0ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVyczsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2Nh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJsZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA0M2I1ZjY3NGU1NS4uNGY0
ZmMyNWYyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpA
QCAtMzQsNiArMzQsMTEgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3Vn
Z2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0
X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSkKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgVW5zdWJz
Y3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhWZWN0b3I8U3RyaW5nPiBob3N0cykK
KyAgICBEb21Db29raWVzRm9ySG9zdChTdHJpbmcgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVz
KSBTeW5jaHJvbm91cworI2VuZGlmCisKICAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5
LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkg
LT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3lu
Y2hyb25vdXMKICAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06
Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3Ry
aW5nKQogICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NT
ZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKaW5kZXggODJkYjAxMmRlNjAuLmNhNTA1ZWU1ZWViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTYyMSw2ICs2MjEsNyBAQCBkZWYgaGVhZGVy
c19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6V2ViV2hlZWxFdmVudCc6IFsnIldl
YkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJDb3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0
ZXJzJzogWyc8V2ViQ29yZS9NZWRpYVBsYXllci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6SVNP
V2ViVlRUQ3VlJzogWyc8V2ViQ29yZS9JU09WVFRDdWUuaD4nXSwKKyAgICAgICAgJ3N0cnVjdCBX
ZWJDb3JlOjpDb29raWUnOiBbJzxXZWJDb3JlL0Nvb2tpZS5oPiddLAogICAgICAgICAnc3RydWN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JzogWyc8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPidd
LAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNlclNjcmlwdERhdGEnOiBbJyJXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6
OldlYlVzZXJTdHlsZVNoZWV0RGF0YSc6IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFU
eXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXgg
YjY0YTFmN2Q1MmYuLjg0ZGY0OTRhMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwKQEAgLTU1LDYgKzU1LDE0IEBAIEhUVFBTVXBncmFkZUVuYWJsZWQ6CiAgICBo
dW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJBdXRvbWF0aWMgSFRUUFMgdXBncmFkZSBmb3Iga25v
d24gc3VwcG9ydGVkIHNpdGVzIgogICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAogCitJblByb2Nl
c3NDb29raWVDYWNoZUVuYWJsZWQ6CisgICB0eXBlOiBib29sCisgICBkZWZhdWx0VmFsdWU6IHRy
dWUKKyAgIGNvbmRpdGlvbjogRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgIGh1bWFuUmVhZGFibGVO
YW1lOiAiSW4tUHJvY2VzcyBDb29raWUgQ2FjaGUiCisgICBodW1hblJlYWRhYmxlRGVzY3JpcHRp
b246ICJJbi1Qcm9jZXNzIERPTSBDb29raWUgQ2FjaGUiCisgICBjYXRlZ29yeTogZXhwZXJpbWVu
dGFsCisKIFRoaXJkUGFydHlJZnJhbWVSZWRpcmVjdEJsb2NraW5nRW5hYmxlZDoKICAgIHR5cGU6
IGJvb2wKICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNzQ4OTRiZDI3YmEu
LmE1ZDBiZTE0MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTYyNCw2ICs2MjQsNyBAQCBXZWJQcm9jZXNz
L1dlYlBhZ2UvUGFnZUJhbm5lci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKK1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTFm
YzZmNzM3MmIuLmQyNGE4MDQ4ZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTMsNiAr
NjEzLDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1MubW0KIAogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQorV2Vi
UHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KIFdlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDQ4ODViNDYzMmQuLjFiZTc3YzhiNzdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTk0Myw2ICs5NDMsNyBAQAogCQk0NjZCQzAzQzFGQTI2NkRBMDAyRkE5QzEgLyogV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NkJDMDM5MUZBMjY2QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjcxRkYxRjIzMjE3RUZGMDAxQjY0QzcgLyogV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRP
YnNlcnZlci5oICovOyB9OwogCQk0NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vz
c0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0
b3JlUGFyYW1ldGVycy5oICovOyB9OworCQk0NjgwOUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2Vi
Q29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovOyB9Owog
CQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZl
bmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1MjQ3MjI2NjhEODUwMDI2NUI5NyAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjA1MjQ0MjI2NjhEMjMwMDI2NUI5NyAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsK
IAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkJFQjZENTIyRkI5QkQ2MDAyNjk4
NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKQEAgLTM0ODQsNiArMzQ4NSw4IEBACiAJCTQ2NzFG
RjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjcxRkYxRTIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyog
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJDb29raWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlB
MjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NjgzNTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQ
YWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYw
NjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9j
ZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04NDIyLDYgKzg0MjUsOCBAQAogCQkJCUJDNzJCOUY5MTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5oICovLAogCQkJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5jcHAgKi8sCiAJCQkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8q
IFdlYkNvbnRleHRNZW51LmggKi8sCisJCQkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdl
YkNvb2tpZUNhY2hlLmNwcCAqLywKKwkJCQk0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2Vi
Q29va2llQ2FjaGUuaCAqLywKIAkJCQk1QzdGQjQ2RTIxRTk3QzBCMDA5RTMyNDEgLyogV2ViQ29v
a2llSmFyLmNwcCAqLywKIAkJCQk1QzdGQjQ2RjIxRTk3QzBDMDA5RTMyNDEgLyogV2ViQ29va2ll
SmFyLmggKi8sCiAJCQkJMUE1QjFDNTIxODk4N0VERjAwNEZDRjlCIC8qIFdlYkRvY3VtZW50TG9h
ZGVyLmNwcCAqLywKQEAgLTEwNzkwLDYgKzEwNzk1LDcgQEAKIAkJCQkxQTA0M0Y2QTEyNTE0RDhC
MDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMzMDY4MjQxMjVBNkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBX
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4MDlB
N0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzMwNjZCRjEyNUE0NDIxMDBFNzEyNzggLyogV2ViUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3Q0U0RDIxQjFBNDkxNEEzMDBDN0YxNTIgLyogV2ViUHJvY2Vzc1Bvb2wu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTREMjI4MUE0OTE2QzIwMEM3RjE1MiAvKiBXZWJQcm9j
ZXNzUG9vbE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CmluZGV4IDI4YmMxMmMzNDIzLi4yOWU3YTE4YzI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNpbmNs
dWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdl
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIK
ICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXJNZXNzYWdlcy5oIgpAQCAtMjM0LDYg
KzIzNSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llQWNjZXB0UG9s
aWN5Q2hhbmdlZChIVFRQQ29va2llQWNjZXB0UG9saWN5CiAgICAgbV9jb29raWVBY2NlcHRQb2xp
Y3kgPSBuZXdQb2xpY3k7CiB9CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQordm9pZCBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQoreworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmNvb2tpZUphcigpLmNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jb29raWVKYXIoKS5jb29raWVzRGVsZXRlZCgpOwor
fQorI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUpCisKICNpZiBFTkFCTEUoU0hBUkVBQkxF
X1JFU09VUkNFKQogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3Vy
Y2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTaGFyZWFibGVSZXNvdXJj
ZTo6SGFuZGxlJiBoYW5kbGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDUxZmRmMzU0
NTI0Li5mYjgxMWU0ODYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQxLDYgKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3QgQ29va2llOwogc3Ry
dWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
czsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CkBAIC04Myw2
ICs4NCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvb2tpZXNFbmFibGVkKCkgY29uc3Q7CiAK
KyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0
cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNv
b2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpIVFRQQ29va2ll
QWNjZXB0UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CmluZGV4IDJhYTY4ODZlNTdhLi41NDgwZDU5M2U1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzEsNiArMzEsMTEgQEAgbWVzc2FnZXMgLT4gTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRPbkxpbmVTdGF0ZShi
b29sIGlzT25MaW5lKTsKICAgICBDb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKGVudW06dWludDhf
dCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSk7CiAKKyNpZiBFTkFCTEUo
Q09PS0lFX0NBQ0hFKQorICAgIENvb2tpZXNBZGRlZChTdHJpbmcgaG9zdCwgVmVjdG9yPHN0cnVj
dCBXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpOworICAgIENvb2tpZXNEZWxldGVkKCk7CisjZW5k
aWYKKwogICAgIENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHN0cnVjdCBXZWJDb3Jl
OjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkgLT4gKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSBoYXNBY3Rpdml0eSkgQXN5bmMKICAgICBNZXNzYWdl
c0F2YWlsYWJsZUZvclBvcnQoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBw
b3J0KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjg2YmM2NmQ5ZDRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQpAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJX
ZWJDb29raWVDYWNoZS5oIgorCisjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCisjaW1wb3J0IDxXZWJD
b3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2ll
Q2FjaGU6OmluTWVtb3J5U3RvcmFnZVNlc3Npb24oKQoreworICAgIGlmICghbV9pbk1lbW9yeVN0
b3JhZ2VTZXNzaW9uKSB7CisgICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmco
IldlYktpdEluUHJvY2Vzc1N0b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKKyAgICAg
ICAgYXV0byBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAg
ICAgYXV0byBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlD
b29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7
CisgICAgICAgIG1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPihXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSwgV1RGTW92
ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSksIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6SXNJbk1lbW9yeUNvb2tpZVN0b3JlOjpZZXMpOworICAgIH0KKyAgICByZXR1cm4g
Km1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxY2QzM2E2ODk3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyNpbmNsdWRlICJXZWJDb29raWVD
YWNoZS5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworCitXZWJDb29raWVDYWNoZTo6V2ViQ29va2llQ2FjaGUoKQoreworfQorCitXZWJDb29r
aWVDYWNoZTo6fldlYkNvb2tpZUNhY2hlKCkKK3sKK30KKworU3RyaW5nIFdlYkNvb2tpZUNhY2hl
Ojpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyAg
ICBpZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKSB7CisgICAg
ICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgICAgIGJvb2wgc3Vic2NyaWJlVG9Db29r
aWVDaGFuZ2VOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEb21Db29r
aWVzRm9ySG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIHN1YnNjcmliZVRvQ29va2llQ2hhbmdl
Tm90aWZpY2F0aW9ucyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
RG9tQ29va2llc0Zvckhvc3Q6OlJlcGx5KGNvb2tpZXMpLCAwKSkKKyAgICAgICAgICAgIHJldHVy
biB7IH07CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IEdvdCAlbHUgY29va2llcyBmcm9t
IHRoZSBuZXR3b3JrIHByb2Nlc3MgZm9yICclcyciLCBjb29raWVzLnNpemUoKSwgdXJsLmhvc3Qo
KS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBwcnVuZUNhY2hlSWZOZWNlc3Nh
cnkoKTsKKyAgICAgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuYWRkKGhvc3QpOworICAg
ICAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgICAgICBpbk1lbW9yeVN0
b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llKGNvb2tpZSk7CisgICAgfQorICAgIFdURkxvZ0Fsd2F5
cygiQ0hSSVM6IFJldHVybmluZyBjb29raWVzIHRvICclcycgZnJvbSBjYWNoZSIsIHVybC5ob3N0
KCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gaW5NZW1vcnlTdG9yYWdl
U2Vzc2lvbigpLmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6Tm8pLmZp
cnN0OworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit7CisgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9z
dCgpLnRvU3RyaW5nKCk7CisgICAgaWYgKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRh
aW5zKGhvc3QpKQorICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llc0Zy
b21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hv
dWxkQXNrSVRQOjpObywgY29va2llU3RyaW5nKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6
Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNv
b2tpZXMpCit7CisgICAgaWYgKCFtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyho
b3N0KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV1RGTG9nQWx3YXlzKCJDSFJJUzogV2ViQ29v
a2llQ2FjaGU6OmNvb2tpZXNBZGRlZCglcykgJWx1IGNvb2tpZXMiLCBob3N0LnV0ZjgoKS5kYXRh
KCksIGNvb2tpZXMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykK
KyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29raWUpOworfQor
Cit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgV1RGTG9nQWx3
YXlzKCJDSFJJUzogV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNEZWxldGVkKCkiKTsKKyAgICBjbGVh
cigpOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjbGVhcigpCit7CisgICAgV1RGTG9nQWx3
YXlzKCJDSFJJUzogV2ViQ29va2llQ2FjaGU6OmNsZWFyKCkiKTsKKyAgICBhdXRvIGhvc3RzVG9V
bnN1YnNjcmliZSA9IGNvcHlUb1ZlY3RvcihtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZSk7Cisg
ICAgaWYgKCFob3N0c1RvVW5zdWJzY3JpYmUuaXNFbXB0eSgpKQorICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVuc3Vic2Ny
aWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoaG9zdHNUb1Vuc3Vic2NyaWJlKSwgMCk7
CisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY2xlYXIoKTsKKyAgICBtX2luTWVtb3J5
U3RvcmFnZVNlc3Npb24gPSBudWxscHRyOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpwcnVu
ZUNhY2hlSWZOZWNlc3NhcnkoKQoreworICAgIC8vIFdlIG1heSB3YW50IHRvIHJhaXNlIHRoaXMg
bGltaXQgaWYgd2Ugc3RhcnQgdXNpbmcgdGhlIGNhY2hlIGZvciB0aGlyZC1wYXJ0eSBpZnJhbWVz
LgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDYWNoZWRIb3N0cyA9IDU7CisKKyAgICBp
ZiAobV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2Uuc2l6ZSgpIDwgbWF4Q2FjaGVkSG9zdHMpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFn
ZS5yYW5kb20oKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBob3N0c1RvUmVtb3ZlID0geyAqaXQgfTsK
KyAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5yZW1vdmUoaXQpOworICAgIGluTWVtb3J5
U3RvcmFnZVNlc3Npb24oKS5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3RzVG9SZW1vdmUp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6VW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhob3N0c1Rv
UmVtb3ZlKSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5B
QkxFKENPT0tJRV9DQUNIRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb29raWVDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li44YTVmZjZiYTg1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKworI2luY2x1ZGUgPFdl
YkNvcmUvU2FtZVNpdGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEb2N1
bWVudDsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2VudW0gY2xhc3MgU2hvdWxkQXNr
SVRQIDogYm9vbDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZyYW1lOwor
CitjbGFzcyBXZWJDb29raWVDYWNoZSB7CitwdWJsaWM6CisgICAgV2ViQ29va2llQ2FjaGUoKTsK
KyAgICB+V2ViQ29va2llQ2FjaGUoKTsKKworICAgIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChj
b25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAg
dm9pZCBjb29raWVzRGVsZXRlZCgpOworCisgICAgdm9pZCBjbGVhcigpOworCitwcml2YXRlOgor
ICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgaW5NZW1vcnlTdG9yYWdlU2Vzc2lv
bigpOworICAgIHZvaWQgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7CisKKyAgICBIYXNoU2V0PFN0
cmluZz4gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09PS0lFX0NB
Q0hFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUph
ci5jcHAKaW5kZXggMzI1ODMwNWM3ODkuLjg0MjA2NTYwZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTM3LDEyICszNywy
NSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9u
UHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKK3N0YXRpYyBib29sIGlzRWxpZ2libGVG
b3JDYWNoZShXZWJGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpCit7CisgICAgYXV0byogcGFnZSA9IGZyYW1lLnBhZ2Uo
KSA/IGZyYW1lLnBhZ2UoKS0+Y29yZVBhZ2UoKSA6IG51bGxwdHI7CisgICAgaWYgKCFwYWdlIHx8
ICFwYWdlLT5zZXR0aW5ncygpLmluUHJvY2Vzc0Nvb2tpZUNhY2hlRW5hYmxlZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGNhY2hlIGNvb2tpZXMg
Zm9yIGZpcnN0LXBhcnR5IGNvbnRlbnQuIFRoaXJkLXBhcnR5IGNvb2tpZSBjYWNoaW5nIGlzIGEg
Yml0IG1vcmUgY29tcGxpY2F0ZWQgZHVlIHRvIHBhcnRpdGlvbmluZyBhbmQgc3RvcmFnZSBhY2Nl
c3MuCisgICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFibGVEb21haW4g
eyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9ID09IFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVzb3VyY2VV
UkwgfTsKK30KKyNlbmRpZgorCiBjbGFzcyBXZWJTdG9yYWdlU2Vzc2lvblByb3ZpZGVyIDogcHVi
bGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgewogICAgIC8vIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbnMgYXJlIGFjY2Vzc2VkIG9ubHkgaW4gdGhlIE5ldHdvcmtQcm9jZXNzLgogICAg
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3RvcmFnZVNlc3Npb24oKSBjb25zdCBm
aW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC0xMDAsMTIgKzExMywxOSBAQCBTdHJpbmcgV2Vi
Q29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJM
JiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAorICAgIGF1dG8gc2Ft
ZVNpdGVJbmZvID0gQ29va2llSmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOworICAgIGF1dG8g
aW5jbHVkZVNlY3VyZUNvb2tpZXMgPSBDb29raWVKYXI6OnNob3VsZEluY2x1ZGVTZWN1cmVDb29r
aWVzKGRvY3VtZW50LCB1cmwpOwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlE
KCk7CiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAK
KyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndl
YkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAgICBy
ZXR1cm4gbV9jYWNoZS5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzKTsKKyNlbmRpZgorCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShk
b2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQs
IHVybCksIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywg
c2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9N
KGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQ
cm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
Rm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQog
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKQEAgLTEyMywx
MSArMTQzLDM0IEBAIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICNl
bmRpZgogCisgICAgYXV0byBzYW1lU2l0ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhk
b2N1bWVudCk7CiAgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBh
dXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0
Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29y
a1Byb2Nlc3MsIGNvb2tpZVN0cmluZyksIDApOworI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisg
ICAgaWYgKGlzRWxpZ2libGVGb3JDYWNoZSgqd2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCkpCisgICAgICAgIG1fY2FjaGUuc2V0Q29va2llc0Zyb21ET00oZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgY29va2llU3RyaW5nKTsKKyNlbmRpZgorCisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURP
TShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcp
LCAwKTsKK30KKworI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCit2b2lkIFdlYkNvb2tpZUphcjo6
Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mIGNvb2tpZXMpCit7CisgICAgbV9jYWNoZS5jb29raWVzQWRkZWQoaG9zdCwgY29va2ll
cyk7Cit9CisKK3ZvaWQgV2ViQ29va2llSmFyOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgbV9j
YWNoZS5jb29raWVzRGVsZXRlZCgpOworfQorCit2b2lkIFdlYkNvb2tpZUphcjo6Y2xlYXJDYWNo
ZSgpCit7CisgICAgbV9jYWNoZS5jbGVhcigpOwogfQorI2VuZGlmIC8vIEVOQUJMRShDT09LSUVf
Q0FDSEUpCiAKIGJvb2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVu
dCYgZG9jdW1lbnQpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvb2tpZUphci5oCmluZGV4IDUyOTQ4YTkxZGU1Li4xMjAzNTFlYjljZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTI1
LDggKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViQ29va2llQ2FjaGUu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgQ29va2llOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29v
a2llSmFyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OkNvb2tpZUphciB7CkBAIC0zOSw4ICs0NCwy
MCBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2ll
c0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29r
aWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpIGZpbmFsOworCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICB2b2lkIGNv
b2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgV2ViQ29va2llSmFyKCk7CisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQg
Y2xlYXJDYWNoZSgpIGZpbmFsOworCisgICAgbXV0YWJsZSBXZWJDb29raWVDYWNoZSBtX2NhY2hl
OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTA4YmNjMTAyZWIuLmJkYTFlYWYx
ZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNDY2LDcgKzQ2Niw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgbWFrZVVu
aXF1ZVJlZjxXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyPigpLAogICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLAogICAgICAgICBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6Y3JlYXRlKCp0aGlzKSwKLSAgICAgICAgV2ViQ29va2llSmFyOjpjcmVh
dGUoKSwKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCksCiAgICAg
ICAgIG1ha2VVbmlxdWVSZWY8V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50PigqdGhpcyksCiAgICAg
ICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpCiAgICAgKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0YjI0MDliOTk0ZC4uMjFiNWEy
YmMxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ4LDYg
KzQ4LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTIwNSw2ICsyMDYsNyBAQCBXZWJQcm9jZXNzOjpX
ZWJQcm9jZXNzKCkKICAgICAsIG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcihXZWJJ
bnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpjcmVhdGUoKSkKICAgICAsIG1fd2ViTG9hZGVy
U3RyYXRlZ3koKm5ldyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJv
dmlkZXIoV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAgICwgbV9jb29raWVK
YXIoV2ViQ29va2llSmFyOjpjcmVhdGUoKSkKICAgICAsIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlz
KFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gUEFMOjpI
eXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7IH0p
CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nlc3ND
b25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0ZSgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODUzYzY2MGVjNjQuLjE1
OTA5MzYwYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEyMCw2
ICsxMjAsNyBAQCBjbGFzcyBVc2VyRGF0YTsKIGNsYXNzIFdheWxhbmRDb21wb3NpdG9yRGlzcGxh
eTsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk7CiBjbGFzcyBXZWJDYWNoZVN0b3Jh
Z2VQcm92aWRlcjsKK2NsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkNvbXBpbGVkQ29udGVu
dFJ1bGVMaXN0RGF0YTsKIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKIGNsYXNzIFdl
YkZyYW1lOwpAQCAtMjkzLDYgKzI5NCw3IEBAIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5KiBhdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkgeyByZXR1cm4gbV9hdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmdldCgpOyB9CiAKICAgICBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2Fj
aGVTdG9yYWdlUHJvdmlkZXIoKSB7IHJldHVybiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmdldCgp
OyB9CisgICAgV2ViQ29va2llSmFyJiBjb29raWVKYXIoKSB7IHJldHVybiBtX2Nvb2tpZUphci5n
ZXQoKTsgfQogICAgIFdlYlNvY2tldENoYW5uZWxNYW5hZ2VyJiB3ZWJTb2NrZXRDaGFubmVsTWFu
YWdlcigpIHsgcmV0dXJuIG1fd2ViU29ja2V0Q2hhbm5lbE1hbmFnZXI7IH0KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCkBAIC01NTQsNiArNTU2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgUmVmPFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyPiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOwor
ICAgIFJlZjxXZWJDb29raWVKYXI+IG1fY29va2llSmFyOwogICAgIFdlYlNvY2tldENoYW5uZWxN
YW5hZ2VyIG1fd2ViU29ja2V0Q2hhbm5lbE1hbmFnZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
TGliV2ViUlRDTmV0d29yaz4gbV9saWJXZWJSVENOZXR3b3JrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390536</attachid>
            <date>2020-02-12 10:46:34 -0800</date>
            <delta_ts>2020-02-12 10:58:11 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>WebCookieCache_wip.patch</filename>
            <type>text/plain</type>
            <size>60943</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGZlZGUyNGJlMzU0Li41OTliYTM4ODI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC03OTcsNiArNzk3LDEwIEBACiAjZGVmaW5lIEVOQUJM
RV9USFJFQURJTkdfR0VORVJJQyAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9DT09L
SUVfQ0FDSEUpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKyNkZWZpbmUgRU5BQkxFX0NPT0tJRV9DQUNIRSAxCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9HQ19WQUxJREFUSU9OKSAmJiAhZGVmaW5lZChOREVCVUcp
CiAjZGVmaW5lIEVOQUJMRV9HQ19WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAppbmRleCBkMjRiODVlMmRhMi4uY2JkOGU1NDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBA
IC01NTYsNiArNTU2LDEwIEBACiAjZGVmaW5lIEhBVkVfREVWSUNFX0lERU5USVRZIDEKICNlbmRp
ZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0NPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJIDEKKyNlbmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjZGVmaW5lIEhBVkVfREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOIDEKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCA2
NjU4ZTcyOGM5Yy4uYTkyMDc2MGIzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdURl9FWFRFUk5fQ19FTkQK
IAogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlICgpCiArICh2b2lkKV9zZXRTaGFyZWRI
VFRQQ29va2llU3RvcmFnZTooTlNIVFRQQ29va2llU3RvcmFnZSAqKXN0b3JhZ2U7CistICh2b2lk
KV9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6KE5TU2V0PE5TU3RyaW5nKj4q
IF9fbnVsbGFibGUpZG9tYWluTGlzdDsKKy0gKHZvaWQpX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6
KHZvaWQoXl9fbnVsbGFibGUpKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGFkZGVkQ29va2llcywg
TlNVUkwqIF9fbnVsbGFibGUgdXJsRm9yQWRkZWRDb29raWVzKSljb29raWVzQWRkZWRIYW5kbGVy
IG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsKKy0gKHZvaWQpX3Nl
dENvb2tpZXNEZWxldGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBD
b29raWUqPiogX19udWxsYWJsZSBkZWxldGVkQ29va2llcywgYm9vbCBkZWxldGVkQWxsQ29va2ll
cykpY29va2llc0RlbGV0ZWRIYW5kbGVyIG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxs
YWJsZSlxdWV1ZTsKKy0gKE5TQXJyYXkqIF9fbnVsbGFibGUpX2dldENvb2tpZXNGb3JEb21haW46
KE5TU3RyaW5nKilkb21haW47CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDg0ZGJhNDBlOTI4Li4xNTU5NjZkNjdhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJM
JiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsK
IAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2FjaGUo
KSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB+Q29va2llSmFyKCk7CiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8oY29uc3QgRG9jdW1lbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDMxNmQyMTY5N2JkLi45MTQ3YWEx
NDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ29tbW9uVk0uaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05
OSw2ICsxMDAsMTIgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9u
b3VzIHN5bmNocm9ub3VzLCBNYWludGFpbkJhY2tGb3J3YXJkQ2EKIAogICAgIENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAg
UGFnZTo6Zm9yRWFjaFBhZ2UoW10oYXV0byYgcGFnZSkgeworICAgICAgICBwYWdlLmNvb2tpZUph
cigpLmNsZWFyQ2FjaGUoKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiBkb2N1
bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxEb2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1
bWVudHMoKSkpIHsKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5yZWxlYXNlTWVtb3J5
KCk7CiAgICAgICAgIGRvY3VtZW50LT5mb250U2VsZWN0b3IoKS5lbXB0eUNhY2hlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDVkM2E4OGM0OGY3Li5hMjcxZTFjOTMzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzYzLDYgKzM2Myw5IEBAIHJlcXVlc3RJZGxl
Q2FsbGJhY2tFbmFibGVkOgogSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UK
IAoraW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0aGly
ZFBhcnR5SWZyYW1lUmVkaXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDYuLmQxNzk3ZGQ2MDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKQEAgLTYwLDYgKzYwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENv
b2tpZUphcjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VP
YnNlcnZlci5oIgorT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU011dGFibGVTZXQ7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzksNiArODEsMTUgQEAgZW51bSBj
bGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdCB7IEFsbCwgQWxsT25T
aXRlc1dpdGhvdXRVc2VySW4KIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0Q29va2llc0xpdmVP
blRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGltZW91dCB9OwogZW51
bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29sIHsgTm8sIFllcyB9OwogCisjaWYgSEFWRShDRk5F
VFdPUktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNl
cnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNE
ZWxldGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTQsNyArMTA1LDggQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVD
RlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4mJik7CisgICAgZW51bSBjbGFzcyBJc0luTWVtb3J5Q29va2llU3RvcmUgOiBi
b29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmLCBJc0luTWVtb3J5Q29va2llU3RvcmUg
PSBJc0luTWVtb3J5Q29va2llU3RvcmU6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgLy8gTWF5IGJl
IG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQu
CkBAIC0xNDYsNiArMTU4LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NP
T0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29r
aWU+IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29v
a2llQ2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2ll
Q2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpIGNvbnN0Owor
I2VuZGlmCisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwpAQCAt
MTczLDExICsxOTIsMjMgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhU
VFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0
cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKmZpcnN0UGFydHks
IGNvbnN0IE9wdGlvbmFsPFNhbWVTaXRlSW5mbz4mLCBOU1VSTCAqKSBjb25zdDsKKyAgICBOU0Fy
cmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFApIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUENvb2tp
ZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqY29va2llcywgTlNVUkwg
KiwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJikgY29uc3Q7Cisj
ZW5kaWYKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAg
ICB2b2lkIHJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyNlbmRp
ZgorCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZj4gbV9wbGF0Zm9ybVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWY+IG1fcGxhdGZvcm1Db29raWVTdG9yYWdlOworICAgIGJvb2wgbV9pc0luTWVtb3J5
Q29va2llU3RvcmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgc3RhdGljIHZvaWQg
Y29va2llc0RpZENoYW5nZShOZXR3b3JrU3RvcmFnZVNlc3Npb24qKTsKIApAQCAtMTkwLDYgKzIy
MSwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0
OwogI2VuZGlmCiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQ
SSkKKyAgICBib29sIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAg
IFJldGFpblB0cjxOU011dGFibGVTZXQ+IG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFu
Z2VzOworICAgIEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4+
IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzOworI2VuZGlmCisKICAgICBDcmVkZW50aWFsU3RvcmFn
ZSBtX2NyZWRlbnRpYWxTdG9yYWdlOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKaW5kZXggYjAxYTdlNjZiZjAu
LmUwZDg0ZjdjNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtNzMs
MTEgKzczLDEyIEBAIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25GCiAgICAgcmV0dXJuIHN0b3JhZ2VT
ZXNzaW9uOwogfQogCi1OZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmPiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
JiYgcGxhdGZvcm1Db29raWVTdG9yYWdlKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4mJiBwbGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiYmIHBsYXRmb3JtQ29va2llU3RvcmFnZSwgSXNJbk1lbW9yeUNvb2tpZVN0
b3JlIGlzSW5NZW1vcnlDb29raWVTdG9yZSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fcGxhdGZvcm1TZXNzaW9uKFdURk1vdmUocGxhdGZvcm1TZXNzaW9uKSkKKyAgICAs
IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKGlzSW5NZW1vcnlDb29raWVTdG9yZSA9PSBJc0luTWVt
b3J5Q29va2llU3RvcmU6OlllcykKIHsKLSAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQ
SSgpIHx8ICFwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpOworICAgIEFTU0VSVChwcm9jZXNzTWF5VXNl
Q29va2llQVBJKCkgfHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CiAgICAgbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0
b3JhZ2UgPyBXVEZNb3ZlKHBsYXRmb3JtQ29va2llU3RvcmFnZSkgOiBjb29raWVTdG9yYWdlKCk7
CiB9CiAKQEAgLTg4LDEwICs4OSwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2Uo
KSBjb25zdAogewotICAgIGlmICghcHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQorICAgIGlmICgh
cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpICYmICFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgaWYgKG1fcGxhdGZvcm1Db29raWVTdG9y
YWdlKQogICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA5ZTlhOTFiNzI1MC4uMDM2ZDE4YzdmNTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtNDYsNyArNDYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBDb29r
aWUgKiljb29raWVdOwpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsK
KyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nl
c3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZvciAoY29uc3Qg
YXV0byYgY29va2llIDogY29va2llcykKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNv
bnN0IFVSTCYKIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25z
dCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9p
c0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29r
aWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAKIE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5B
Y2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpOwogICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwogICAgIGlm
ICghY2ZDb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29r
aWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJl
dHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CkBAIC0x
NTgsMTEgKzE1OCw2IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZVUkxDYWNoZVNldERpc2tD
YXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNob3Vs
ZCBub3QgYmUgbmVjZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhl
ZC4KICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxD
YWNoZSBzaGFyZWRVUkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGlmICghTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCi0gICAgICAgIHJldHVy
biBzdG9yYWdlU2Vzc2lvbi5sZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZp
bGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBhdXRv
IGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0
b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBp
ZiAoIWNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI2LDkgKzIy
MSw5IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2Ug
KnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNvb2tpZXNQdHItPmF1
dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwg
KnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8pCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENvb2tpZXNGb3JVUkwo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBO
U1VSTCAqdXJsLCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbykgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9p
c0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewogI2lmICEo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAw
KSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgICAgIGlm
IChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOild
KQpAQCAtMjU1LDIxICsyNTAsMjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICoKICNlbmRpZgog
fQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2Ft
ZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJheSAqTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNv
b2tpZVN0b3JhZ2UsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUlu
Zm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwot
ICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBf
Q0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAg
fQogCiAgICAgLy8gRklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFn
ZSBvYmplY3QgZWFjaCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAg
Ly8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tp
ZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFn
ZT4gbnNDb29raWVTdG9yYWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2Nd
IF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0pOwotICAgIHJldHVy
biBjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8pOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yVVJMKG5zQ29va2ll
U3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogfQogCiBzdGF0
aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENv
b2tpZXMsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewotICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
KTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVzIGNvdW50XTsKICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogCkBAIC0zMDIs
MjcgKzI5OCwyNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNB
cnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNo
b3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAg
aWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAgICByZXR1cm4gbmls
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBh
Z2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5kaWYKLSAgICByZXR1
cm4gaHR0cENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwo
Y29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9
CiAKLWVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5j
bHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0Zv
clNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFApIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZp
bGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmls
ZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9y
eUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAg
IE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNB
cnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAoIVtjb29raWVzIGNv
dW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBhIG51
bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBjcmVh
dGUgYmVsb3cuCiAKQEAgLTM3NCwyMiArMzY5LDIyIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbEhU
VFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKIAogc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQ
T25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lv
bihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFk
ZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhp
cywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRl
SW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVh
ZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5p
bmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRl
ckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhl
YWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxk
UHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwor
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNDU3LDcgKzQ1Miw3IEBAIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlz
LCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
c2tJVFApOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAg
TlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2Vy
dmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewpAQCAtNTY2LDQgKzU2MSw5MyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQogICAgIFtz
dG9yYWdlIF9zYXZlQ29va2llc107CiB9CiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlZ2lzdGVy
Q29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2RpZFJlZ2lz
dGVyQ29va2llTGlzdGVuZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RpZFJlZ2lzdGVy
Q29va2llTGlzdGVuZXJzID0gdHJ1ZTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tp
ZXNBZGRlZEhhbmRsZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqIG5zQ29va2llcywgTlNV
UkwgKnVybEZvckFkZGVkQ29va2llcykgeworICAgICAgICBWZWN0b3I8Q29va2llPiBjb29raWVz
OworICAgICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW25zQ29va2llcyBjb3VudF07CisgICAgICAg
IGNvb2tpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAgICAgZm9yIChOU1VJbnRlZ2Vy
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgTlNIVFRQQ29va2llICpuc0Nv
b2tpZSA9IChOU0hUVFBDb29raWUgKilbbnNDb29raWVzIG9iamVjdEF0SW5kZXg6aV07CisgICAg
ICAgICAgICBjb29raWVzLnVuY2hlY2tlZEFwcGVuZCh7IG5zQ29va2llIH0pOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byBob3N0ID0gVVJMKHVybEZvckFkZGVkQ29va2llcykuaG9zdCgpLnRv
U3RyaW5nKCk7CisgICAgICAgIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZl
cnMgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5nZXQoaG9zdCk7CisgICAgICAgIGZvciAoYXV0
byogb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCisgICAgICAgICAgICBvYnNlcnZlci0+Y29va2llc0Fk
ZGVkKGhvc3QsIGNvb2tpZXMpOworICAgIH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpXTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxlcjpe
KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICosIGJvb2wgLypkZWxldGVkQWxsQ29va2llcyovKSB7
CisgICAgICAgIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZlcnM7CisgICAg
ICAgIGZvciAoYXV0byYgc3ViT2JzZXJ2ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMudmFs
dWVzKCkpCisgICAgICAgICAgICBvYnNlcnZlcnMuYWRkKHN1Yk9ic2VydmVycy5iZWdpbigpLCBz
dWJPYnNlcnZlcnMuZW5kKCkpOworICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2
ZXJzKQorICAgICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNEZWxldGVkKCk7CisgICAgfSBvblF1
ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tp
ZUNoYW5nZU9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIHJl
Z2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8mIG9i
c2VydmVycyA9IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuc3VyZShob3N0LCBbXSB7CisgICAg
ICAgIHJldHVybiBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4geyB9OworICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoIW9ic2VydmVycy5hZGQoJm9ic2VydmVyKS5pc05ld0Vu
dHJ5KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX3N1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlcykKKyAgICAgICAgbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKFttX3N1YnNj
cmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilo
b3N0XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29r
aWVDaGFuZ2VzIGFkZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICBbbnNDb29raWVTdG9y
YWdlKCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWRE
b21haW5zRm9yQ29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVD
aGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cykKK3sK
KyAgICBib29sIHN1YnNjcmliZWRVUkxzQ2hhbmdlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYg
aG9zdCA6IGhvc3RzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVy
cy5maW5kKGhvc3QpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMu
ZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBvYnNlcnZlcnMg
PSBpdC0+dmFsdWU7CisgICAgICAgIG9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKKyAgICAg
ICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY29va2llQ2hhbmdl
T2JzZXJ2ZXJzLnJlbW92ZShpdCk7CisgICAgICAgICAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0Zv
ckNvb2tpZUNoYW5nZXMgcmVtb3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgICAgICAg
ICAgc3Vic2NyaWJlZFVSTHNDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBp
ZiAoc3Vic2NyaWJlZFVSTHNDaGFuZ2VkKQorICAgICAgICBbbnNDb29raWVTdG9yYWdlKCkgX3Nl
dFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9y
Q29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5T
QXJyYXkgKm5zQ29va2llcyA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFp
bjooTlNTdHJpbmcgKilob3N0XTsKKyAgICBWZWN0b3I8Q29va2llPiBkb21Db29raWVzOworICAg
IGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpIHsKKyAgICAgICAgaWYg
KCFuc0Nvb2tpZS5IVFRQT25seSkKKyAgICAgICAgICAgIGRvbUNvb2tpZXMudW5jaGVja2VkQXBw
ZW5kKG5zQ29va2llKTsKKyAgICB9CisgICAgcmV0dXJuIGRvbUNvb2tpZXM7Cit9CisKKy8vIEZJ
WE1FOiBUaGlzIGNhbiBldmVudHVhbGx5IGdvZXMgYXdheSwgdGhpcyBpcyBtZXJlbHkgdG8gZW5z
dXJlIGEgc21vb3RoIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBBUEkuCitib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpIGNvbnN0Cit7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNBUEkgPSBbbnNDb29raWVTdG9yYWdlKCkgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVD
aGFuZ2VzOildOworICAgIHJldHVybiBzdXBwb3J0c0FQSTsKK30KKworI2VuZGlmIC8vIEhBVkUo
Q0ZORVRXT1JLX0NPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGU4MTczNDRmMTlkLi40NTk5
Y2EyMzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNCw2ICsxMjQsMTMg
QEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcygpCiAgICAgZm9yIChhdXRvJiBwb3J0IDogbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMp
CiAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5k
aWRDbG9zZU1lc3NhZ2VQb3J0KHBvcnQpOwogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAg
ICBpZiAoIW1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBh
dXRvIGhvc3RzV2l0aENvb2tpZUxpc3RlbmVycyA9IGNvcHlUb1ZlY3RvcihtX2hvc3RzV2l0aENv
b2tpZUxpc3RlbmVycyk7CisgICAgICAgIHVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlm
aWNhdGlvbnMoaG9zdHNXaXRoQ29va2llTGlzdGVuZXJzKTsKKyAgICB9CisjZW5kaWYKKwogI2lm
IFVTRShMSUJXRUJSVEMpCiAgICAgaWYgKG1fcnRjUHJvdmlkZXIpCiAgICAgICAgIG1fcnRjUHJv
dmlkZXItPmNsb3NlKCk7CkBAIC02MzMsNiArNjQwLDQ1IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjCiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kZWxldGVDb29raWUodXJsLCBjb29raWVO
YW1lKTsKIH0KIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGJv
b2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24o
KTsKKyAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CisKKyAgICBpZiAoc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3Rp
ZmljYXRpb25zKSB7CisgICAgICAgIEFTU0VSVCghbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMu
Y29udGFpbnMoaG9zdCkpOworICAgICAgICBtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVycy5hZGQo
aG9zdCk7CisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c3RhcnRMaXN0ZW5pbmdGb3JD
b29raWVDaGFuZ2VOb3RpZmljYXRpb25zKCp0aGlzLCBob3N0KTsKKyAgICB9CisKKyAgICBjb21w
bGV0aW9uSGFuZGxlcihuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRvbUNvb2tpZXNGb3JIb3N0KGhv
c3QpKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5zdWJzY3Jp
YmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9z
dHMpCit7CisgICAgV1RGTG9nQWx3YXlzKCJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
dW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygpICVsZCBob3N0cyIsIGhv
c3RzLnNpemUoKSk7CisgICAgZm9yIChhdXRvJiBob3N0IDogaG9zdHMpIHsKKyAgICAgICAgQVNT
RVJUKG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLmNvbnRhaW5zKGhvc3QpKTsKKyAgICAgICAg
bV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMucmVtb3ZlKGhvc3QpOworICAgIH0KKworICAgIGlm
IChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpKQorICAgICAg
ICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3Rp
ZmljYXRpb25zKCp0aGlzLCBob3N0cyk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tpZXNBZGRlZChob3N0LCBjb29raWVz
KSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNE
ZWxldGVkKCkKK3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uOjpDb29raWVzRGVsZXRlZCgpLCAwKTsKK30KKyNlbmRpZgorCiB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIGV4
dGVuc2lvbkhhbmRsZSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCA4
NmNjNjBkMWE5OS4uNDNmMTQ3MDRmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQy
LDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtODcsNiArODgsOSBAQCBjbGFzcyBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M+CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAg
ICAgLCBwdWJsaWMgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAorI2VuZGlmCisj
aWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb29raWVDaGFu
Z2VPYnNlcnZlcgogI2VuZGlmCiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJs
aWM6CkBAIC0yNjYsNiArMjcwLDE1IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBuZXh0TWVz
c2FnZUJhdGNoSWRlbnRpZmllcihGdW5jdGlvbjx2b2lkKCk+JiYpOwogCisjaWYgRU5BQkxFKENP
T0tJRV9DQUNIRSkKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNh
dGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RzKTsKKyAgICB2b2lkIGRvbUNvb2tpZXNG
b3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKT4mJik7CisKKyAgICAvLyBXZWJDb3JlOjpDb29raWVDaGFuZ2VPYnNlcnZlci4K
KyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JikgZmluYWw7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpIGZpbmFs
OworI2VuZGlmCisKICAgICBzdHJ1Y3QgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyIHsK
ICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKCkgPSBkZWZhdWx0OwogICAg
ICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoY29uc3QgUmVzb3VyY2VOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyJikgPSBkZWZhdWx0OwpAQCAtMzI5LDYgKzM0Miw5IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgTmV0d29ya01ETlNSZWdpc3RlciBtX21kbnNSZWdp
c3RlcjsKICNlbmRpZgorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgSGFzaFNldDxTdHJp
bmc+IG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzOworI2VuZGlmCiAKICAgICBib29sIG1fY2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCB7IGZhbHNlIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDQzYjVmNjc0ZTU1Li40ZjRm
YzI1ZjIzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC0zNCw2ICszNCwxMSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQg
ZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdn
ZXN0ZWROYW1lKQogICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKQogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICBVbnN1YnNj
cmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKFZlY3RvcjxTdHJpbmc+IGhvc3RzKQor
ICAgIERvbUNvb2tpZXNGb3JIb3N0KFN0cmluZyBob3N0LCBib29sIHN1YnNjcmliZVRvQ29va2ll
Q2hhbmdlTm90aWZpY2F0aW9ucykgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMp
IFN5bmNocm9ub3VzCisjZW5kaWYKKwogICAgIENvb2tpZXNGb3JET00oVVJMIGZpcnN0UGFydHks
IHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAt
PiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5j
aHJvbm91cwogICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAsIFN0cmluZyBjb29raWVTdHJp
bmcpCiAgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0
cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25h
bDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lU
UCBzaG91bGRBc2tJVFApIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1Nl
Y3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQppbmRleCA4MmRiMDEyZGU2MC4uY2E1MDVlZTVlZWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjIxLDYgKzYyMSw3IEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2ZW50JzogWyciV2Vi
RXZlbnQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMnOiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpJU09X
ZWJWVFRDdWUnOiBbJzxXZWJDb3JlL0lTT1ZUVEN1ZS5oPiddLAorICAgICAgICAnc3RydWN0IFdl
YkNvcmU6OkNvb2tpZSc6IFsnPFdlYkNvcmUvQ29va2llLmg+J10sCiAgICAgICAgICdzdHJ1Y3Qg
V2ViQ29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3JlL0VsZW1lbnRDb250ZXh0Lmg+J10s
CiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsnIldlYlVzZXJD
b250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6
V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5
cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNl
cy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBi
NjRhMWY3ZDUyZi4uODRkZjQ5NGExNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXMueWFtbApAQCAtNTUsNiArNTUsMTQgQEAgSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgIGh1
bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkF1dG9tYXRpYyBIVFRQUyB1cGdyYWRlIGZvciBrbm93
biBzdXBwb3J0ZWQgc2l0ZXMiCiAgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCiAKK0luUHJvY2Vz
c0Nvb2tpZUNhY2hlRW5hYmxlZDoKKyAgIHR5cGU6IGJvb2wKKyAgIGRlZmF1bHRWYWx1ZTogdHJ1
ZQorICAgY29uZGl0aW9uOiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgaHVtYW5SZWFkYWJsZU5h
bWU6ICJJbi1Qcm9jZXNzIENvb2tpZSBDYWNoZSIKKyAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlv
bjogIkluLVByb2Nlc3MgRE9NIENvb2tpZSBDYWNoZSIKKyAgIGNhdGVnb3J5OiBleHBlcmltZW50
YWwKKwogVGhpcmRQYXJ0eUlmcmFtZVJlZGlyZWN0QmxvY2tpbmdFbmFibGVkOgogICAgdHlwZTog
Ym9vbAogICAgZGVmYXVsdFZhbHVlOiB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3NDg5NGJkMjdiYS4u
YTVkMGJlMTQyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtNjI0LDYgKzYyNCw3IEBAIFdlYlByb2Nlc3Mv
V2ViUGFnZS9QYWdlQmFubmVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1Zpc2l0ZWRMaW5rVGFi
bGVDb250cm9sbGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5LmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAorV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAKIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBlMWZj
NmY3MzcyYi4uZDI0YTgwNDhlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTYxMyw2ICs2
MTMsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5tbQogCiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCitXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dl
YlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNDg4NWI0NjMyZC4uMWJlNzdjOGI3N2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
OTQzLDYgKzk0Myw3IEBACiAJCTQ2NkJDMDNDMUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY2QkMwMzkxRkEyNjZDOTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyLmggKi87IH07CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNz
RGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmggKi87IH07CisJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBXZWJD
b29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi87IH07CiAJ
CTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVu
ZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmlj
ZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9Owog
CQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2
NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtMzQ4NCw2ICszNDg1LDggQEAKIAkJNDY3MUZG
MUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQ2NzFGRjFFMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBX
ZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdl
YkNvb2tpZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkNvb2tpZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEy
MUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNp
b25hbFBhZ2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2
MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg0MjIsNiArODQyNSw4IEBACiAJCQkJQkM3MkI5RjkxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmggKi8sCiAJCQkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8q
IFdlYkNvbnRleHRNZW51LmNwcCAqLywKIAkJCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyog
V2ViQ29udGV4dE1lbnUuaCAqLywKKwkJCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2Vi
Q29va2llQ2FjaGUuY3BwICovLAorCQkJCTQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJD
b29raWVDYWNoZS5oICovLAogCQkJCTVDN0ZCNDZFMjFFOTdDMEIwMDlFMzI0MSAvKiBXZWJDb29r
aWVKYXIuY3BwICovLAogCQkJCTVDN0ZCNDZGMjFFOTdDMEMwMDlFMzI0MSAvKiBXZWJDb29raWVK
YXIuaCAqLywKIAkJCQkxQTVCMUM1MjE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2Fk
ZXIuY3BwICovLApAQCAtMTA3OTAsNiArMTA3OTUsNyBAQAogCQkJCTFBMDQzRjZBMTI1MTREOEIw
MEZGQkZCNSAvKiBXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzMwNjgyNDEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY3RTQzRTgyMjQzRkY3RDAwQjEzOTI0IC8qIFdl
YlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjgwOUE3
QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMzA2NkJGMTI1QTQ0MjEwMEU3MTI3OCAvKiBXZWJQcm9jZXNzTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDRTREMjFCMUE0OTE0QTMwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9vbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNEQyMjgxQTQ5MTZDMjAwQzdGMTUyIC8qIFdlYlByb2Nl
c3NQb29sTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
aW5kZXggMjhiYzEyYzM0MjMuLjI5ZTdhMThjMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgogI2luY2x1
ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQ
cm92aWRlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgIldlYkNvcmVB
cmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgog
I2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCkBAIC0yMzQsNiAr
MjM1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVBY2NlcHRQb2xp
Y3lDaGFuZ2VkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kKICAgICBtX2Nvb2tpZUFjY2VwdFBvbGlj
eSA9IG5ld1BvbGljeTsKIH0KIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCit2b2lkIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuY29va2llSmFyKCkuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworfQor
Cit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0RlbGV0ZWQoKQoreworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tpZUphcigpLmNvb2tpZXNEZWxldGVkKCk7Cit9
CisjZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJj
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGUmIGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNTFmZGYzNTQ1
MjQuLmZiODExZTQ4NjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDEsNiArNDEsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK3N0cnVjdCBDb29raWU7CiBzdHJ1
Y3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyOwogc3RydWN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
OwogZW51bSBjbGFzcyBIVFRQQ29va2llQWNjZXB0UG9saWN5IDogdWludDhfdDsKQEAgLTgzLDYg
Kzg0LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY29va2llc0VuYWJsZWQoKSBjb25zdDsKIAor
I2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3Ry
aW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgY29v
a2llc0RlbGV0ZWQoKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbihJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIsIFdlYkNvcmU6OkhUVFBDb29raWVB
Y2NlcHRQb2xpY3kpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggMmFhNjg4NmU1N2EuLjU0ODBkNTkzZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMSw2ICszMSwxMSBAQCBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldE9uTGluZVN0YXRlKGJv
b2wgaXNPbkxpbmUpOwogICAgIENvb2tpZUFjY2VwdFBvbGljeUNoYW5nZWQoZW51bTp1aW50OF90
IFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KTsKIAorI2lmIEVOQUJMRShD
T09LSUVfQ0FDSEUpCisgICAgQ29va2llc0FkZGVkKFN0cmluZyBob3N0LCBWZWN0b3I8c3RydWN0
IFdlYkNvcmU6OkNvb2tpZT4gY29va2llcyk7CisgICAgQ29va2llc0RlbGV0ZWQoKTsKKyNlbmRp
ZgorCiAgICAgQ2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KSAtPiAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5IGhhc0FjdGl2aXR5KSBBc3luYwogICAgIE1lc3NhZ2Vz
QXZhaWxhYmxlRm9yUG9ydChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBv
cnQpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2Nv
YS9XZWJDb29raWVDYWNoZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uZGE1Y2E4Njc3MmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShDT09LSUVfQ0FDSEUpCisjaW1wb3J0ICJXZWJDb29raWVDYWNoZS5oIgorCisjaW1wb3J0ICJX
ZWJQcm9jZXNzLmgiCisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK05ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6OmluTWVtb3J5U3RvcmFnZVNlc3Npb24o
KQoreworICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKSB7CisgICAgICAgIFN0cmlu
ZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdEluUHJvY2Vzc1N0b3JhZ2UtIiwgZ2V0
Q3VycmVudFByb2Nlc3NJRCgpKTsKKyAgICAgICAgYXV0byBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0
Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBjb29raWVTdG9yYWdlID0gYWRvcHRD
RihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CisgICAgICAgIG1faW5NZW1vcnlTdG9yYWdlU2Vz
c2lvbiA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zZXNzaW9uSUQoKSwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29v
a2llU3RvcmFnZSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6SXNJbk1lbW9yeUNvb2tpZVN0b3Jl
OjpZZXMpOworICAgIH0KKyAgICByZXR1cm4gKm1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09PS0lFX0NBQ0hF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2Fj
aGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMTZlOTJlNjlh
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUNhY2hlLmNwcApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisjaW5jbHVkZSAiV2ViQ29v
a2llQ2FjaGUuaCIKKworI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZXMuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworV2ViQ29va2llQ2FjaGU6OldlYkNvb2tpZUNhY2hlKCkKK3sKK30KKworV2Vi
Q29va2llQ2FjaGU6On5XZWJDb29raWVDYWNoZSgpCit7Cit9CisKKy8vIEZJWE1FOiBUaGlzIGNh
biBldmVudHVhbGx5IGJlIHJlbW92ZWQsIHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290
aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJLgorYm9vbCBXZWJDb29raWVDYWNoZTo6aXNGdW5j
dGlvbmFsKCkKK3sKKyAgICByZXR1cm4gaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnN1cHBvcnRz
Q29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKTsKK30KKworU3RyaW5nIFdlYkNvb2tpZUNhY2hlOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBp
ZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKSB7CisgICAgICAg
IFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgICAgIGJvb2wgc3Vic2NyaWJlVG9Db29raWVD
aGFuZ2VOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEb21Db29raWVz
Rm9ySG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9t
Q29va2llc0Zvckhvc3Q6OlJlcGx5KGNvb2tpZXMpLCAwKSkKKyAgICAgICAgICAgIHJldHVybiB7
IH07CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IEdvdCAlbHUgY29va2llcyBmcm9tIHRo
ZSBuZXR3b3JrIHByb2Nlc3MgZm9yICclcyciLCBjb29raWVzLnNpemUoKSwgdXJsLmhvc3QoKS50
b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBwcnVuZUNhY2hlSWZOZWNlc3Nhcnko
KTsKKyAgICAgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuYWRkKGhvc3QpOworICAgICAg
ICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgICAgICBpbk1lbW9yeVN0b3Jh
Z2VTZXNzaW9uKCkuc2V0Q29va2llKGNvb2tpZSk7CisgICAgfQorICAgIFdURkxvZ0Fsd2F5cygi
Q0hSSVM6IFJldHVybmluZyBjb29raWVzIHRvICclcycgZnJvbSBjYWNoZSIsIHVybC5ob3N0KCku
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gaW5NZW1vcnlTdG9yYWdlU2Vz
c2lvbigpLmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUDo6Tm8pLmZpcnN0
OworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit7CisgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgp
LnRvU3RyaW5nKCk7CisgICAgaWYgKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5z
KGhvc3QpKQorICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llc0Zyb21E
T00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgU2hvdWxk
QXNrSVRQOjpObywgY29va2llU3RyaW5nKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y29v
a2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tp
ZXMpCit7CisgICAgaWYgKCFtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyhob3N0
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV1RGTG9nQWx3YXlzKCJDSFJJUzogV2ViQ29va2ll
Q2FjaGU6OmNvb2tpZXNBZGRlZCglcykgJWx1IGNvb2tpZXMiLCBob3N0LnV0ZjgoKS5kYXRhKCks
IGNvb2tpZXMuc2l6ZSgpKTsKKworICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAg
ICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29raWUpOworfQorCit2
b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgV1RGTG9nQWx3YXlz
KCJDSFJJUzogV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNEZWxldGVkKCkiKTsKKyAgICBjbGVhcigp
OworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjbGVhcigpCit7CisgICAgV1RGTG9nQWx3YXlz
KCJDSFJJUzogV2ViQ29va2llQ2FjaGU6OmNsZWFyKCkiKTsKKyAgICBhdXRvIGhvc3RzVG9VbnN1
YnNjcmliZSA9IGNvcHlUb1ZlY3RvcihtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZSk7CisgICAg
aWYgKCFob3N0c1RvVW5zdWJzY3JpYmUuaXNFbXB0eSgpKQorICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVuc3Vic2NyaWJl
RnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoaG9zdHNUb1Vuc3Vic2NyaWJlKSwgMCk7Cisg
ICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY2xlYXIoKTsKKyAgICBtX2luTWVtb3J5U3Rv
cmFnZVNlc3Npb24gPSBudWxscHRyOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpwcnVuZUNh
Y2hlSWZOZWNlc3NhcnkoKQoreworICAgIC8vIFdlIG1heSB3YW50IHRvIHJhaXNlIHRoaXMgbGlt
aXQgaWYgd2Ugc3RhcnQgdXNpbmcgdGhlIGNhY2hlIGZvciB0aGlyZC1wYXJ0eSBpZnJhbWVzLgor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDYWNoZWRIb3N0cyA9IDU7CisKKyAgICBpZiAo
bV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2Uuc2l6ZSgpIDwgbWF4Q2FjaGVkSG9zdHMpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5y
YW5kb20oKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBob3N0c1RvUmVtb3ZlID0geyAqaXQgfTsKKyAg
ICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5yZW1vdmUoaXQpOworICAgIGluTWVtb3J5U3Rv
cmFnZVNlc3Npb24oKS5kZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGhvc3RzVG9SZW1vdmUpOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6VW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhob3N0c1RvUmVt
b3ZlKSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxF
KENPT0tJRV9DQUNIRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvb2tpZUNhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVDYWNoZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z
MmZjZWEzMTVmYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKworI2luY2x1ZGUgPFdlYkNv
cmUvU2FtZVNpdGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBEb2N1bWVu
dDsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK2VudW0gY2xhc3MgU2hvdWxkQXNrSVRQ
IDogYm9vbDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkZyYW1lOworCitj
bGFzcyBXZWJDb29raWVDYWNoZSB7CitwdWJsaWM6CisgICAgV2ViQ29va2llQ2FjaGUoKTsKKyAg
ICB+V2ViQ29va2llQ2FjaGUoKTsKKworICAgIGJvb2wgaXNGdW5jdGlvbmFsKCk7CisKKyAgICBT
dHJpbmcgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAg
ICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwor
CisgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgY29va2llc0RlbGV0ZWQoKTsKKworICAgIHZv
aWQgY2xlYXIoKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKTsKKyAgICB2b2lkIHBydW5lQ2FjaGVJZk5lY2Vz
c2FyeSgpOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IG1f
aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDMyNTgzMDVjNzg5Li5mMTAxODU1
ZTE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTg4LDYgKzg5LDI1IEBAIHN0YXRpYyBib29sIHNob3VsZEJsb2NrQ29va2llcyhXZWJGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsCiB9CiAjZW5kaWYKIAor
I2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCitib29sIFdlYkNvb2tpZUphcjo6aXNFbGlnaWJsZUZv
ckNhY2hlKFdlYkZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZVVSTCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUu
cGFnZSgpID8gZnJhbWUucGFnZSgpLT5jb3JlUGFnZSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXBh
Z2UgfHwgIXBhZ2UtPnNldHRpbmdzKCkuaW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkKCkpIHsK
KyAgICAgICAgV1RGTG9nQWx3YXlzKCJJbi1Qcm9jZXNzIGNvb2tpZSBjYWNoZSBpcyBkaXNhYmxl
ZCB2aWEgcHJlZmVyZW5jZXMiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICghbV9jYWNoZS5pc0Z1bmN0aW9uYWwoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIklu
LVByb2Nlc3MgY29va2llIGNhY2hlIGlzIGRpc2FibGVkIGJlY2F1c2UgdGhpcyBidWlsZCBkb2Vz
IG5vdCBzdXBwb3J0IGl0IHlldCIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gRm9yIG5vdywgd2Ugb25seSBjYWNoZSBjb29raWVzIGZvciBmaXJzdC1wYXJ0eSBjb250
ZW50LiBUaGlyZC1wYXJ0eSBjb29raWUgY2FjaGluZyBpcyBhIGJpdCBtb3JlIGNvbXBsaWNhdGVk
IGR1ZSB0byBwYXJ0aXRpb25pbmcgYW5kIHN0b3JhZ2UgYWNjZXNzLgorICAgIHJldHVybiBmcmFt
ZS5pc01haW5GcmFtZSgpIHx8IFJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMgfSA9PSBSZWdpc3RyYWJsZURvbWFpbiB7IHJlc291cmNlVVJMIH07Cit9CisjZW5kaWYKKwog
U3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGF1dG8qIHdlYkZyYW1lID0gZG9jdW1lbnQu
ZnJhbWUoKSA/IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpkb2N1bWVudC5mcmFtZSgpKSA6IG51
bGxwdHI7CkBAIC0xMDAsMTIgKzEyMCwxOSBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVz
KFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAg
ICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAorICAgIGF1dG8gc2FtZVNpdGVJbmZvID0gQ29va2ll
SmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOworICAgIGF1dG8gaW5jbHVkZVNlY3VyZUNvb2tp
ZXMgPSBDb29raWVKYXI6OnNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwp
OwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgYXV0byBwYWdl
SUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKKyNpZiBFTkFCTEUoQ09PS0lF
X0NBQ0hFKQorICAgIGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndlYkZyYW1lLCBkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAgICByZXR1cm4gbV9jYWNoZS5jb29r
aWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyNlbmRpZgorCiAg
ICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9
IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCksIHNob3VsZEFza0lU
UEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29r
aWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1cm4geyB9
OwogCiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKQEAgLTEyMywxMSArMTUwLDM0IEBAIHZvaWQg
V2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCisgICAgYXV0byBz
YW1lU2l0ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhkb2N1bWVudCk7CiAgICAgYXV0
byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZy
YW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIGNvb2tpZVN0
cmluZyksIDApOworI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgaWYgKGlzRWxpZ2libGVG
b3JDYWNoZSgqd2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCkp
CisgICAgICAgIG1fY2FjaGUuc2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29va2llU3Ry
aW5nKTsKKyNlbmRpZgorCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91
bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKK30KKworI2lmIEVO
QUJMRShDT09LSUVfQ0FDSEUpCit2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0FkZGVkKGNvbnN0
IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7
CisgICAgbV9jYWNoZS5jb29raWVzQWRkZWQoaG9zdCwgY29va2llcyk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llSmFyOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgbV9jYWNoZS5jb29raWVzRGVsZXRl
ZCgpOworfQorCit2b2lkIFdlYkNvb2tpZUphcjo6Y2xlYXJDYWNoZSgpCit7CisgICAgbV9jYWNo
ZS5jbGVhcigpOwogfQorI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUpCiAKIGJvb2wgV2Vi
Q29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5o
CmluZGV4IDUyOTQ4YTkxZGU1Li42MzQzMDE0ZTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTI1LDggKzI1LDEzIEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViQ29va2llQ2FjaGUuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0Nvb2tpZUphci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ29va2llOwor
fQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29va2llSmFyIGZpbmFsIDogcHVi
bGljIFdlYkNvcmU6OkNvb2tpZUphciB7CkBAIC0zOSw4ICs0NCwyMSBAQCBwdWJsaWM6CiAgICAg
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllcj4sIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwor
CisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBT
dHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBj
b29raWVzRGVsZXRlZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViQ29va2llSmFyKCk7
CisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQgY2xlYXJDYWNoZSgpIGZpbmFs
OworICAgIGJvb2wgaXNFbGlnaWJsZUZvckNhY2hlKFdlYkZyYW1lJiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkgY29uc3Q7CisKKyAgICBt
dXRhYmxlIFdlYkNvb2tpZUNhY2hlIG1fY2FjaGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA1MDhiY2MxMDJlYi4uYmRhMWVhZjFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgV2ViUGFnZTo6
V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYktpdDo6TGliV2ViUlRDUHJv
dmlkZXI+KCksCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVBy
b3ZpZGVyKCksCiAgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjcmVhdGUoKnRoaXMp
LAotICAgICAgICBXZWJDb29raWVKYXI6OmNyZWF0ZSgpLAorICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5jb29raWVKYXIoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJQcm9ncmVz
c1RyYWNrZXJDbGllbnQ+KCp0aGlzKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29y
ZGVyUHJvdmlkZXI+KCkKICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCmluZGV4IDRiMjQwOWI5OTRkLi4yMWI1YTJiYzEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIldlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5o
IgogI2luY2x1ZGUgIldlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkNv
b2tpZUphci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgpAQCAt
MjA1LDYgKzIwNiw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgICwgbV93ZWJJbnNw
ZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyKFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXI6
OmNyZWF0ZSgpKQogICAgICwgbV93ZWJMb2FkZXJTdHJhdGVneSgqbmV3IFdlYkxvYWRlclN0cmF0
ZWd5KQogICAgICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRlcihXZWJDYWNoZVN0b3JhZ2VQcm92aWRl
cjo6Y3JlYXRlKCkpCisgICAgLCBtX2Nvb2tpZUphcihXZWJDb29raWVKYXI6OmNyZWF0ZSgpKQog
ICAgICwgbV9kbnNQcmVmZXRjaEh5c3RlcmVyaXMoW3RoaXNdKFBBTDo6SHlzdGVyZXNpc1N0YXRl
IHN0YXRlKSB7IGlmIChzdGF0ZSA9PSBQQUw6Okh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbV9k
bnNQcmVmZXRjaGVkSG9zdHMuY2xlYXIoKTsgfSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKICAgICAsIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcjo6Y3JlYXRlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAppbmRleCA4NTNjNjYwZWM2NC4uMTU5MDkzNjBhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTIwLDYgKzEyMCw3IEBAIGNsYXNzIFVzZXJEYXRhOwog
Y2xhc3MgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTsKIGNsYXNzIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyOworY2xhc3MgV2ViQ29va2ll
SmFyOwogY2xhc3MgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhOwogY2xhc3MgV2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzOwogY2xhc3MgV2ViRnJhbWU7CkBAIC0yOTMsNiArMjk0LDcgQEAg
cHVibGljOgogICAgIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkqIGF1dG9tYXRpb25TZXNzaW9u
UHJveHkoKSB7IHJldHVybiBtX2F1dG9tYXRpb25TZXNzaW9uUHJveHkuZ2V0KCk7IH0KIAogICAg
IFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlcigpIHsgcmV0dXJu
IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuZ2V0KCk7IH0KKyAgICBXZWJDb29raWVKYXImIGNvb2tp
ZUphcigpIHsgcmV0dXJuIG1fY29va2llSmFyLmdldCgpOyB9CiAgICAgV2ViU29ja2V0Q2hhbm5l
bE1hbmFnZXImIHdlYlNvY2tldENoYW5uZWxNYW5hZ2VyKCkgeyByZXR1cm4gbV93ZWJTb2NrZXRD
aGFubmVsTWFuYWdlcjsgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU1NCw2ICs1
NTYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBSZWY8V2ViQ2FjaGVTdG9yYWdlUHJvdmlk
ZXI+IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7CisgICAgUmVmPFdlYkNvb2tpZUphcj4gbV9jb29r
aWVKYXI7CiAgICAgV2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIgbV93ZWJTb2NrZXRDaGFubmVsTWFu
YWdlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJSVENOZXR3b3JrPiBtX2xpYldlYlJU
Q05ldHdvcms7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390539</attachid>
            <date>2020-02-12 10:58:11 -0800</date>
            <delta_ts>2020-02-12 13:02:08 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>WebCookieCache_wip.patch</filename>
            <type>text/plain</type>
            <size>61031</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGZlZGUyNGJlMzU0Li41OTliYTM4ODI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC03OTcsNiArNzk3LDEwIEBACiAjZGVmaW5lIEVOQUJM
RV9USFJFQURJTkdfR0VORVJJQyAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9DT09L
SUVfQ0FDSEUpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKyNkZWZpbmUgRU5BQkxFX0NPT0tJRV9DQUNIRSAxCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9HQ19WQUxJREFUSU9OKSAmJiAhZGVmaW5lZChOREVCVUcp
CiAjZGVmaW5lIEVOQUJMRV9HQ19WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAppbmRleCBkMjRiODVlMmRhMi4uY2JkOGU1NDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBA
IC01NTYsNiArNTU2LDEwIEBACiAjZGVmaW5lIEhBVkVfREVWSUNFX0lERU5USVRZIDEKICNlbmRp
ZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0NPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJIDEKKyNlbmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjZGVmaW5lIEhBVkVfREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOIDEKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCA2
NjU4ZTcyOGM5Yy4uYTkyMDc2MGIzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdURl9FWFRFUk5fQ19FTkQK
IAogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlICgpCiArICh2b2lkKV9zZXRTaGFyZWRI
VFRQQ29va2llU3RvcmFnZTooTlNIVFRQQ29va2llU3RvcmFnZSAqKXN0b3JhZ2U7CistICh2b2lk
KV9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6KE5TU2V0PE5TU3RyaW5nKj4q
IF9fbnVsbGFibGUpZG9tYWluTGlzdDsKKy0gKHZvaWQpX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6
KHZvaWQoXl9fbnVsbGFibGUpKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGFkZGVkQ29va2llcywg
TlNVUkwqIF9fbnVsbGFibGUgdXJsRm9yQWRkZWRDb29raWVzKSljb29raWVzQWRkZWRIYW5kbGVy
IG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsKKy0gKHZvaWQpX3Nl
dENvb2tpZXNEZWxldGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBD
b29raWUqPiogX19udWxsYWJsZSBkZWxldGVkQ29va2llcywgYm9vbCBkZWxldGVkQWxsQ29va2ll
cykpY29va2llc0RlbGV0ZWRIYW5kbGVyIG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxs
YWJsZSlxdWV1ZTsKKy0gKE5TQXJyYXkqIF9fbnVsbGFibGUpX2dldENvb2tpZXNGb3JEb21haW46
KE5TU3RyaW5nKilkb21haW47CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDg0ZGJhNDBlOTI4Li4xNTU5NjZkNjdhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJM
JiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsK
IAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2FjaGUo
KSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB+Q29va2llSmFyKCk7CiBwcm90ZWN0ZWQ6CiAg
ICAgc3RhdGljIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8oY29uc3QgRG9jdW1lbnQmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDMxNmQyMTY5N2JkLi45MTQ3YWEx
NDNlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ29tbW9uVk0uaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05
OSw2ICsxMDAsMTIgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9u
b3VzIHN5bmNocm9ub3VzLCBNYWludGFpbkJhY2tGb3J3YXJkQ2EKIAogICAgIENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAg
UGFnZTo6Zm9yRWFjaFBhZ2UoW10oYXV0byYgcGFnZSkgeworICAgICAgICBwYWdlLmNvb2tpZUph
cigpLmNsZWFyQ2FjaGUoKTsKKyAgICB9KTsKKyNlbmRpZgorCiAgICAgZm9yIChhdXRvJiBkb2N1
bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxEb2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1
bWVudHMoKSkpIHsKICAgICAgICAgZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5yZWxlYXNlTWVtb3J5
KCk7CiAgICAgICAgIGRvY3VtZW50LT5mb250U2VsZWN0b3IoKS5lbXB0eUNhY2hlcygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDVkM2E4OGM0OGY3Li5hMjcxZTFjOTMzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzYzLDYgKzM2Myw5IEBAIHJlcXVlc3RJZGxl
Q2FsbGJhY2tFbmFibGVkOgogSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UK
IAoraW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0aGly
ZFBhcnR5SWZyYW1lUmVkaXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDYuLmQxNzk3ZGQ2MDVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgKQEAgLTYwLDYgKzYwLDggQEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENv
b2tpZUphcjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VP
YnNlcnZlci5oIgorT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU011dGFibGVTZXQ7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzksNiArODEsMTUgQEAgZW51bSBj
bGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdCB7IEFsbCwgQWxsT25T
aXRlc1dpdGhvdXRVc2VySW4KIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0Q29va2llc0xpdmVP
blRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGltZW91dCB9OwogZW51
bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29sIHsgTm8sIFllcyB9OwogCisjaWYgSEFWRShDRk5F
VFdPUktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNl
cnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNE
ZWxldGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTQsNyArMTA1LDggQEAgcHVibGljOgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVD
RlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4mJik7CisgICAgZW51bSBjbGFzcyBJc0luTWVtb3J5Q29va2llU3RvcmUgOiBi
b29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmLCBJc0luTWVtb3J5Q29va2llU3RvcmUg
PSBJc0luTWVtb3J5Q29va2llU3RvcmU6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgLy8gTWF5IGJl
IG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQu
CkBAIC0xNDYsNiArMTU4LDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NP
T0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29r
aWU+IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29v
a2llQ2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2ll
Q2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpIGNvbnN0Owor
I2VuZGlmCisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwpAQCAt
MTczLDExICsxOTIsMjMgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhU
VFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0
cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKmZpcnN0UGFydHks
IGNvbnN0IE9wdGlvbmFsPFNhbWVTaXRlSW5mbz4mLCBOU1VSTCAqKSBjb25zdDsKKyAgICBOU0Fy
cmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFApIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUENvb2tp
ZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqY29va2llcywgTlNVUkwg
KiwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJikgY29uc3Q7Cisj
ZW5kaWYKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAg
ICB2b2lkIHJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyNlbmRp
ZgorCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZj4gbV9wbGF0Zm9ybVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWY+IG1fcGxhdGZvcm1Db29raWVTdG9yYWdlOworICAgIGJvb2wgbV9pc0luTWVtb3J5
Q29va2llU3RvcmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgc3RhdGljIHZvaWQg
Y29va2llc0RpZENoYW5nZShOZXR3b3JrU3RvcmFnZVNlc3Npb24qKTsKIApAQCAtMTkwLDYgKzIy
MSwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0
OwogI2VuZGlmCiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQ
SSkKKyAgICBib29sIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAg
IFJldGFpblB0cjxOU011dGFibGVTZXQ+IG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFu
Z2VzOworICAgIEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4+
IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzOworI2VuZGlmCisKICAgICBDcmVkZW50aWFsU3RvcmFn
ZSBtX2NyZWRlbnRpYWxTdG9yYWdlOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKaW5kZXggYjAxYTdlNjZiZjAu
LmUwZDg0ZjdjNTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtNzMs
MTEgKzczLDEyIEBAIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25GCiAgICAgcmV0dXJuIHN0b3JhZ2VT
ZXNzaW9uOwogfQogCi1OZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmPiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
JiYgcGxhdGZvcm1Db29raWVTdG9yYWdlKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4mJiBwbGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiYmIHBsYXRmb3JtQ29va2llU3RvcmFnZSwgSXNJbk1lbW9yeUNvb2tpZVN0
b3JlIGlzSW5NZW1vcnlDb29raWVTdG9yZSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fcGxhdGZvcm1TZXNzaW9uKFdURk1vdmUocGxhdGZvcm1TZXNzaW9uKSkKKyAgICAs
IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKGlzSW5NZW1vcnlDb29raWVTdG9yZSA9PSBJc0luTWVt
b3J5Q29va2llU3RvcmU6OlllcykKIHsKLSAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQ
SSgpIHx8ICFwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpOworICAgIEFTU0VSVChwcm9jZXNzTWF5VXNl
Q29va2llQVBJKCkgfHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CiAgICAgbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0
b3JhZ2UgPyBXVEZNb3ZlKHBsYXRmb3JtQ29va2llU3RvcmFnZSkgOiBjb29raWVTdG9yYWdlKCk7
CiB9CiAKQEAgLTg4LDEwICs4OSwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2Uo
KSBjb25zdAogewotICAgIGlmICghcHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQorICAgIGlmICgh
cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpICYmICFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgaWYgKG1fcGxhdGZvcm1Db29raWVTdG9y
YWdlKQogICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA5ZTlhOTFiNzI1MC4uZjkzN2NlMjk2MTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtNDYsNyArNDYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBDb29r
aWUgKiljb29raWVdOwpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsK
KyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nl
c3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZvciAoY29uc3Qg
YXV0byYgY29va2llIDogY29va2llcykKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNv
bnN0IFVSTCYKIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25z
dCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9p
c0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29r
aWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAKIE5TSFRUUENvb2tp
ZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QK
IHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5B
Y2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpOwogICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwogICAgIGlm
ICghY2ZDb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29r
aWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJl
dHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CkBAIC0x
NTgsMTEgKzE1OCw2IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZVUkxDYWNoZVNldERpc2tD
YXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNob3Vs
ZCBub3QgYmUgbmVjZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhl
ZC4KICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxD
YWNoZSBzaGFyZWRVUkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGlmICghTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCi0gICAgICAgIHJldHVy
biBzdG9yYWdlU2Vzc2lvbi5sZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZp
bGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBhdXRv
IGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0
b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBp
ZiAoIWNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjI2LDkgKzIy
MSw5IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2Ug
KnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNvb2tpZXNQdHItPmF1
dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwg
KnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8pCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENvb2tpZXNGb3JVUkwo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBO
U1VSTCAqdXJsLCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbykgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9j
ZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9p
c0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewogI2lmICEo
UExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAw
KSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgICAgIGlm
IChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOild
KQpAQCAtMjU1LDIxICsyNTAsMjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICoKICNlbmRpZgog
fQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2Ft
ZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJheSAqTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNv
b2tpZVN0b3JhZ2UsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUlu
Zm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwot
ICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBf
Q0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAg
fQogCiAgICAgLy8gRklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFn
ZSBvYmplY3QgZWFjaCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAg
Ly8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tp
ZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFn
ZT4gbnNDb29raWVTdG9yYWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2Nd
IF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0pOwotICAgIHJldHVy
biBjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8pOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yVVJMKG5zQ29va2ll
U3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogfQogCiBzdGF0
aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENv
b2tpZXMsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewotICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
KTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVzIGNvdW50XTsKICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogCkBAIC0zMDIs
MjcgKzI5OCwyNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNB
cnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNo
b3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAg
aWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAgICByZXR1cm4gbmls
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBh
Z2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5kaWYKLSAgICByZXR1
cm4gaHR0cENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwo
Y29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9
CiAKLWVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5j
bHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0Zv
clNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJ
VFApIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZp
bGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmls
ZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9y
eUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAg
IE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNB
cnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAoIVtjb29raWVzIGNv
dW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBhIG51
bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBjcmVh
dGUgYmVsb3cuCiAKQEAgLTM3NCwyMiArMzY5LDIyIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbEhU
VFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKIAogc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQ
T25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lv
bihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFk
ZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhp
cywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRl
SW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVh
ZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5p
bmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRl
ckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhl
YWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxk
UHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwor
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNDU3LDcgKzQ1Miw3IEBAIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlz
LCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
c2tJVFApOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAg
TlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2Vy
dmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7
ICsraSkgewpAQCAtNTY2LDQgKzU2MSw5NSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQogICAgIFtz
dG9yYWdlIF9zYXZlQ29va2llc107CiB9CiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlZ2lzdGVy
Q29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2RpZFJlZ2lz
dGVyQ29va2llTGlzdGVuZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RpZFJlZ2lzdGVy
Q29va2llTGlzdGVuZXJzID0gdHJ1ZTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tp
ZXNBZGRlZEhhbmRsZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqIG5zQ29va2llcywgTlNV
UkwgKnVybEZvckFkZGVkQ29va2llcykgeworICAgICAgICBWZWN0b3I8Q29va2llPiBjb29raWVz
OworICAgICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW25zQ29va2llcyBjb3VudF07CisgICAgICAg
IGNvb2tpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKyAgICAgICAgZm9yIChOU1VJbnRlZ2Vy
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgTlNIVFRQQ29va2llICpuc0Nv
b2tpZSA9IChOU0hUVFBDb29raWUgKilbbnNDb29raWVzIG9iamVjdEF0SW5kZXg6aV07CisgICAg
ICAgICAgICBjb29raWVzLnVuY2hlY2tlZEFwcGVuZCh7IG5zQ29va2llIH0pOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byBob3N0ID0gVVJMKHVybEZvckFkZGVkQ29va2llcykuaG9zdCgpLnRv
U3RyaW5nKCk7CisgICAgICAgIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZl
cnMgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5nZXQoaG9zdCk7CisgICAgICAgIGZvciAoYXV0
byogb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCisgICAgICAgICAgICBvYnNlcnZlci0+Y29va2llc0Fk
ZGVkKGhvc3QsIGNvb2tpZXMpOworICAgIH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpXTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxlcjpe
KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICosIGJvb2wgLypkZWxldGVkQWxsQ29va2llcyovKSB7
CisgICAgICAgIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiBvYnNlcnZlcnM7CisgICAg
ICAgIGZvciAoYXV0byYgc3ViT2JzZXJ2ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMudmFs
dWVzKCkpCisgICAgICAgICAgICBvYnNlcnZlcnMuYWRkKHN1Yk9ic2VydmVycy5iZWdpbigpLCBz
dWJPYnNlcnZlcnMuZW5kKCkpOworICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2
ZXJzKQorICAgICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNEZWxldGVkKCk7CisgICAgfSBvblF1
ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tp
ZUNoYW5nZU9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIHJl
Z2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8mIG9i
c2VydmVycyA9IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuc3VyZShob3N0LCBbXSB7CisgICAg
ICAgIHJldHVybiBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4geyB9OworICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKKyAgICBpZiAoIW9ic2VydmVycy5hZGQoJm9ic2VydmVyKS5pc05ld0Vu
dHJ5KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX3N1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlcykKKyAgICAgICAgbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKFttX3N1YnNj
cmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilo
b3N0XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29r
aWVDaGFuZ2VzIGFkZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICBbbnNDb29raWVTdG9y
YWdlKCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWRE
b21haW5zRm9yQ29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVD
aGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cykKK3sK
KyAgICBib29sIHN1YnNjcmliZWRVUkxzQ2hhbmdlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYg
aG9zdCA6IGhvc3RzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVy
cy5maW5kKGhvc3QpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMu
ZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBvYnNlcnZlcnMg
PSBpdC0+dmFsdWU7CisgICAgICAgIG9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKKyAgICAg
ICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY29va2llQ2hhbmdl
T2JzZXJ2ZXJzLnJlbW92ZShpdCk7CisgICAgICAgICAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0Zv
ckNvb2tpZUNoYW5nZXMgcmVtb3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgICAgICAg
ICAgc3Vic2NyaWJlZFVSTHNDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBp
ZiAoc3Vic2NyaWJlZFVSTHNDaGFuZ2VkKQorICAgICAgICBbbnNDb29raWVTdG9yYWdlKCkgX3Nl
dFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9y
Q29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5T
QXJyYXkgKm5zQ29va2llcyA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFp
bjooTlNTdHJpbmcgKilob3N0XTsKKyAgICBWZWN0b3I8Q29va2llPiBkb21Db29raWVzOworICAg
IGRvbUNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0Nvb2tpZXMuY291bnQpOworICAg
IGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpIHsKKyAgICAgICAgaWYg
KCFuc0Nvb2tpZS5IVFRQT25seSkKKyAgICAgICAgICAgIGRvbUNvb2tpZXMudW5jaGVja2VkQXBw
ZW5kKG5zQ29va2llKTsKKyAgICB9CisgICAgZG9tQ29va2llcy5zaHJpbmtUb0ZpdCgpOworICAg
IHJldHVybiBkb21Db29raWVzOworfQorCisvLyBGSVhNRTogVGhpcyBjYW4gZXZlbnR1YWxseSBn
b2VzIGF3YXksIHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290aCB0cmFuc2l0aW9uIHRv
IHRoZSBuZXcgQVBJLgorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1cHBvcnRzQ29va2ll
Q2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBv
cnRzQVBJID0gW25zQ29va2llU3RvcmFnZSgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczopXTsKKyAgICByZXR1cm4gc3Vw
cG9ydHNBUEk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJ
U1RFTkVSX0FQSSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAppbmRleCBlODE3MzQ0ZjE5ZC4uNDU5OWNhMjMyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCkBAIC0xMjQsNiArMTI0LDEzIEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIGZvciAoYXV0byYg
cG9ydCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzKQogICAgICAgICBuZXR3b3JrUHJvY2Vzcygp
Lm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0KTsK
IAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgaWYgKCFtX2hvc3RzV2l0aENvb2tpZUxp
c3RlbmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBob3N0c1dpdGhDb29raWVMaXN0ZW5l
cnMgPSBjb3B5VG9WZWN0b3IobV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMpOworICAgICAgICB1
bnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGhvc3RzV2l0aENvb2tpZUxp
c3RlbmVycyk7CisgICAgfQorI2VuZGlmCisKICNpZiBVU0UoTElCV0VCUlRDKQogICAgIGlmICht
X3J0Y1Byb3ZpZGVyKQogICAgICAgICBtX3J0Y1Byb3ZpZGVyLT5jbG9zZSgpOwpAQCAtNjMzLDYg
KzY0MCw0NSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29r
aWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgYwogICAgIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi0+ZGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09P
S0lFX0NBQ0hFKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZG9tQ29va2ll
c0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBib29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdl
Tm90aWZpY2F0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CisgICAgaWYgKCFuZXR3b3JrU3RvcmFn
ZVNlc3Npb24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAg
aWYgKHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucykgeworICAgICAgICBBU1NF
UlQoIW1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLmNvbnRhaW5zKGhvc3QpKTsKKyAgICAgICAg
bV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMuYWRkKGhvc3QpOworICAgICAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPnN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygq
dGhpcywgaG9zdCk7CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5kb21Db29raWVzRm9ySG9zdChob3N0KSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNh
dGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RzKQoreworICAgIFdURkxvZ0Fsd2F5cygi
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnMoKSAlbGQgaG9zdHMiLCBob3N0cy5zaXplKCkpOworICAgIGZvciAoYXV0
byYgaG9zdCA6IGhvc3RzKSB7CisgICAgICAgIEFTU0VSVChtX2hvc3RzV2l0aENvb2tpZUxpc3Rl
bmVycy5jb250YWlucyhob3N0KSk7CisgICAgICAgIG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJz
LnJlbW92ZShob3N0KTsKKyAgICB9CisKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5z
dG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygqdGhpcywgaG9zdHMpOwor
fQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzQWRkZWQoY29u
c3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykK
K3sKKyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpDb29raWVzQWRkZWQoaG9zdCwgY29va2llcyksIDApOworfQorCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Q29va2llc0RlbGV0
ZWQoKSwgMCk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCiB7CiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODZjYzYwZDFhOTkuLjQzZjE0NzA0ZmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVz
c2FnZVBvcnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZEluZm9y
bWF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9j
ZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
QEAgLTg3LDYgKzg4LDkgQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAg
ICA6IHB1YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPgogI2lm
IEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgICwgcHVibGljIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpDbGllbnQKKyNlbmRpZgorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisg
ICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXIKICNlbmRpZgogICAgICwg
SVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgpAQCAtMjY2LDYgKzI3MCwxNSBAQCBw
cml2YXRlOgogCiAgICAgdWludDY0X3QgbmV4dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIoRnVuY3Rp
b248dm9pZCgpPiYmKTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdm9pZCB1bnN1
YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBob3N0cyk7CisgICAgdm9pZCBkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3Qs
IGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYpOworCisgICAgLy8g
V2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXIuCisgICAgdm9pZCBjb29raWVzQWRkZWQoY29u
c3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGZpbmFsOwor
ICAgIHZvaWQgY29va2llc0RlbGV0ZWQoKSBmaW5hbDsKKyNlbmRpZgorCiAgICAgc3RydWN0IFJl
c291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciB7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0Fj
dGl2aXR5VHJhY2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZp
dHlUcmFja2VyKGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVs
dDsKQEAgLTMyOSw2ICszNDIsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfUlRDKQogICAg
IE5ldHdvcmtNRE5TUmVnaXN0ZXIgbV9tZG5zUmVnaXN0ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
Q09PS0lFX0NBQ0hFKQorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2hvc3RzV2l0aENvb2tpZUxpc3Rl
bmVyczsKKyNlbmRpZgogCiAgICAgYm9vbCBtX2NhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCA0M2I1ZjY3NGU1NS4uNGY0ZmMyNWYyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzQsNiArMzQsMTEgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0
YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAorI2lmIEVO
QUJMRShDT09LSUVfQ0FDSEUpCisgICAgVW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZp
Y2F0aW9ucyhWZWN0b3I8U3RyaW5nPiBob3N0cykKKyAgICBEb21Db29raWVzRm9ySG9zdChTdHJp
bmcgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIC0+IChW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cworI2VuZGlmCisKICAg
ICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1l
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29y
ZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJv
b2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKICAgICBTZXRDb29raWVzRnJv
bURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVt
OmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5n
IGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggODJkYjAxMmRlNjAu
LmNhNTA1ZWU1ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
QEAgLTYyMSw2ICs2MjEsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAg
J1dlYktpdDo6V2ViV2hlZWxFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJD
b3JlOjpNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJzogWyc8V2ViQ29yZS9NZWRpYVBsYXll
ci5oPiddLAogICAgICAgICAnV2ViQ29yZTo6SVNPV2ViVlRUQ3VlJzogWyc8V2ViQ29yZS9JU09W
VFRDdWUuaD4nXSwKKyAgICAgICAgJ3N0cnVjdCBXZWJDb3JlOjpDb29raWUnOiBbJzxXZWJDb3Jl
L0Nvb2tpZS5oPiddLAogICAgICAgICAnc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jzog
Wyc8V2ViQ29yZS9FbGVtZW50Q29udGV4dC5oPiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6
V2ViVXNlclNjcmlwdERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMu
aCInXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTdHlsZVNoZWV0RGF0YSc6IFsn
IldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggYjY0YTFmN2Q1MmYuLjg0ZGY0OTRhMTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTU1LDYgKzU1LDE0
IEBAIEhUVFBTVXBncmFkZUVuYWJsZWQ6CiAgICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJB
dXRvbWF0aWMgSFRUUFMgdXBncmFkZSBmb3Iga25vd24gc3VwcG9ydGVkIHNpdGVzIgogICAgY2F0
ZWdvcnk6IGV4cGVyaW1lbnRhbAogCitJblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQ6CisgICB0
eXBlOiBib29sCisgICBkZWZhdWx0VmFsdWU6IHRydWUKKyAgIGNvbmRpdGlvbjogRU5BQkxFKENP
T0tJRV9DQUNIRSkKKyAgIGh1bWFuUmVhZGFibGVOYW1lOiAiSW4tUHJvY2VzcyBDb29raWUgQ2Fj
aGUiCisgICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJJbi1Qcm9jZXNzIERPTSBDb29raWUg
Q2FjaGUiCisgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisKIFRoaXJkUGFydHlJZnJhbWVSZWRp
cmVjdEJsb2NraW5nRW5hYmxlZDoKICAgIHR5cGU6IGJvb2wKICAgIGRlZmF1bHRWYWx1ZTogdHJ1
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKaW5kZXggNzQ4OTRiZDI3YmEuLmE1ZDBiZTE0MjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
QEAgLTYyNCw2ICs2MjQsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZUJhbm5lci5jcHAKIFdl
YlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb250ZXh0TWVudS5jcHAKK1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5j
cHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTFmYzZmNzM3MmIuLmQyNGE4MDQ4ZTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CkBAIC02MTMsNiArNjEzLDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdl
L1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RJT1MubW0KIAogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRD
aGVja2luZ0NvbnRyb2xsZXJQcm94eS5tbQorV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNv
b2tpZUNhY2hlQ29jb2EubW0KIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2Eu
bW0KIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggZDQ4ODViNDYzMmQuLjFiZTc3YzhiNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk0Myw2ICs5NDMsNyBAQAogCQk0NjZCQzAz
QzFGQTI2NkRBMDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkJDMDM5MUZBMjY2
QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0
NjcxRkYxRjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdF
RkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0NjdFNDNF
ODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZG
NkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovOyB9OworCQk0
NjgwOUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdE
MCAvKiBXZWJDb29raWVDYWNoZS5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEg
LyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEg
LyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1
MjQ3MjI2NjhEODUwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vz
c0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QjA1MjQ0MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1v
dGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3
IC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NkJFQjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsK
QEAgLTM0ODQsNiArMzQ4NSw4IEBACiAJCTQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcxRkYxRTIzMjE3RUZGMDAx
QjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0RhdGFTdG9y
ZVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0EyM0Q5
MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNp
b25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm92aXNp
b25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QjIx
RTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDIyLDYgKzg0MjUsOCBAQAogCQkJCUJD
NzJCOUY5MTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oICovLAog
CQkJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8sCiAJ
CQkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi8sCisJCQkJ
NDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLywKKwkJCQk0
NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLywKIAkJCQk1QzdG
QjQ2RTIxRTk3QzBCMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmNwcCAqLywKIAkJCQk1QzdGQjQ2
RjIxRTk3QzBDMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggKi8sCiAJCQkJMUE1QjFDNTIxODk4
N0VERjAwNEZDRjlCIC8qIFdlYkRvY3VtZW50TG9hZGVyLmNwcCAqLywKQEAgLTEwNzkwLDYgKzEw
Nzk1LDcgQEAKIAkJCQkxQTA0M0Y2QTEyNTE0RDhCMDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY4MjQxMjVBNkI5NDAwRTcx
Mjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNv
b2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjZCRjEyNUE0NDIxMDBFNzEyNzgg
LyogV2ViUHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIxQjFBNDkx
NEEzMDBDN0YxNTIgLyogV2ViUHJvY2Vzc1Bvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTRE
MjI4MUE0OTE2QzIwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDI4YmMxMmMzNDIzLi4yOWU3YTE4
YzI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJD
b29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXJNZXNzYWdlcy5oIgpAQCAtMjM0LDYgKzIzNSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6Y29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChIVFRQQ29va2llQWNjZXB0
UG9saWN5CiAgICAgbV9jb29raWVBY2NlcHRQb2xpY3kgPSBuZXdQb2xpY3k7CiB9CiAKKyNpZiBF
TkFCTEUoQ09PS0lFX0NBQ0hFKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNvb2tp
ZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
JiBjb29raWVzKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tpZUphcigpLmNv
b2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5j
b29raWVKYXIoKS5jb29raWVzRGVsZXRlZCgpOworfQorI2VuZGlmIC8vIEVOQUJMRShDT09LSUVf
Q0FDSEUpCisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oCmluZGV4IDUxZmRmMzU0NTI0Li5mYjgxMWU0ODYyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNl
UmVzcG9uc2U7CitzdHJ1Y3QgQ29va2llOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsK
IHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSA6IHVpbnQ4X3Q7CkBAIC04Myw2ICs4NCwxMSBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGNvb2tpZXNFbmFibGVkKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQor
ICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDJhYTY4ODZlNTdhLi41NDgwZDU5
M2U1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzEs
NiArMzEsMTEgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIExlZ2FjeVJl
Y2VpdmVyIHsKICAgICBTZXRPbkxpbmVTdGF0ZShib29sIGlzT25MaW5lKTsKICAgICBDb29raWVB
Y2NlcHRQb2xpY3lDaGFuZ2VkKGVudW06dWludDhfdCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0
UG9saWN5IHBvbGljeSk7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIENvb2tpZXNB
ZGRlZChTdHJpbmcgaG9zdCwgVmVjdG9yPHN0cnVjdCBXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMp
OworICAgIENvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogICAgIENoZWNrUHJvY2Vzc0xvY2Fs
UG9ydEZvckFjdGl2aXR5KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9y
dCkgLT4gKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSBo
YXNBY3Rpdml0eSkgQXN5bmMKICAgICBNZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoc3RydWN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29j
b2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhNWNhODY3NzJj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29j
b2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorI2ltcG9ydCAi
V2ViQ29va2llQ2FjaGUuaCIKKworI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkNvb2tp
ZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBpZiAoIW1faW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbikgeworICAgICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5n
KCJXZWJLaXRJblByb2Nlc3NTdG9yYWdlLSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSk7CisgICAg
ICAgIGF1dG8gc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAg
ICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5
Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkp
OworICAgICAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCksIFdURk1v
dmUoc3RvcmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpLCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OklzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVzKTsKKyAgICB9CisgICAgcmV0dXJu
ICptX2luTWVtb3J5U3RvcmFnZVNlc3Npb247Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uMDE2ZTkyZTY5YWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKQEAgLTAsMCAr
MSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
Q09PS0lFX0NBQ0hFKQorI2luY2x1ZGUgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dlYkNvb2tpZUNhY2hl
OjpXZWJDb29raWVDYWNoZSgpCit7Cit9CisKK1dlYkNvb2tpZUNhY2hlOjp+V2ViQ29va2llQ2Fj
aGUoKQoreworfQorCisvLyBGSVhNRTogVGhpcyBjYW4gZXZlbnR1YWxseSBiZSByZW1vdmVkLCB0
aGlzIGlzIG1lcmVseSB0byBlbnN1cmUgYSBzbW9vdGggdHJhbnNpdGlvbiB0byB0aGUgbmV3IEFQ
SS4KK2Jvb2wgV2ViQ29va2llQ2FjaGU6OmlzRnVuY3Rpb25hbCgpCit7CisgICAgcmV0dXJuIGlu
TWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zdXBwb3J0c0Nvb2tpZUNoYW5nZUxpc3RlbmVyQVBJKCk7
Cit9CisKK1N0cmluZyBXZWJDb29raWVDYWNoZTo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCit7CisgICAgU3RyaW5nIGhvc3Qg
PSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7CisgICAgaWYgKCFtX2hvc3RzV2l0aEluTWVtb3J5U3Rv
cmFnZS5jb250YWlucyhob3N0KSkgeworICAgICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwor
ICAgICAgICBib29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyA9IHRydWU7
CisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29va2llc0Zvckhvc3QodXJsLmhvc3QoKS50b1N0cmlu
ZygpLCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRvbUNvb2tpZXNGb3JIb3N0OjpSZXBseShjb29r
aWVzKSwgMCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBXVEZMb2dBbHdheXMo
IkNIUklTOiBHb3QgJWx1IGNvb2tpZXMgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzIGZvciAnJXMn
IiwgY29va2llcy5zaXplKCksIHVybC5ob3N0KCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7CisgICAgICAgIG1faG9zdHNXaXRoSW5N
ZW1vcnlTdG9yYWdlLmFkZChob3N0KTsKKyAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29r
aWVzKQorICAgICAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29r
aWUpOworICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNIUklTOiBSZXR1cm5pbmcgY29va2llcyB0
byAnJXMnIGZyb20gY2FjaGUiLCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6Ok5vKS5maXJzdDsKK30KKwordm9pZCBXZWJDb29raWVDYWNo
ZTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQor
eworICAgIFN0cmluZyBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOworICAgIGlmIChtX2hv
c3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyhob3N0KSkKKyAgICAgICAgaW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7
Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhv
c3QsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzKQoreworICAgIGlmICghbV9ob3N0c1dp
dGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFdURkxvZ0Fsd2F5cygiQ0hSSVM6IFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRkZWQoJXMpICVs
dSBjb29raWVzIiwgaG9zdC51dGY4KCkuZGF0YSgpLCBjb29raWVzLnNpemUoKSk7CisKKyAgICBm
b3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Np
b24oKS5zZXRDb29raWUoY29va2llKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y29va2ll
c0RlbGV0ZWQoKQoreworICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IFdlYkNvb2tpZUNhY2hlOjpj
b29raWVzRGVsZXRlZCgpIik7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNo
ZTo6Y2xlYXIoKQoreworICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IFdlYkNvb2tpZUNhY2hlOjpj
bGVhcigpIik7CisgICAgYXV0byBob3N0c1RvVW5zdWJzY3JpYmUgPSBjb3B5VG9WZWN0b3IobV9o
b3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UpOworICAgIGlmICghaG9zdHNUb1Vuc3Vic2NyaWJlLmlz
RW1wdHkoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRp
b25zKGhvc3RzVG9VbnN1YnNjcmliZSksIDApOworICAgIG1faG9zdHNXaXRoSW5NZW1vcnlTdG9y
YWdlLmNsZWFyKCk7CisgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbnVsbHB0cjsKK30K
Kwordm9pZCBXZWJDb29raWVDYWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCkKK3sKKyAgICAv
LyBXZSBtYXkgd2FudCB0byByYWlzZSB0aGlzIGxpbWl0IGlmIHdlIHN0YXJ0IHVzaW5nIHRoZSBj
YWNoZSBmb3IgdGhpcmQtcGFydHkgaWZyYW1lcy4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bWF4Q2FjaGVkSG9zdHMgPSA1OworCisgICAgaWYgKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdl
LnNpemUoKSA8IG1heENhY2hlZEhvc3RzKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGl0
ID0gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UucmFuZG9tKCk7CisgICAgVmVjdG9yPFN0cmlu
Zz4gaG9zdHNUb1JlbW92ZSA9IHsgKml0IH07CisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3Jh
Z2UucmVtb3ZlKGl0KTsKKyAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lcyhob3N0c1RvUmVtb3ZlKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVuc3Vic2NyaWJlRnJvbUNvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnMoaG9zdHNUb1JlbW92ZSksIDApOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzJmY2VhMzE1ZmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5oCkBA
IC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShD
T09LSUVfQ0FDSEUpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBOZXR3b3JrU3RvcmFnZVNl
c3Npb247CitlbnVtIGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2w7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBXZWJGcmFtZTsKKworY2xhc3MgV2ViQ29va2llQ2FjaGUgeworcHVi
bGljOgorICAgIFdlYkNvb2tpZUNhY2hlKCk7CisgICAgfldlYkNvb2tpZUNhY2hlKCk7CisKKyAg
ICBib29sIGlzRnVuY3Rpb25hbCgpOworCisgICAgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKKworICAgIHZvaWQgY29va2llc0FkZGVkKGNv
bnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2
b2lkIGNvb2tpZXNEZWxldGVkKCk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKK3ByaXZhdGU6Cisg
ICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
KCk7CisgICAgdm9pZCBwcnVuZUNhY2hlSWZOZWNlc3NhcnkoKTsKKworICAgIEhhc2hTZXQ8U3Ry
aW5nPiBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb247Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FD
SEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmNwcAppbmRleCAzMjU4MzA1Yzc4OS4uZjEwMTg1NWUxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04OCw2ICs4OSwyNSBAQCBzdGF0aWMg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0
UGFydHlGb3JDb29raWVzLAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQor
Ym9vbCBXZWJDb29raWVKYXI6OmlzRWxpZ2libGVGb3JDYWNoZShXZWJGcmFtZSYgZnJhbWUsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNv
bnN0Cit7CisgICAgYXV0byogcGFnZSA9IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+Y29y
ZVBhZ2UoKSA6IG51bGxwdHI7CisgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5zZXR0aW5ncygpLmlu
UHJvY2Vzc0Nvb2tpZUNhY2hlRW5hYmxlZCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW4t
UHJvY2VzcyBjb29raWUgY2FjaGUgaXMgZGlzYWJsZWQgdmlhIHByZWZlcmVuY2VzIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIW1fY2FjaGUuaXNGdW5jdGlvbmFs
KCkpIHsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJJbi1Qcm9jZXNzIGNvb2tpZSBjYWNoZSBpcyBk
aXNhYmxlZCBiZWNhdXNlIHRoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBpdCB5ZXQiKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEZvciBub3csIHdlIG9ubHkgY2Fj
aGUgY29va2llcyBmb3IgZmlyc3QtcGFydHkgY29udGVudC4gVGhpcmQtcGFydHkgY29va2llIGNh
Y2hpbmcgaXMgYSBiaXQgbW9yZSBjb21wbGljYXRlZCBkdWUgdG8gcGFydGl0aW9uaW5nIGFuZCBz
dG9yYWdlIGFjY2Vzcy4KKyAgICByZXR1cm4gZnJhbWUuaXNNYWluRnJhbWUoKSB8fCBSZWdpc3Ry
YWJsZURvbWFpbiB7IGZpcnN0UGFydHlGb3JDb29raWVzIH0gPT0gUmVnaXN0cmFibGVEb21haW4g
eyByZXNvdXJjZVVSTCB9OworfQorI2VuZGlmCisKIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tp
ZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
ICAgICBhdXRvKiB3ZWJGcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkgPyBXZWJGcmFtZTo6ZnJvbUNv
cmVGcmFtZSgqZG9jdW1lbnQuZnJhbWUoKSkgOiBudWxscHRyOwpAQCAtMTAwLDEyICsxMjAsMTkg
QEAgU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4geyB9OwogI2VuZGlmCiAK
KyAgICBhdXRvIHNhbWVTaXRlSW5mbyA9IENvb2tpZUphcjo6c2FtZVNpdGVJbmZvKGRvY3VtZW50
KTsKKyAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVzID0gQ29va2llSmFyOjpzaG91bGRJbmNs
dWRlU2VjdXJlQ29va2llcyhkb2N1bWVudCwgdXJsKTsKICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJG
cmFtZS0+ZnJhbWVJRCgpOwogICAgIGF1dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRl
bnRpZmllcigpOwogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICBpZiAoaXNFbGlnaWJs
ZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJs
KSkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGUuY29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNs
dWRlU2VjdXJlQ29va2llcyk7CisjZW5kaWYKKwogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAg
ICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZv
KGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29r
aWVzKGRvY3VtZW50LCB1cmwpLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShj
b29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNr
SVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNj
ZXNzZWQpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBjb29raWVTdHJp
bmc7CkBAIC0xMjMsMTEgKzE1MCwzNCBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgICAg
ICByZXR1cm47CiAjZW5kaWYKIAorICAgIGF1dG8gc2FtZVNpdGVJbmZvID0gQ29va2llSmFyOjpz
YW1lU2l0ZUluZm8oZG9jdW1lbnQpOwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFt
ZUlEKCk7CiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7
CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRB
c2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKKyNpZiBFTkFCTEUoQ09P
S0lFX0NBQ0hFKQorICAgIGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndlYkZyYW1lLCBkb2N1bWVu
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAgICBtX2NhY2hlLnNldENvb2tp
ZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CisjZW5kaWYKKworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0
Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcywg
Y29va2llU3RyaW5nKSwgMCk7Cit9CisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQordm9pZCBX
ZWJDb29raWVKYXI6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQoreworICAgIG1fY2FjaGUuY29va2llc0FkZGVk
KGhvc3QsIGNvb2tpZXMpOworfQorCit2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0RlbGV0ZWQo
KQoreworICAgIG1fY2FjaGUuY29va2llc0RlbGV0ZWQoKTsKK30KKwordm9pZCBXZWJDb29raWVK
YXI6OmNsZWFyQ2FjaGUoKQoreworICAgIG1fY2FjaGUuY2xlYXIoKTsKIH0KKyNlbmRpZiAvLyBF
TkFCTEUoQ09PS0lFX0NBQ0hFKQogCiBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAppbmRleCA1Mjk0OGE5MWRlNS4uNjM0MzAx
NGUxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5oCkBAIC0yNSw4ICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIldl
YkNvb2tpZUNhY2hlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KIAorbmFtZXNw
YWNlIFdlYkNvcmUgeworc3RydWN0IENvb2tpZTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYkNvb2tpZUphciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDb29raWVKYXIgewpA
QCAtMzksOCArNDQsMjEgQEAgcHVibGljOgogICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6
OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdCBm
aW5hbDsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBj
b25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKSBmaW5hbDsKKworI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUp
CisgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgY29va2llc0RlbGV0ZWQoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgogICAgIFdlYkNvb2tpZUphcigpOworCisjaWYgRU5BQkxFKENPT0tJRV9DQUNI
RSkKKyAgICB2b2lkIGNsZWFyQ2FjaGUoKSBmaW5hbDsKKyAgICBib29sIGlzRWxpZ2libGVGb3JD
YWNoZShXZWJGcmFtZSYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVS
TCYgcmVzb3VyY2VVUkwpIGNvbnN0OworCisgICAgbXV0YWJsZSBXZWJDb29raWVDYWNoZSBtX2Nh
Y2hlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTA4YmNjMTAyZWIuLmJkYTFl
YWYxZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtNDY2LDcgKzQ2Niw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgbWFr
ZVVuaXF1ZVJlZjxXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyPigpLAogICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLAogICAgICAgICBXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6Y3JlYXRlKCp0aGlzKSwKLSAgICAgICAgV2ViQ29va2llSmFyOjpj
cmVhdGUoKSwKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCksCiAg
ICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50PigqdGhpcyksCiAg
ICAgICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpCiAgICAgKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0YjI0MDliOTk0ZC4uMjFi
NWEyYmMxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ4
LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTIwNSw2ICsyMDYsNyBAQCBXZWJQcm9jZXNz
OjpXZWJQcm9jZXNzKCkKICAgICAsIG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcihX
ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpjcmVhdGUoKSkKICAgICAsIG1fd2ViTG9h
ZGVyU3RyYXRlZ3koKm5ldyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAsIG1fY2FjaGVTdG9yYWdl
UHJvdmlkZXIoV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAgICwgbV9jb29r
aWVKYXIoV2ViQ29va2llSmFyOjpjcmVhdGUoKSkKICAgICAsIG1fZG5zUHJlZmV0Y2hIeXN0ZXJl
cmlzKFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gUEFM
OjpIeXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7
IH0pCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0
ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODUzYzY2MGVjNjQu
LjE1OTA5MzYwYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEy
MCw2ICsxMjAsNyBAQCBjbGFzcyBVc2VyRGF0YTsKIGNsYXNzIFdheWxhbmRDb21wb3NpdG9yRGlz
cGxheTsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk7CiBjbGFzcyBXZWJDYWNoZVN0
b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkNvbXBpbGVkQ29u
dGVudFJ1bGVMaXN0RGF0YTsKIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKIGNsYXNz
IFdlYkZyYW1lOwpAQCAtMjkzLDYgKzI5NCw3IEBAIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5KiBhdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkgeyByZXR1cm4gbV9hdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmdldCgpOyB9CiAKICAgICBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlciYg
Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKSB7IHJldHVybiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmdl
dCgpOyB9CisgICAgV2ViQ29va2llSmFyJiBjb29raWVKYXIoKSB7IHJldHVybiBtX2Nvb2tpZUph
ci5nZXQoKTsgfQogICAgIFdlYlNvY2tldENoYW5uZWxNYW5hZ2VyJiB3ZWJTb2NrZXRDaGFubmVs
TWFuYWdlcigpIHsgcmV0dXJuIG1fd2ViU29ja2V0Q2hhbm5lbE1hbmFnZXI7IH0KIAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCkBAIC01NTQsNiArNTU2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAgICAgUmVmPFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyPiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVy
OworICAgIFJlZjxXZWJDb29raWVKYXI+IG1fY29va2llSmFyOwogICAgIFdlYlNvY2tldENoYW5u
ZWxNYW5hZ2VyIG1fd2ViU29ja2V0Q2hhbm5lbE1hbmFnZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGliV2ViUlRDTmV0d29yaz4gbV9saWJXZWJSVENOZXR3b3JrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390549</attachid>
            <date>2020-02-12 13:02:08 -0800</date>
            <delta_ts>2020-02-12 14:30:50 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>WebCookieCache_wip.patch</filename>
            <type>text/plain</type>
            <size>67873</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCmluZGV4IGZlZGUyNGJlMzU0Li41OTliYTM4ODI5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC03OTcsNiArNzk3LDEwIEBACiAjZGVmaW5lIEVOQUJM
RV9USFJFQURJTkdfR0VORVJJQyAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9DT09L
SUVfQ0FDSEUpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKyNkZWZpbmUgRU5BQkxFX0NPT0tJRV9DQUNIRSAxCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9HQ19WQUxJREFUSU9OKSAmJiAhZGVmaW5lZChOREVCVUcp
CiAjZGVmaW5lIEVOQUJMRV9HQ19WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aAppbmRleCBkMjRiODVlMmRhMi4uY2JkOGU1NDBlYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBA
IC01NTYsNiArNTU2LDEwIEBACiAjZGVmaW5lIEhBVkVfREVWSUNFX0lERU5USVRZIDEKICNlbmRp
ZgogCisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ0ZORVRXT1JLX0NPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJIDEKKyNlbmRpZgorCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYg
X19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApIHx8IFBMQVRGT1JNKElP
U19GQU1JTFkpCiAjZGVmaW5lIEhBVkVfREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOIDEKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
LmggYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCA2
NjU4ZTcyOGM5Yy4uYTkyMDc2MGIzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdURl9FWFRFUk5fQ19FTkQK
IAogQGludGVyZmFjZSBOU0hUVFBDb29raWVTdG9yYWdlICgpCiArICh2b2lkKV9zZXRTaGFyZWRI
VFRQQ29va2llU3RvcmFnZTooTlNIVFRQQ29va2llU3RvcmFnZSAqKXN0b3JhZ2U7CistICh2b2lk
KV9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6KE5TU2V0PE5TU3RyaW5nKj4q
IF9fbnVsbGFibGUpZG9tYWluTGlzdDsKKy0gKHZvaWQpX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6
KHZvaWQoXl9fbnVsbGFibGUpKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGFkZGVkQ29va2llcywg
TlNVUkwqIF9fbnVsbGFibGUgdXJsRm9yQWRkZWRDb29raWVzKSljb29raWVzQWRkZWRIYW5kbGVy
IG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsKKy0gKHZvaWQpX3Nl
dENvb2tpZXNEZWxldGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBD
b29raWUqPiogX19udWxsYWJsZSBkZWxldGVkQ29va2llcywgYm9vbCBkZWxldGVkQWxsQ29va2ll
cykpY29va2llc0RlbGV0ZWRIYW5kbGVyIG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxs
YWJsZSlxdWV1ZTsKKy0gKE5TQXJyYXkqIF9fbnVsbGFibGUpX2dldENvb2tpZXNGb3JEb21haW46
KE5TU3RyaW5nKilkb21haW47CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggODU4ZTg4MzIyNDQuLmMzNTJkOTQ1OTUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcxOTUsMTEgKzcxOTUsMTUgQEAgdm9pZCBEb2N1bWVu
dDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKICAgICBtX2NhY2hlZERPTUNvb2tpZXMgPSBT
dHJpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eSgpCit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVS
TCYgdXJsKQogewogICAgIC8vIFN5bmNocm9ub3VzIHJlc291cmNlcyBsb2FkaW5nIGNhbiBzZXQg
Y29va2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVzIGNhY2hlCiAgICAgLy8gaW4gdGhp
cyBjYXNlLCB0byBiZSBzYWZlLgogICAgIGludmFsaWRhdGVET01Db29raWVDYWNoZSgpOworI2lm
IEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkp
CisgICAgICAgIHBhZ2UtPmNvb2tpZUphcigpLmNsZWFyQ2FjaGVGb3JIb3N0KHVybC5ob3N0KCku
dG9TdHJpbmcoKSk7CisjZW5kaWYKIH0KIAogdm9pZCBEb2N1bWVudDo6ZW5zdXJlUGx1Z0luc0lu
amVjdGVkU2NyaXB0KERPTVdyYXBwZXJXb3JsZCYgd29ybGQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDU2MjAyOTFhYmViLi4yZmM0ZGM2OWNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE2
NDAsNyArMTY0MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDYWNoZWRET01Db29raWVzKGNv
bnN0IFN0cmluZyYpOwogICAgIGJvb2wgaXNET01Db29raWVDYWNoZVZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb29raWVDYWNoZUV4cGlyeVRpbWVyLmlzQWN0aXZlKCk7IH0KICAgICB2b2lkIGlu
dmFsaWRhdGVET01Db29raWVDYWNoZSgpOwotICAgIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hy
b25vdXNseSgpIGZpbmFsOworICAgIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b25zdCBVUkwmKSBmaW5hbDsKIAogICAgIGJvb2wgY2FuTmF2aWdhdGVJbnRlcm5hbChGcmFtZSYg
dGFyZ2V0RnJhbWUpOwogICAgIGJvb2wgaXNOYXZpZ2F0aW9uQmxvY2tlZEJ5VGhpcmRQYXJ0eUlG
cmFtZVJlZGlyZWN0QmxvY2tpbmcoRnJhbWUmIHRhcmdldEZyYW1lLCBjb25zdCBVUkwmIGRlc3Rp
bmF0aW9uVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcAppbmRleCA1ODgyZTFhYjFhYi4uMzJhZjc0NDgxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lk
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0
JiBtZXNzYWdlUG9ydCkKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3NhZ2VQb3J0KTsK
IH0KIAotdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KCkKK3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBVUkwmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAwMDgzMWEyNjBiNS4uYmMwNGRmNDlkMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTUyLDcgKzE1
Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNyZWF0ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYp
OwogICAgIHZvaWQgZGVzdHJveWVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgVVJMJik7CiAKICAgICB2b2lk
IHJlZigpIHsgcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgdm9pZCBkZXJlZigp
IHsgZGVyZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVK
YXIuaAppbmRleCA4NGRiYTQwZTkyOC4uMDJkZGFhYWVhNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29v
a2llSmFyLmgKQEAgLTYwLDYgKzYwLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZ2V0
UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+Jikg
Y29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKKyNpZiBFTkFCTEUoQ09PS0lF
X0NBQ0hFKQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNhY2hlKCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGNsZWFyQ2FjaGVGb3JIb3N0KGNvbnN0IFN0cmluZyYpIHsgfQorI2VuZGlmCisKICAgICB2
aXJ0dWFsIH5Db29raWVKYXIoKTsKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgU2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbyhjb25zdCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDJiN2JmNDI5ZGQ2Li5jN2UwZjMxYmU3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTEwLDExICsxMTAs
MTIgQEAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXgKIAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVu
dCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgYXV0byBy
ZXNvdXJjZVVSTCA9IHJlcXVlc3QudXJsKCk7CiAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KSkKICAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1v
dmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9j
dW1lbnQ+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwotICAg
IGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSgpOworICAgIGNvbnRleHQuZGlk
TG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXNvdXJjZVVSTCk7CiB9CiAKIHZvaWQgVGhyZWFk
YWJsZUxvYWRlcjo6bG9nRXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggMzE2ZDIxNjk3YmQuLjkxNDdhYTE0M2Uy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRl
ICJDb21tb25WTS5oIgorI2luY2x1ZGUgIkNvb2tpZUphci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTk5LDYg
KzEwMCwxMiBAQCBzdGF0aWMgdm9pZCByZWxlYXNlQ3JpdGljYWxNZW1vcnkoU3luY2hyb25vdXMg
c3luY2hyb25vdXMsIE1haW50YWluQmFja0ZvcndhcmRDYQogCiAgICAgQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5kcmFpbigpOwogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICBQYWdl
Ojpmb3JFYWNoUGFnZShbXShhdXRvJiBwYWdlKSB7CisgICAgICAgIHBhZ2UuY29va2llSmFyKCku
Y2xlYXJDYWNoZSgpOworICAgIH0pOworI2VuZGlmCisKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50
IDogY29weVRvVmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50
cygpKSkgewogICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlbGVhc2VNZW1vcnkoKTsK
ICAgICAgICAgZG9jdW1lbnQtPmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLnlhbWwKaW5kZXggNWQzYTg4YzQ4ZjcuLmEyNzFlMWM5MzMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCkBAIC0zNjMsNiArMzYzLDkgQEAgcmVxdWVzdElkbGVDYWxs
YmFja0VuYWJsZWQ6CiBIVFRQU1VwZ3JhZGVFbmFibGVkOgogICBpbml0aWFsOiBmYWxzZQogCitp
blByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQ6CisgIGluaXRpYWw6IGZhbHNlCisKIHRoaXJkUGFy
dHlJZnJhbWVSZWRpcmVjdEJsb2NraW5nRW5hYmxlZDoKICAgaW5pdGlhbDogdHJ1ZQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAppbmRleCA2NTA2ZjEwNzcwNi4uNWIyYTU2MGIyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApA
QCAtNjAsNiArNjAsOSBAQCB0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBTb3VwQ29va2ll
SmFyOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZU9ic2Vy
dmVyLmgiCitPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5TSFRUUENvb2tpZTsKK09C
SkNfQ0xBU1MgTlNNdXRhYmxlU2V0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTc5LDYgKzgyLDE1IEBAIGVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6
IHVpbnQ4X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckluCiBlbnVtIGNsYXNzIEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIDogdWludDhfdCB7IEFsbEJ1dENvb2tpZXMsIE5v
bmUsIEFsbEJ1dENvb2tpZXNMaXZlT25UZXN0aW5nVGltZW91dCwgQWxsQnV0Q29va2llc1JlcHJv
VGVzdGluZ1RpbWVvdXQgfTsKIGVudW0gY2xhc3MgU2hvdWxkQXNrSVRQIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQor
Y2xhc3MgQ29va2llQ2hhbmdlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvb2tp
ZUNoYW5nZU9ic2VydmVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNBZGRlZChjb25z
dCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjb29raWVzRGVsZXRlZCgpID0gMDsKK307CisjZW5kaWYKKwogY2xhc3Mg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3Jr
U3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTkz
LDggKzEwNSwxMCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBV
U0UoQ0ZVUkxDT05ORUNUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUIH5OZXR3b3JrU3RvcmFnZVNl
c3Npb24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPENGVVJMU3RvcmFn
ZVNlc3Npb25SZWY+IGNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKENGU3RyaW5n
UmVmIGlkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmKTsKKyAgICBlbnVtIGNsYXNzIElzSW5N
ZW1vcnlDb29raWVTdG9yZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZj4mJiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYsIElz
SW5NZW1vcnlDb29raWVTdG9yZSA9IElzSW5NZW1vcnlDb29raWVTdG9yZTo6Tm8pOwogICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25J
RCk7CiAKICAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVm
YXVsdCBzaG91bGQgYmUgdXNlZC4KQEAgLTE0Niw2ICsxNjAsMTMgQEAgcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdDsKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCisj
aWYgSEFWRShDRk5FVFdPUktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBo
b3N0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hh
bmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZlciYsIGNvbnN0IFN0cmluZyYgaG9z
dCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdl
Tm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZlciYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBob3N0cyk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzdXBwb3J0c0Nvb2tpZUNoYW5nZUxp
c3RlbmVyQVBJKCkgY29uc3Q7CisjZW5kaWYKKwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29s
IGVuYWJsZWQpIHsgbV9pc1Jlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkID0gZW5hYmxlZDsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPikgY29uc3Q7CkBAIC0xNzMsMTEgKzE5NCwyNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBlbnVtIEluY2x1ZGVIVFRQT25seU9y
Tm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVIVFRQT25seSB9OworICAgIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlm
aWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlSFRUUE9ubHlPck5vdCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCA9IFNob3VsZEFza0lUUDo6WWVzKSBjb25z
dDsKKyAgICBOU0FycmF5ICpodHRwQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tp
ZVN0b3JhZ2UpIGNvbnN0OworICAgIE5TQXJyYXkgKmh0dHBDb29raWVzRm9yVVJMKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0
ZUluZm8+JiwgTlNVUkwgKikgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNr
SVRQKSBjb25zdDsKKyAgICB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0
b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJMICosIE5TVVJMICptYWluRG9jdW1lbnRV
UkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNvbnN0OworICAgIHZvaWQgZGVsZXRlSFRUUENvb2tp
ZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TSFRUUENvb2tpZSAqKSBj
b25zdDsKKyNlbmRpZgorI2lmIEhBVkUoQ0ZORVRXT1JLX0NPT0tJRV9DSEFOR0VfTElTVEVORVJf
QVBJKQorICAgIHZvaWQgcmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgp
OworICAgIHZvaWQgdW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7
CisjZW5kaWYKKwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMU3Rv
cmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBtX3BsYXRmb3JtQ29va2llU3RvcmFnZTsKKyAgICBib29sIG1faXNJ
bk1lbW9yeUNvb2tpZVN0b3JlIHsgZmFsc2UgfTsKICNlbGlmIFVTRShTT1VQKQogICAgIHN0YXRp
YyB2b2lkIGNvb2tpZXNEaWRDaGFuZ2UoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKik7CiAKQEAgLTE5
MCw2ICsyMjYsMTIgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1f
Y29udGV4dDsKICNlbmRpZgogCisjaWYgSEFWRShDRk5FVFdPUktfQ09PS0lFX0NIQU5HRV9MSVNU
RU5FUl9BUEkpCisgICAgYm9vbCBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzIHsgZmFsc2Ug
fTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiBtX3N1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlczsKKyAgICBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxDb29raWVDaGFuZ2VPYnNl
cnZlcio+PiBtX2Nvb2tpZUNoYW5nZU9ic2VydmVyczsKKyNlbmRpZgorCiAgICAgQ3JlZGVudGlh
bFN0b3JhZ2UgbV9jcmVkZW50aWFsU3RvcmFnZTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGIwMWE3
ZTY2YmYwLi5lMGQ4NGY3YzUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAK
QEAgLTczLDExICs3MywxMiBAQCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRgogICAgIHJldHVybiBz
dG9yYWdlU2Vzc2lvbjsKIH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZj4mJiBwbGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiYmIHBsYXRmb3JtQ29va2llU3RvcmFnZSkKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0YWluUHRy
PENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYgcGxhdGZvcm1TZXNzaW9uLCBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4mJiBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UsIElzSW5NZW1vcnlD
b29raWVTdG9yZSBpc0luTWVtb3J5Q29va2llU3RvcmUpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNz
aW9uSUQpCiAgICAgLCBtX3BsYXRmb3JtU2Vzc2lvbihXVEZNb3ZlKHBsYXRmb3JtU2Vzc2lvbikp
CisgICAgLCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZShpc0luTWVtb3J5Q29va2llU3RvcmUgPT0g
SXNJbk1lbW9yeUNvb2tpZVN0b3JlOjpZZXMpCiB7Ci0gICAgQVNTRVJUKHByb2Nlc3NNYXlVc2VD
b29raWVBUEkoKSB8fCAhcGxhdGZvcm1Db29raWVTdG9yYWdlKTsKKyAgICBBU1NFUlQocHJvY2Vz
c01heVVzZUNvb2tpZUFQSSgpIHx8ICFwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgfHwgbV9pc0luTWVt
b3J5Q29va2llU3RvcmUpOwogICAgIG1fcGxhdGZvcm1Db29raWVTdG9yYWdlID0gcGxhdGZvcm1D
b29raWVTdG9yYWdlID8gV1RGTW92ZShwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpIDogY29va2llU3Rv
cmFnZSgpOwogfQogCkBAIC04OCwxMCArODksMTAgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVT
dG9yYWdlKCkgY29uc3QKIHsKLSAgICBpZiAoIXByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkKKyAg
ICBpZiAoIXByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSAmJiAhbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIGlmIChtX3BsYXRmb3JtQ29v
a2llU3RvcmFnZSkKICAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1Db29raWVTdG9yYWdlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29j
b2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KaW5kZXggOWU5YTkxYjcyNTAuLjE2ZDcw
ZWQ4YTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTQ0LDkg
KzQ0LDE2IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitOZXR3b3JrU3RvcmFnZVNl
c3Npb246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKQoreworI2lmIEhBVkUoQ0ZORVRXT1JLX0NP
T0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHVucmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0
ZW5lcnNJZk5lY2Vzc2FyeSgpOworI2VuZGlmCit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwor
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihO
U0hUVFBDb29raWUgKiljb29raWVdOwpAQCAtNTUsNyArNjIsNyBAQCB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nv
b2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZv
ciAoY29uc3QgYXV0byYgY29va2llIDogY29va2llcykKQEAgLTY4LDE0ICs3NSwxMiBAQCB2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYg
Y29va2llcywgY29uc3QgVVJMJgogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRl
Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgW25zQ29va2llU3RvcmFnZSgp
IGRlbGV0ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llXTsKIH0KIAogc3RhdGljIFZlY3Rv
cjxDb29raWU+IG5zQ29va2llc1RvQ29va2llVmVjdG9yKE5TQXJyYXk8TlNIVFRQQ29va2llICo+
ICpuc0Nvb2tpZXMpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotCiAgICAgVmVjdG9yPENvb2tpZT4gY29v
a2llczsKICAgICBjb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNDb29raWVzLmNvdW50
KTsKICAgICBmb3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUgaW4gbnNDb29raWVzKQpAQCAtMTE4
LDcgKzEyMyw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpmbHVzaENvb2tpZVN0b3Jl
KCkKIAogTlNIVFRQQ29va2llU3RvcmFnZSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpuc0Nvb2tp
ZVN0b3JhZ2UoKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lz
SW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgYXV0byBjZkNvb2tpZVN0b3JhZ2UgPSBjb29raWVT
dG9yYWdlKCk7CiAgICAgaWYgKCFjZkNvb2tpZVN0b3JhZ2UgfHwgW05TSFRUUENvb2tpZVN0b3Jh
Z2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdLl9jb29raWVTdG9yYWdlID09IGNmQ29va2llU3Rv
cmFnZSkKICAgICAgICAgcmV0dXJuIFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29r
aWVTdG9yYWdlXTsKQEAgLTE1OCwxMSArMTYzLDYgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBj
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllcikKICAgICBD
RlVSTENhY2hlU2V0RGlza0NhcGFjaXR5KGNhY2hlLmdldCgpLCAwKTsgLy8gU2V0dGluZyBkaXNr
IGNhY2hlIHNpemUgc2hvdWxkIG5vdCBiZSBuZWNlc3Nhcnkgb25jZSA8cmRhcjovL3Byb2JsZW0v
MTI2NTY4MTQ+IGlzIGZpeGVkLgogICAgIENGVVJMQ2FjaGVTZXRNZW1vcnlDYXBhY2l0eShjYWNo
ZS5nZXQoKSwgW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBtZW1vcnlDYXBhY2l0eV0pOwog
Ci0gICAgaWYgKCFOZXR3b3JrU3RvcmFnZVNlc3Npb246OnByb2Nlc3NNYXlVc2VDb29raWVBUEko
KSkKLSAgICAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uLmxlYWtSZWYoKTsKLQotICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpKTsKLQogICAgIGF1dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNl
c3Npb25Db3B5Q29va2llU3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lv
bi5nZXQoKSkpOwogICAgIGlmICghY29va2llU3RvcmFnZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0xNzMsMjAgKzE3MywyMyBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVBy
aXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKQogICAgIHJldHVybiBz
dG9yYWdlU2Vzc2lvbi5sZWFrUmVmKCk7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpodHRwQ29va2ll
cyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCitOU0FycmF5ICpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2ll
U3RvcmFnZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0gICAgaWYgKCFjb29raWVTdG9yYWdl
KQorICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFj
Y2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKKyAgICBpZiAoIWNv
b2tpZVN0b3JhZ2UpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJbk1lbW9yeUNvb2tp
ZVN0b3JlKTsKICAgICAgICAgcmV0dXJuIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQ
Q29va2llU3RvcmFnZV0gY29va2llc107CisgICAgfQogICAgIAogICAgIGF1dG8gY29va2llcyA9
IGFkb3B0Q0YoQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKGNvb2tpZVN0b3JhZ2UpKTsK
ICAgICByZXR1cm4gW05TSFRUUENvb2tpZSBfY2YybnNDb29raWVzOmNvb2tpZXMuZ2V0KCldOwog
fQogCi1zdGF0aWMgdm9pZCBkZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYg
Y29va2llU3RvcmFnZSwgTlNIVFRQQ29va2llICpjb29raWUpCit2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0
b3JhZ2UsIE5TSFRUUENvb2tpZSAqY29va2llKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9j
ZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAg
ICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NS
YXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgaWYgKCFjb29raWVT
dG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9y
ZSk7CiAgICAgICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFn
ZV0gZGVsZXRlQ29va2llOmNvb2tpZV07CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMjYs
OSArMjI5LDkgQEAgc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoTlNIVFRQQ29va2llU3Rv
cmFnZSAqc3RvcmFnZSwgTlNVUkwgKnVybCwgTlNVUkwgKm0KICAgICByZXR1cm4gY29va2llc1B0
ci0+YXV0b3JlbGVhc2UoKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBO
U1VSTCAqdXJsLCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbykKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRIVFRQQ29va2llc0Zv
clVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TQXJyYXkgKmNvb2tp
ZXMsIE5TVVJMICp1cmwsIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8
fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CiAj
aWYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAx
MDE0MDApICYmICFQTEFURk9STShXQVRDSE9TKSAmJiAhUExBVEZPUk0oQVBQTEVUVikKICAgICAg
ICAgaWYgKFtOU0hUVFBDb29raWVTdG9yYWdlIGluc3RhbmNlc1Jlc3BvbmRUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfc2V0Q29va2llczpmb3JVUkw6bWFpbkRvY3VtZW50VVJMOnBvbGljeVByb3BlcnRp
ZXM6KV0pCkBAIC0yNTUsMjEgKzI1OCwyMiBAQCBzdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0Zv
clVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TQXJyYXkgKgogI2Vu
ZGlmCiB9CiAKLXN0YXRpYyBOU0FycmF5ICpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVT
dG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25h
bDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpCitOU0FycmF5ICpOZXR3
b3JrU3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYgY29va2llU3RvcmFnZSwgTlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IE9wdGlvbmFsPFNhbWVT
aXRlSW5mbz4mIHNhbWVTaXRlSW5mbywgTlNVUkwgKnVybCkgY29uc3QKIHsKLSAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSk7Ci0gICAgaWYgKCFjb29raWVTdG9yYWdlKQorICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmls
ZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9y
eUNvb2tpZVN0b3JlKTsKKyAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICAgICAgY29va2llU3RvcmFn
ZSA9IF9DRkhUVFBDb29raWVTdG9yYWdlR2V0RGVmYXVsdChrQ0ZBbGxvY2F0b3JEZWZhdWx0KTsK
KyAgICB9CiAKICAgICAvLyBGSVhNRTogU3RvcCBjcmVhdGluZyBhIG5ldyBOU0hUVFBDb29raWVT
dG9yYWdlIG9iamVjdCBlYWNoIHRpbWUgd2Ugd2FudCB0byBxdWVyeSB0aGUgY29va2llIGphci4K
ICAgICAvLyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gY291bGQgaW5zdGVhZCBrZWVwIGEgTlNIVFRQ
Q29va2llU3RvcmFnZSBvYmplY3QgZm9yIHVzLgogICAgIFJldGFpblB0cjxOU0hUVFBDb29raWVT
dG9yYWdlPiBuc0Nvb2tpZVN0b3JhZ2UgPSBhZG9wdE5TKFtbTlNIVFRQQ29va2llU3RvcmFnZSBh
bGxvY10gX2luaXRXaXRoQ0ZIVFRQQ29va2llU3RvcmFnZTpjb29raWVTdG9yYWdlXSk7Ci0gICAg
cmV0dXJuIGNvb2tpZXNGb3JVUkwobnNDb29raWVTdG9yYWdlLmdldCgpLCB1cmwsIGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JVUkwobnND
b29raWVTdG9yYWdlLmdldCgpLCB1cmwsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbyk7CiB9CiAK
IHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2llcyhOU0FycmF5ICp1bmZpbHRl
cmVkQ29va2llcywgT3B0aW9uYWw8U2Vjb25kcz4gY2FwcGVkTGlmZXRpbWUpCiB7Ci0gICAgQVNT
RVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29v
a2llcykpOwogICAgIE5TVUludGVnZXIgY291bnQgPSBbdW5maWx0ZXJlZENvb2tpZXMgY291bnRd
OwogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gZmlsdGVyZWRDb29raWVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvdW50XSk7CiAKQEAg
LTMwMiwyNyArMzA2LDI2IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2ll
cyhOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcywgT3B0aW9uYWw8U2VjCiAgICAgcmV0dXJuIGZp
bHRlcmVkQ29va2llczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lU
UCBzaG91bGRBc2tJVFApIGNvbnN0CiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNlc3Np
b24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkK
KyAgICBpZiAoc2hvdWxkQXNrSVRQID09IFNob3VsZEFza0lUUDo6WWVzICYmIHNob3VsZEJsb2Nr
Q29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFS
QU0ocGFnZUlEKTsKICAgICBVTlVTRURfUEFSQU0oc2hvdWxkQXNrSVRQKTsKICNlbmRpZgotICAg
IHJldHVybiBodHRwQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwg
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwpOworICAgIHJldHVybiBodHRwQ29va2llc0Zv
clVSTChjb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
KTsKIH0KIAotZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhUVFBPbmx5
LCBJbmNsdWRlSFRUUE9ubHkgfTsKLXN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25s
eSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UCBzaG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykKK3N0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3Vs
ZEFza0lUUCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0lu
TWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
Ci0gICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKKyAg
ICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOwogICAgIGlmICghW2Nvb2tp
ZXMgY291bnRdKQogICAgICAgICByZXR1cm4geyBTdHJpbmcoKSwgZmFsc2UgfTsgLy8gUmV0dXJu
IGEgbnVsbCBzdHJpbmcsIG5vdCBhbiBlbXB0eSBvbmUgdGhhdCBTdHJpbmdCdWlsZGVyIHdvdWxk
IGNyZWF0ZSBiZWxvdy4KIApAQCAtMzc0LDIyICszNzcsMjIgQEAgc3RhdGljIHZvaWQgZGVsZXRl
QWxsSFRUUENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogCiBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JE
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVk
ZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKIH0KIAogc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JT
ZXNzaW9uKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIElu
Y2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAK
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkm
IGhlYWRlckZpZWxkUHJveHkpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2Ft
ZVNpdGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlE
LCBoZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFBy
b3h5LmluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24o
aGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5m
bywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVy
RmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNs
dWRlU2VjdXJlQ29va2llcyk7CiB9CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hv
dWxkQXNrSVRQLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKIHsKLSAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2Fu
QWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVH
SU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC00NTcsNyArNDYwLDcgQEAgYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUkKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwogCi0gICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwo
KnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNo
b3VsZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsK
ICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXMgY291bnRdOwogICAgIHJhd0Nvb2tpZXMu
cmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7CkBAIC01MTgsNyArNTIxLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3QK
IAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RuYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyBp
bmNsdWRlSHR0cE9ubHlDb29raWVzKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8
fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKQEAgLTU2Niw0ICs1NjksMTAxIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxsVGltZSB0aW1lUG9pbnQpCiAgICAg
W3N0b3JhZ2UgX3NhdmVDb29raWVzXTsKIH0KIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NPT0tJRV9D
SEFOR0VfTElTVEVORVJfQVBJKQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVnaXN0
ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1fZGlkUmVn
aXN0ZXJDb29raWVMaXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlkUmVnaXN0
ZXJDb29raWVMaXN0ZW5lcnMgPSB0cnVlOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29v
a2llc0FkZGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICogbnNDb29raWVzLCBO
U1VSTCAqdXJsRm9yQWRkZWRDb29raWVzKSB7CisgICAgICAgIFZlY3RvcjxDb29raWU+IGNvb2tp
ZXMgPSBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihuc0Nvb2tpZXMpOworICAgICAgICBhdXRvIGhv
c3QgPSBVUkwodXJsRm9yQWRkZWRDb29raWVzKS5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICAgICAg
QVNTRVJUKCFob3N0LmlzTnVsbCgpKTsKKyAgICAgICAgYXV0byBpdCA9IG1fY29va2llQ2hhbmdl
T2JzZXJ2ZXJzLmZpbmQoaG9zdCk7CisgICAgICAgIGlmIChpdCA9PSBtX2Nvb2tpZUNoYW5nZU9i
c2VydmVycy5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9yIChhdXRvKiBv
YnNlcnZlciA6IGl0LT52YWx1ZSkKKyAgICAgICAgICAgIG9ic2VydmVyLT5jb29raWVzQWRkZWQo
aG9zdCwgY29va2llcyk7CisgICAgfSBvblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCld
OworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVyOl4oTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKiwgYm9vbCAvKmRlbGV0ZWRBbGxDb29raWVzKi8pIHsKKyAg
ICAgICAgZm9yIChhdXRvJiBvYnNlcnZlcnMgOiBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy52YWx1
ZXMoKSkgeworICAgICAgICAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG9ic2VydmVycykKKyAg
ICAgICAgICAgICAgICBvYnNlcnZlci0+Y29va2llc0RlbGV0ZWQoKTsKKyAgICAgICAgfQorICAg
IH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnVucmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2Fy
eSgpCit7CisgICAgaWYgKCFtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6
bmlsIG9uUXVldWU6bmlsXTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNEZWxl
dGVkSGFuZGxlcjpuaWwgb25RdWV1ZTpuaWxdOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0
U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOm5pbF07CisgICAgbV9kaWRSZWdpc3Rl
ckNvb2tpZUxpc3RlbmVycyA9IGZhbHNlOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5n
ZU9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIHJlZ2lzdGVy
Q29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKworICAgIGF1dG8mIG9ic2VydmVy
cyA9IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuc3VyZShob3N0LCBbXSB7CisgICAgICAgIHJl
dHVybiBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4geyB9OworICAgIH0pLml0ZXJhdG9y
LT52YWx1ZTsKKyAgICBpZiAoIW9ic2VydmVycy5hZGQoJm9ic2VydmVyKS5pc05ld0VudHJ5KQor
ICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hh
bmdlcykKKyAgICAgICAgbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgaWYgKFttX3N1YnNjcmliZWRE
b21haW5zRm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0XSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFu
Z2VzIGFkZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkg
X3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VP
YnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cykKK3sKKyAgICBi
b29sIHN1YnNjcmliZWRVUkxzQ2hhbmdlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaG9zdCA6
IGhvc3RzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5k
KGhvc3QpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBvYnNlcnZlcnMgPSBpdC0+
dmFsdWU7CisgICAgICAgIG9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKKyAgICAgICAgaWYg
KG9ic2VydmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY29va2llQ2hhbmdlT2JzZXJ2
ZXJzLnJlbW92ZShpdCk7CisgICAgICAgICAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tp
ZUNoYW5nZXMgcmVtb3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgICAgICAgICAgc3Vi
c2NyaWJlZFVSTHNDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3Vi
c2NyaWJlZFVSTHNDaGFuZ2VkKQorICAgICAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNj
cmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29va2ll
Q2hhbmdlcy5nZXQoKV07Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5TQXJyYXkg
Km5zQ29va2llcyA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNT
dHJpbmcgKilob3N0XTsKKyAgICBWZWN0b3I8Q29va2llPiBkb21Db29raWVzOworICAgIGRvbUNv
b2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0Nvb2tpZXMuY291bnQpOworICAgIGZvciAo
TlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpIHsKKyAgICAgICAgaWYgKCFuc0Nv
b2tpZS5IVFRQT25seSkKKyAgICAgICAgICAgIGRvbUNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5z
Q29va2llKTsKKyAgICB9CisgICAgZG9tQ29va2llcy5zaHJpbmtUb0ZpdCgpOworICAgIHJldHVy
biBkb21Db29raWVzOworfQorCisvLyBGSVhNRTogVGhpcyBjYW4gZXZlbnR1YWxseSBnb2VzIGF3
YXksIHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290aCB0cmFuc2l0aW9uIHRvIHRoZSBu
ZXcgQVBJLgorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1cHBvcnRzQ29va2llQ2hhbmdl
TGlzdGVuZXJBUEkoKSBjb25zdAoreworICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBvcnRzQVBJ
ID0gW25zQ29va2llU3RvcmFnZSgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFN1
YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczopXTsKKyAgICByZXR1cm4gc3VwcG9ydHNB
UEk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAppbmRleCBlODE3MzQ0ZjE5ZC4uNDU5OWNhMjMyMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCkBAIC0xMjQsNiArMTI0LDEzIEBAIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIGZvciAoYXV0byYgcG9ydCA6
IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzKQogICAgICAgICBuZXR3b3JrUHJvY2VzcygpLm1lc3Nh
Z2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0KTsKIAorI2lm
IEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgaWYgKCFtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVy
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMgPSBj
b3B5VG9WZWN0b3IobV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMpOworICAgICAgICB1bnN1YnNj
cmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGhvc3RzV2l0aENvb2tpZUxpc3RlbmVy
cyk7CisgICAgfQorI2VuZGlmCisKICNpZiBVU0UoTElCV0VCUlRDKQogICAgIGlmIChtX3J0Y1By
b3ZpZGVyKQogICAgICAgICBtX3J0Y1Byb3ZpZGVyLT5jbG9zZSgpOwpAQCAtNjMzLDYgKzY0MCw0
NSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgYwogICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
ZGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NB
Q0hFKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZG9tQ29va2llc0Zvckhv
c3QoY29uc3QgU3RyaW5nJiBob3N0LCBib29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZp
Y2F0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCk7CisgICAgaWYgKCFuZXR3b3JrU3RvcmFnZVNlc3Np
b24pCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworCisgICAgaWYgKHN1
YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucykgeworICAgICAgICBBU1NFUlQoIW1f
aG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLmNvbnRhaW5zKGhvc3QpKTsKKyAgICAgICAgbV9ob3N0
c1dpdGhDb29raWVMaXN0ZW5lcnMuYWRkKGhvc3QpOworICAgICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24tPnN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygqdGhpcywg
aG9zdCk7CisgICAgfQorCisgICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5kb21Db29raWVzRm9ySG9zdChob3N0KSk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RzKQoreworICAgIFdURkxvZ0Fsd2F5cygiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlm
aWNhdGlvbnMoKSAlbGQgaG9zdHMiLCBob3N0cy5zaXplKCkpOworICAgIGZvciAoYXV0byYgaG9z
dCA6IGhvc3RzKSB7CisgICAgICAgIEFTU0VSVChtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVycy5j
b250YWlucyhob3N0KSk7CisgICAgICAgIG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLnJlbW92
ZShob3N0KTsKKyAgICB9CisKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
c3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zdG9wTGlz
dGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygqdGhpcywgaG9zdHMpOworfQorCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzQWRkZWQoY29uc3QgU3Ry
aW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykKK3sKKyAg
ICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpD
b29raWVzQWRkZWQoaG9zdCwgY29va2llcyksIDApOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Q29va2llc0RlbGV0ZWQoKSwg
MCk7Cit9CisjZW5kaWYKKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVn
aXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCiB7CiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODZjYzYwZDFhOTkuLjQzZjE0NzA0ZmMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBv
cnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9u
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KQEAgLTg3
LDYgKzg4LDkgQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MKICAgICA6IHB1
YmxpYyBSZWZDb3VudGVkPE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzPgogI2lmIEVOQUJM
RShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgICwgcHVibGljIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpDbGllbnQKKyNlbmRpZgorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgLCBw
dWJsaWMgV2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXIKICNlbmRpZgogICAgICwgSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQgewogcHVibGljOgpAQCAtMjY2LDYgKzI3MCwxNSBAQCBwcml2YXRl
OgogCiAgICAgdWludDY0X3QgbmV4dE1lc3NhZ2VCYXRjaElkZW50aWZpZXIoRnVuY3Rpb248dm9p
ZCgpPiYmKTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdm9pZCB1bnN1YnNjcmli
ZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0
cyk7CisgICAgdm9pZCBkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wg
c3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYpOworCisgICAgLy8gV2ViQ29y
ZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXIuCisgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3Ry
aW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGZpbmFsOworICAgIHZv
aWQgY29va2llc0RlbGV0ZWQoKSBmaW5hbDsKKyNlbmRpZgorCiAgICAgc3RydWN0IFJlc291cmNl
TmV0d29ya0FjdGl2aXR5VHJhY2tlciB7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyKGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKQEAg
LTMyOSw2ICszNDIsOSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgIE5ldHdv
cmtNRE5TUmVnaXN0ZXIgbV9tZG5zUmVnaXN0ZXI7CiAjZW5kaWYKKyNpZiBFTkFCTEUoQ09PS0lF
X0NBQ0hFKQorICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVyczsK
KyNlbmRpZgogCiAgICAgYm9vbCBtX2NhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0VuYWJs
ZWQgeyBmYWxzZSB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCA0M2I1ZjY3NGU1NS4uNGY0ZmMyNWYyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzQsNiArMzQsMTEgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93
bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291
cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAorI2lmIEVOQUJMRShD
T09LSUVfQ0FDSEUpCisgICAgVW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9u
cyhWZWN0b3I8U3RyaW5nPiBob3N0cykKKyAgICBEb21Db29raWVzRm9ySG9zdChTdHJpbmcgaG9z
dCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cworI2VuZGlmCisKICAgICBDb29r
aWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNh
bWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hv
dWxkQXNrSVRQIHNob3VsZEFza0lUUCkgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlk
QWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKICAgICBTZXRDb29raWVzRnJvbURPTShV
UkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8s
IFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQLCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVT
aXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wg
V2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06
Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggODJkYjAxMmRlNjAuLmNhNTA1
ZWU1ZWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTYy
MSw2ICs2MjEsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktp
dDo6V2ViV2hlZWxFdmVudCc6IFsnIldlYkV2ZW50LmgiJ10sCiAgICAgICAgICdXZWJDb3JlOjpN
ZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJzogWyc8V2ViQ29yZS9NZWRpYVBsYXllci5oPidd
LAogICAgICAgICAnV2ViQ29yZTo6SVNPV2ViVlRUQ3VlJzogWyc8V2ViQ29yZS9JU09WVFRDdWUu
aD4nXSwKKyAgICAgICAgJ3N0cnVjdCBXZWJDb3JlOjpDb29raWUnOiBbJzxXZWJDb3JlL0Nvb2tp
ZS5oPiddLAogICAgICAgICAnc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JzogWyc8V2Vi
Q29yZS9FbGVtZW50Q29udGV4dC5oPiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2ViVXNl
clNjcmlwdERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwK
ICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTdHlsZVNoZWV0RGF0YSc6IFsnIldlYlVz
ZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlByZWZlcmVuY2VzLnlhbWwKaW5kZXggYjY0YTFmN2Q1MmYuLjg0ZGY0OTRhMTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTU1LDYgKzU1LDE0IEBAIEhU
VFBTVXBncmFkZUVuYWJsZWQ6CiAgICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJBdXRvbWF0
aWMgSFRUUFMgdXBncmFkZSBmb3Iga25vd24gc3VwcG9ydGVkIHNpdGVzIgogICAgY2F0ZWdvcnk6
IGV4cGVyaW1lbnRhbAogCitJblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQ6CisgICB0eXBlOiBi
b29sCisgICBkZWZhdWx0VmFsdWU6IHRydWUKKyAgIGNvbmRpdGlvbjogRU5BQkxFKENPT0tJRV9D
QUNIRSkKKyAgIGh1bWFuUmVhZGFibGVOYW1lOiAiSW4tUHJvY2VzcyBDb29raWUgQ2FjaGUiCisg
ICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJJbi1Qcm9jZXNzIERPTSBDb29raWUgQ2FjaGUi
CisgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisKIFRoaXJkUGFydHlJZnJhbWVSZWRpcmVjdEJs
b2NraW5nRW5hYmxlZDoKICAgIHR5cGU6IGJvb2wKICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKaW5kZXggNzQ4OTRiZDI3YmEuLmE1ZDBiZTE0MjcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTYy
NCw2ICs2MjQsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZUJhbm5lci5jcHAKIFdlYlByb2Nl
c3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b250ZXh0TWVudS5jcHAKK1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RG9jdW1lbnRMb2FkZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggZTFmYzZmNzM3MmIuLmQyNGE4MDQ4ZTM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC02MTMsNiArNjEzLDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdV
cGRhdGVEaXNwYXRjaGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RJT1MubW0KIAogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1RleHRDaGVja2lu
Z0NvbnRyb2xsZXJQcm94eS5tbQorV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNh
Y2hlQ29jb2EubW0KIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJQYWdlQ29jb2EubW0KIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJSZW1vdGVPYmplY3RSZWdpc3RyeS5jcHAKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDQ4
ODViNDYzMmQuLjFiZTc3YzhiNzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk0Myw2ICs5NDMsNyBAQAogCQk0NjZCQzAzQzFGQTI2
NkRBMDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkJDMDM5MUZBMjY2QzkwMDJG
QTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjcxRkYx
RjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdFRkYwMDFC
NjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0NjdFNDNFODIyNDNG
RjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZGNkQwMEIx
MzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovOyB9OworCQk0NjgwOUE3
QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFj
a2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1MjQ3MjI2
NjhEODUwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QjA1MjQ0MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0
b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NkJFQjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKQEAgLTM0
ODQsNiArMzQ4NSw4IEBACiAJCTQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJj
ZUxvYWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcxRkYxRTIzMjE3RUZGMDAxQjY0Qzcg
LyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdF
NDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0EyM0Q5MjI1MzAw
QzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvb2tpZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODA5
QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBh
Z2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm92aXNpb25hbFBh
Z2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QjIxRTgxQ0M3
MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDIyLDYgKzg0MjUsOCBAQAogCQkJCUJDNzJCOUY5
MTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oICovLAogCQkJCTUx
ODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8sCiAJCQkJNTE4
NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi8sCisJCQkJNDY4MDlB
N0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLywKKwkJCQk0NjgwOUE3
QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLywKIAkJCQk1QzdGQjQ2RTIx
RTk3QzBCMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmNwcCAqLywKIAkJCQk1QzdGQjQ2RjIxRTk3
QzBDMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggKi8sCiAJCQkJMUE1QjFDNTIxODk4N0VERjAw
NEZDRjlCIC8qIFdlYkRvY3VtZW50TG9hZGVyLmNwcCAqLywKQEAgLTEwNzkwLDYgKzEwNzk1LDcg
QEAKIAkJCQkxQTA0M0Y2QTEyNTE0RDhCMDBGRkJGQjUgLyogV2ViUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY4MjQxMjVBNkI5NDAwRTcxMjc4IC8q
IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2N0U0
M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMwNjZCRjEyNUE0NDIxMDBFNzEyNzggLyogV2Vi
UHJvY2Vzc01lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIxQjFBNDkxNEEzMDBD
N0YxNTIgLyogV2ViUHJvY2Vzc1Bvb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTREMjI4MUE0
OTE2QzIwMEM3RjE1MiAvKiBXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDI4YmMxMmMzNDIzLi4yOWU3YTE4YzI2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
U3RvcmFnZUFyZWFNYXAuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJDb29raWVK
YXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJJ
REJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXJNZXNzYWdlcy5oIgpAQCAtMjM0LDYgKzIzNSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbjo6Y29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChIVFRQQ29va2llQWNjZXB0UG9saWN5
CiAgICAgbV9jb29raWVBY2NlcHRQb2xpY3kgPSBuZXdQb2xpY3k7CiB9CiAKKyNpZiBFTkFCTEUo
Q09PS0lFX0NBQ0hFKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNvb2tpZXNBZGRl
ZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29r
aWVzKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tpZUphcigpLmNvb2tpZXNB
ZGRlZChob3N0LCBjb29raWVzKTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246
OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jb29raWVK
YXIoKS5jb29raWVzRGVsZXRlZCgpOworfQorI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUp
CisKICNpZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5oCmluZGV4IDUxZmRmMzU0NTI0Li5mYjgxMWU0ODYyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVz
b3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9u
c2U7CitzdHJ1Y3QgQ29va2llOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVj
dCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBv
bGljeSA6IHVpbnQ4X3Q7CkBAIC04Myw2ICs4NCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNv
b2tpZXNFbmFibGVkKCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZv
aWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDJhYTY4ODZlNTdhLi41NDgwZDU5M2U1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzEsNiArMzEs
MTEgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBTZXRPbkxpbmVTdGF0ZShib29sIGlzT25MaW5lKTsKICAgICBDb29raWVBY2NlcHRQ
b2xpY3lDaGFuZ2VkKGVudW06dWludDhfdCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSk7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIENvb2tpZXNBZGRlZChT
dHJpbmcgaG9zdCwgVmVjdG9yPHN0cnVjdCBXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpOworICAg
IENvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogICAgIENoZWNrUHJvY2Vzc0xvY2FsUG9ydEZv
ckFjdGl2aXR5KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkgLT4g
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSBoYXNBY3Rp
dml0eSkgQXN5bmMKICAgICBNZXNzYWdlc0F2YWlsYWJsZUZvclBvcnQoc3RydWN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciBwb3J0KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRhNWNhODY3NzJjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
Q29va2llQ2FjaGVDb2NvYS5tbQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorI2ltcG9ydCAiV2ViQ29v
a2llQ2FjaGUuaCIKKworI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkNvb2tpZUNhY2hl
Ojppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBpZiAoIW1faW5NZW1vcnlTdG9yYWdl
U2Vzc2lvbikgeworICAgICAgICBTdHJpbmcgc2Vzc2lvbk5hbWUgPSBtYWtlU3RyaW5nKCJXZWJL
aXRJblByb2Nlc3NTdG9yYWdlLSIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSk7CisgICAgICAgIGF1
dG8gc3RvcmFnZVNlc3Npb24gPSBhZG9wdENGKFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdl
U2Vzc2lvbihzZXNzaW9uTmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgICAgIGF1
dG8gY29va2llU3RvcmFnZSA9IGFkb3B0Q0YoX0NGVVJMU3RvcmFnZVNlc3Npb25Db3B5Q29va2ll
U3RvcmFnZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBzdG9yYWdlU2Vzc2lvbi5nZXQoKSkpOworICAg
ICAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24gPSBtYWtlVW5pcXVlPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4oV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2Vzc2lvbklEKCksIFdURk1vdmUoc3Rv
cmFnZVNlc3Npb24pLCBXVEZNb3ZlKGNvb2tpZVN0b3JhZ2UpLCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OklzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVzKTsKKyAgICB9CisgICAgcmV0dXJuICptX2lu
TWVtb3J5U3RvcmFnZVNlc3Npb247Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uYzEyNmZlZTI3MGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKQEAgLTAsMCArMSwxMjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ09PS0lF
X0NBQ0hFKQorI2luY2x1ZGUgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbmNsdWRlICJOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1dlYkNvb2tpZUNhY2hlOjpXZWJD
b29raWVDYWNoZSgpCit7Cit9CisKK1dlYkNvb2tpZUNhY2hlOjp+V2ViQ29va2llQ2FjaGUoKQor
eworfQorCisvLyBGSVhNRTogVGhpcyBjYW4gZXZlbnR1YWxseSBiZSByZW1vdmVkLCB0aGlzIGlz
IG1lcmVseSB0byBlbnN1cmUgYSBzbW9vdGggdHJhbnNpdGlvbiB0byB0aGUgbmV3IEFQSS4KK2Jv
b2wgV2ViQ29va2llQ2FjaGU6OmlzRnVuY3Rpb25hbCgpCit7CisgICAgcmV0dXJuIGluTWVtb3J5
U3RvcmFnZVNlc3Npb24oKS5zdXBwb3J0c0Nvb2tpZUNoYW5nZUxpc3RlbmVyQVBJKCk7Cit9CisK
K1N0cmluZyBXZWJDb29raWVDYWNoZTo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCit7CisgICAgU3RyaW5nIGhvc3QgPSB1cmwu
aG9zdCgpLnRvU3RyaW5nKCk7CisgICAgaWYgKCFtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5j
b250YWlucyhob3N0KSkgeworICAgICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgICAg
ICBib29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyA9IHRydWU7CisgICAg
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6RG9tQ29va2llc0Zvckhvc3QodXJsLmhvc3QoKS50b1N0cmluZygpLCBz
dWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRvbUNvb2tpZXNGb3JIb3N0OjpSZXBseShjb29raWVzKSwg
MCkpCisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICBXVEZMb2dBbHdheXMoIkNIUklT
OiBHb3QgJWx1IGNvb2tpZXMgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzIGZvciAnJXMnIiwgY29v
a2llcy5zaXplKCksIHVybC5ob3N0KCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7CisgICAgICAgIG1faG9zdHNXaXRoSW5NZW1vcnlT
dG9yYWdlLmFkZChob3N0KTsKKyAgICAgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQor
ICAgICAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29raWUpOwor
ICAgIH0KKyAgICBXVEZMb2dBbHdheXMoIkNIUklTOiBSZXR1cm5pbmcgY29va2llcyB0byAnJXMn
IGZyb20gY2FjaGUiLCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
cmV0dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFA6Ok5vKS5maXJzdDsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQoreworICAg
IFN0cmluZyBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOworICAgIGlmIChtX2hvc3RzV2l0
aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyhob3N0KSkKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdl
U2Vzc2lvbigpLnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7Cit9CisK
K3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzKQoreworICAgIGlmICghbV9ob3N0c1dpdGhJbk1l
bW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdURkxv
Z0Fsd2F5cygiQ0hSSVM6IFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRkZWQoJXMpICVsdSBjb29r
aWVzIiwgaG9zdC51dGY4KCkuZGF0YSgpLCBjb29raWVzLnNpemUoKSk7CisKKyAgICBmb3IgKGF1
dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5z
ZXRDb29raWUoY29va2llKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y29va2llc0RlbGV0
ZWQoKQoreworICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IFdlYkNvb2tpZUNhY2hlOjpjb29raWVz
RGVsZXRlZCgpIik7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y2xl
YXIoKQoreworICAgIFdURkxvZ0Fsd2F5cygiQ0hSSVM6IFdlYkNvb2tpZUNhY2hlOjpjbGVhcigp
Iik7CisgICAgYXV0byBob3N0c1RvVW5zdWJzY3JpYmUgPSBjb3B5VG9WZWN0b3IobV9ob3N0c1dp
dGhJbk1lbW9yeVN0b3JhZ2UpOworICAgIGlmICghaG9zdHNUb1Vuc3Vic2NyaWJlLmlzRW1wdHko
KSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpVbnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGhv
c3RzVG9VbnN1YnNjcmliZSksIDApOworICAgIG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNs
ZWFyKCk7CisgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbnVsbHB0cjsKK30KKwordm9p
ZCBXZWJDb29raWVDYWNoZTo6Y2xlYXJGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAg
ICBhdXRvIGl0ID0gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuZmluZChob3N0KTsKKyAgICBp
ZiAoaXQgPT0gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuZW5kKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLnJlbW92ZShpdCk7CisgICAgVmVj
dG9yPFN0cmluZz4gaG9zdHNUb1JlbW92ZSB7IGhvc3QgfTsKKyAgICBpbk1lbW9yeVN0b3JhZ2VT
ZXNzaW9uKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhob3N0c1RvUmVtb3ZlKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoaG9zdHNUb1JlbW92ZSks
IDApOworCit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OnBydW5lQ2FjaGVJZk5lY2Vzc2FyeSgp
Cit7CisgICAgLy8gV2UgbWF5IHdhbnQgdG8gcmFpc2UgdGhpcyBsaW1pdCBpZiB3ZSBzdGFydCB1
c2luZyB0aGUgY2FjaGUgZm9yIHRoaXJkLXBhcnR5IGlmcmFtZXMuCisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIG1heENhY2hlZEhvc3RzID0gNTsKKworICAgIHdoaWxlIChtX2hvc3RzV2l0aElu
TWVtb3J5U3RvcmFnZS5zaXplKCkgPj0gbWF4Q2FjaGVkSG9zdHMpCisgICAgICAgIGNsZWFyRm9y
SG9zdCgqbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UucmFuZG9tKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYThmMThhODc0NTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5o
CkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShDT09LSUVfQ0FDSEUpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBOZXR3b3JrU3RvcmFn
ZVNlc3Npb247CitlbnVtIGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2w7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJGcmFtZTsKKworY2xhc3MgV2ViQ29va2llQ2FjaGUgewor
cHVibGljOgorICAgIFdlYkNvb2tpZUNhY2hlKCk7CisgICAgfldlYkNvb2tpZUNhY2hlKCk7CisK
KyAgICBib29sIGlzRnVuY3Rpb25hbCgpOworCisgICAgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKKworICAgIHZvaWQgY29va2llc0FkZGVk
KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAg
ICB2b2lkIGNvb2tpZXNEZWxldGVkKCk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCBj
bGVhckZvckhvc3QoY29uc3QgU3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCk7CisgICAgdm9pZCBw
cnVuZUNhY2hlSWZOZWNlc3NhcnkoKTsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2hvc3RzV2l0
aEluTWVtb3J5U3RvcmFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPiBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb247Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCAzMjU4
MzA1Yzc4OS4uN2VmMjZmMTU5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC04OCw2ICs4OSwyOSBAQCBzdGF0aWMgYm9vbCBzaG91bGRCbG9j
a0Nvb2tpZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVz
LAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorYm9vbCBXZWJDb29raWVK
YXI6OmlzRWxpZ2libGVGb3JDYWNoZShXZWJGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNvbnN0Cit7CisgICAgYXV0
byogcGFnZSA9IGZyYW1lLnBhZ2UoKSA/IGZyYW1lLnBhZ2UoKS0+Y29yZVBhZ2UoKSA6IG51bGxw
dHI7CisgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5zZXR0aW5ncygpLmluUHJvY2Vzc0Nvb2tpZUNh
Y2hlRW5hYmxlZCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW4tUHJvY2VzcyBjb29raWUg
Y2FjaGUgaXMgZGlzYWJsZWQgdmlhIHByZWZlcmVuY2VzIik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBpZiAoIW1fY2FjaGUuaXNGdW5jdGlvbmFsKCkpIHsKKyAgICAgICAg
V1RGTG9nQWx3YXlzKCJJbi1Qcm9jZXNzIGNvb2tpZSBjYWNoZSBpcyBkaXNhYmxlZCBiZWNhdXNl
IHRoaXMgYnVpbGQgZG9lcyBub3Qgc3VwcG9ydCBpdCB5ZXQiKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIC8vIEZvciBub3csIHdlIG9ubHkgY2FjaGUgY29va2llcyBmb3Ig
Zmlyc3QtcGFydHkgY29udGVudC4gVGhpcmQtcGFydHkgY29va2llIGNhY2hpbmcgaXMgYSBiaXQg
bW9yZSBjb21wbGljYXRlZCBkdWUgdG8gcGFydGl0aW9uaW5nIGFuZCBzdG9yYWdlIGFjY2Vzcy4K
KyAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiB7IHJlc291cmNlVVJMIH07Cisg
ICAgaWYgKHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFibGVEb21haW4geyBm
aXJzdFBhcnR5Rm9yQ29va2llcyB9ID09IHJlc291cmNlRG9tYWluOworfQorI2VuZGlmCisKIFN0
cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBhdXRvKiB3ZWJGcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCkgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZG9jdW1lbnQuZnJhbWUoKSkgOiBudWxs
cHRyOwpAQCAtMTAwLDEyICsxMjQsMTkgQEAgU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhX
ZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAg
ICByZXR1cm4geyB9OwogI2VuZGlmCiAKKyAgICBhdXRvIHNhbWVTaXRlSW5mbyA9IENvb2tpZUph
cjo6c2FtZVNpdGVJbmZvKGRvY3VtZW50KTsKKyAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVz
ID0gQ29va2llSmFyOjpzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhkb2N1bWVudCwgdXJsKTsK
ICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOwogICAgIGF1dG8gcGFnZUlE
ID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOwogCisjaWYgRU5BQkxFKENPT0tJRV9D
QUNIRSkKKyAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGUuY29va2ll
c0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CisjZW5kaWYKKwogICAg
IFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBm
YWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpLCBzaG91bGRBc2tJVFBJ
bk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRl
U2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2ll
U3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAogICAgIHJldHVybiBjb29raWVTdHJpbmc7CkBAIC0xMjMsMTEgKzE1NCwzOSBAQCB2b2lkIFdl
YkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdAogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAorICAgIGF1dG8gc2Ft
ZVNpdGVJbmZvID0gQ29va2llSmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOwogICAgIGF1dG8g
ZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFt
ZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3Vt
ZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJp
bmcpLCAwKTsKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIGlmIChpc0VsaWdpYmxlRm9y
Q2FjaGUoKndlYkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQor
ICAgICAgICBtX2NhY2hlLnNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JD
b29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmlu
Zyk7CisjZW5kaWYKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxk
QXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7Cit9CisKKyNpZiBFTkFC
TEUoQ09PS0lFX0NBQ0hFKQordm9pZCBXZWJDb29raWVKYXI6OmNvb2tpZXNBZGRlZChjb25zdCBT
dHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQorewor
ICAgIG1fY2FjaGUuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2b2lkIFdlYkNv
b2tpZUphcjo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIG1fY2FjaGUuY29va2llc0RlbGV0ZWQo
KTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGUoKQoreworICAgIG1fY2FjaGUu
Y2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGVGb3JIb3N0KGNvbnN0
IFN0cmluZyYgaG9zdCkKK3sKKyAgICBtX2NhY2hlLmNsZWFyRm9ySG9zdChob3N0KTsKIH0KKyNl
bmRpZiAvLyBFTkFCTEUoQ09PS0lFX0NBQ0hFKQogCiBib29sIFdlYkNvb2tpZUphcjo6Y29va2ll
c0VuYWJsZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAppbmRleCA1Mjk0OGE5MWRl
NS4uZGMzODU2MWVkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkNvb2tpZUphci5oCkBAIC0yNSw4ICsyNSwxMyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIldlYkNvb2tpZUNhY2hlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4K
IAorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IENvb2tpZTsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYkNvb2tpZUphciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDb29r
aWVKYXIgewpAQCAtMzksOCArNDQsMjIgQEAgcHVibGljOgogICAgIHN0ZDo6cGFpcjxTdHJpbmcs
IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9j
dW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSBmaW5hbDsKKworI2lmIEVOQUJMRShDT09L
SUVfQ0FDSEUpCisgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25z
dCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgY29va2llc0RlbGV0ZWQoKTsK
KyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdlYkNvb2tpZUphcigpOworCisjaWYgRU5BQkxFKENP
T0tJRV9DQUNIRSkKKyAgICB2b2lkIGNsZWFyQ2FjaGUoKSBmaW5hbDsKKyAgICB2b2lkIGNsZWFy
Q2FjaGVGb3JIb3N0KGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIGJvb2wgaXNFbGlnaWJsZUZv
ckNhY2hlKFdlYkZyYW1lJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3Qg
VVJMJiByZXNvdXJjZVVSTCkgY29uc3Q7CisKKyAgICBtdXRhYmxlIFdlYkNvb2tpZUNhY2hlIG1f
Y2FjaGU7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1MDhiY2MxMDJlYi4uYmRh
MWVhZjFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC00NjYsNyArNDY2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBt
YWtlVW5pcXVlUmVmPFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksCiAgICAgICAgIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5OjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBXZWJDb29raWVKYXI6
OmNyZWF0ZSgpLAorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jb29raWVKYXIoKSwK
ICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ+KCp0aGlzKSwK
ICAgICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCkKICAgICApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRiMjQwOWI5OTRkLi4y
MWI1YTJiYzEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAt
NDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIldlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCIKICNp
bmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYkNvbm5lY3Rp
b25Ub1VJUHJvY2Vzcy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgIldl
YkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAi
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgpAQCAtMjA1LDYgKzIwNiw3IEBAIFdlYlByb2Nl
c3M6OldlYlByb2Nlc3MoKQogICAgICwgbV93ZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVy
KFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXI6OmNyZWF0ZSgpKQogICAgICwgbV93ZWJM
b2FkZXJTdHJhdGVneSgqbmV3IFdlYkxvYWRlclN0cmF0ZWd5KQogICAgICwgbV9jYWNoZVN0b3Jh
Z2VQcm92aWRlcihXZWJDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCkpCisgICAgLCBtX2Nv
b2tpZUphcihXZWJDb29raWVKYXI6OmNyZWF0ZSgpKQogICAgICwgbV9kbnNQcmVmZXRjaEh5c3Rl
cmVyaXMoW3RoaXNdKFBBTDo6SHlzdGVyZXNpc1N0YXRlIHN0YXRlKSB7IGlmIChzdGF0ZSA9PSBQ
QUw6Okh5c3RlcmVzaXNTdGF0ZTo6U3RvcHBlZCkgbV9kbnNQcmVmZXRjaGVkSG9zdHMuY2xlYXIo
KTsgfSkKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKICAgICAsIG1fcGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Y3Jl
YXRlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA4NTNjNjYwZWM2
NC4uMTU5MDkzNjBhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAt
MTIwLDYgKzEyMCw3IEBAIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgV2F5bGFuZENvbXBvc2l0b3JE
aXNwbGF5OwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTsKIGNsYXNzIFdlYkNhY2hl
U3RvcmFnZVByb3ZpZGVyOworY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3REYXRhOwogY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwogY2xh
c3MgV2ViRnJhbWU7CkBAIC0yOTMsNiArMjk0LDcgQEAgcHVibGljOgogICAgIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkqIGF1dG9tYXRpb25TZXNzaW9uUHJveHkoKSB7IHJldHVybiBtX2F1dG9t
YXRpb25TZXNzaW9uUHJveHkuZ2V0KCk7IH0KIAogICAgIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVy
JiBjYWNoZVN0b3JhZ2VQcm92aWRlcigpIHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIu
Z2V0KCk7IH0KKyAgICBXZWJDb29raWVKYXImIGNvb2tpZUphcigpIHsgcmV0dXJuIG1fY29va2ll
SmFyLmdldCgpOyB9CiAgICAgV2ViU29ja2V0Q2hhbm5lbE1hbmFnZXImIHdlYlNvY2tldENoYW5u
ZWxNYW5hZ2VyKCkgeyByZXR1cm4gbV93ZWJTb2NrZXRDaGFubmVsTWFuYWdlcjsgfQogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU1NCw2ICs1NTYsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBSZWY8V2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI+IG1fY2FjaGVTdG9yYWdlUHJvdmlk
ZXI7CisgICAgUmVmPFdlYkNvb2tpZUphcj4gbV9jb29raWVKYXI7CiAgICAgV2ViU29ja2V0Q2hh
bm5lbE1hbmFnZXIgbV93ZWJTb2NrZXRDaGFubmVsTWFuYWdlcjsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxMaWJXZWJSVENOZXR3b3JrPiBtX2xpYldlYlJUQ05ldHdvcms7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390561</attachid>
            <date>2020-02-12 14:30:50 -0800</date>
            <delta_ts>2020-02-12 15:02:49 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>WebCookieCache_wip.patch</filename>
            <type>text/plain</type>
            <size>70700</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29r
aWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjRhZjkyNGJm
YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMSBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFs
dWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0
S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSkgaXMg
ImZvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dN
b2RhbERpYWxvZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42
ZWVkMmRhN2ZhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29v
a2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWwKQEAgLTAsMCAr
MSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9J3Jl
c291cmNlcy9jb29raWVzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGlucHV0IGlkPSJ0ZXN0QnV0dG9uIiB0eXBlPSJidXR0b24iIHZhbHVlPSJDbGljayBtZSI+PC9p
bnB1dD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUg
cmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsJyk7
Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKwordGVzdEJ1dHRvbi5vbmNsaWNrID0gKCkg
PT4geworICAgIGRvY3VtZW50LmNvb2tpZSA9ICJ0ZXN0S2V5PXRlc3RWYWx1ZSI7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKScsICd0
ZXN0S2V5PXRlc3RWYWx1ZScpOworCisgICAgc2hvd01vZGFsRGlhbG9nKCJyZXNvdXJjZXMvc2V0
LWNvb2tpZS5jZ2k/bmFtZT1mb28mdmFsdWU9YmFyIik7CisKKyAgICAvLyBUaGlzIGlzIHNvIHRo
ZSBjb29raWUgZ2V0cyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisgICAgcmVnaXN0
ZXJDb29raWVGb3JDbGVhbnVwKCdmb289YmFyOyBwYXRoPS8nKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ2Zvbz1iYXI7IHRl
c3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworb25sb2FkID0g
KCkgPT4geworICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geworICAgICAgICB0
ZXN0QnV0dG9uLmNsaWNrKCk7CisgICAgfSk7Cit9OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0n
cmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wb3N0LmpzJz48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMv
c2V0LWNvb2tpZS5jZ2kgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2Vz
L3NldC1jb29raWUuY2dpCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwLi5h
NmEyNTQzMDcyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29v
a2llcy9yZXNvdXJjZXMvc2V0LWNvb2tpZS5jZ2kKQEAgLTAsMCArMSwxOCBAQAorIyEvdXNyL2Jp
bi9wZXJsIC13VAordXNlIENHSTsKKworJHF1ZXJ5ID0gbmV3IENHSTsKKyRuYW1lID0gJHF1ZXJ5
LT5wYXJhbSgnbmFtZScpOworJHZhbHVlID0gJHF1ZXJ5LT5wYXJhbSgndmFsdWUnKTsKKworcHJp
bnQgIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sXG4iOworcHJpbnQgIkNhY2hlLUNvbnRyb2w6IG5v
LXN0b3JlXG4iOworcHJpbnQgIlNldC1Db29raWU6ICR7bmFtZX09JHt2YWx1ZX07IHBhdGg9L1xu
XG4iOworCitwcmludCAiPHNjcmlwdD5cbiI7CitwcmludCAib25sb2FkID0gKCkgPT4ge1xuIjsK
K3ByaW50ICIgICAgY2xvc2UoKTtcbiI7CitwcmludCAiICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cilcbiI7CitwcmludCAiICAgICAgIHRlc3RSdW5uZXIuYWJvcnRNb2RhbCgpO1xuIjsKK3ByaW50
ICJ9O1xuIjsKK3ByaW50ICI8L3NjcmlwdD5cbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRl
eCBmZWRlMjRiZTM1NC4uNTk5YmEzODgyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAt
Nzk3LDYgKzc5NywxMCBAQAogI2RlZmluZSBFTkFCTEVfVEhSRUFESU5HX0dFTkVSSUMgMQogI2Vu
ZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVfQ09PS0lFX0NBQ0hFKSAmJiBQTEFURk9STShDT0NP
QSkgJiYgSEFWRShDRk5FVFdPUktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisjZGVmaW5l
IEVOQUJMRV9DT09LSUVfQ0FDSEUgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfR0Nf
VkFMSURBVElPTikgJiYgIWRlZmluZWQoTkRFQlVHKQogI2RlZmluZSBFTkFCTEVfR0NfVkFMSURB
VElPTiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5o
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZDI0Yjg1ZTJkYTIuLmNiZDhl
NTQwZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaApAQCAtNTU2LDYgKzU1NiwxMCBAQAogI2RlZmlu
ZSBIQVZFX0RFVklDRV9JREVOVElUWSAxCiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNjAwKSB8fCAoUExBVEZPUk0o
SU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAw
KQorI2RlZmluZSBIQVZFX0NGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSAxCisj
ZW5kaWYKKwogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNTAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBIQVZFX0RB
VEFfUFJPVEVDVElPTl9LRVlDSEFJTiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3Bh
bC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKaW5kZXggNjY1OGU3MjhjOWMuLmE5MjA3NjBiM2Q2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMzkx
LDYgKzM5MSwxMCBAQCBXVEZfRVhURVJOX0NfRU5ECiAKIEBpbnRlcmZhY2UgTlNIVFRQQ29va2ll
U3RvcmFnZSAoKQogKyAodm9pZClfc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2U6KE5TSFRUUENv
b2tpZVN0b3JhZ2UgKilzdG9yYWdlOworLSAodm9pZClfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JD
b29raWVDaGFuZ2VzOihOU1NldDxOU1N0cmluZyo+KiBfX251bGxhYmxlKWRvbWFpbkxpc3Q7Cist
ICh2b2lkKV9zZXRDb29raWVzQWRkZWRIYW5kbGVyOih2b2lkKF5fX251bGxhYmxlKShOU0FycmF5
PE5TSFRUUENvb2tpZSo+KiBhZGRlZENvb2tpZXMsIE5TVVJMKiBfX251bGxhYmxlIHVybEZvckFk
ZGVkQ29va2llcykpY29va2llc0FkZGVkSGFuZGxlciBvblF1ZXVlOihkaXNwYXRjaF9xdWV1ZV90
IF9fbnVsbGFibGUpcXVldWU7CistICh2b2lkKV9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6KHZv
aWQoXl9fbnVsbGFibGUpKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIF9fbnVsbGFibGUgZGVsZXRl
ZENvb2tpZXMsIGJvb2wgZGVsZXRlZEFsbENvb2tpZXMpKWNvb2tpZXNEZWxldGVkSGFuZGxlciBv
blF1ZXVlOihkaXNwYXRjaF9xdWV1ZV90IF9fbnVsbGFibGUpcXVldWU7CistIChOU0FycmF5KiBf
X251bGxhYmxlKV9nZXRDb29raWVzRm9yRG9tYWluOihOU1N0cmluZyopZG9tYWluOwogQGVuZAog
CiBAaW50ZXJmYWNlIE5TVVJMUmVzcG9uc2UgKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IDg1OGU4ODMyMjQ0Li5jNDQzMTc1NjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03
MTk1LDExICs3MTk1LDE3IEBAIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVET01Db29raWVDYWNo
ZSgpCiAgICAgbV9jYWNoZWRET01Db29raWVzID0gU3RyaW5nKCk7CiB9CiAKLXZvaWQgRG9jdW1l
bnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKQordm9pZCBEb2N1bWVudDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBVUkwmIHVybCkKIHsKICAgICAvLyBTeW5jaHJv
bm91cyByZXNvdXJjZXMgbG9hZGluZyBjYW4gc2V0IGNvb2tpZXMgc28gd2UgaW52YWxpZGF0ZSB0
aGUgY29va2llcyBjYWNoZQogICAgIC8vIGluIHRoaXMgY2FzZSwgdG8gYmUgc2FmZS4KICAgICBp
bnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAg
IGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFnZSgpKQorICAgICAgICBwYWdlLT5jb29raWVKYXIo
KS5jbGVhckNhY2hlRm9ySG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCkpOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0odXJsKTsKKyNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50OjplbnN1cmVQbHVn
SW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKaW5kZXggNTYyMDI5MWFiZWIuLjJmYzRkYzY5Y2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMTY0MCw3ICsxNjQwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENhY2hlZERPTUNvb2tp
ZXMoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBpc0RPTUNvb2tpZUNhY2hlVmFsaWQoKSBjb25z
dCB7IHJldHVybiBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGltZXIuaXNBY3RpdmUoKTsgfQogICAgIHZv
aWQgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KCkgZmluYWw7CisgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5OYXZpZ2F0ZUludGVybmFsKEZy
YW1lJiB0YXJnZXRGcmFtZSk7CiAgICAgYm9vbCBpc05hdmlnYXRpb25CbG9ja2VkQnlUaGlyZFBh
cnR5SUZyYW1lUmVkaXJlY3RCbG9ja2luZyhGcmFtZSYgdGFyZ2V0RnJhbWUsIGNvbnN0IFVSTCYg
ZGVzdGluYXRpb25VUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCmluZGV4IDU4ODJlMWFiMWFiLi4zMmFmNzQ0ODE0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBA
IHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQoTWVzc2Fn
ZVBvcnQmIG1lc3NhZ2VQb3J0KQogICAgIG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBv
cnQpOwogfQogCi12b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoKQordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDAwODMxYTI2MGI1Li5iYzA0ZGY0OWQxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xNTIs
NyArMTUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQ
b3J0Jik7CiAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBVUkwmKTsKIAogICAg
IHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lkIGRl
cmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5oCmluZGV4IDg0ZGJhNDBlOTI4Li4wMmRkYWFhZWE2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db29raWVKYXIuaApAQCAtNjAsNiArNjAsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tp
ZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAorI2lmIEVOQUJMRShD
T09LSUVfQ0FDSEUpCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2FjaGUoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJDYWNoZUZvckhvc3QoY29uc3QgU3RyaW5nJikgeyB9CisjZW5kaWYKKwog
ICAgIHZpcnR1YWwgfkNvb2tpZUphcigpOwogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0IERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMmI3YmY0MjlkZDYuLmM3ZTBmMzFiZTcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTAsMTEg
KzExMCwxMiBAQCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleAogCiB2b2lkIFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYg
Y2xpZW50LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyAgICBh
dXRvIHJlc291cmNlVVJMID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoaXM8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpKQogICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwg
V1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBlbHNlCiAgICAgICAgIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2Fz
dDxEb2N1bWVudD4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7
Ci0gICAgY29udGV4dC5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CisgICAgY29udGV4
dC5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlc291cmNlVVJMKTsKIH0KIAogdm9pZCBU
aHJlYWRhYmxlTG9hZGVyOjpsb2dFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCAzMTZkMjE2OTdiZC4uOTE0N2Fh
MTQzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkNvbW1vblZNLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAt
OTksNiArMTAwLDEyIEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5jaHJv
bm91cyBzeW5jaHJvbm91cywgTWFpbnRhaW5CYWNrRm9yd2FyZENhCiAKICAgICBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmRyYWluKCk7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAg
IFBhZ2U6OmZvckVhY2hQYWdlKFtdKGF1dG8mIHBhZ2UpIHsKKyAgICAgICAgcGFnZS5jb29raWVK
YXIoKS5jbGVhckNhY2hlKCk7CisgICAgfSk7CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYgZG9j
dW1lbnQgOiBjb3B5VG9WZWN0b3JPZjxSZWZQdHI8RG9jdW1lbnQ+PihEb2N1bWVudDo6YWxsRG9j
dW1lbnRzKCkpKSB7CiAgICAgICAgIGRvY3VtZW50LT5zdHlsZVNjb3BlKCkucmVsZWFzZU1lbW9y
eSgpOwogICAgICAgICBkb2N1bWVudC0+Zm9udFNlbGVjdG9yKCkuZW1wdHlDYWNoZXMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRleCA1ZDNhODhjNDhmNy4uYTI3MWUxYzkzMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTM2Myw2ICszNjMsOSBAQCByZXF1ZXN0SWRs
ZUNhbGxiYWNrRW5hYmxlZDoKIEhUVFBTVXBncmFkZUVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNl
CiAKK2luUHJvY2Vzc0Nvb2tpZUNhY2hlRW5hYmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKKwogdGhp
cmRQYXJ0eUlmcmFtZVJlZGlyZWN0QmxvY2tpbmdFbmFibGVkOgogICBpbml0aWFsOiB0cnVlCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDY1MDZmMTA3NzA2Li43NzExNzQ4M2FmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC02MCw2ICs2MCw5IEBAIHR5cGVkZWYgc3RydWN0IF9Tb3VwQ29va2llSmFyIFNvdXBD
b29raWVKYXI7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJDb29raWVTdG9yYWdl
T2JzZXJ2ZXIuaCIKK09CSkNfQ0xBU1MgTlNBcnJheTsKK09CSkNfQ0xBU1MgTlNIVFRQQ29va2ll
OworT0JKQ19DTEFTUyBOU011dGFibGVTZXQ7CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNzksNiArODIsMTUgQEAgZW51bSBjbGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlIDogdWludDhfdCB7IEFsbCwgQWxsT25TaXRlc1dpdGhvdXRVc2VySW4KIGVudW0gY2xhc3Mg
Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2ll
cywgTm9uZSwgQWxsQnV0Q29va2llc0xpdmVPblRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVz
UmVwcm9UZXN0aW5nVGltZW91dCB9OwogZW51bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29sIHsg
Tm8sIFllcyB9OwogCisjaWYgSEFWRShDRk5FVFdPUktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9B
UEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVk
KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNEZWxldGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBj
bGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpA
QCAtOTMsOCArMTA1LDEwIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
IHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisgICAgV0VCQ09SRV9FWFBPUlQgfk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoQ0ZT
dHJpbmdSZWYgaWRlbnRpZmllcik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4m
JiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYpOworICAgIGVudW0gY2xhc3Mg
SXNJbk1lbW9yeUNvb2tpZVN0b3JlIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJldGFpblB0cjxDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4m
JiwgSXNJbk1lbW9yeUNvb2tpZVN0b3JlID0gSXNJbk1lbW9yeUNvb2tpZVN0b3JlOjpObyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vz
c2lvbklEKTsKIAogICAgIC8vIE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGEgRm91bmRhdGlv
biBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLgpAQCAtMTQ2LDYgKzE2MCwxMyBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFApIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7
CiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBX
RUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2llPiBkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJp
bmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JDb29r
aWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5nZU9ic2VydmVyJiwgY29uc3QgU3RyaW5n
JiBob3N0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JDb29raWVD
aGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5nZU9ic2VydmVyJiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGhvc3RzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN1cHBvcnRzQ29va2llQ2hh
bmdlTGlzdGVuZXJBUEkoKSBjb25zdDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFi
bGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+KSBjb25zdDsKQEAgLTE3MywxMSArMTk0LDI2IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGVudW0gSW5jbHVkZUhUVFBP
bmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07CisgICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90
LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMp
IGNvbnN0OworICAgIE5TQXJyYXkgKmh0dHBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYp
IGNvbnN0OworICAgIE5TQXJyYXkgKmh0dHBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+Jiwg
TlNVUkwgKikgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQKSBjb25z
dDsKKyAgICB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYs
IE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJMICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0
IFNhbWVTaXRlSW5mbyYpIGNvbnN0OworICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBD
b29raWVTdG9yYWdlUmVmLCBOU0hUVFBDb29raWUgKikgY29uc3Q7CisjZW5kaWYKKyNpZiBIQVZF
KENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICB2b2lkIHJlZ2lzdGVy
Q29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJD
b29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpOworI2VuZGlmCisKICAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKIAogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxD
T05ORUNUSU9OKQogICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRm
b3JtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gbV9wbGF0
Zm9ybUNvb2tpZVN0b3JhZ2U7CisgICAgYm9vbCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSB7IGZh
bHNlIH07CiAjZWxpZiBVU0UoU09VUCkKICAgICBzdGF0aWMgdm9pZCBjb29raWVzRGlkQ2hhbmdl
KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiopOwogCkBAIC0xOTAsNiArMjI2LDEyIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBtX2NvbnRleHQ7CiAjZW5kaWYKIAorI2lm
IEhBVkUoQ0ZORVRXT1JLX0NPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIGJvb2wgbV9k
aWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycyB7IGZhbHNlIH07CisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZVNldD4gbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPj4gbV9jb29raWVDaGFuZ2VP
YnNlcnZlcnM7CisjZW5kaWYKKwogICAgIENyZWRlbnRpYWxTdG9yYWdlIG1fY3JlZGVudGlhbFN0
b3JhZ2U7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAppbmRleCBiMDFhN2U2NmJmMC4uZTBkODRmN2M1MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC03MywxMSArNzMsMTIgQEAgUmV0
YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3Jl
YXRlQ0ZTdG9yYWdlU2Vzc2lvbkYKICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb247CiB9CiAKLU5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYgcGxhdGZvcm1T
ZXNzaW9uLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJiBwbGF0Zm9ybUNvb2tp
ZVN0b3JhZ2UpCitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
PiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYg
cGxhdGZvcm1Db29raWVTdG9yYWdlLCBJc0luTWVtb3J5Q29va2llU3RvcmUgaXNJbk1lbW9yeUNv
b2tpZVN0b3JlKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9wbGF0Zm9y
bVNlc3Npb24oV1RGTW92ZShwbGF0Zm9ybVNlc3Npb24pKQorICAgICwgbV9pc0luTWVtb3J5Q29v
a2llU3RvcmUoaXNJbk1lbW9yeUNvb2tpZVN0b3JlID09IElzSW5NZW1vcnlDb29raWVTdG9yZTo6
WWVzKQogewotICAgIEFTU0VSVChwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkgfHwgIXBsYXRmb3Jt
Q29va2llU3RvcmFnZSk7CisgICAgQVNTRVJUKHByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSB8fCAh
cGxhdGZvcm1Db29raWVTdG9yYWdlIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBt
X3BsYXRmb3JtQ29va2llU3RvcmFnZSA9IHBsYXRmb3JtQ29va2llU3RvcmFnZSA/IFdURk1vdmUo
cGxhdGZvcm1Db29raWVTdG9yYWdlKSA6IGNvb2tpZVN0b3JhZ2UoKTsKIH0KIApAQCAtODgsMTAg
Kzg5LDEwIEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKCFwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCisgICAgaWYgKCFwcm9jZXNzTWF5VXNlQ29v
a2llQVBJKCkgJiYgIW1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6
OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CiAKICAgICBpZiAobV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJl
dHVybiBtX3BsYXRmb3JtQ29va2llU3RvcmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bkNvY29hLm1tCmluZGV4IDllOWE5MWI3MjUwLi4xNmQ3MGVkOGE2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC00NCw5ICs0NCwxNiBAQCBAZW5kCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKCkKK3sKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQ
SSkKKyAgICB1bnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyNl
bmRpZgorfQorCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENv
b2tpZSYgY29va2llKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1By
aXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5N
ZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAg
ICAgW25zQ29va2llU3RvcmFnZSgpIHNldENvb2tpZTooTlNIVFRQQ29va2llICopY29va2llXTsK
QEAgLTU1LDcgKzYyLDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZShj
b25zdCBDb29raWUmIGNvb2tpZSkKIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENv
b2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykg
fHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBuc0Nvb2tpZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
Q2FwYWNpdHk6Y29va2llcy5zaXplKCldKTsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6
IGNvb2tpZXMpCkBAIC02OCwxNCArNzUsMTIgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYKIAog
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNv
b2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29v
a2llU3RvcmUpOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENv
b2tpZSAqKWNvb2tpZV07CiB9CiAKIHN0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nv
b2tpZVZlY3RvcihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzKQogewotICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nv
b2tpZXMpKTsKLQogICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CiAgICAgY29va2llcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KG5zQ29va2llcy5jb3VudCk7CiAgICAgZm9yIChOU0hUVFBDb29r
aWUgKm5zQ29va2llIGluIG5zQ29va2llcykKQEAgLTExOCw3ICsxMjMsNyBAQCB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAKIE5TSFRUUENvb2tpZVN0b3Jh
Z2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QKIHsKLSAg
ICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NS
YXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZp
bGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwog
ICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwogICAgIGlmICghY2ZD
b29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9y
YWdlXS5fY29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBb
TlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CkBAIC0xNTgsMTEg
KzE2Myw2IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0
eShjYWNoZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNob3VsZCBub3Qg
YmUgbmVjZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhlZC4KICAg
ICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxDYWNoZSBz
aGFyZWRVUkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGlmICghTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCi0gICAgICAgIHJldHVybiBzdG9y
YWdlU2Vzc2lvbi5sZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBhdXRvIGNvb2tp
ZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBpZiAoIWNv
b2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTczLDIwICsxNzMsMjMg
QEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZT
dHJpbmdSZWYgaWRlbnRpZmllcikKICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb24ubGVha1JlZigp
OwogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJl
ZiBjb29raWVTdG9yYWdlKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29v
a2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOwotICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lz
SW5NZW1vcnlDb29raWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIHJldHVy
biBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGNvb2tpZXNd
OworICAgIH0KICAgICAKICAgICBhdXRvIGNvb2tpZXMgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0
b3JhZ2VDb3B5Q29va2llcyhjb29raWVTdG9yYWdlKSk7CiAgICAgcmV0dXJuIFtOU0hUVFBDb29r
aWUgX2NmMm5zQ29va2llczpjb29raWVzLmdldCgpXTsKIH0KIAotc3RhdGljIHZvaWQgZGVsZXRl
SFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TSFRUUENv
b2tpZSAqY29va2llKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUhUVFBDb29r
aWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0hUVFBDb29raWUgKmNv
b2tpZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJp
dmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVt
b3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgeworICAgICAgICBSRUxF
QVNFX0FTU0VSVCghbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgICAgICBbW05TSFRUUENv
b2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGRlbGV0ZUNvb2tpZTpjb29raWVd
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI2LDkgKzIyOSw5IEBAIHN0YXRpYyBOU0Fy
cmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UsIE5TVVJMICp1
cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNvb2tpZXNQdHItPmF1dG9yZWxlYXNlKCk7CiB9CiAK
LXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYg
Y29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKnVybCwgTlNVUkwgKm1haW5E
b2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8pCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqdXJsLCBOU1VSTCAq
bWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbykgY29uc3QK
IHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5B
Y2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewogI2lmICEoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAmJiAhUExBVEZPUk0oV0FU
Q0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgICAgIGlmIChbTlNIVFRQQ29va2llU3Rv
cmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9y
VVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQpAQCAtMjU1LDIxICsyNTgs
MjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICoKICNlbmRpZgogfQogCi1zdGF0aWMgTlNBcnJh
eSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdl
LCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYgc2FtZVNp
dGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRw
Q29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TVVJM
ICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8s
IE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJv
Y2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICghY29va2llU3Rv
cmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpD
YW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CisgICAgaWYg
KCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlD
b29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29va2llU3RvcmFn
ZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgfQogCiAgICAgLy8gRklYTUU6
IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZWFjaCB0aW1l
IHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAgLy8gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2JqZWN0IGZv
ciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFnZT4gbnNDb29raWVTdG9yYWdl
ID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENv
b2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0pOwotICAgIHJldHVybiBjb29raWVzRm9yVVJMKG5z
Q29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOworICAg
IHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJs
LCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJy
YXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNl
Y29uZHM+IGNhcHBlZExpZmV0aW1lKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICBOU1VJbnRlZ2Vy
IGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVzIGNvdW50XTsKICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogCkBAIC0zMDIsMjcgKzMwNiwyNiBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENv
b2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLXN0
YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNob3VsZEFz
a0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhm
aXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lUUCA9
PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJs
LCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAgVU5VU0VE
X1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5kaWYKLSAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JV
Ukwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZSgpLmdl
dCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9CiAKLWVudW0gSW5jbHVkZUhU
VFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07Ci1z
dGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJh
bWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQID0gU2hvdWxk
QXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVI
VFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxl
Z2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMg
PSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IGNv
b2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAoIVtjb29raWVzIGNvdW50XSkKICAgICAgICAgcmV0
dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBhIG51bGwgc3RyaW5nLCBub3QgYW4g
ZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBjcmVhdGUgYmVsb3cuCiAKQEAgLTM3
NCwyMiArMzc3LDIyIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRB
c2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lv
bigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
RG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAp
OworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNv
b2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91
bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25z
dAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVyRmllbGRQcm94
eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQ
cm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdl
SUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2ll
cyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQ
YXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJs
LCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNs
dWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQog
CiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJv
Y2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9j
ZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1f
aXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIApAQCAtNDU3LDcgKzQ2MCw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRS
YXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJCiAgICAgcmF3
Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAg
IE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOworICAgIE5TQXJy
YXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJs
LCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9
IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7
CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpAQCAtNTE4LDcg
KzUyMSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9z
dG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
b3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcykK
IHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5B
Y2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC01NjYsNCArNTY5
LDEwMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llc01vZGlm
aWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQogICAgIFtzdG9yYWdlIF9zYXZlQ29va2llc107
CiB9CiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKwor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJz
SWZOZWNlc3NhcnkoKQoreworICAgIGlmIChtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzID0gdHJ1
ZTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6XihOU0Fy
cmF5PE5TSFRUUENvb2tpZSAqPiAqIG5zQ29va2llcywgTlNVUkwgKnVybEZvckFkZGVkQ29va2ll
cykgeworICAgICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzID0gbnNDb29raWVzVG9Db29raWVW
ZWN0b3IobnNDb29raWVzKTsKKyAgICAgICAgYXV0byBob3N0ID0gVVJMKHVybEZvckFkZGVkQ29v
a2llcykuaG9zdCgpLnRvU3RyaW5nKCk7CisgICAgICAgIEFTU0VSVCghaG9zdC5pc051bGwoKSk7
CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5kKGhvc3QpOwor
ICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBpdC0+dmFsdWUpCisg
ICAgICAgICAgICBvYnNlcnZlci0+Y29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworICAgIH0g
b25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAgICBbbnNDb29raWVTdG9yYWdl
KCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICos
IGJvb2wgLypkZWxldGVkQWxsQ29va2llcyovKSB7CisgICAgICAgIGZvciAoYXV0byYgb2JzZXJ2
ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGZv
ciAoYXV0byogb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCisgICAgICAgICAgICAgICAgb2JzZXJ2ZXIt
PmNvb2tpZXNEZWxldGVkKCk7CisgICAgICAgIH0KKyAgICB9IG9uUXVldWU6ZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp1bnJlZ2lz
dGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmICghbV9kaWRS
ZWdpc3RlckNvb2tpZUxpc3RlbmVycykKKyAgICAgICAgcmV0dXJuOworCisgICAgW25zQ29va2ll
U3RvcmFnZSgpIF9zZXRDb29raWVzQWRkZWRIYW5kbGVyOm5pbCBvblF1ZXVlOm5pbF07CisgICAg
W25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6bmlsIG9uUXVldWU6
bmlsXTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlczpuaWxdOworICAgIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgPSBmYWxz
ZTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0YXJ0TGlzdGVuaW5nRm9yQ29v
a2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIsIGNv
bnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICByZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lm
TmVjZXNzYXJ5KCk7CisKKyAgICBhdXRvJiBvYnNlcnZlcnMgPSBtX2Nvb2tpZUNoYW5nZU9ic2Vy
dmVycy5lbnN1cmUoaG9zdCwgW10geworICAgICAgICByZXR1cm4gSGFzaFNldDxDb29raWVDaGFu
Z2VPYnNlcnZlcio+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgaWYgKCFvYnNl
cnZlcnMuYWRkKCZvYnNlcnZlcikuaXNOZXdFbnRyeSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
ICghbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMpCisgICAgICAgIG1fc3Vic2Ny
aWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxv
Y10gaW5pdF0pOworICAgIGlmIChbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMg
Y29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICopaG9zdF0pCisgICAgICAgIHJldHVybjsKKworICAg
IFttX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBhZGRPYmplY3Q6KE5TU3RyaW5n
ICopaG9zdF07CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRTdWJzY3JpYmVkRG9tYWluc0Zv
ckNvb2tpZUNoYW5nZXM6bV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMuZ2V0KCld
OworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcExpc3RlbmluZ0ZvckNvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hhbmdlT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpCit7CisgICAgYm9vbCBzdWJzY3JpYmVkVVJMc0NoYW5n
ZWQgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0cykgeworICAgICAgICBhdXRv
IGl0ID0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZmluZChob3N0KTsKKyAgICAgICAgaWYgKGl0
ID09IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgYXV0byYgb2JzZXJ2ZXJzID0gaXQtPnZhbHVlOworICAgICAgICBvYnNlcnZl
cnMucmVtb3ZlKCZvYnNlcnZlcik7CisgICAgICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5yZW1vdmUoaXQpOworICAgICAg
ICAgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIHJlbW92ZU9iamVjdDoo
TlNTdHJpbmcgKilob3N0XTsKKyAgICAgICAgICAgIHN1YnNjcmliZWRVUkxzQ2hhbmdlZCA9IHRy
dWU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHN1YnNjcmliZWRVUkxzQ2hhbmdlZCkKKyAg
ICAgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNo
YW5nZXM6bV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMuZ2V0KCldOworfQorCitW
ZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRvbUNvb2tpZXNGb3JIb3N0KGNv
bnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBOU0FycmF5ICpuc0Nvb2tpZXMgPSBbbnNDb29raWVT
dG9yYWdlKCkgX2dldENvb2tpZXNGb3JEb21haW46KE5TU3RyaW5nICopaG9zdF07CisgICAgVmVj
dG9yPENvb2tpZT4gZG9tQ29va2llczsKKyAgICBkb21Db29raWVzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkobnNDb29raWVzLmNvdW50KTsKKyAgICBmb3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUg
aW4gbnNDb29raWVzKSB7CisgICAgICAgIGlmICghbnNDb29raWUuSFRUUE9ubHkpCisgICAgICAg
ICAgICBkb21Db29raWVzLnVuY2hlY2tlZEFwcGVuZChuc0Nvb2tpZSk7CisgICAgfQorICAgIGRv
bUNvb2tpZXMuc2hyaW5rVG9GaXQoKTsKKyAgICByZXR1cm4gZG9tQ29va2llczsKK30KKworLy8g
RklYTUU6IFRoaXMgY2FuIGV2ZW50dWFsbHkgZ29lcyBhd2F5LCB0aGlzIGlzIG1lcmVseSB0byBl
bnN1cmUgYSBzbW9vdGggdHJhbnNpdGlvbiB0byB0aGUgbmV3IEFQSS4KK2Jvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzdXBwb3J0c0Nvb2tpZUNoYW5nZUxpc3RlbmVyQVBJKCkgY29uc3QKK3sK
KyAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBwb3J0c0FQSSA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tp
ZUNoYW5nZXM6KV07CisgICAgcmV0dXJuIHN1cHBvcnRzQVBJOworfQorCisjZW5kaWYgLy8gSEFW
RShDRk5FVFdPUktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTgxNzM0NGYxOWQuLjQ1
OTljYTIzMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTI0LDYgKzEyNCwx
MyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkKICAgICBmb3IgKGF1dG8mIHBvcnQgOiBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0
cykKICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgp
LmRpZENsb3NlTWVzc2FnZVBvcnQocG9ydCk7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQor
ICAgIGlmICghbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMuaXNFbXB0eSgpKSB7CisgICAgICAg
IGF1dG8gaG9zdHNXaXRoQ29va2llTGlzdGVuZXJzID0gY29weVRvVmVjdG9yKG1faG9zdHNXaXRo
Q29va2llTGlzdGVuZXJzKTsKKyAgICAgICAgdW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucyhob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMpOworICAgIH0KKyNlbmRpZgorCiAj
aWYgVVNFKExJQldFQlJUQykKICAgICBpZiAobV9ydGNQcm92aWRlcikKICAgICAgICAgbV9ydGNQ
cm92aWRlci0+Y2xvc2UoKTsKQEAgLTYzMyw2ICs2NDAsNDUgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGMKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tp
ZU5hbWUpOwogfQogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwg
Ym9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lv
bigpOworICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKKworICAgIGlmIChzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMpIHsKKyAgICAgICAgQVNTRVJUKCFtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVy
cy5jb250YWlucyhob3N0KSk7CisgICAgICAgIG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLmFk
ZChob3N0KTsKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zdGFydExpc3RlbmluZ0Zv
ckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhvc3QpOworICAgIH0KKworICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZG9tQ29va2llc0Zvckhvc3Qo
aG9zdCkpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnN1YnNj
cmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
b3N0cykKK3sKKyAgICBXVEZMb2dBbHdheXMoIk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp1bnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKCkgJWxkIGhvc3RzIiwg
aG9zdHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0cykgeworICAgICAgICBB
U1NFUlQobV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMuY29udGFpbnMoaG9zdCkpOworICAgICAg
ICBtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVycy5yZW1vdmUoaG9zdCk7CisgICAgfQorCisgICAg
aWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkpCisgICAg
ICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMoKnRoaXMsIGhvc3RzKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Q29va2llc0FkZGVkKGhvc3QsIGNvb2tp
ZXMpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2ll
c0RlbGV0ZWQoKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OkNvb2tpZXNEZWxldGVkKCksIDApOworfQorI2VuZGlmCisKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYg
ZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGF1dG8q
IHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4
IDg2Y2M2MGQxYTk5Li40M2YxNDcwNGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC04Nyw2ICs4OCw5IEBAIGNsYXNzIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcz4KICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkK
ICAgICAsIHB1YmxpYyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50CisjZW5kaWYK
KyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvb2tpZUNo
YW5nZU9ic2VydmVyCiAjZW5kaWYKICAgICAsIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1
YmxpYzoKQEAgLTI2Niw2ICsyNzAsMTUgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG5leHRN
ZXNzYWdlQmF0Y2hJZGVudGlmaWVyKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKKyNpZiBFTkFCTEUo
Q09PS0lFX0NBQ0hFKQorICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZp
Y2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpOworICAgIHZvaWQgZG9tQ29va2ll
c0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBib29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdl
Tm90aWZpY2F0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpPiYmKTsKKworICAgIC8vIFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9ic2VydmVy
LgorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKSBmaW5hbDsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCkgZmlu
YWw7CisjZW5kaWYKKwogICAgIHN0cnVjdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIg
ewogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAg
ICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdv
cmtBY3Rpdml0eVRyYWNrZXImKSA9IGRlZmF1bHQ7CkBAIC0zMjksNiArMzQyLDkgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBOZXR3b3JrTUROU1JlZ2lzdGVyIG1fbWRuc1Jl
Z2lzdGVyOwogI2VuZGlmCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICBIYXNoU2V0PFN0
cmluZz4gbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnM7CisjZW5kaWYKIAogICAgIGJvb2wgbV9j
YXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkIHsgZmFsc2UgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNDNiNWY2NzRlNTUuLjRm
NGZjMjVmMjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTM0LDYgKzM0LDExIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTdGFydERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1
Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2
NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UpCiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIFVuc3Vi
c2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoVmVjdG9yPFN0cmluZz4gaG9zdHMp
CisgICAgRG9tQ29va2llc0Zvckhvc3QoU3RyaW5nIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29r
aWVDaGFuZ2VOb3RpZmljYXRpb25zKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cykgU3luY2hyb25vdXMKKyNlbmRpZgorCiAgICAgQ29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0
eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAp
IC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5
bmNocm9ub3VzCiAgICAgU2V0Q29va2llc0Zyb21ET00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVt
OmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgU3RyaW5nIGNvb2tpZVN0
cmluZykKICAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwg
c3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlv
bmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCkgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNz
U2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21l
c3NhZ2VzLnB5CmluZGV4IDgyZGIwMTJkZTYwLi5jYTUwNWVlNWVlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02MjEsNiArNjIxLDcgQEAgZGVmIGhlYWRl
cnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJX
ZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1l
dGVycyc6IFsnPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OklT
T1dlYlZUVEN1ZSc6IFsnPFdlYkNvcmUvSVNPVlRUQ3VlLmg+J10sCisgICAgICAgICdzdHJ1Y3Qg
V2ViQ29yZTo6Q29va2llJzogWyc8V2ViQ29yZS9Db29raWUuaD4nXSwKICAgICAgICAgJ3N0cnVj
dCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCc6IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4n
XSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0
OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRh
VHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4
IGI2NGExZjdkNTJmLi44NGRmNDk0YTE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVm
ZXJlbmNlcy55YW1sCkBAIC01NSw2ICs1NSwxNCBAQCBIVFRQU1VwZ3JhZGVFbmFibGVkOgogICAg
aHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiQXV0b21hdGljIEhUVFBTIHVwZ3JhZGUgZm9yIGtu
b3duIHN1cHBvcnRlZCBzaXRlcyIKICAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKIAorSW5Qcm9j
ZXNzQ29va2llQ2FjaGVFbmFibGVkOgorICAgdHlwZTogYm9vbAorICAgZGVmYXVsdFZhbHVlOiB0
cnVlCisgICBjb25kaXRpb246IEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICBodW1hblJlYWRhYmxl
TmFtZTogIkluLVByb2Nlc3MgQ29va2llIENhY2hlIgorICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0
aW9uOiAiSW4tUHJvY2VzcyBET00gQ29va2llIENhY2hlIgorICAgY2F0ZWdvcnk6IGV4cGVyaW1l
bnRhbAorCiBUaGlyZFBhcnR5SWZyYW1lUmVkaXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgICB0eXBl
OiBib29sCiAgICBkZWZhdWx0VmFsdWU6IHRydWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDc0ODk0YmQyN2Jh
Li5hNWQwYmUxNDI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC02MjQsNiArNjI0LDcgQEAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtU
YWJsZUNvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCitXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGUx
ZmM2ZjczNzJiLi5kMjRhODA0OGUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjEzLDYg
KzYxMyw3IEBAIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKIFdl
YlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tCiAKIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KK1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0ODg1YjQ2MzJkLi4xYmU3N2M4Yjc3YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC05NDMsNiArOTQzLDcgQEAKIAkJNDY2QkMwM0MxRkEyNjZEQTAwMkZBOUMxIC8qIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjZCQzAzOTFGQTI2NkM5MDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNDY3MUZGMUYyMzIxN0VGRjAwMUI2NEM3IC8qIFdl
YlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3RTQzRTgyMjQzRkY3RDAwQjEzOTI0IC8qIFdlYlByb2Nl
c3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFT
dG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdl
YkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLzsgfTsK
IAkJNDZBMkI2MDkxRTU2NzZBNjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2
ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZBMkI2MDcxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2
ZW5lc3NUaW1lci5oICovOyB9OwogCQk0NkIwNTI0NzIyNjY4RDg1MDAyNjVCOTcgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkIwNTI0NDIyNjY4RDIzMDAyNjVCOTcg
LyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NDb250cm9sbGVyLmggKi87IH07
CiAJCTQ2QkVCNkQ3MjJGQjlCRDcwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCRUI2RDUyMkZCOUJENjAwMjY5
ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi87IH07CkBAIC0zNDg0LDYgKzM0ODUsOCBAQAogCQk0Njcx
RkYxRDIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY3MUZGMUUyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8q
IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNo
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb29raWVDYWNoZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyog
V2ViQ29va2llQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViQ29va2llQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5
QTIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUIyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2
MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1l
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJv
Y2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtODQyMiw2ICs4NDI1LDggQEAKIAkJCQlCQzcyQjlGOTExRTY0NzZCMDAxRUI0RUEgLyogV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuaCAqLywKIAkJCQk1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIg
LyogV2ViQ29udGV4dE1lbnUuY3BwICovLAogCQkJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAv
KiBXZWJDb250ZXh0TWVudS5oICovLAorCQkJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5jcHAgKi8sCisJCQkJNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdl
YkNvb2tpZUNhY2hlLmggKi8sCiAJCQkJNUM3RkI0NkUyMUU5N0MwQjAwOUUzMjQxIC8qIFdlYkNv
b2tpZUphci5jcHAgKi8sCiAJCQkJNUM3RkI0NkYyMUU5N0MwQzAwOUUzMjQxIC8qIFdlYkNvb2tp
ZUphci5oICovLAogCQkJCTFBNUIxQzUyMTg5ODdFREYwMDRGQ0Y5QiAvKiBXZWJEb2N1bWVudExv
YWRlci5jcHAgKi8sCkBAIC0xMDc5MCw2ICsxMDc5NSw3IEBACiAJCQkJMUEwNDNGNkExMjUxNEQ4
QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMzA2ODI0MTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyog
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODA5
QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMzMDY2QkYxMjVBNDQyMTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0NFNEQyMUIxQTQ5MTRBMzAwQzdGMTUyIC8qIFdlYlByb2Nlc3NQb29s
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIyODFBNDkxNkMyMDBDN0YxNTIgLyogV2ViUHJv
Y2Vzc1Bvb2xNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAppbmRleCAyOGJjMTJjMzQyMy4uMjllN2ExOGMyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgiCiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFn
ZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2ViQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmgi
CiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyTWVzc2FnZXMuaCIKQEAgLTIzNCw2
ICsyMzUsMTggQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNvb2tpZUFjY2VwdFBv
bGljeUNoYW5nZWQoSFRUUENvb2tpZUFjY2VwdFBvbGljeQogICAgIG1fY29va2llQWNjZXB0UG9s
aWN5ID0gbmV3UG9saWN5OwogfQogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykKK3sKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5jb29raWVKYXIoKS5jb29raWVzQWRkZWQoaG9zdCwgY29va2llcyk7Cit9
CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVzRGVsZXRlZCgpCit7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCkuY29va2llc0RlbGV0ZWQoKTsK
K30KKyNlbmRpZiAvLyBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorCiAjaWYgRU5BQkxFKFNIQVJFQUJM
RV9SRVNPVVJDRSkKIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291
cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU2hhcmVhYmxlUmVzb3Vy
Y2U6OkhhbmRsZSYgaGFuZGxlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA1MWZkZjM1
NDUyNC4uZmI4MTFlNDg2MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00MSw2ICs0MSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNv
dXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOworc3RydWN0IENvb2tpZTsKIHN0
cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHM7CiBlbnVtIGNsYXNzIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgOiB1aW50OF90OwpAQCAtODMs
NiArODQsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0Owog
CisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBT
dHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBj
b29raWVzRGVsZXRlZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgppbmRleCAyYWE2ODg2ZTU3YS4uNTQ4MGQ1OTNlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDExIEBAIG1lc3NhZ2VzIC0+IE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0T25MaW5lU3RhdGUo
Ym9vbCBpc09uTGluZSk7CiAgICAgQ29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpOwogCisjaWYgRU5BQkxF
KENPT0tJRV9DQUNIRSkKKyAgICBDb29raWVzQWRkZWQoU3RyaW5nIGhvc3QsIFZlY3RvcjxzdHJ1
Y3QgV2ViQ29yZTo6Q29va2llPiBjb29raWVzKTsKKyAgICBDb29raWVzRGVsZXRlZCgpOworI2Vu
ZGlmCisKICAgICBDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpIC0+IChXZWJDb3JlOjpNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIEFzeW5jCiAgICAgTWVzc2Fn
ZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIg
cG9ydCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi5kYTVjYTg2NzcyYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KQEAg
LTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKENPT0tJRV9DQUNIRSkKKyNpbXBvcnQgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbXBvcnQg
IldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lv
bigpCit7CisgICAgaWYgKCFtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24pIHsKKyAgICAgICAgU3Ry
aW5nIHNlc3Npb25OYW1lID0gbWFrZVN0cmluZygiV2ViS2l0SW5Qcm9jZXNzU3RvcmFnZS0iLCBn
ZXRDdXJyZW50UHJvY2Vzc0lEKCkpOworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRv
cHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9w
dENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgbV9pbk1lbW9yeVN0b3JhZ2VT
ZXNzaW9uID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnNlc3Npb25JRCgpLCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShj
b29raWVTdG9yYWdlKSwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpJc0luTWVtb3J5Q29va2llU3Rv
cmU6Olllcyk7CisgICAgfQorICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FD
SEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVD
YWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMxMjZmZWUy
NzBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyNpbmNsdWRlICJXZWJD
b29raWVDYWNoZS5oIgorCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1
ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCitXZWJDb29raWVDYWNoZTo6V2ViQ29va2llQ2FjaGUoKQoreworfQorCitX
ZWJDb29raWVDYWNoZTo6fldlYkNvb2tpZUNhY2hlKCkKK3sKK30KKworLy8gRklYTUU6IFRoaXMg
Y2FuIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZCwgdGhpcyBpcyBtZXJlbHkgdG8gZW5zdXJlIGEgc21v
b3RoIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBBUEkuCitib29sIFdlYkNvb2tpZUNhY2hlOjppc0Z1
bmN0aW9uYWwoKQoreworICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc3VwcG9y
dHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpOworfQorCitTdHJpbmcgV2ViQ29va2llQ2FjaGU6
OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKQoreworICAgIFN0cmluZyBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOworICAg
IGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpIHsKKyAgICAg
ICAgVmVjdG9yPENvb2tpZT4gY29va2llczsKKyAgICAgICAgYm9vbCBzdWJzY3JpYmVUb0Nvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnMgPSB0cnVlOworICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRvbUNvb2tp
ZXNGb3JIb3N0KHVybC5ob3N0KCkudG9TdHJpbmcoKSwgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VO
b3RpZmljYXRpb25zKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpE
b21Db29raWVzRm9ySG9zdDo6UmVwbHkoY29va2llcyksIDApKQorICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgV1RGTG9nQWx3YXlzKCJDSFJJUzogR290ICVsdSBjb29raWVzIGZyb20g
dGhlIG5ldHdvcmsgcHJvY2VzcyBmb3IgJyVzJyIsIGNvb2tpZXMuc2l6ZSgpLCB1cmwuaG9zdCgp
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHBydW5lQ2FjaGVJZk5lY2Vzc2Fy
eSgpOworICAgICAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5hZGQoaG9zdCk7CisgICAg
ICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAgICAgICAgICAgIGluTWVtb3J5U3Rv
cmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlz
KCJDSFJJUzogUmV0dXJuaW5nIGNvb2tpZXMgdG8gJyVzJyBmcm9tIGNhY2hlIiwgdXJsLmhvc3Qo
KS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VT
ZXNzaW9uKCkuY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpObykuZmly
c3Q7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0
KCkudG9TdHJpbmcoKTsKKyAgICBpZiAobV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY29udGFp
bnMoaG9zdCkpCisgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWVzRnJv
bURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91
bGRBc2tJVFA6Ok5vLCBjb29raWVTdHJpbmcpOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpj
b29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29v
a2llcykKK3sKKyAgICBpZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhv
c3QpKQorICAgICAgICByZXR1cm47CisKKyAgICBXVEZMb2dBbHdheXMoIkNIUklTOiBXZWJDb29r
aWVDYWNoZTo6Y29va2llc0FkZGVkKCVzKSAlbHUgY29va2llcyIsIGhvc3QudXRmOCgpLmRhdGEo
KSwgY29va2llcy5zaXplKCkpOworCisgICAgZm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQor
ICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29va2llKGNvb2tpZSk7Cit9CisK
K3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBXVEZMb2dBbHdh
eXMoIkNIUklTOiBXZWJDb29raWVDYWNoZTo6Y29va2llc0RlbGV0ZWQoKSIpOworICAgIGNsZWFy
KCk7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNsZWFyKCkKK3sKKyAgICBXVEZMb2dBbHdh
eXMoIkNIUklTOiBXZWJDb29raWVDYWNoZTo6Y2xlYXIoKSIpOworICAgIGF1dG8gaG9zdHNUb1Vu
c3Vic2NyaWJlID0gY29weVRvVmVjdG9yKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlKTsKKyAg
ICBpZiAoIWhvc3RzVG9VbnN1YnNjcmliZS5pc0VtcHR5KCkpCisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5zdWJzY3Jp
YmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhob3N0c1RvVW5zdWJzY3JpYmUpLCAwKTsK
KyAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jbGVhcigpOworICAgIG1faW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNsZWFy
Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgYXV0byBpdCA9IG1faG9zdHNXaXRo
SW5NZW1vcnlTdG9yYWdlLmZpbmQoaG9zdCk7CisgICAgaWYgKGl0ID09IG1faG9zdHNXaXRoSW5N
ZW1vcnlTdG9yYWdlLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2hvc3RzV2l0aElu
TWVtb3J5U3RvcmFnZS5yZW1vdmUoaXQpOworICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RzVG9SZW1v
dmUgeyBob3N0IH07CisgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZXMoaG9zdHNUb1JlbW92ZSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnN1YnNjcmliZUZyb21Db29raWVD
aGFuZ2VOb3RpZmljYXRpb25zKGhvc3RzVG9SZW1vdmUpLCAwKTsKKworfQorCit2b2lkIFdlYkNv
b2tpZUNhY2hlOjpwcnVuZUNhY2hlSWZOZWNlc3NhcnkoKQoreworICAgIC8vIFdlIG1heSB3YW50
IHRvIHJhaXNlIHRoaXMgbGltaXQgaWYgd2Ugc3RhcnQgdXNpbmcgdGhlIGNhY2hlIGZvciB0aGly
ZC1wYXJ0eSBpZnJhbWVzLgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhDYWNoZWRIb3N0
cyA9IDU7CisKKyAgICB3aGlsZSAobV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2Uuc2l6ZSgpID49
IG1heENhY2hlZEhvc3RzKQorICAgICAgICBjbGVhckZvckhvc3QoKm1faG9zdHNXaXRoSW5NZW1v
cnlTdG9yYWdlLnJhbmRvbSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBFTkFCTEUoQ09PS0lFX0NBQ0hFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmJkYWYzZWYxYjE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaApAQCAtMCwwICsxLDcwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorCisjaW5j
bHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5m
by5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIERvY3VtZW50OworY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOworZW51bSBjbGFzcyBT
aG91bGRBc2tJVFAgOiBib29sOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2Vi
RnJhbWU7CisKK2NsYXNzIFdlYkNvb2tpZUNhY2hlIHsKK3B1YmxpYzoKKyAgICBXZWJDb29raWVD
YWNoZSgpOworICAgIH5XZWJDb29raWVDYWNoZSgpOworCisgICAgYm9vbCBpc0Z1bmN0aW9uYWwo
KTsKKworICAgIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZyk7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgp
OworCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgY2xlYXJGb3JIb3N0KGNvbnN0IFN0cmlu
ZyYpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgaW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbigpOworICAgIHZvaWQgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7
CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2U7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9pbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBFTkFCTEUoQ09PS0lFX0NBQ0hFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5kZXggMzI1ODMwNWM3ODkuLjdlZjI2ZjE1OTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5j
cHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJD
bGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODgs
NiArODksMjkgQEAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKFdlYkZyYW1lKiBmcmFt
ZSwgY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywKIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKENPT0tJRV9DQUNIRSkKK2Jvb2wgV2ViQ29va2llSmFyOjppc0VsaWdpYmxlRm9yQ2FjaGUo
V2ViRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBV
UkwmIHJlc291cmNlVVJMKSBjb25zdAoreworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkg
PyBmcmFtZS5wYWdlKCktPmNvcmVQYWdlKCkgOiBudWxscHRyOworICAgIGlmICghcGFnZSB8fCAh
cGFnZS0+c2V0dGluZ3MoKS5pblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQoKSkgeworICAgICAg
ICBXVEZMb2dBbHdheXMoIkluLVByb2Nlc3MgY29va2llIGNhY2hlIGlzIGRpc2FibGVkIHZpYSBw
cmVmZXJlbmNlcyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFt
X2NhY2hlLmlzRnVuY3Rpb25hbCgpKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiSW4tUHJvY2Vz
cyBjb29raWUgY2FjaGUgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGlzIGJ1aWxkIGRvZXMgbm90IHN1
cHBvcnQgaXQgeWV0Iik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBG
b3Igbm93LCB3ZSBvbmx5IGNhY2hlIGNvb2tpZXMgZm9yIGZpcnN0LXBhcnR5IGNvbnRlbnQuIFRo
aXJkLXBhcnR5IGNvb2tpZSBjYWNoaW5nIGlzIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQgZHVlIHRv
IHBhcnRpdGlvbmluZyBhbmQgc3RvcmFnZSBhY2Nlc3MuCisgICAgUmVnaXN0cmFibGVEb21haW4g
cmVzb3VyY2VEb21haW4geyByZXNvdXJjZVVSTCB9OworICAgIGlmIChyZXNvdXJjZURvbWFpbi5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBmcmFtZS5pc01h
aW5GcmFtZSgpIHx8IFJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eUZvckNvb2tpZXMgfSA9
PSByZXNvdXJjZURvbWFpbjsKK30KKyNlbmRpZgorCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29r
aWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7
CiAgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21D
b3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAgLTEwMCwxMiArMTI0LDE5
IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgog
CisgICAgYXV0byBzYW1lU2l0ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhkb2N1bWVu
dCk7CisgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IENvb2tpZUphcjo6c2hvdWxkSW5j
bHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAgICAgYXV0byBmcmFtZUlEID0gd2Vi
RnJhbWUtPmZyYW1lSUQoKTsKICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlk
ZW50aWZpZXIoKTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgaWYgKGlzRWxpZ2li
bGVGb3JDYWNoZSgqd2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVy
bCkpCisgICAgICAgIHJldHVybiBtX2NhY2hlLmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpOworI2VuZGlmCisKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwog
ICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5m
byhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRJbmNsdWRlU2VjdXJlQ29v
a2llcyhkb2N1bWVudCwgdXJsKSwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHko
Y29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFz
a0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gY29va2llU3Ry
aW5nOwpAQCAtMTIzLDExICsxNTQsMzkgQEAgdm9pZCBXZWJDb29raWVKYXI6OnNldENvb2tpZXMo
V2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICAg
ICAgcmV0dXJuOwogI2VuZGlmCiAKKyAgICBhdXRvIHNhbWVTaXRlSW5mbyA9IENvb2tpZUphcjo6
c2FtZVNpdGVJbmZvKGRvY3VtZW50KTsKICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJh
bWVJRCgpOwogICAgIGF1dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigp
OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2ll
cygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxk
QXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7CisjaWYgRU5BQkxFKENP
T0tJRV9DQUNIRSkKKyAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1l
bnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgbV9jYWNoZS5zZXRDb29r
aWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworI2VuZGlmCisKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNl
dENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3Ms
IGNvb2tpZVN0cmluZyksIDApOworfQorCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKK3ZvaWQg
V2ViQ29va2llSmFyOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykKK3sKKyAgICBtX2NhY2hlLmNvb2tpZXNBZGRl
ZChob3N0LCBjb29raWVzKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNvb2tpZXNEZWxldGVk
KCkKK3sKKyAgICBtX2NhY2hlLmNvb2tpZXNEZWxldGVkKCk7Cit9CisKK3ZvaWQgV2ViQ29va2ll
SmFyOjpjbGVhckNhY2hlKCkKK3sKKyAgICBtX2NhY2hlLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llSmFyOjpjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAg
bV9jYWNoZS5jbGVhckZvckhvc3QoaG9zdCk7CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9D
QUNIRSkKIAogYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llSmFyLmgKaW5kZXggNTI5NDhhOTFkZTUuLmRjMzg1NjFlZDk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaApAQCAtMjUs
OCArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJXZWJDb29raWVDYWNoZS5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K3N0cnVjdCBDb29raWU7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb29r
aWVKYXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q29va2llSmFyIHsKQEAgLTM5LDggKzQ0LDIy
IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVz
QWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkgZmluYWw7CisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQgY29v
a2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAg
ICBXZWJDb29raWVKYXIoKTsKKworI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdm9pZCBj
bGVhckNhY2hlKCkgZmluYWw7CisgICAgdm9pZCBjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJp
bmcmKSBmaW5hbDsKKyAgICBib29sIGlzRWxpZ2libGVGb3JDYWNoZShXZWJGcmFtZSYsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNvbnN0
OworCisgICAgbXV0YWJsZSBXZWJDb29raWVDYWNoZSBtX2NhY2hlOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNTA4YmNjMTAyZWIuLmJkYTFlYWYxZWQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBA
IFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJLaXQ6Okxp
YldlYlJUQ1Byb3ZpZGVyPigpLAogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNo
ZVN0b3JhZ2VQcm92aWRlcigpLAogICAgICAgICBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y3Jl
YXRlKCp0aGlzKSwKLSAgICAgICAgV2ViQ29va2llSmFyOjpjcmVhdGUoKSwKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCksCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8
V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50PigqdGhpcyksCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8
TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpCiAgICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAppbmRleCA0YjI0MDliOTk0ZC4uMjFiNWEyYmMxM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl
ICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdl
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKKyNpbmNs
dWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaCIKQEAgLTIwNSw2ICsyMDYsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAs
IG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcihXZWJJbnNwZWN0b3JJbnRlcnJ1cHRE
aXNwYXRjaGVyOjpjcmVhdGUoKSkKICAgICAsIG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBXZWJM
b2FkZXJTdHJhdGVneSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoV2ViQ2FjaGVTdG9y
YWdlUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAgICwgbV9jb29raWVKYXIoV2ViQ29va2llSmFyOjpj
cmVhdGUoKSkKICAgICAsIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShQQUw6Okh5c3Rl
cmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0
b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7IH0pCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODUzYzY2MGVjNjQuLjE1OTA5MzYwYWQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBjbGFzcyBV
c2VyRGF0YTsKIGNsYXNzIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTsKIGNsYXNzIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk7CiBjbGFzcyBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNz
IFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YTsKIGNs
YXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzczsKIGNsYXNzIFdlYkZyYW1lOwpAQCAtMjkzLDYg
KzI5NCw3IEBAIHB1YmxpYzoKICAgICBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5KiBhdXRvbWF0
aW9uU2Vzc2lvblByb3h5KCkgeyByZXR1cm4gbV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5LmdldCgp
OyB9CiAKICAgICBXZWJDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIo
KSB7IHJldHVybiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyLmdldCgpOyB9CisgICAgV2ViQ29va2ll
SmFyJiBjb29raWVKYXIoKSB7IHJldHVybiBtX2Nvb2tpZUphci5nZXQoKTsgfQogICAgIFdlYlNv
Y2tldENoYW5uZWxNYW5hZ2VyJiB3ZWJTb2NrZXRDaGFubmVsTWFuYWdlcigpIHsgcmV0dXJuIG1f
d2ViU29ja2V0Q2hhbm5lbE1hbmFnZXI7IH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBA
IC01NTQsNiArNTU2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgUmVmPFdlYkNhY2hlU3Rv
cmFnZVByb3ZpZGVyPiBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyOworICAgIFJlZjxXZWJDb29raWVK
YXI+IG1fY29va2llSmFyOwogICAgIFdlYlNvY2tldENoYW5uZWxNYW5hZ2VyIG1fd2ViU29ja2V0
Q2hhbm5lbE1hbmFnZXI7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGliV2ViUlRDTmV0d29yaz4g
bV9saWJXZWJSVENOZXR3b3JrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390567</attachid>
            <date>2020-02-12 15:02:49 -0800</date>
            <delta_ts>2020-02-12 16:00:06 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>WebCookieCache_wip.patch</filename>
            <type>text/plain</type>
            <size>73922</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29r
aWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjRhZjkyNGJm
YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMSBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFs
dWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0
S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSkgaXMg
ImZvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dN
b2RhbERpYWxvZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45
YWI4NDdiMzNkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29v
a2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWwKQEAgLTAsMCAr
MSwzNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9J3Jl
c291cmNlcy9jb29raWVzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGlucHV0IGlkPSJ0ZXN0QnV0dG9uIiB0eXBlPSJidXR0b24iIHZhbHVlPSJDbGljayBtZSI+PC9p
bnB1dD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUg
cmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsJyk7
Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuc2V0Q2FuT3BlbldpbmRvd3MoKTsKKwordGVzdEJ1dHRvbi5vbmNsaWNrID0gKCkg
PT4geworICAgIGRvY3VtZW50LmNvb2tpZSA9ICJ0ZXN0S2V5PXRlc3RWYWx1ZSI7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKScsICd0
ZXN0S2V5PXRlc3RWYWx1ZScpOworCisgICAgc2hvd01vZGFsRGlhbG9nKCJyZXNvdXJjZXMvc2V0
LWNvb2tpZS1hbmQtc2VydmUucGhwP2Nvb2tpZS1uYW1lPWZvbyZjb29raWUtdmFsdWU9YmFyJmRl
c3RpbmF0aW9uPWNsb3NlLW1vZGFsLWRpYWxvZy5odG1sIik7CisKKyAgICAvLyBUaGlzIGlzIHNv
IHRoZSBjb29raWUgZ2V0cyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisgICAgcmVn
aXN0ZXJDb29raWVGb3JDbGVhbnVwKCdmb289YmFyOyBwYXRoPS8nKTsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ2Zvbz1iYXI7
IHRlc3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworb25sb2Fk
ID0gKCkgPT4geworICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geworICAgICAg
ICB0ZXN0QnV0dG9uLmNsaWNrKCk7CisgICAgfSk7Cit9OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wb3N0LmpzJz48L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVu
dC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5n
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uM2Nm
NWFkYThjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tp
ZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMiBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmln
aHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlz
ICJ0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXplQ29va2llKGNvb2tpZXNJbkZyYW1l
KSBpcyAiZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShk
b2N1bWVudC5jb29raWUpIGlzICJmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJh
bWUtcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50
LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZmYyOWVmYjUzOGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFy
c2luZy5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXByZS5qcyc+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBkb2N1
bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFs
b2coKSBjYWxsJyk7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gdmFsaWRhdGVD
b29raWVzRHVyaW5nQ2hpbGRGcmFtZVBhcnNpbmcoX2Nvb2tpZXNJbkZyYW1lKQoreworICAgIGNv
b2tpZXNJbkZyYW1lID0gX2Nvb2tpZXNJbkZyYW1lOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygnbm9ybWFsaXplQ29va2llKGNvb2tpZXNJbkZyYW1lKScsICdmb289YmFyOyB0ZXN0S2V5PXRl
c3RWYWx1ZScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRv
Y3VtZW50LmNvb2tpZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUnKTsKKyAgICBmaW5p
c2hKU1Rlc3QoKTsgICAgCit9CisKK29ubG9hZCA9ICgpID0+IHsKKyAgICBkb2N1bWVudC5jb29r
aWUgPSAidGVzdEtleT10ZXN0VmFsdWUiOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbm9y
bWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSknLCAndGVzdEtleT10ZXN0VmFsdWUnKTsKKwor
ICAgIC8vIFRoaXMgaXMgc28gdGhlIGNvb2tpZSBnZXRzIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0
aGUgdGVzdC4KKyAgICByZWdpc3RlckNvb2tpZUZvckNsZWFudXAoJ2Zvbz1iYXI7IHBhdGg9Lycp
OworCisgICAgbGV0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwor
ICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocD9jb29r
aWUtbmFtZT1mb28mY29va2llLXZhbHVlPWJhciZkZXN0aW5hdGlvbj1kb2N1bWVudC1jb29raWUt
ZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1sIjsKKyAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGlmcmFtZSk7Cit9OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2Vz
L2Nvb2tpZXMtdGVzdC1wb3N0LmpzJz48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvY2xvc2UtbW9k
YWwtZGlhbG9nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2Vz
L2Nsb3NlLW1vZGFsLWRpYWxvZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5lZjU2OGRmZWRiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29va2llcy9yZXNvdXJjZXMvY2xvc2UtbW9kYWwtZGlhbG9nLmh0bWwKQEAgLTAsMCAr
MSw3IEBACis8c2NyaXB0Pgorb25sb2FkID0gKCkgPT4geworICAgIGNsb3NlKCk7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgIHRlc3RSdW5uZXIuYWJvcnRNb2RhbCgpOworfTsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jl
c291cmNlcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9kb2N1bWVudC1jb29r
aWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi5iMmQ3YWI3YTM5MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmlu
Zy1pZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+Cit0
b3AudmFsaWRhdGVDb29raWVzRHVyaW5nQ2hpbGRGcmFtZVBhcnNpbmcoZG9jdW1lbnQuY29va2ll
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVz
L3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocApuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4uNTlmNDNmMjllODUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUt
YW5kLXNlcnZlLnBocApAQCAtMCwwICsxLDEzIEBACis8P3BocAorJGNvb2tpZU5hbWUgPSAkX0dF
VFsnY29va2llLW5hbWUnXTsKKyRjb29raWVWYWx1ZSA9ICRfR0VUWydjb29raWUtdmFsdWUnXTsK
KyRkZXN0aW5hdGlvbiA9ICRfR0VUWydkZXN0aW5hdGlvbiddOworaGVhZGVyKCJDb250ZW50LVR5
cGU6IHRleHQvaHRtbCIpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIpOworaGVh
ZGVyKCJTZXQtQ29va2llOiAke2Nvb2tpZU5hbWV9PSR7Y29va2llVmFsdWV9OyBwYXRoPS8iKTsK
KyRmcCA9IGZvcGVuKCRkZXN0aW5hdGlvbiwgJ3JiJyk7CitoZWFkZXIoIkNvbnRlbnQtTGVuZ3Ro
OiAiIC4gZmlsZXNpemUoJGRlc3RpbmF0aW9uKSk7CisKK2ZwYXNzdGhydSgkZnApOworZXhpdDsK
Kz8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCBmZWRlMjRiZTM1NC4uNTk5YmEzODgyOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm1FbmFibGUuaApAQCAtNzk3LDYgKzc5NywxMCBAQAogI2RlZmluZSBF
TkFCTEVfVEhSRUFESU5HX0dFTkVSSUMgMQogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChFTkFCTEVf
Q09PS0lFX0NBQ0hFKSAmJiBQTEFURk9STShDT0NPQSkgJiYgSEFWRShDRk5FVFdPUktfQ09PS0lF
X0NIQU5HRV9MSVNURU5FUl9BUEkpCisjZGVmaW5lIEVOQUJMRV9DT09LSUVfQ0FDSEUgMQorI2Vu
ZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfR0NfVkFMSURBVElPTikgJiYgIWRlZmluZWQoTkRF
QlVHKQogI2RlZmluZSBFTkFCTEVfR0NfVkFMSURBVElPTiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKaW5kZXggZDI0Yjg1ZTJkYTIuLmNiZDhlNTQwZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUu
aApAQCAtNTU2LDYgKzU1NiwxMCBAQAogI2RlZmluZSBIQVZFX0RFVklDRV9JREVOVElUWSAxCiAj
ZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNjAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQorI2RlZmluZSBIQVZFX0NGTkVUV09SS19D
T09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSAxCisjZW5kaWYKKwogI2lmIChQTEFURk9STShNQUMp
ICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQTEFURk9S
TShJT1NfRkFNSUxZKQogI2RlZmluZSBIQVZFX0RBVEFfUFJPVEVDVElPTl9LRVlDSEFJTiAxCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKaW5k
ZXggNjY1OGU3MjhjOWMuLmE5MjA3NjBiM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaApAQCAtMzkxLDYgKzM5MSwxMCBAQCBXVEZfRVhURVJOX0Nf
RU5ECiAKIEBpbnRlcmZhY2UgTlNIVFRQQ29va2llU3RvcmFnZSAoKQogKyAodm9pZClfc2V0U2hh
cmVkSFRUUENvb2tpZVN0b3JhZ2U6KE5TSFRUUENvb2tpZVN0b3JhZ2UgKilzdG9yYWdlOworLSAo
dm9pZClfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOihOU1NldDxOU1N0cmlu
Zyo+KiBfX251bGxhYmxlKWRvbWFpbkxpc3Q7CistICh2b2lkKV9zZXRDb29raWVzQWRkZWRIYW5k
bGVyOih2b2lkKF5fX251bGxhYmxlKShOU0FycmF5PE5TSFRUUENvb2tpZSo+KiBhZGRlZENvb2tp
ZXMsIE5TVVJMKiBfX251bGxhYmxlIHVybEZvckFkZGVkQ29va2llcykpY29va2llc0FkZGVkSGFu
ZGxlciBvblF1ZXVlOihkaXNwYXRjaF9xdWV1ZV90IF9fbnVsbGFibGUpcXVldWU7CistICh2b2lk
KV9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6KHZvaWQoXl9fbnVsbGFibGUpKE5TQXJyYXk8TlNI
VFRQQ29va2llKj4qIF9fbnVsbGFibGUgZGVsZXRlZENvb2tpZXMsIGJvb2wgZGVsZXRlZEFsbENv
b2tpZXMpKWNvb2tpZXNEZWxldGVkSGFuZGxlciBvblF1ZXVlOihkaXNwYXRjaF9xdWV1ZV90IF9f
bnVsbGFibGUpcXVldWU7CistIChOU0FycmF5KiBfX251bGxhYmxlKV9nZXRDb29raWVzRm9yRG9t
YWluOihOU1N0cmluZyopZG9tYWluOwogQGVuZAogCiBAaW50ZXJmYWNlIE5TVVJMUmVzcG9uc2Ug
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDg1OGU4ODMyMjQ0Li5jNDQzMTc1NjVkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03MTk1LDExICs3MTk1LDE3IEBAIHZvaWQgRG9j
dW1lbnQ6OmludmFsaWRhdGVET01Db29raWVDYWNoZSgpCiAgICAgbV9jYWNoZWRET01Db29raWVz
ID0gU3RyaW5nKCk7CiB9CiAKLXZvaWQgRG9jdW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoKQordm9pZCBEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25z
dCBVUkwmIHVybCkKIHsKICAgICAvLyBTeW5jaHJvbm91cyByZXNvdXJjZXMgbG9hZGluZyBjYW4g
c2V0IGNvb2tpZXMgc28gd2UgaW52YWxpZGF0ZSB0aGUgY29va2llcyBjYWNoZQogICAgIC8vIGlu
IHRoaXMgY2FzZSwgdG8gYmUgc2FmZS4KICAgICBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsK
KyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIGlmIChhdXRvKiBwYWdlID0gdGhpcy0+cGFn
ZSgpKQorICAgICAgICBwYWdlLT5jb29raWVKYXIoKS5jbGVhckNhY2hlRm9ySG9zdCh1cmwuaG9z
dCgpLnRvU3RyaW5nKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0odXJsKTsKKyNlbmRpZgog
fQogCiB2b2lkIERvY3VtZW50OjplbnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNTYyMDI5MWFiZWIuLjJmYzRk
YzY5Y2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY0MCw3ICsxNjQwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHNldENhY2hlZERPTUNvb2tpZXMoY29uc3QgU3RyaW5nJik7CiAgICAgYm9v
bCBpc0RPTUNvb2tpZUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZUNhY2hlRXhw
aXJ5VGltZXIuaXNBY3RpdmUoKTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hl
KCk7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkgZmluYWw7CisgICAg
dm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpIGZpbmFsOwogCiAg
ICAgYm9vbCBjYW5OYXZpZ2F0ZUludGVybmFsKEZyYW1lJiB0YXJnZXRGcmFtZSk7CiAgICAgYm9v
bCBpc05hdmlnYXRpb25CbG9ja2VkQnlUaGlyZFBhcnR5SUZyYW1lUmVkaXJlY3RCbG9ja2luZyhG
cmFtZSYgdGFyZ2V0RnJhbWUsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDU4ODJlMWFiMWFi
Li4zMmFmNzQ0ODE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0KQogICAgIG1f
bWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBvcnQpOwogfQogCi12b2lkIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKQordm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmlu
ZGV4IDAwODMxYTI2MGI1Li5iYzA0ZGY0OWQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgIHZv
aWQgY3JlYXRlZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAgICAgdm9pZCBkZXN0cm95ZWRN
ZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShjb25zdCBVUkwmKTsKIAogICAgIHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUph
ci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDg0ZGJhNDBlOTI4
Li4wMmRkYWFhZWE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUph
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtNjAsNiArNjAs
MTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgdmlydHVhbCB2
b2lkIGNsZWFyQ2FjaGUoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNoZUZvckhvc3Qo
Y29uc3QgU3RyaW5nJikgeyB9CisjZW5kaWYKKwogICAgIHZpcnR1YWwgfkNvb2tpZUphcigpOwog
cHJvdGVjdGVkOgogICAgIHN0YXRpYyBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0IERv
Y3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5k
ZXggMmI3YmY0MjlkZDYuLmM3ZTBmMzFiZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTAsMTEgKzExMCwxMiBAQCBSZWZQdHI8VGhyZWFkYWJs
ZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleAogCiB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyAgICBhdXRvIHJlc291cmNlVVJMID0gcmVxdWVzdC51
cmwoKTsKICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQogICAgICAgICBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBv
cHRpb25zKTsKICAgICBlbHNlCiAgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIFdURk1v
dmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7Ci0gICAgY29udGV4dC5kaWRMb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KCk7CisgICAgY29udGV4dC5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHJlc291cmNlVVJMKTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2dFcnJvcihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
ciwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lbW9yeVJlbGVhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNl
LmNwcAppbmRleCAzMTZkMjE2OTdiZC4uOTE0N2FhMTQzZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZW1vcnlSZWxlYXNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgog
I2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbW1vblZNLmgiCisjaW5jbHVk
ZSAiQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250Q2Fj
aGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtOTksNiArMTAwLDEyIEBAIHN0YXRpYyB2b2lk
IHJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5jaHJvbm91cyBzeW5jaHJvbm91cywgTWFpbnRhaW5C
YWNrRm9yd2FyZENhCiAKICAgICBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmRyYWluKCk7CiAK
KyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIFBhZ2U6OmZvckVhY2hQYWdlKFtdKGF1dG8m
IHBhZ2UpIHsKKyAgICAgICAgcGFnZS5jb29raWVKYXIoKS5jbGVhckNhY2hlKCk7CisgICAgfSk7
CisjZW5kaWYKKwogICAgIGZvciAoYXV0byYgZG9jdW1lbnQgOiBjb3B5VG9WZWN0b3JPZjxSZWZQ
dHI8RG9jdW1lbnQ+PihEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpKSB7CiAgICAgICAgIGRvY3Vt
ZW50LT5zdHlsZVNjb3BlKCkucmVsZWFzZU1lbW9yeSgpOwogICAgICAgICBkb2N1bWVudC0+Zm9u
dFNlbGVjdG9yKCkuZW1wdHlDYWNoZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAppbmRl
eCA1ZDNhODhjNDhmNy4uYTI3MWUxYzkzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwK
QEAgLTM2Myw2ICszNjMsOSBAQCByZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZDoKIEhUVFBTVXBn
cmFkZUVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiAKK2luUHJvY2Vzc0Nvb2tpZUNhY2hlRW5h
YmxlZDoKKyAgaW5pdGlhbDogZmFsc2UKKwogdGhpcmRQYXJ0eUlmcmFtZVJlZGlyZWN0QmxvY2tp
bmdFbmFibGVkOgogICBpbml0aWFsOiB0cnVlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IDY1MDZmMTA3
NzA2Li43NzExNzQ4M2FmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC02MCw2ICs2MCw5IEBAIHR5cGVk
ZWYgc3RydWN0IF9Tb3VwQ29va2llSmFyIFNvdXBDb29raWVKYXI7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICNpbmNsdWRlICJDb29raWVTdG9yYWdlT2JzZXJ2ZXIuaCIKK09CSkNfQ0xBU1MgTlNB
cnJheTsKK09CSkNfQ0xBU1MgTlNIVFRQQ29va2llOworT0JKQ19DTEFTUyBOU011dGFibGVTZXQ7
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzksNiArODIsMTUgQEAgZW51bSBj
bGFzcyBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIDogdWludDhfdCB7IEFsbCwgQWxsT25T
aXRlc1dpdGhvdXRVc2VySW4KIGVudW0gY2xhc3MgRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3Zh
bE1vZGUgOiB1aW50OF90IHsgQWxsQnV0Q29va2llcywgTm9uZSwgQWxsQnV0Q29va2llc0xpdmVP
blRlc3RpbmdUaW1lb3V0LCBBbGxCdXRDb29raWVzUmVwcm9UZXN0aW5nVGltZW91dCB9OwogZW51
bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29sIHsgTm8sIFllcyB9OwogCisjaWYgSEFWRShDRk5F
VFdPUktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNl
cnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNE
ZWxldGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTMsOCArMTA1LDEwIEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCisg
ICAgV0VCQ09SRV9FWFBPUlQgfk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gY3JlYXRlQ0ZT
dG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoQ0ZTdHJpbmdSZWYgaWRlbnRpZmllcik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBSZXRh
aW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWY+JiYpOworICAgIGVudW0gY2xhc3MgSXNJbk1lbW9yeUNvb2tpZVN0b3JlIDogYm9v
bCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24o
UEFMOjpTZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJiwgSXNJbk1lbW9yeUNvb2tpZVN0b3JlID0g
SXNJbk1lbW9yeUNvb2tpZVN0b3JlOjpObyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgZXhwbGljaXQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIC8vIE1heSBiZSBu
dWxsLCBpbiB3aGljaCBjYXNlIGEgRm91bmRhdGlvbiBkZWZhdWx0IHNob3VsZCBiZSB1c2VkLgpA
QCAtMTQ2LDYgKzE2MCwxMyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFt
ZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29r
aWVzLCBTaG91bGRBc2tJVFApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7CiAKKyNpZiBIQVZFKENGTkVUV09SS19DT09L
SUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8Q29va2ll
PiBkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tp
ZUNoYW5nZU9ic2VydmVyJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNo
YW5nZU9ic2VydmVyJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RzKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBib29sIHN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdDsKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8
RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKQEAgLTE3
MywxMSArMTk0LDI2IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQ
T25seSwgSW5jbHVkZUhUVFBPbmx5IH07CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29v
a2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hv
dWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMpIGNvbnN0OworICAgIE5TQXJyYXkgKmh0dHBD
b29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpIGNvbnN0OworICAgIE5TQXJyYXkgKmh0dHBD
b29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TVVJMICpmaXJzdFBhcnR5LCBj
b25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiwgTlNVUkwgKikgY29uc3Q7CisgICAgTlNBcnJh
eSAqY29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQKSBjb25zdDsKKyAgICB2b2lkIHNldEhUVFBDb29raWVz
Rm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJMICos
IE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNvbnN0OworICAg
IHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0hUVFBDb29r
aWUgKikgY29uc3Q7CisjZW5kaWYKKyNpZiBIQVZFKENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJ
U1RFTkVSX0FQSSkKKyAgICB2b2lkIHJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNl
c3NhcnkoKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vz
c2FyeSgpOworI2VuZGlmCisKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0cjxD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CisgICAgYm9v
bCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSB7IGZhbHNlIH07CiAjZWxpZiBVU0UoU09VUCkKICAg
ICBzdGF0aWMgdm9pZCBjb29raWVzRGlkQ2hhbmdlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiopOwog
CkBAIC0xOTAsNiArMjI2LDEyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250
ZXh0PiBtX2NvbnRleHQ7CiAjZW5kaWYKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NPT0tJRV9DSEFO
R0VfTElTVEVORVJfQVBJKQorICAgIGJvb2wgbV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycyB7
IGZhbHNlIH07CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gbV9zdWJzY3JpYmVkRG9tYWlu
c0ZvckNvb2tpZUNoYW5nZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8Q29va2llQ2hh
bmdlT2JzZXJ2ZXIqPj4gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnM7CisjZW5kaWYKKwogICAgIENy
ZWRlbnRpYWxTdG9yYWdlIG1fY3JlZGVudGlhbFN0b3JhZ2U7CiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAppbmRl
eCBiMDFhN2U2NmJmMC4uZTBkODRmN2M1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZO
ZXQuY3BwCkBAIC03MywxMSArNzMsMTIgQEAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkYKICAgICBy
ZXR1cm4gc3RvcmFnZVNlc3Npb247CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJM
U3RvcmFnZVNlc3Npb25SZWY+JiYgcGxhdGZvcm1TZXNzaW9uLCBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4mJiBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpCitOZXR3b3JrU3RvcmFnZVNl
c3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYgcGxhdGZvcm1Db29raWVTdG9yYWdlLCBJc0lu
TWVtb3J5Q29va2llU3RvcmUgaXNJbk1lbW9yeUNvb2tpZVN0b3JlKQogICAgIDogbV9zZXNzaW9u
SUQoc2Vzc2lvbklEKQogICAgICwgbV9wbGF0Zm9ybVNlc3Npb24oV1RGTW92ZShwbGF0Zm9ybVNl
c3Npb24pKQorICAgICwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUoaXNJbk1lbW9yeUNvb2tpZVN0
b3JlID09IElzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVzKQogewotICAgIEFTU0VSVChwcm9jZXNz
TWF5VXNlQ29va2llQVBJKCkgfHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSk7CisgICAgQVNTRVJU
KHByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSB8fCAhcGxhdGZvcm1Db29raWVTdG9yYWdlIHx8IG1f
aXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBtX3BsYXRmb3JtQ29va2llU3RvcmFnZSA9IHBs
YXRmb3JtQ29va2llU3RvcmFnZSA/IFdURk1vdmUocGxhdGZvcm1Db29raWVTdG9yYWdlKSA6IGNv
b2tpZVN0b3JhZ2UoKTsKIH0KIApAQCAtODgsMTAgKzg5LDEwIEBAIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAog
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llU3RvcmFnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFwcm9jZXNzTWF5VXNlQ29va2llQVBJ
KCkpCisgICAgaWYgKCFwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkgJiYgIW1faXNJbk1lbW9yeUNv
b2tpZVN0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVChoYXNQcm9j
ZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAg
ICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NS
YXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBpZiAobV9wbGF0
Zm9ybUNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtQ29va2llU3RvcmFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDllOWE5MWI3MjUw
Li4xNmQ3MGVkOGE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBA
IC00NCw5ICs0NCwxNiBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjp+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyNpZiBIQVZFKENGTkVU
V09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICB1bnJlZ2lzdGVyQ29va2llQ2hh
bmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorfQorCiB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpD
YW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgW25zQ29va2llU3RvcmFnZSgpIHNldENv
b2tpZTooTlNIVFRQQ29va2llICopY29va2llXTsKQEAgLTU1LDcgKzYyLDcgQEAgdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKIAogdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENvb2tpZT4m
IGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKIHsK
LSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nl
c3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUp
OwogCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBuc0Nvb2tpZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y29va2llcy5zaXplKCldKTsK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCkBAIC02OCwxNCArNzUsMTIg
QEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXMoY29uc3QgVmVjdG9yPENv
b2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYKIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlbGV0ZUNvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJv
Y2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Cisg
ICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNz
UmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIFtuc0Nvb2tpZVN0
b3JhZ2UoKSBkZWxldGVDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CiB9CiAKIHN0YXRp
YyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0FycmF5PE5TSFRUUENv
b2tpZSAqPiAqbnNDb29raWVzKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLQogICAgIFZlY3RvcjxDb29r
aWU+IGNvb2tpZXM7CiAgICAgY29va2llcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zQ29va2ll
cy5jb3VudCk7CiAgICAgZm9yIChOU0hUVFBDb29raWUgKm5zQ29va2llIGluIG5zQ29va2llcykK
QEAgLTExOCw3ICsxMjMsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29r
aWVTdG9yZSgpCiAKIE5TSFRUUENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
bnNDb29raWVTdG9yYWdlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykg
fHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0g
Y29va2llU3RvcmFnZSgpOwogICAgIGlmICghY2ZDb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29r
aWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjZkNv
b2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRI
VFRQQ29va2llU3RvcmFnZV07CkBAIC0xNTgsMTEgKzE2Myw2IEBAIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIp
CiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7IC8vIFNldHRp
bmcgZGlzayBjYWNoZSBzaXplIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IG9uY2UgPHJkYXI6Ly9w
cm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhlZC4KICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNp
dHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gbWVtb3J5Q2FwYWNp
dHldKTsKIAotICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29v
a2llQVBJKCkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbi5sZWFrUmVmKCk7Ci0KLSAg
ICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NS
YXdDb29raWVzKSk7Ci0KICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0
b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFn
ZVNlc3Npb24uZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTczLDIwICsxNzMsMjMgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBj
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllcikKICAgICBy
ZXR1cm4gc3RvcmFnZVNlc3Npb24ubGVha1JlZigpOwogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0
cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQorTlNBcnJheSAq
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVm
IGNvb2tpZVN0b3JhZ2UpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICghY29va2ll
U3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CisgICAg
aWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1v
cnlDb29raWVTdG9yZSk7CiAgICAgICAgIHJldHVybiBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hh
cmVkSFRUUENvb2tpZVN0b3JhZ2VdIGNvb2tpZXNdOworICAgIH0KICAgICAKICAgICBhdXRvIGNv
b2tpZXMgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhjb29raWVTdG9y
YWdlKSk7CiAgICAgcmV0dXJuIFtOU0hUVFBDb29raWUgX2NmMm5zQ29va2llczpjb29raWVzLmdl
dCgpXTsKIH0KIAotc3RhdGljIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9y
YWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TSFRUUENvb2tpZSAqY29va2llKQordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBj
b29raWVTdG9yYWdlLCBOU0hUVFBDb29raWUgKmNvb2tpZSkgY29uc3QKIHsKLSAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2Fu
QWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICgh
Y29va2llU3RvcmFnZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5Q29v
a2llU3RvcmUpOwogICAgICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tp
ZVN0b3JhZ2VdIGRlbGV0ZUNvb2tpZTpjb29raWVdOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMjI2LDkgKzIyOSw5IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENv
b2tpZVN0b3JhZ2UgKnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNv
b2tpZXNQdHItPmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVz
Rm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29v
a2llcywgTlNVUkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8pCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENv
b2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5
ICpjb29raWVzLCBOU1VSTCAqdXJsLCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbykgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1By
aXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNT
RVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29v
a2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFn
ZSkgewogI2lmICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEIDwgMTAxNDAwKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYp
CiAgICAgICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQ
cm9wZXJ0aWVzOildKQpAQCAtMjU1LDIxICsyNTgsMjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENv
b2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5
ICoKICNlbmRpZgogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3Qg
T3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJh
eSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVT
dG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25h
bDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOwotICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lz
SW5NZW1vcnlDb29raWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tp
ZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVm
YXVsdCk7CisgICAgfQogCiAgICAgLy8gRklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQ
Q29va2llU3RvcmFnZSBvYmplY3QgZWFjaCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tp
ZSBqYXIuCiAgICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBh
IE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQ
Q29va2llU3RvcmFnZT4gbnNDb29raWVTdG9yYWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0
b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0p
OwotICAgIHJldHVybiBjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBm
aXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9y
VVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8p
OwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAq
dW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewot
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpKTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVz
IGNvdW50XTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0p
OwogCkBAIC0zMDIsMjcgKzMwNiwyNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRl
ckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJl
dHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJM
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91
bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAm
JiBzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91
bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAg
ICByZXR1cm4gbmlsOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5V
U0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5k
aWYKLSAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCku
Z2V0KCksIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCk7CiB9CiAKLWVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVI
VFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRl
SFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAgc2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25s
eSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lU
UCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8
IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lU
UCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2Ft
ZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAo
IVtjb29raWVzIGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8v
IFJldHVybiBhIG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRl
ciB3b3VsZCBjcmVhdGUgYmVsb3cuCiAKQEAgLTM3NCwyMiArMzc3LDIyIEBAIHN0YXRpYyB2b2lk
IGRlbGV0ZUFsbEhUVFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFn
ZSkKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAog
ewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vz
c2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05v
dEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9
CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRB
c2tJVFApIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9u
bHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFAp
OwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9y
U2Vzc2lvbigqdGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFBy
b3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHku
ZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVy
RmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JT
ZXNzaW9uKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1l
U2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQs
IGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJv
eHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRp
Zmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNr
SVRQIHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxl
Z2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNDU3LDcgKzQ2MCw3IEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVz
Rm9yVVJMKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBzaG91bGRBc2tJVFApOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJM
KGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFz
a0lUUCk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdD
b29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewpAQCAtNTE4LDcgKzUyMSw3IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBob3N0CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9z
dG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNv
b2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1By
aXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNT
RVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29v
a2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogCkBAIC01NjYsNCArNTY5LDEwMSBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50
KQogICAgIFtzdG9yYWdlIF9zYXZlQ29va2llc107CiB9CiAKKyNpZiBIQVZFKENGTkVUV09SS19D
T09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmICht
X2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rp
ZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzID0gdHJ1ZTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkg
X3NldENvb2tpZXNBZGRlZEhhbmRsZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqIG5zQ29v
a2llcywgTlNVUkwgKnVybEZvckFkZGVkQ29va2llcykgeworICAgICAgICBWZWN0b3I8Q29va2ll
PiBjb29raWVzID0gbnNDb29raWVzVG9Db29raWVWZWN0b3IobnNDb29raWVzKTsKKyAgICAgICAg
YXV0byBob3N0ID0gVVJMKHVybEZvckFkZGVkQ29va2llcykuaG9zdCgpLnRvU3RyaW5nKCk7Cisg
ICAgICAgIEFTU0VSVCghaG9zdC5pc051bGwoKSk7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tp
ZUNoYW5nZU9ic2VydmVycy5maW5kKGhvc3QpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVD
aGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAo
YXV0byogb2JzZXJ2ZXIgOiBpdC0+dmFsdWUpCisgICAgICAgICAgICBvYnNlcnZlci0+Y29va2ll
c0FkZGVkKGhvc3QsIGNvb2tpZXMpOworICAgIH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpXTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxl
cjpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICosIGJvb2wgLypkZWxldGVkQWxsQ29va2llcyov
KSB7CisgICAgICAgIGZvciAoYXV0byYgb2JzZXJ2ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZl
cnMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBvYnNlcnZl
cnMpCisgICAgICAgICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNEZWxldGVkKCk7CisgICAgICAg
IH0KKyAgICB9IG9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp1bnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZO
ZWNlc3NhcnkoKQoreworICAgIGlmICghbV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzQWRkZWRI
YW5kbGVyOm5pbCBvblF1ZXVlOm5pbF07CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29r
aWVzRGVsZXRlZEhhbmRsZXI6bmlsIG9uUXVldWU6bmlsXTsKKyAgICBbbnNDb29raWVTdG9yYWdl
KCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczpuaWxdOworICAgIG1fZGlk
UmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgPSBmYWxzZTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29r
aWVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBy
ZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7CisKKyAgICBhdXRvJiBv
YnNlcnZlcnMgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5lbnN1cmUoaG9zdCwgW10geworICAg
ICAgICByZXR1cm4gSGFzaFNldDxDb29raWVDaGFuZ2VPYnNlcnZlcio+IHsgfTsKKyAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CisgICAgaWYgKCFvYnNlcnZlcnMuYWRkKCZvYnNlcnZlcikuaXNOZXdF
bnRyeSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNv
b2tpZUNoYW5nZXMpCisgICAgICAgIG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2Vz
ID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAgIGlmIChbbV9zdWJz
Y3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgY29udGFpbnNPYmplY3Q6KE5TU3RyaW5nICop
aG9zdF0pCisgICAgICAgIHJldHVybjsKKworICAgIFttX3N1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopaG9zdF07CisgICAgW25zQ29va2llU3Rv
cmFnZSgpIF9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6bV9zdWJzY3JpYmVk
RG9tYWluc0ZvckNvb2tpZUNoYW5nZXMuZ2V0KCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2ll
Q2hhbmdlT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpCit7
CisgICAgYm9vbCBzdWJzY3JpYmVkVVJMc0NoYW5nZWQgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8m
IGhvc3QgOiBob3N0cykgeworICAgICAgICBhdXRvIGl0ID0gbV9jb29raWVDaGFuZ2VPYnNlcnZl
cnMuZmluZChob3N0KTsKKyAgICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJz
LmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYgb2JzZXJ2ZXJz
ID0gaXQtPnZhbHVlOworICAgICAgICBvYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CisgICAg
ICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2Nvb2tpZUNoYW5n
ZU9ic2VydmVycy5yZW1vdmUoaXQpOworICAgICAgICAgICAgW21fc3Vic2NyaWJlZERvbWFpbnNG
b3JDb29raWVDaGFuZ2VzIHJlbW92ZU9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICAgICAg
ICAgIHN1YnNjcmliZWRVUkxzQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKHN1YnNjcmliZWRVUkxzQ2hhbmdlZCkKKyAgICAgICAgW25zQ29va2llU3RvcmFnZSgpIF9z
ZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6bV9zdWJzY3JpYmVkRG9tYWluc0Zv
ckNvb2tpZUNoYW5nZXMuZ2V0KCldOworfQorCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBO
U0FycmF5ICpuc0Nvb2tpZXMgPSBbbnNDb29raWVTdG9yYWdlKCkgX2dldENvb2tpZXNGb3JEb21h
aW46KE5TU3RyaW5nICopaG9zdF07CisgICAgVmVjdG9yPENvb2tpZT4gZG9tQ29va2llczsKKyAg
ICBkb21Db29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNDb29raWVzLmNvdW50KTsKKyAg
ICBmb3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUgaW4gbnNDb29raWVzKSB7CisgICAgICAgIGlm
ICghbnNDb29raWUuSFRUUE9ubHkpCisgICAgICAgICAgICBkb21Db29raWVzLnVuY2hlY2tlZEFw
cGVuZChuc0Nvb2tpZSk7CisgICAgfQorICAgIGRvbUNvb2tpZXMuc2hyaW5rVG9GaXQoKTsKKyAg
ICByZXR1cm4gZG9tQ29va2llczsKK30KKworLy8gRklYTUU6IFRoaXMgY2FuIGV2ZW50dWFsbHkg
Z29lcyBhd2F5LCB0aGlzIGlzIG1lcmVseSB0byBlbnN1cmUgYSBzbW9vdGggdHJhbnNpdGlvbiB0
byB0aGUgbmV3IEFQSS4KK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdXBwb3J0c0Nvb2tp
ZUNoYW5nZUxpc3RlbmVyQVBJKCkgY29uc3QKK3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzdXBw
b3J0c0FQSSA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6KV07CisgICAgcmV0dXJuIHN1
cHBvcnRzQVBJOworfQorCisjZW5kaWYgLy8gSEFWRShDRk5FVFdPUktfQ09PS0lFX0NIQU5HRV9M
SVNURU5FUl9BUEkpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jcHAKaW5kZXggZTgxNzM0NGYxOWQuLjQ1OTljYTIzMjIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcApAQCAtMTI0LDYgKzEyNCwxMyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKCkKICAgICBmb3IgKGF1dG8m
IHBvcnQgOiBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0cykKICAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS5tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgpLmRpZENsb3NlTWVzc2FnZVBvcnQocG9ydCk7
CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIGlmICghbV9ob3N0c1dpdGhDb29raWVM
aXN0ZW5lcnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gaG9zdHNXaXRoQ29va2llTGlzdGVu
ZXJzID0gY29weVRvVmVjdG9yKG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzKTsKKyAgICAgICAg
dW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhob3N0c1dpdGhDb29raWVM
aXN0ZW5lcnMpOworICAgIH0KKyNlbmRpZgorCiAjaWYgVVNFKExJQldFQlJUQykKICAgICBpZiAo
bV9ydGNQcm92aWRlcikKICAgICAgICAgbV9ydGNQcm92aWRlci0+Y2xvc2UoKTsKQEAgLTYzMyw2
ICs2NDAsNDUgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29v
a2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGMKICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQogCisjaWYgRU5BQkxFKENP
T0tJRV9DQUNIRSkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNvb2tp
ZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOworICAgIGlmICghbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKworICAg
IGlmIChzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgQVNT
RVJUKCFtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVycy5jb250YWlucyhob3N0KSk7CisgICAgICAg
IG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLmFkZChob3N0KTsKKyAgICAgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5zdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMo
KnRoaXMsIGhvc3QpOworICAgIH0KKworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbi0+ZG9tQ29va2llc0Zvckhvc3QoaG9zdCkpOworfQorCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmlj
YXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0cykKK3sKKyAgICBXVEZMb2dBbHdheXMo
Ik5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnN1YnNjcmliZUZyb21Db29raWVDaGFu
Z2VOb3RpZmljYXRpb25zKCkgJWxkIGhvc3RzIiwgaG9zdHMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1
dG8mIGhvc3QgOiBob3N0cykgeworICAgICAgICBBU1NFUlQobV9ob3N0c1dpdGhDb29raWVMaXN0
ZW5lcnMuY29udGFpbnMoaG9zdCkpOworICAgICAgICBtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVy
cy5yZW1vdmUoaG9zdCk7CisgICAgfQorCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+
c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhvc3RzKTsK
K30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0FkZGVkKGNv
bnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMp
Cit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbjo6Q29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpLCAwKTsKK30KKwordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIGNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tpZXNEZWxl
dGVkKCksIDApOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQogewogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDg2Y2M2MGQxYTk5Li40M2YxNDcwNGZjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
c3NhZ2VQb3J0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZv
cm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJv
Y2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CkBAIC04Nyw2ICs4OCw5IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAg
ICAgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4KICNp
ZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICAsIHB1YmxpYyBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6Q2xpZW50CisjZW5kaWYKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQor
ICAgICwgcHVibGljIFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9ic2VydmVyCiAjZW5kaWYKICAgICAs
IElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTI2Niw2ICsyNzAsMTUgQEAg
cHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG5leHRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyKEZ1bmN0
aW9uPHZvaWQoKT4mJik7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQgdW5z
dWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaG9zdHMpOworICAgIHZvaWQgZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0
LCBib29sIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpPiYmKTsKKworICAgIC8v
IFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9ic2VydmVyLgorICAgIHZvaWQgY29va2llc0FkZGVkKGNv
bnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBmaW5hbDsK
KyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCkgZmluYWw7CisjZW5kaWYKKwogICAgIHN0cnVjdCBS
ZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIgewogICAgICAgICBSZXNvdXJjZU5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2
aXR5VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImKSA9IGRlZmF1
bHQ7CkBAIC0zMjksNiArMzQyLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX1JUQykKICAg
ICBOZXR3b3JrTUROU1JlZ2lzdGVyIG1fbWRuc1JlZ2lzdGVyOwogI2VuZGlmCisjaWYgRU5BQkxF
KENPT0tJRV9DQUNIRSkKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0c1dpdGhDb29raWVMaXN0
ZW5lcnM7CisjZW5kaWYKIAogICAgIGJvb2wgbV9jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3NFbmFibGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggNDNiNWY2NzRlNTUuLjRmNGZjMjVmMjNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTM0LDYgKzM0LDExIEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBT
dGFydERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1h
aW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAKKyNpZiBF
TkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIFVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlm
aWNhdGlvbnMoVmVjdG9yPFN0cmluZz4gaG9zdHMpCisgICAgRG9tQ29va2llc0Zvckhvc3QoU3Ry
aW5nIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKSAtPiAo
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyNlbmRpZgorCiAg
ICAgQ29va2llc0ZvckRPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNv
cmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCiAgICAgU2V0Q29va2llc0Zy
b21ET00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNp
dGVJbmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCwgU3RyaW5nIGNvb2tpZVN0cmluZykKICAgICBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgLT4gKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDgyZGIwMTJkZTYw
Li5jYTUwNWVlNWVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9t
ZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5
CkBAIC02MjEsNiArNjIxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAg
ICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2Vi
Q29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyc6IFsnPFdlYkNvcmUvTWVkaWFQbGF5
ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OklTT1dlYlZUVEN1ZSc6IFsnPFdlYkNvcmUvSVNP
VlRUQ3VlLmg+J10sCisgICAgICAgICdzdHJ1Y3QgV2ViQ29yZTo6Q29va2llJzogWyc8V2ViQ29y
ZS9Db29raWUuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCc6
IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6
OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBb
JyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGI2NGExZjdkNTJmLi44NGRmNDk0YTE2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC01NSw2ICs1NSwx
NCBAQCBIVFRQU1VwZ3JhZGVFbmFibGVkOgogICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAi
QXV0b21hdGljIEhUVFBTIHVwZ3JhZGUgZm9yIGtub3duIHN1cHBvcnRlZCBzaXRlcyIKICAgIGNh
dGVnb3J5OiBleHBlcmltZW50YWwKIAorSW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkOgorICAg
dHlwZTogYm9vbAorICAgZGVmYXVsdFZhbHVlOiB0cnVlCisgICBjb25kaXRpb246IEVOQUJMRShD
T09LSUVfQ0FDSEUpCisgICBodW1hblJlYWRhYmxlTmFtZTogIkluLVByb2Nlc3MgQ29va2llIENh
Y2hlIgorICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiSW4tUHJvY2VzcyBET00gQ29va2ll
IENhY2hlIgorICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAorCiBUaGlyZFBhcnR5SWZyYW1lUmVk
aXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgICB0eXBlOiBib29sCiAgICBkZWZhdWx0VmFsdWU6IHRy
dWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0CmluZGV4IDc0ODk0YmQyN2JhLi5hNWQwYmUxNDI3MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
CkBAIC02MjQsNiArNjI0LDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3BwCiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29udGV4dE1lbnUuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUu
Y3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGUxZmM2ZjczNzJiLi5kMjRhODA0OGUzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dApAQCAtNjEzLDYgKzYxMyw3IEBAIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tCiAKIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0
Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KK1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJD
b29raWVDYWNoZUNvY29hLm1tCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29h
Lm1tCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3Bw
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGQ0ODg1YjQ2MzJkLi4xYmU3N2M4Yjc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NDMsNiArOTQzLDcgQEAKIAkJNDY2QkMw
M0MxRkEyNjZEQTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjZCQzAzOTFGQTI2
NkM5MDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCAqLzsgfTsKIAkJ
NDY3MUZGMUYyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcxRkYxRDIzMjE3
RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJNDY3RTQz
RTgyMjQzRkY3RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdFNDNFNzIyNDNG
RjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLzsgfTsKKwkJ
NDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwOUE3QTIzRDkyMjUzMDBDMjk3
RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLzsgfTsKIAkJNDZBMkI2MDkxRTU2NzZBNjAwQzNERURB
IC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZBMkI2MDcxRTU2NzVBMjAwQzNERURB
IC8qIEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5oICovOyB9OwogCQk0NkIw
NTI0NzIyNjY4RDg1MDAyNjVCOTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nl
c3NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NkIwNTI0NDIyNjY4RDIzMDAyNjVCOTcgLyogV2ViRGV2aWNlT3JpZW50YXRpb25BbmRN
b3Rpb25BY2Nlc3NDb250cm9sbGVyLmggKi87IH07CiAJCTQ2QkVCNkQ3MjJGQjlCRDcwMDI2OTg2
NyAvKiBTdG9yYWdlQXJlYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDZCRUI2RDUyMkZCOUJENjAwMjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggKi87IH07
CkBAIC0zNDg0LDYgKzM0ODUsOCBAQAogCQk0NjcxRkYxRDIzMjE3RUZGMDAxQjY0QzcgLyogV2Vi
UmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MUZGMUUyMzIxN0VGRjAw
MUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlByb2Nlc3NEYXRhU3Rv
cmVQYXJhbWV0ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODA5QTdBMjNE
OTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJDb29raWVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QTIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlz
aW9uYWxQYWdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvdmlz
aW9uYWxQYWdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUIy
MUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZBMkI2MDYxRTU2NzVBMjAwQzNERURBIC8qIEJhY2tn
cm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQyMiw2ICs4NDI1LDggQEAKIAkJCQlC
QzcyQjlGOTExRTY0NzZCMDAxRUI0RUEgLyogV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCAqLywK
IAkJCQk1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovLAog
CQkJCTUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovLAorCQkJ
CTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8sCisJCQkJ
NDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi8sCiAJCQkJNUM3
RkI0NkUyMUU5N0MwQjAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5jcHAgKi8sCiAJCQkJNUM3RkI0
NkYyMUU5N0MwQzAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5oICovLAogCQkJCTFBNUIxQzUyMTg5
ODdFREYwMDRGQ0Y5QiAvKiBXZWJEb2N1bWVudExvYWRlci5jcHAgKi8sCkBAIC0xMDc5MCw2ICsx
MDc5NSw3IEBACiAJCQkJMUEwNDNGNkExMjUxNEQ4QjAwRkZCRkI1IC8qIFdlYlByb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMzA2ODI0MTI1QTZCOTQwMEU3
MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBXZWJD
b29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzMDY2QkYxMjVBNDQyMTAwRTcxMjc4
IC8qIFdlYlByb2Nlc3NNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNEQyMUIxQTQ5
MTRBMzAwQzdGMTUyIC8qIFdlYlByb2Nlc3NQb29sLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0
RDIyODFBNDkxNkMyMDBDN0YxNTIgLyogV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAyOGJjMTJjMzQyMy4uMjllN2Ex
OGMyNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIlN0b3JhZ2VBcmVhTWFwLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWFNYXBNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiV2Vi
Q29va2llSmFyLmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVk
ZSAiV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyTWVzc2FnZXMuaCIKQEAgLTIzNCw2ICsyMzUsMTggQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNvb2tpZUFjY2VwdFBvbGljeUNoYW5nZWQoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeQogICAgIG1fY29va2llQWNjZXB0UG9saWN5ID0gbmV3UG9saWN5OwogfQogCisjaWYg
RU5BQkxFKENPT0tJRV9DQUNIRSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29r
aWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYgY29va2llcykKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jb29raWVKYXIoKS5j
b29raWVzQWRkZWQoaG9zdCwgY29va2llcyk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
Y29va2llSmFyKCkuY29va2llc0RlbGV0ZWQoKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoQ09PS0lF
X0NBQ0hFKQorCiAjaWYgRU5BQkxFKFNIQVJFQUJMRV9SRVNPVVJDRSkKIHZvaWQgTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uOjpkaWRDYWNoZVJlc291cmNlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA1MWZkZjM1NDUyNC4uZmI4MTFlNDg2MjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJj
ZVJlc3BvbnNlOworc3RydWN0IENvb2tpZTsKIHN0cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7
CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBlbnVtIGNsYXNzIEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kgOiB1aW50OF90OwpAQCAtODMsNiArODQsMTEgQEAgcHVibGljOgogCiAgICAg
Ym9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkK
KyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAyYWE2ODg2ZTU3YS4uNTQ4MGQ1
OTNlNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMx
LDYgKzMxLDExIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgU2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSk7CiAgICAgQ29va2ll
QWNjZXB0UG9saWN5Q2hhbmdlZChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSBwb2xpY3kpOwogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICBDb29raWVz
QWRkZWQoU3RyaW5nIGhvc3QsIFZlY3RvcjxzdHJ1Y3QgV2ViQ29yZTo6Q29va2llPiBjb29raWVz
KTsKKyAgICBDb29raWVzRGVsZXRlZCgpOworI2VuZGlmCisKICAgICBDaGVja1Byb2Nlc3NMb2Nh
bFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBv
cnQpIC0+IChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkg
aGFzQWN0aXZpdHkpIEFzeW5jCiAgICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNv
Y29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kYTVjYTg2Nzcy
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
Y29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0KQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyNpbXBvcnQg
IldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJDb29r
aWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2luTWVtb3J5
U3RvcmFnZVNlc3Npb24pIHsKKyAgICAgICAgU3RyaW5nIHNlc3Npb25OYW1lID0gbWFrZVN0cmlu
ZygiV2ViS2l0SW5Qcm9jZXNzU3RvcmFnZS0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOworICAg
ICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAg
ICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29w
eUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkp
KTsKKyAgICAgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpLCBXVEZN
b3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSwgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpJc0luTWVtb3J5Q29va2llU3RvcmU6Olllcyk7CisgICAgfQorICAgIHJldHVy
biAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMxMjZmZWUyNzBkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCkBAIC0wLDAg
KzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxF
KENPT0tJRV9DQUNIRSkKKyNpbmNsdWRlICJXZWJDb29raWVDYWNoZS5oIgorCisjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitXZWJDb29raWVDYWNo
ZTo6V2ViQ29va2llQ2FjaGUoKQoreworfQorCitXZWJDb29raWVDYWNoZTo6fldlYkNvb2tpZUNh
Y2hlKCkKK3sKK30KKworLy8gRklYTUU6IFRoaXMgY2FuIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZCwg
dGhpcyBpcyBtZXJlbHkgdG8gZW5zdXJlIGEgc21vb3RoIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBB
UEkuCitib29sIFdlYkNvb2tpZUNhY2hlOjppc0Z1bmN0aW9uYWwoKQoreworICAgIHJldHVybiBp
bk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgp
OworfQorCitTdHJpbmcgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQoreworICAgIFN0cmluZyBob3N0
ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOworICAgIGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0
b3JhZ2UuY29udGFpbnMoaG9zdCkpIHsKKyAgICAgICAgVmVjdG9yPENvb2tpZT4gY29va2llczsK
KyAgICAgICAgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMgPSB0cnVl
OworICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRvbUNvb2tpZXNGb3JIb3N0KHVybC5ob3N0KCkudG9TdHJp
bmcoKSwgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEb21Db29raWVzRm9ySG9zdDo6UmVwbHkoY29v
a2llcyksIDApKQorICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgV1RGTG9nQWx3YXlz
KCJDSFJJUzogR290ICVsdSBjb29raWVzIGZyb20gdGhlIG5ldHdvcmsgcHJvY2VzcyBmb3IgJyVz
JyIsIGNvb2tpZXMuc2l6ZSgpLCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIHBydW5lQ2FjaGVJZk5lY2Vzc2FyeSgpOworICAgICAgICBtX2hvc3RzV2l0aElu
TWVtb3J5U3RvcmFnZS5hZGQoaG9zdCk7CisgICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29v
a2llcykKKyAgICAgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29v
a2llKTsKKyAgICB9CisgICAgV1RGTG9nQWx3YXlzKCJDSFJJUzogUmV0dXJuaW5nIGNvb2tpZXMg
dG8gJyVzJyBmcm9tIGNhY2hlIiwgdXJsLmhvc3QoKS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuY29va2llc0ZvckRPTShmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJl
Q29va2llcywgU2hvdWxkQXNrSVRQOjpObykuZmlyc3Q7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2Fj
aGU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykK
K3sKKyAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBpZiAobV9o
b3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIGluTWVtb3J5
U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6Ok5vLCBjb29raWVTdHJpbmcp
OworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBo
b3N0LCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcykKK3sKKyAgICBpZiAoIW1faG9zdHNX
aXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXVEZMb2dBbHdheXMoIkNIUklTOiBXZWJDb29raWVDYWNoZTo6Y29va2llc0FkZGVkKCVzKSAl
bHUgY29va2llcyIsIGhvc3QudXRmOCgpLmRhdGEoKSwgY29va2llcy5zaXplKCkpOworCisgICAg
Zm9yIChhdXRvJiBjb29raWUgOiBjb29raWVzKQorICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNz
aW9uKCkuc2V0Q29va2llKGNvb2tpZSk7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tp
ZXNEZWxldGVkKCkKK3sKKyAgICBXVEZMb2dBbHdheXMoIkNIUklTOiBXZWJDb29raWVDYWNoZTo6
Y29va2llc0RlbGV0ZWQoKSIpOworICAgIGNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2Fj
aGU6OmNsZWFyKCkKK3sKKyAgICBXVEZMb2dBbHdheXMoIkNIUklTOiBXZWJDb29raWVDYWNoZTo6
Y2xlYXIoKSIpOworICAgIGF1dG8gaG9zdHNUb1Vuc3Vic2NyaWJlID0gY29weVRvVmVjdG9yKG1f
aG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlKTsKKyAgICBpZiAoIWhvc3RzVG9VbnN1YnNjcmliZS5p
c0VtcHR5KCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6VW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0
aW9ucyhob3N0c1RvVW5zdWJzY3JpYmUpLCAwKTsKKyAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3Rv
cmFnZS5jbGVhcigpOworICAgIG1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbiA9IG51bGxwdHI7Cit9
CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNsZWFyRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3Qp
Cit7CisgICAgYXV0byBpdCA9IG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmZpbmQoaG9zdCk7
CisgICAgaWYgKGl0ID09IG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmVuZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5yZW1vdmUoaXQpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RzVG9SZW1vdmUgeyBob3N0IH07CisgICAgaW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoaG9zdHNUb1JlbW92ZSk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpVbnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGhvc3RzVG9S
ZW1vdmUpLCAwKTsKKworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpwcnVuZUNhY2hlSWZOZWNl
c3NhcnkoKQoreworICAgIC8vIFdlIG1heSB3YW50IHRvIHJhaXNlIHRoaXMgbGltaXQgaWYgd2Ug
c3RhcnQgdXNpbmcgdGhlIGNhY2hlIGZvciB0aGlyZC1wYXJ0eSBpZnJhbWVzLgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBtYXhDYWNoZWRIb3N0cyA9IDU7CisKKyAgICB3aGlsZSAobV9ob3N0
c1dpdGhJbk1lbW9yeVN0b3JhZ2Uuc2l6ZSgpID49IG1heENhY2hlZEhvc3RzKQorICAgICAgICBj
bGVhckZvckhvc3QoKm1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLnJhbmRvbSgpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09PS0lFX0NBQ0hFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJkYWYzZWYxYjE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
Q2FjaGUuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOworZW51bSBjbGFzcyBTaG91bGRBc2tJVFAgOiBib29sOworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRnJhbWU7CisKK2NsYXNzIFdlYkNvb2tpZUNh
Y2hlIHsKK3B1YmxpYzoKKyAgICBXZWJDb29raWVDYWNoZSgpOworICAgIH5XZWJDb29raWVDYWNo
ZSgpOworCisgICAgYm9vbCBpc0Z1bmN0aW9uYWwoKTsKKworICAgIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CisKKyAgICB2b2lkIGNvb2tp
ZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworCisgICAgdm9pZCBjbGVhcigpOworICAg
IHZvaWQgY2xlYXJGb3JIb3N0KGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpOworICAg
IHZvaWQgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9o
b3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09PS0lFX0NBQ0hFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5k
ZXggMzI1ODMwNWM3ODkuLjdlZjI2ZjE1OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODgsNiArODksMjkgQEAgc3RhdGljIGJvb2wgc2hv
dWxkQmxvY2tDb29raWVzKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9y
Q29va2llcywKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKK2Jvb2wgV2Vi
Q29va2llSmFyOjppc0VsaWdpYmxlRm9yQ2FjaGUoV2ViRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwm
IGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKSBjb25zdAorewor
ICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmNvcmVQYWdlKCkg
OiBudWxscHRyOworICAgIGlmICghcGFnZSB8fCAhcGFnZS0+c2V0dGluZ3MoKS5pblByb2Nlc3ND
b29raWVDYWNoZUVuYWJsZWQoKSkgeworICAgICAgICBXVEZMb2dBbHdheXMoIkluLVByb2Nlc3Mg
Y29va2llIGNhY2hlIGlzIGRpc2FibGVkIHZpYSBwcmVmZXJlbmNlcyIpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFtX2NhY2hlLmlzRnVuY3Rpb25hbCgpKSB7Cisg
ICAgICAgIFdURkxvZ0Fsd2F5cygiSW4tUHJvY2VzcyBjb29raWUgY2FjaGUgaXMgZGlzYWJsZWQg
YmVjYXVzZSB0aGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgaXQgeWV0Iik7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBGb3Igbm93LCB3ZSBvbmx5IGNhY2hlIGNvb2tp
ZXMgZm9yIGZpcnN0LXBhcnR5IGNvbnRlbnQuIFRoaXJkLXBhcnR5IGNvb2tpZSBjYWNoaW5nIGlz
IGEgYml0IG1vcmUgY29tcGxpY2F0ZWQgZHVlIHRvIHBhcnRpdGlvbmluZyBhbmQgc3RvcmFnZSBh
Y2Nlc3MuCisgICAgUmVnaXN0cmFibGVEb21haW4gcmVzb3VyY2VEb21haW4geyByZXNvdXJjZVVS
TCB9OworICAgIGlmIChyZXNvdXJjZURvbWFpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBmcmFtZS5pc01haW5GcmFtZSgpIHx8IFJlZ2lzdHJhYmxlRG9t
YWluIHsgZmlyc3RQYXJ0eUZvckNvb2tpZXMgfSA9PSByZXNvdXJjZURvbWFpbjsKK30KKyNlbmRp
ZgorCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkp
IDogbnVsbHB0cjsKQEAgLTEwMCwxMiArMTI0LDE5IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNv
b2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCisgICAgYXV0byBzYW1lU2l0ZUluZm8gPSBD
b29raWVKYXI6OnNhbWVTaXRlSW5mbyhkb2N1bWVudCk7CisgICAgYXV0byBpbmNsdWRlU2VjdXJl
Q29va2llcyA9IENvb2tpZUphcjo6c2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQs
IHVybCk7CiAgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBhdXRv
IHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAorI2lmIEVOQUJMRShD
T09LSUVfQ0FDSEUpCisgICAgaWYgKGlzRWxpZ2libGVGb3JDYWNoZSgqd2ViRnJhbWUsIGRvY3Vt
ZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCkpCisgICAgICAgIHJldHVybiBtX2NhY2hl
LmNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOworI2VuZGlm
CisKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vz
c2VkID0gZmFsc2U7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0
UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhkb2N1bWVudCwgdXJsKSwgc2hvdWxk
QXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5
KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICByZXR1cm4gY29va2llU3RyaW5nOwpAQCAtMTIzLDExICsxNTQsMzkgQEAg
dm9pZCBXZWJDb29raWVKYXI6OnNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBVUkwmIHVybCwgY29uc3QKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKKyAgICBh
dXRvIHNhbWVTaXRlSW5mbyA9IENvb2tpZUphcjo6c2FtZVNpdGVJbmZvKGRvY3VtZW50KTsKICAg
ICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOwogICAgIGF1dG8gcGFnZUlEID0g
d2ViRnJhbWUtPnBhZ2UoKS0+aWRlbnRpZmllcigpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURP
TShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQp
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29v
a2llU3RyaW5nKSwgMCk7CisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICBpZiAoaXNFbGln
aWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwg
dXJsKSkKKyAgICAgICAgbV9jYWNoZS5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29r
aWVTdHJpbmcpOworI2VuZGlmCisKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIGNvb2tpZVN0cmluZyksIDApOworfQorCisj
aWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKK3ZvaWQgV2ViQ29va2llSmFyOjpjb29raWVzQWRkZWQo
Y29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2ll
cykKK3sKKyAgICBtX2NhY2hlLmNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKK30KKwordm9p
ZCBXZWJDb29raWVKYXI6OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBtX2NhY2hlLmNvb2tpZXNE
ZWxldGVkKCk7Cit9CisKK3ZvaWQgV2ViQ29va2llSmFyOjpjbGVhckNhY2hlKCkKK3sKKyAgICBt
X2NhY2hlLmNsZWFyKCk7Cit9CisKK3ZvaWQgV2ViQ29va2llSmFyOjpjbGVhckNhY2hlRm9ySG9z
dChjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgbV9jYWNoZS5jbGVhckZvckhvc3QoaG9zdCk7
CiB9CisjZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKIAogYm9vbCBXZWJDb29raWVKYXI6
OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggNTI5
NDhhOTFkZTUuLmRjMzg1NjFlZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuaApAQCAtMjUsOCArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNl
CiAKKyNpbmNsdWRlICJXZWJDb29raWVDYWNoZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2ll
SmFyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDb29raWU7Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb29raWVKYXIgZmluYWwgOiBwdWJsaWMgV2ViQ29y
ZTo6Q29va2llSmFyIHsKQEAgLTM5LDggKzQ0LDIyIEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8
U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3QgZmluYWw7CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNv
cmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBjb25z
dCBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgZmluYWw7CisKKyNpZiBFTkFC
TEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9z
dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxl
dGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJDb29raWVKYXIoKTsKKworI2lmIEVO
QUJMRShDT09LSUVfQ0FDSEUpCisgICAgdm9pZCBjbGVhckNhY2hlKCkgZmluYWw7CisgICAgdm9p
ZCBjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRWxp
Z2libGVGb3JDYWNoZShXZWJGcmFtZSYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNvbnN0OworCisgICAgbXV0YWJsZSBXZWJDb29raWVD
YWNoZSBtX2NhY2hlOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTA4YmNjMTAy
ZWIuLmJkYTFlYWYxZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcApAQCAtNDY2LDcgKzQ2Niw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAg
ICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyPigpLAogICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLAogICAgICAg
ICBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Y3JlYXRlKCp0aGlzKSwKLSAgICAgICAgV2ViQ29v
a2llSmFyOjpjcmVhdGUoKSwKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2ll
SmFyKCksCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50Pigq
dGhpcyksCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpCiAg
ICAgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0YjI0MDli
OTk0ZC4uMjFiNWEyYmMxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTIwNSw2ICsyMDYsNyBAQCBX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlz
cGF0Y2hlcihXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpjcmVhdGUoKSkKICAgICAs
IG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAsIG1fY2Fj
aGVTdG9yYWdlUHJvdmlkZXIoV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAg
ICwgbV9jb29raWVKYXIoV2ViQ29va2llSmFyOjpjcmVhdGUoKSkKICAgICAsIG1fZG5zUHJlZmV0
Y2hIeXN0ZXJlcmlzKFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3Rh
dGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3Rz
LmNsZWFyKCk7IH0pCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXI6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODUz
YzY2MGVjNjQuLjE1OTA5MzYwYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKQEAgLTEyMCw2ICsxMjAsNyBAQCBjbGFzcyBVc2VyRGF0YTsKIGNsYXNzIFdheWxhbmRDb21w
b3NpdG9yRGlzcGxheTsKIGNsYXNzIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk7CiBjbGFzcyBX
ZWJDYWNoZVN0b3JhZ2VQcm92aWRlcjsKK2NsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YTsKIGNsYXNzIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vz
czsKIGNsYXNzIFdlYkZyYW1lOwpAQCAtMjkzLDYgKzI5NCw3IEBAIHB1YmxpYzoKICAgICBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5KiBhdXRvbWF0aW9uU2Vzc2lvblByb3h5KCkgeyByZXR1cm4g
bV9hdXRvbWF0aW9uU2Vzc2lvblByb3h5LmdldCgpOyB9CiAKICAgICBXZWJDYWNoZVN0b3JhZ2VQ
cm92aWRlciYgY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSB7IHJldHVybiBtX2NhY2hlU3RvcmFnZVBy
b3ZpZGVyLmdldCgpOyB9CisgICAgV2ViQ29va2llSmFyJiBjb29raWVKYXIoKSB7IHJldHVybiBt
X2Nvb2tpZUphci5nZXQoKTsgfQogICAgIFdlYlNvY2tldENoYW5uZWxNYW5hZ2VyJiB3ZWJTb2Nr
ZXRDaGFubmVsTWFuYWdlcigpIHsgcmV0dXJuIG1fd2ViU29ja2V0Q2hhbm5lbE1hbmFnZXI7IH0K
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC01NTQsNiArNTU2LDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgUmVmPFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyPiBtX2NhY2hlU3RvcmFn
ZVByb3ZpZGVyOworICAgIFJlZjxXZWJDb29raWVKYXI+IG1fY29va2llSmFyOwogICAgIFdlYlNv
Y2tldENoYW5uZWxNYW5hZ2VyIG1fd2ViU29ja2V0Q2hhbm5lbE1hbmFnZXI7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8TGliV2ViUlRDTmV0d29yaz4gbV9saWJXZWJSVENOZXR3b3JrOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390575</attachid>
            <date>2020-02-12 16:00:08 -0800</date>
            <delta_ts>2020-02-13 14:33:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207593-20200212160007.patch</filename>
            <type>text/plain</type>
            <size>90741</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJkMTIwYWVkNTVjMzVmZmVjODk5YWMz
NTFmNzAwNWI3ZWU4ZjkyZDkuLjg4MTA4ODZhYTlhMTMxMWRmZDQxODM5ZTk3NTZkZjQ5ODNkZTRh
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBjb29raWUgY2Fj
aGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBpbiBtb3N0IGNhc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1OTMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBidWlsZCB0aW1lIGZsYWdzIGZvciBuZXcgZmVh
dHVyZS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVuYWJsZS5oOgorICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybUhhdmUuaDoKKwogMjAyMC0wMi0xMSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IGluLWJhbmQgVlRUIGNhcHRpb25zIHdoZW4g
bG9hZGluZyBtZWRpYSBpbiB0aGUgR1BVIFByb2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYjQ1ZDcyZTI2
MWU0M2I5YzAzYjQ4YTBlYWJhOWZiZDkyY2FlMGYyLi5iNjIxODVjODEyZTYzMWYyOTE2Yjc5ZGE1
MzI3ZDU1NWNjZjBmNDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMjAtMDItMTIg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaW4t
V2ViUHJvY2VzcyBjb29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNv
b2tpZSBpbiBtb3N0IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBp
bi1XZWJQcm9jZXNzIERPTSBjb29raWUgY2FjaGUgZm9yIHNlcnZpbmcgYGRvY3VtZW50LmNvb2tp
ZWAgcmVxdWVzdHMgZnJvbSBKYXZhU2NyaXB0LgorCisgICAgICAgIFRoZSBmaXJzdCB0aW1lIGRv
Y3VtZW50LmNvb2tpZSBpcyBjYWxsZWQgZm9yIGEgZ2l2ZW4gaG9zdCwgdGhlIFdlYlByb2Nlc3Mg
d2lsbCBwdWxsIGluIGFsbCB0aGUKKyAgICAgICAgbm9uLUhUVFBPbmx5IGNvb2tpZXMgZm9yIHRo
YXQgaG9zdCBmcm9tIHRoZSBOZXR3b3JrUHJvY2VzcyAoc3RpbGwgdmlhIHN5bmMgSVBDKSBhbmQg
c3RvcmUgdGhlbQorICAgICAgICBpbiBhbiBpbi1tZW1vcnkgY29va2llIHN0b3JlLiBMYXRlciBk
b2N1bWVudC5jb29raWUgY2FsbHMgZm9yIHRoaXMgaG9zdCBmcm9tIHRoaXMgV2ViUHJvY2Vzcwor
ICAgICAgICB3aWxsIHRoZW4gbGV2ZXJhZ2UgdGhlIGluLW1lbW9yeSBjb29raWUgc3RvcmUgYW5k
IGF2b2lkIGRvaW5nIGEgc3luYyBJUEMgdG8gdGhlIE5ldHdvcmtQcm9jZXNzCisgICAgICAgIGVu
dGlyZWx5LgorCisgICAgICAgIFRvIG1haW50YWluIHRoZSBpbi1wcm9jZXNzIGNvb2tpZSBzdG9y
ZSB1cC10by1kYXRlLCB0aGUgV2ViUHJvY2VzcyBzdWJzY3JpYmUgZm9yIGNvb2tpZS1jaGFuZ2UK
KyAgICAgICAgbm90aWZpY2F0aW9ucyBmcm9tIHRoZSBOZXR3b3JrUHJvY2Vzcywgb25seSBmb3Ig
dGhlIGhvc3RzIGl0IGlzIGludGVyZXN0ZWQgaW4uCisKKyAgICAgICAgSWYgdGhlIHBhZ2UncyBK
YXZhU2NyaXB0IHNldHMgYSBjb29raWUgYnkgc2V0dGluZyBkb2N1bWVudC5jb29raWUsIHdlIHdp
bGwgbm90IGludmFsaWRhdGUgdGhlCisgICAgICAgIGNhY2hlIGZvciBwZXJmb3JtYW5jZSByZWFz
b25zLiBJbnN0ZWFkLCB3ZSBzZXQgdGhlIGNvb2tpZSBpbiBvdXIgaW4tbWVtb3J5IGNvb2tpZSBi
ZWZvcmUKKyAgICAgICAgc2VuZGluZyB0aGUgbmV3IGNvb2tpZSB0byB0aGUgTmV0d29ya1Byb2Nl
c3MuCisKKyAgICAgICAgRm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucywgYW55IHN5bmMgSVBDIHRv
IGEgZ2l2ZW4gaG9zdCB3aWxsIGN1cnJlbnRseSBpbnZhbGlkYXRlIHRoZSBjb29raWUKKyAgICAg
ICAgY2FjaGUgZm9yIHRoaXMgaG9zdC4gVGhpcyBpcyBiZWNhdXNlIHRoaXMgc3luY2hyb25vdXMg
bG9hZCBtYXkgY2F1c2UgY29va2llcyB0byBnZXQgc2V0CisgICAgICAgIHN5bmNocm9ub3VzbHkg
YW5kIHRoZSBwYWdlIGNvdWxkIGFjY2VzcyBkb2N1bWVudC5jb29raWUgcmlnaHQgYWZ0ZXIgdGhl
IHN5bmMgWEhSLiBUaGlzIGJlaGF2aW9yCisgICAgICAgIGlzIGNvdmVyZWQgYnkgdGhlIGZvbGxv
d2luZyBleGlzdGluZyB0ZXN0OgorICAgICAgICAtIGh0dHAvdGVzdHMvY29va2llcy9zeW5jLXho
ci1zZXQtY29va2llLWludmFsaWRhdGVzLWNhY2hlLmh0bWwKKworICAgICAgICBBbm90aGVyIGxp
bWl0YXRpb24gb2YgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGNvb2tpZSBjYWNo
ZSBpcyB0aGF0IGl0IGlzIGN1cnJlbnRseQorICAgICAgICBvbmx5IGxldmVyYWdlZCBmb3IgZmly
c3QgcGFydHkgY29udGVudC4gVGhpcyBpcyBzdWJvcHRpbWFsIGFuZCBjb3VsZCBiZSBpbXByb3Zl
ZCBpbiBhIGxhdGVyCisgICAgICAgIGl0ZXJhdGlvbi4gSG93ZXZlciwgdGhlIGRlZmF1bHQgYmVo
YXZpb3IgaW4gU2FmYXJpIGlzIHRoYXQgdGhpcmQtcGFydHkgaWZyYW1lcyBkbyBub3QgaGF2ZQor
ICAgICAgICBjb29raWUgYWNjZXNzIHVubGVzcyB0aGV5IHJlcXVlc3QgaXQgdXNpbmcgdGhlIHN0
b3JhZ2UgYWNjZXNzIEFQSS4gV2UgYWxzbyBjdXJyZW50bHkgaGF2ZQorICAgICAgICBhIGxpbWl0
IG9mIDUgaG9zdHMgd2l0aCBjYWNoZWQgY29va2llcyBwZXIgV2ViUHJvY2Vzcy4KKworICAgICAg
ICBUZXN0czogaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9k
YWxEaWFsb2cuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50
LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbAorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAqIGxvYWRlci9Db29raWVKYXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KiBwYWdlL01lbW9yeVJlbGVhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZUNyaXRp
Y2FsTWVtb3J5KToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLnlhbWw6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvb2tpZUNoYW5nZU9ic2VydmVyOjp+Q29va2llQ2hhbmdlT2JzZXJ2ZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9y
YWdlIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjp+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpuc0Nvb2tpZXNUb0Nv
b2tpZVZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5z
Q29va2llU3RvcmFnZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpo
dHRwQ29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlbGV0ZUhUVFBDb29raWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzZXRIVFRQQ29va2llc0ZvclVSTCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzRm9yVVJMIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbHRlckNvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclNlc3Npb24gY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVnaXN0ZXJDb29raWVDaGFu
Z2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnVucmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0YXJ0TGlzdGVuaW5nRm9y
Q29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZG9tQ29va2llc0Zvckhv
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdXBwb3J0c0Nv
b2tpZUNoYW5nZUxpc3RlbmVyQVBJIGNvbnN0KToKKwogMjAyMC0wMi0xMSAgUm9iIEJ1aXMgIDxy
YnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEJ1ZyAyMDc0MjQ6IENyYXNoIGluIFdlYkNvcmU6
OlBhcnNlZENvbnRlbnRUeXBlOjpwYXJzZUNvbnRlbnRUeXBlIHdoZW4gcGFyc2luZyBpbnZhbGlk
IE1JTUUgdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggY2E2MzYwYWEzNzUzOWNmNjQ2OTk1MzVl
ZWQwZjIzYWNmODJhZDE5YS4uMWFiMjkwZmZkZTMwYTQ5YTRhNmE2YzlmMjYzMjkxMDczOTNhNGZk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDItMTIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgaW4tV2ViUHJv
Y2VzcyBjb29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBp
biBtb3N0IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQ0ZOZXR3b3Jr
IFNQSSB0byBDRk5ldHdvcmtTUEkuaCBmb3Igb3BlbiBzb3VyY2UgYnVpbGRzIGFuZCBmb3IgdXNp
bmcgcmVzcG9uZHNUb1NlbGVjdG9yLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaDoKKwogMjAyMC0wMi0xMSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgogCiAgICAgICAgIEFYOiBXcm9uZyBpbmNsdWRlcyBmb3IgaW50ZXJuYWwgU0RLCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDNmMjYxMTE3NDBlOWRkMmFjYjEyZTY4NTBiZjExY2E3ZTg4ZjJiMWYuLjQ5ZmYzOTE4NGZj
NzhkNzkzMjlkY2FmY2FhYzFkODFmYzVhNmFjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBjb29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9y
IGRvY3VtZW50LmNvb2tpZSBpbiBtb3N0IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2
MDI3MDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFNlZSBXZWJDb3JlIENoYW5nZUxvZy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkb21Db29raWVz
Rm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojp1bnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNBZGRlZCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRGVsZXRl
ZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToK
KyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBTb3VyY2Vz
LnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmNvb2tpZXNBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6Y29va2llc0RlbGV0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmluTWVtb3J5U3RvcmFnZVNlc3Npb24pOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6aXNGdW5jdGlvbmFsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llQ2FjaGU6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVDYWNoZTo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVDYWNoZTo6Y29va2llc0FkZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2Fj
aGU6OmNvb2tpZXNEZWxldGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmNs
ZWFyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmNsZWFyRm9ySG9zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpwcnVuZUNhY2hlSWZOZWNlc3NhcnkpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29va2llSmFyOjppc0VsaWdpYmxlRm9yQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVKYXI6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNv
b2tpZXNBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llc0RlbGV0
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGVGb3JIb3N0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX292ZXJyaWRkZW5NZWRpYVR5
cGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OldlYlByb2Nlc3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpjb29raWVKYXIpOgorCiAyMDIw
LTAyLTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZp
ZXdlZCwgcmV2ZXJ0IHIyNTU2NjIgYXMgaXQgc2VlbXMgdG8gY2F1c2UgYmxhbmsgdmlld3MgaW4g
U1ZDLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaCBiL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKaW5kZXggZmVkZTI0YmUzNTQ4OGFlMzFmZjIxZjYz
Zjc4NjFmMDUwZGU5MTZjZS4uNTk5YmEzODgyOTgyMTgzNjE3NDYwZjg5ZGQyYzc1NmU5YjVkZjg4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5oCkBAIC03OTcsNiArNzk3LDEwIEBACiAjZGVmaW5l
IEVOQUJMRV9USFJFQURJTkdfR0VORVJJQyAxCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJM
RV9DT09LSUVfQ0FDSEUpICYmIFBMQVRGT1JNKENPQ09BKSAmJiBIQVZFKENGTkVUV09SS19DT09L
SUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyNkZWZpbmUgRU5BQkxFX0NPT0tJRV9DQUNIRSAxCisj
ZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9HQ19WQUxJREFUSU9OKSAmJiAhZGVmaW5lZChO
REVCVUcpCiAjZGVmaW5lIEVOQUJMRV9HQ19WQUxJREFUSU9OIDEKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bUhhdmUuaAppbmRleCBkMjRiODVlMmRhMjQxMzQ2ZTAwYjczMzdhNTk2ODNiZTYxMDIwYzI4Li5j
YmQ4ZTU0MGVjMGY2ZDU0MTliZDFkMmRjNjM1ZDU2YWZhOThkMzVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhh
dmUuaApAQCAtNTU2LDYgKzU1NiwxMCBAQAogI2RlZmluZSBIQVZFX0RFVklDRV9JREVOVElUWSAx
CiAjZW5kaWYKIAorI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxNjAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQorI2RlZmluZSBIQVZFX0NGTkVUV09S
S19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSAxCisjZW5kaWYKKwogI2lmIChQTEFURk9STShN
QUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQTEFU
Rk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBIQVZFX0RBVEFfUFJPVEVDVElPTl9LRVlDSEFJTiAx
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgK
aW5kZXggNjY1OGU3MjhjOWM5ODJhNmZmODJjMGNhNDE2NDhjMmQ0ZGMxMTQ0MC4uYTkyMDc2MGIz
ZDY5YzIzYmU4YjY4OWU1NmY0OGZkZDdkOGM2NDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTM5MSw2ICszOTEsMTAgQEAgV1RGX0VYVEVS
Tl9DX0VORAogCiBAaW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKCkKICsgKHZvaWQpX3Nl
dFNoYXJlZEhUVFBDb29raWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdlICopc3RvcmFnZTsK
Ky0gKHZvaWQpX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczooTlNTZXQ8TlNT
dHJpbmcqPiogX19udWxsYWJsZSlkb21haW5MaXN0OworLSAodm9pZClfc2V0Q29va2llc0FkZGVk
SGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBDb29raWUqPiogYWRkZWRD
b29raWVzLCBOU1VSTCogX19udWxsYWJsZSB1cmxGb3JBZGRlZENvb2tpZXMpKWNvb2tpZXNBZGRl
ZEhhbmRsZXIgb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdCBfX251bGxhYmxlKXF1ZXVlOworLSAo
dm9pZClfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVyOih2b2lkKF5fX251bGxhYmxlKShOU0FycmF5
PE5TSFRUUENvb2tpZSo+KiBfX251bGxhYmxlIGRlbGV0ZWRDb29raWVzLCBib29sIGRlbGV0ZWRB
bGxDb29raWVzKSljb29raWVzRGVsZXRlZEhhbmRsZXIgb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVf
dCBfX251bGxhYmxlKXF1ZXVlOworLSAoTlNBcnJheSogX19udWxsYWJsZSlfZ2V0Q29va2llc0Zv
ckRvbWFpbjooTlNTdHJpbmcqKWRvbWFpbjsKIEBlbmQKIAogQGludGVyZmFjZSBOU1VSTFJlc3Bv
bnNlICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4NThlODgzMjI0NGRmMjhhYTQ1MTIw
NDcxZGQwZTI5YTgxNDEzZTdmLi5iYWJlNWQ2MzVkYzExNDA5Y2VhZDEyMTA0OTcxNjgwOGE1Zjcy
Y2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcxOTUsMTEgKzcxOTUsMTggQEAgdm9p
ZCBEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKICAgICBtX2NhY2hlZERPTUNv
b2tpZXMgPSBTdHJpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseSgpCit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFN5bmNocm9ub3VzIHJlc291cmNlcyBsb2FkaW5n
IGNhbiBzZXQgY29va2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVzIGNhY2hlCiAgICAg
Ly8gaW4gdGhpcyBjYXNlLCB0byBiZSBzYWZlLgogICAgIGludmFsaWRhdGVET01Db29raWVDYWNo
ZSgpOworCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICBpZiAoYXV0byogcGFnZSA9IHRo
aXMtPnBhZ2UoKSkKKyAgICAgICAgcGFnZS0+Y29va2llSmFyKCkuY2xlYXJDYWNoZUZvckhvc3Qo
dXJsLmhvc3QoKS50b1N0cmluZygpKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHVybCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBEb2N1bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KERP
TVdyYXBwZXJXb3JsZCYgd29ybGQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDU2MjAyOTFhYmVi
M2UwYzk5ZGU5NjU2NWQzMWRhZGMyOTUzNjNjMDAuLjJmYzRkYzY5Y2UxZmE2MTRhZDk0MzhjMWY4
N2Q4YTVmMDQxNGEzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNjQwLDcgKzE2NDAsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q2FjaGVkRE9NQ29va2llcyhjb25zdCBTdHJpbmcmKTsK
ICAgICBib29sIGlzRE9NQ29va2llQ2FjaGVWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29va2ll
Q2FjaGVFeHBpcnlUaW1lci5pc0FjdGl2ZSgpOyB9CiAgICAgdm9pZCBpbnZhbGlkYXRlRE9NQ29v
a2llQ2FjaGUoKTsKLSAgICB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKSBmaW5h
bDsKKyAgICB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgVVJMJikgZmlu
YWw7CiAKICAgICBib29sIGNhbk5hdmlnYXRlSW50ZXJuYWwoRnJhbWUmIHRhcmdldEZyYW1lKTsK
ICAgICBib29sIGlzTmF2aWdhdGlvbkJsb2NrZWRCeVRoaXJkUGFydHlJRnJhbWVSZWRpcmVjdEJs
b2NraW5nKEZyYW1lJiB0YXJnZXRGcmFtZSwgY29uc3QgVVJMJiBkZXN0aW5hdGlvblVSTCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggNTg4
MmUxYWIxYWI5M2IzNzNlYTIzYTZhMDI4MjQxZGVlZjUzMzg2NC4uMzJhZjc0NDgxNDFhNzkxYzgz
YzZmMjkxZWNlZGRhZGEwMWQxOWE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6ZGVzdHJveWVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmIG1lc3NhZ2VQb3J0
KQogICAgIG1fbWVzc2FnZVBvcnRzLnJlbW92ZSgmbWVzc2FnZVBvcnQpOwogfQogCi12b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKQordm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNv
bnN0IFVSTCYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCmluZGV4IDAwODMxYTI2MGI1MzdhMDA5M2E4ODEyZGE0YmE1ZmZkNWMyNTU2YTguLmJj
MDRkZjQ5ZDFhZTk3ODk2MzA1YzgyMzEzYTZkNWMyZjYyNDRmY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtMTUyLDcgKzE1Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNyZWF0ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYpOwogICAgIHZvaWQg
ZGVzdHJveWVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CisgICAgdmlydHVhbCB2b2lkIGRpZExvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgVVJMJik7CiAKICAgICB2b2lkIHJlZigpIHsgcmVm
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgZGVyZWZTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCA4
NGRiYTQwZTkyODZjZDNmZDgzODM0YmFjMDIwMTYwMDFhMjdmNTA3Li4wMmRkYWFhZWE2MjIxOTZk
MzFhMzU4YjFkZTYyZTcxMmEwMzQxYzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCkBA
IC02MCw2ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNoZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNh
Y2hlRm9ySG9zdChjb25zdCBTdHJpbmcmKSB7IH0KKyNlbmRpZgorCiAgICAgdmlydHVhbCB+Q29v
a2llSmFyKCk7CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUlu
Zm8oY29uc3QgRG9jdW1lbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcAppbmRleCAyYjdiZjQyOWRkNjIyZmM3MjdlMTAxMzAyZWZmZWVkZDVlNGMzODQ3Li5j
N2UwZjMxYmU3MjA2ZmVmOGRhYWQxODQ2MWU0ZjVhMjRiYmY3ZDYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0xMTAsMTEgKzExMCwxMiBAQCBSZWZQ
dHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleAogCiB2b2lkIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKKyAgICBhdXRvIHJlc291cmNlVVJM
ID0gcmVxdWVzdC51cmwoKTsKICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
KQogICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0
KSwgY2xpZW50LCBvcHRpb25zKTsKICAgICBlbHNlCiAgICAgICAgIERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxEb2N1bWVudD4oY29u
dGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7Ci0gICAgY29udGV4dC5k
aWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CisgICAgY29udGV4dC5kaWRMb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KHJlc291cmNlVVJMKTsKIH0KIAogdm9pZCBUaHJlYWRhYmxlTG9hZGVy
Ojpsb2dFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgY29uc3QgU3RyaW5nJiBpbml0aWF0b3IpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9N
ZW1vcnlSZWxlYXNlLmNwcAppbmRleCAzMTZkMjE2OTdiZGJlZTkyZDEzYWUzOWQ2NGE3NDRmMzRm
ZjE3YTVjLi45MTQ3YWExNDNlMjgyMGFjYTc2MWEzNjI4OWUyY2UzNGNjMDlhNTg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJDaHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb21tb25W
TS5oIgorI2luY2x1ZGUgIkNvb2tpZUphci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTk5LDYgKzEwMCwxMiBA
QCBzdGF0aWMgdm9pZCByZWxlYXNlQ3JpdGljYWxNZW1vcnkoU3luY2hyb25vdXMgc3luY2hyb25v
dXMsIE1haW50YWluQmFja0ZvcndhcmRDYQogCiAgICAgQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24o
KS5kcmFpbigpOwogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICBQYWdlOjpmb3JFYWNo
UGFnZShbXShhdXRvJiBwYWdlKSB7CisgICAgICAgIHBhZ2UuY29va2llSmFyKCkuY2xlYXJDYWNo
ZSgpOworICAgIH0pOworI2VuZGlmCisKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRv
VmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSkgewog
ICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlbGVhc2VNZW1vcnkoKTsKICAgICAgICAg
ZG9jdW1lbnQtPmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLnlhbWwKaW5kZXggNWQzYTg4YzQ4ZjdhYTY3MGY4NGY4YjNmZTExYWJhMzExMDRiNGI0YS4u
YTI3MWUxYzkzMzBmNDVlM2Y0MzYyODU1MjA3YzM5OGY5YmUwODRlYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbApAQCAtMzYzLDYgKzM2Myw5IEBAIHJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFi
bGVkOgogSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIAoraW5Qcm9jZXNz
Q29va2llQ2FjaGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0aGlyZFBhcnR5SWZyYW1l
UmVkaXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgK
aW5kZXggNjUwNmYxMDc3MDY1YTRkMjFmNzk4MDE5MmYzZDc1MDdlYmMyM2E5ZS4uMmY1ZjcwY2Y3
ZGIyMDJiY2Q1NWZjODhjNzU1ZWEyOWQ1MzQ3MWYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAs
NiArNjAsOSBAQCB0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBTb3VwQ29va2llSmFyOwog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZU9ic2VydmVyLmgi
CitPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5TSFRUUENvb2tpZTsKK09CSkNfQ0xB
U1MgTlNNdXRhYmxlU2V0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc5LDYg
KzgyLDE1IEBAIGVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4
X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckluCiBlbnVtIGNsYXNzIEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlIDogdWludDhfdCB7IEFsbEJ1dENvb2tpZXMsIE5vbmUsIEFs
bEJ1dENvb2tpZXNMaXZlT25UZXN0aW5nVGltZW91dCwgQWxsQnV0Q29va2llc1JlcHJvVGVzdGlu
Z1RpbWVvdXQgfTsKIGVudW0gY2xhc3MgU2hvdWxkQXNrSVRQIDogYm9vbCB7IE5vLCBZZXMgfTsK
IAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorY2xhc3Mg
Q29va2llQ2hhbmdlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvb2tpZUNoYW5n
ZU9ic2VydmVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJp
bmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBjb29raWVzRGVsZXRlZCgpID0gMDsKK307CisjZW5kaWYKKwogY2xhc3MgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3RvcmFn
ZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTkyLDkgKzEw
NCwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNIVFRQQ29va2llU3RvcmFnZSAq
bnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIFdFQkNPUkVfRVhQT1JUIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVDRlN0
b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4mJik7CisgICAgZW51bSBjbGFzcyBJc0luTWVtb3J5Q29va2llU3RvcmUgOiBib29s
IHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmLCBJc0luTWVtb3J5Q29va2llU3RvcmUgPSBJ
c0luTWVtb3J5Q29va2llU3RvcmU6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgLy8gTWF5IGJlIG51
bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCkBA
IC0xNDYsNiArMTYzLDEzIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAorI2lmIEhBVkUoQ0ZORVRXT1JLX0NPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+
IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2ll
Q2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hh
bmdlT2JzZXJ2ZXImLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdHMpOworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpIGNvbnN0OworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwpAQCAtMTcz
LDExICsxOTcsMjYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhUVFBP
bmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0cENv
b2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZikgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0cENv
b2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKmZpcnN0UGFydHksIGNv
bnN0IE9wdGlvbmFsPFNhbWVTaXRlSW5mbz4mLCBOU1VSTCAqKSBjb25zdDsKKyAgICBOU0FycmF5
ICpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+LCBTaG91bGRBc2tJVFApIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUENvb2tpZXNG
b3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKiwg
TlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJikgY29uc3Q7CisgICAg
dm9pZCBkZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TSFRUUENvb2tp
ZSAqKSBjb25zdDsKKyNlbmRpZgorI2lmIEhBVkUoQ0ZORVRXT1JLX0NPT0tJRV9DSEFOR0VfTElT
VEVORVJfQVBJKQorICAgIHZvaWQgcmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vz
c2FyeSgpOworICAgIHZvaWQgdW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNz
YXJ5KCk7CisjZW5kaWYKKwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENG
VVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBtX3BsYXRmb3JtQ29va2llU3RvcmFnZTsKKyAgICBib29s
IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlIHsgZmFsc2UgfTsKICNlbGlmIFVTRShTT1VQKQogICAg
IHN0YXRpYyB2b2lkIGNvb2tpZXNEaWRDaGFuZ2UoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKik7CiAK
QEAgLTE5MCw2ICsyMjksMTIgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRl
eHQ+IG1fY29udGV4dDsKICNlbmRpZgogCisjaWYgSEFWRShDRk5FVFdPUktfQ09PS0lFX0NIQU5H
RV9MSVNURU5FUl9BUEkpCisgICAgYm9vbCBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzIHsg
ZmFsc2UgfTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiBtX3N1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlczsKKyAgICBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxDb29raWVDaGFu
Z2VPYnNlcnZlcio+PiBtX2Nvb2tpZUNoYW5nZU9ic2VydmVyczsKKyNlbmRpZgorCiAgICAgQ3Jl
ZGVudGlhbFN0b3JhZ2UgbV9jcmVkZW50aWFsU3RvcmFnZTsKIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4
IGIwMWE3ZTY2YmYwOTE0OTYxZDYzMDEwNzQxZTIyMTc1ZjllZmI5YjguLmUwZDg0ZjdjNTE3OTVl
Y2ViZjNlNTA2YzliMGEyOGU4Y2I1YWI2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZO
ZXQuY3BwCkBAIC03MywxMSArNzMsMTIgQEAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkYKICAgICBy
ZXR1cm4gc3RvcmFnZVNlc3Npb247CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJM
U3RvcmFnZVNlc3Npb25SZWY+JiYgcGxhdGZvcm1TZXNzaW9uLCBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4mJiBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpCitOZXR3b3JrU3RvcmFnZVNl
c3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYgcGxhdGZvcm1Db29raWVTdG9yYWdlLCBJc0lu
TWVtb3J5Q29va2llU3RvcmUgaXNJbk1lbW9yeUNvb2tpZVN0b3JlKQogICAgIDogbV9zZXNzaW9u
SUQoc2Vzc2lvbklEKQogICAgICwgbV9wbGF0Zm9ybVNlc3Npb24oV1RGTW92ZShwbGF0Zm9ybVNl
c3Npb24pKQorICAgICwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUoaXNJbk1lbW9yeUNvb2tpZVN0
b3JlID09IElzSW5NZW1vcnlDb29raWVTdG9yZTo6WWVzKQogewotICAgIEFTU0VSVChwcm9jZXNz
TWF5VXNlQ29va2llQVBJKCkgfHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSk7CisgICAgQVNTRVJU
KHByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSB8fCAhcGxhdGZvcm1Db29raWVTdG9yYWdlIHx8IG1f
aXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBtX3BsYXRmb3JtQ29va2llU3RvcmFnZSA9IHBs
YXRmb3JtQ29va2llU3RvcmFnZSA/IFdURk1vdmUocGxhdGZvcm1Db29raWVTdG9yYWdlKSA6IGNv
b2tpZVN0b3JhZ2UoKTsKIH0KIApAQCAtODgsMTAgKzg5LDEwIEBAIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAog
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llU3RvcmFnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFwcm9jZXNzTWF5VXNlQ29va2llQVBJ
KCkpCisgICAgaWYgKCFwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkgJiYgIW1faXNJbk1lbW9yeUNv
b2tpZVN0b3JlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVChoYXNQcm9j
ZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAg
ICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NS
YXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBpZiAobV9wbGF0
Zm9ybUNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtQ29va2llU3RvcmFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDllOWE5MWI3MjUw
ZjM2MmI4NTk0NWYzZDcwMjc2ZTZhYmIxYWRkNDIuLjNmMTIwOWIzMDU5NWY2NDJiZGRhNWNiMTU5
YmRiODQ4YzgwMDkzMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDQsOSArNDQsMTYgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK05ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpCit7CisjaWYgSEFWRShD
Rk5FVFdPUktfQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgdW5yZWdpc3RlckNvb2tp
ZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7CisjZW5kaWYKK30KKwogdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICBB
U1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdD
b29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBz
ZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CkBAIC01NSw3ICs2Miw3IEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiAK
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29r
aWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwp
CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2Fu
QWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0
b3JlKTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNDb29raWVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvb2tpZXMuc2l6ZSgp
XSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBjb29raWVzKQpAQCAtNjgsMTkgKzc1
LDE4IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3Rv
cjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWxldGVDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFj
Y2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBbbnNDb29r
aWVTdG9yYWdlKCkgZGVsZXRlQ29va2llOihOU0hUVFBDb29raWUgKiljb29raWVdOwogfQogCi1z
dGF0aWMgVmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29raWVWZWN0b3IoTlNBcnJheTxOU0hU
VFBDb29raWUgKj4gKm5zQ29va2llcykKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNU
b0Nvb2tpZVZlY3RvcihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzLCBjb25zdCBG
dW5jdGlvbjxib29sKE5TSFRUUENvb2tpZSAqKT4mIGZpbHRlciA9IHsgfSkKIHsKLSAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7Ci0KICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwogICAgIGNvb2tpZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShuc0Nvb2tpZXMuY291bnQpOwotICAgIGZvciAoTlNIVFRQQ29va2ll
ICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpCi0gICAgICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5k
KG5zQ29va2llKTsKLQorICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tp
ZXMpIHsKKyAgICAgICAgaWYgKCFmaWx0ZXIgfHwgZmlsdGVyKG5zQ29va2llKSkKKyAgICAgICAg
ICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsKKyAgICB9CiAgICAgcmV0dXJu
IGNvb2tpZXM7CiB9CiAKQEAgLTExOCw3ICsxMjQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAKIE5TSFRUUENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7
CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNj
ZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGF1dG8gY2ZD
b29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwogICAgIGlmICghY2ZDb29raWVTdG9yYWdl
IHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5fY29va2ll
U3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBbTlNIVFRQQ29va2ll
U3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CkBAIC0xNTgsMTEgKzE2NCw2IEBAIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5n
UmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQo
KSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5
IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhlZC4KICAgICBDRlVSTENhY2hl
U2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNo
ZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpw
cm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbi5s
ZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBh
ZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTczLDIwICsxNzQsMjMgQEAgQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRl
bnRpZmllcikKICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb24ubGVha1JlZigpOwogfQogCi1zdGF0
aWMgTlNBcnJheSAqaHR0cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9y
YWdlKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llcyhDRkhUVFBD
b29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwot
ICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIHJldHVybiBbW05TSFRUUENv
b2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGNvb2tpZXNdOworICAgIH0KICAg
ICAKICAgICBhdXRvIGNvb2tpZXMgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29v
a2llcyhjb29raWVTdG9yYWdlKSk7CiAgICAgcmV0dXJuIFtOU0hUVFBDb29raWUgX2NmMm5zQ29v
a2llczpjb29raWVzLmdldCgpXTsKIH0KIAotc3RhdGljIHZvaWQgZGVsZXRlSFRUUENvb2tpZShD
RkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TSFRUUENvb2tpZSAqY29va2ll
KQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0hUVFBDb29raWUgKmNvb2tpZSkgY29uc3QK
IHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5B
Y2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ug
c2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGRlbGV0ZUNvb2tpZTpjb29raWVdOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMjI2LDkgKzIzMCw5IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5TVVJMICpt
CiAgICAgcmV0dXJuIGNvb2tpZXNQdHItPmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lk
IHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFn
ZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8pCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqdXJsLCBOU1VSTCAqbWFpbkRvY3VtZW50
VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbykgY29uc3QKIHsKLSAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlm
ICghY29va2llU3RvcmFnZSkgewogI2lmICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBM
QVRGT1JNKEFQUExFVFYpCiAgICAgICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5j
ZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1
bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQpAQCAtMjU1LDIxICsyNTksMjIgQEAgc3RhdGlj
IHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dG9yYWdlLCBOU0FycmF5ICoKICNlbmRpZgogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tp
ZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmly
c3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VS
TCAqdXJsKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llc0ZvclVS
TChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TVVJMICpmaXJzdFBhcnR5
LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBB
U1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdD
b29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9y
YWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7
CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQo
a0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgfQogCiAgICAgLy8gRklYTUU6IFN0b3AgY3JlYXRp
bmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZWFjaCB0aW1lIHdlIHdhbnQgdG8g
cXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxk
IGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KICAgICBS
ZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFnZT4gbnNDb29raWVTdG9yYWdlID0gYWRvcHROUyhb
W05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6
Y29va2llU3RvcmFnZV0pOwotICAgIHJldHVybiBjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFn
ZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOworICAgIHJldHVybiBXZWJD
b3JlOjpjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNv
b2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBl
ZExpZmV0aW1lKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW3Vu
ZmlsdGVyZWRDb29raWVzIGNvdW50XTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGZp
bHRlcmVkQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpjb3VudF0pOwogCkBAIC0zMDIsMjcgKzMwNywyNiBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlv
bmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5
ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkKK05TQXJy
YXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91
bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJ
VFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBw
YWdlSUQpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHNob3Vs
ZEFza0lUUCk7CiAjZW5kaWYKLSAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5j
b29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKKyAg
ICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9CiAKLWVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3Qg
eyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9u
bHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMp
CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90
IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwor
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9y
VVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwo
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNr
SVRQKTsKICAgICBpZiAoIVtjb29raWVzIGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5n
KCksIGZhbHNlIH07IC8vIFJldHVybiBhIG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRo
YXQgU3RyaW5nQnVpbGRlciB3b3VsZCBjcmVhdGUgYmVsb3cuCiAKQEAgLTM3NCwyMiArMzc4LDIy
IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYgY29va2llU3RvcmFnZSkKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRl
SFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNo
b3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNz
aW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwor
ICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJl
dHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5
LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhl
YWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVI
VFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgcmV0
dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVy
RmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVs
ZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHks
IGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCiB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNv
b2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNDU3
LDcgKzQ2MSw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJCiAgICAgcmF3Q29va2llcy5jbGVh
cigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNv
b2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOworICAgIE5TQXJyYXkgKmNvb2tpZXMg
PSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNv
dW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChO
U1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpAQCAtNTE4LDcgKzUyMiw3IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBob3N0CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIElu
Y2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKIHsKLSAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC01NjYsNCArNTcwLDk3IEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxs
VGltZSB0aW1lUG9pbnQpCiAgICAgW3N0b3JhZ2UgX3NhdmVDb29raWVzXTsKIH0KIAorI2lmIEhB
VkUoQ0ZORVRXT1JLX0NPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6cmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgp
Cit7CisgICAgaWYgKG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgPSB0cnVlOworICAgIFtuc0Nv
b2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0FkZGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29v
a2llICo+ICogbnNDb29raWVzLCBOU1VSTCAqdXJsRm9yQWRkZWRDb29raWVzKSB7CisgICAgICAg
IFZlY3RvcjxDb29raWU+IGNvb2tpZXMgPSBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihuc0Nvb2tp
ZXMpOworICAgICAgICBhdXRvIGhvc3QgPSBVUkwodXJsRm9yQWRkZWRDb29raWVzKS5ob3N0KCku
dG9TdHJpbmcoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWhvc3QuaXNOdWxsKCkpOworICAg
ICAgICBhdXRvIGl0ID0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZmluZChob3N0KTsKKyAgICAg
ICAgaWYgKGl0ID09IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogaXQtPnZhbHVlKQorICAgICAg
ICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKKyAgICB9IG9uUXVl
dWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9z
ZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqLCBib29s
IC8qZGVsZXRlZEFsbENvb2tpZXMqLykgeworICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVycyA6
IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1
dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAgICAgICAgICAgIG9ic2VydmVyLT5jb29r
aWVzRGVsZXRlZCgpOworICAgICAgICB9CisgICAgfSBvblF1ZXVlOmRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3RlckNv
b2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoIW1fZGlkUmVnaXN0
ZXJDb29raWVMaXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKKworICAgIFtuc0Nvb2tpZVN0b3Jh
Z2UoKSBfc2V0Q29va2llc0FkZGVkSGFuZGxlcjpuaWwgb25RdWV1ZTpuaWxdOworICAgIFtuc0Nv
b2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVyOm5pbCBvblF1ZXVlOm5pbF07
CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNo
YW5nZXM6bmlsXTsKKyAgICBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzID0gZmFsc2U7Cit9
CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNo
YW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hhbmdlT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBT
dHJpbmcmIGhvc3QpCit7CisgICAgcmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vz
c2FyeSgpOworCisgICAgYXV0byYgb2JzZXJ2ZXJzID0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMu
ZW5zdXJlKGhvc3QsIFtdIHsKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2Jz
ZXJ2ZXIqPiB7IH07CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIEFTU0VSVChvYnNlcnZl
cnMuYWRkKCZvYnNlcnZlcikuaXNOZXdFbnRyeSk7CisKKyAgICBpZiAoIW1fc3Vic2NyaWJlZERv
bWFpbnNGb3JDb29raWVDaGFuZ2VzKQorICAgICAgICBtX3N1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQgYWxsb2NdIGluaXRdKTsKKyAgICBl
bHNlIGlmIChbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgY29udGFpbnNPYmpl
Y3Q6KE5TU3RyaW5nICopaG9zdF0pCisgICAgICAgIHJldHVybjsKKworICAgIFttX3N1YnNjcmli
ZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBhZGRPYmplY3Q6KE5TU3RyaW5nICopaG9zdF07Cisg
ICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5n
ZXM6bV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMuZ2V0KCldOworfQorCit2b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlm
aWNhdGlvbnMoQ29va2llQ2hhbmdlT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaG9zdHMpCit7CisgICAgYm9vbCBzdWJzY3JpYmVkVVJMc0NoYW5nZWQgPSBmYWxzZTsK
KyAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0cykgeworICAgICAgICBhdXRvIGl0ID0gbV9jb29r
aWVDaGFuZ2VPYnNlcnZlcnMuZmluZChob3N0KTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IG1fY29v
a2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKTsKKyAgICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hh
bmdlT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0
byYgb2JzZXJ2ZXJzID0gaXQtPnZhbHVlOworICAgICAgICBBU1NFUlQob2JzZXJ2ZXJzLmNvbnRh
aW5zKCZvYnNlcnZlcikpOworICAgICAgICBvYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7Cisg
ICAgICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2Nvb2tpZUNo
YW5nZU9ic2VydmVycy5yZW1vdmUoaXQpOworICAgICAgICAgICAgQVNTRVJUKFttX3N1YnNjcmli
ZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0
XSk7CisgICAgICAgICAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgcmVt
b3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgICAgICAgICAgc3Vic2NyaWJlZFVSTHND
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3Vic2NyaWJlZFVSTHND
aGFuZ2VkKQorICAgICAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcy5nZXQo
KV07Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZG9tQ29va2ll
c0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5TQXJyYXkgKm5zQ29va2llcyA9
IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJpbmcgKilob3N0
XTsKKyAgICByZXR1cm4gbnNDb29raWVzVG9Db29raWVWZWN0b3IobnNDb29raWVzLCBbXShOU0hU
VFBDb29raWUgKmNvb2tpZSkgeyByZXR1cm4gIWNvb2tpZS5IVFRQT25seTsgfSk7Cit9CisKKy8v
IEZJWE1FOiBUaGlzIGNhbiBldmVudHVhbGx5IGdvIGF3YXksIHRoaXMgaXMgbWVyZWx5IHRvIGVu
c3VyZSBhIHNtb290aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJLgorYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdAorewor
ICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBvcnRzQVBJID0gW25zQ29va2llU3RvcmFnZSgpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2ll
Q2hhbmdlczopXTsKKyAgICByZXR1cm4gc3VwcG9ydHNBUEk7Cit9CisKKyNlbmRpZiAvLyBIQVZF
KENGTkVUV09SS19DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBlODE3MzQ0ZjE5ZDM4ZWRj
MTY3NmZhM2Q2ODY5NjJkYzc4NmVhY2JkLi5jZDY1N2YyNWM5NTBhNWExNTZiOWVmMmQ4NTQ2OWIx
YzM4ZDI5MjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMTI0LDYgKzEyNCwx
MyBAQCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCkKICAgICBmb3IgKGF1dG8mIHBvcnQgOiBtX3Byb2Nlc3NFbnRhbmdsZWRQb3J0
cykKICAgICAgICAgbmV0d29ya1Byb2Nlc3MoKS5tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgp
LmRpZENsb3NlTWVzc2FnZVBvcnQocG9ydCk7CiAKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQor
ICAgIGlmICghbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMuaXNFbXB0eSgpKSB7CisgICAgICAg
IGF1dG8gaG9zdHNXaXRoQ29va2llTGlzdGVuZXJzID0gY29weVRvVmVjdG9yKG1faG9zdHNXaXRo
Q29va2llTGlzdGVuZXJzKTsKKyAgICAgICAgdW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucyhob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMpOworICAgIH0KKyNlbmRpZgorCiAj
aWYgVVNFKExJQldFQlJUQykKICAgICBpZiAobV9ydGNQcm92aWRlcikKICAgICAgICAgbV9ydGNQ
cm92aWRlci0+Y2xvc2UoKTsKQEAgLTYzMyw2ICs2NDAsNDQgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGMKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tp
ZU5hbWUpOwogfQogCisjaWYgRU5BQkxFKENPT0tJRV9DQUNIRSkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwg
Ym9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lv
bigpOworICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKKworICAgIGlmIChzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMpIHsKKyAgICAgICAgQVNTRVJUKCFtX2hvc3RzV2l0aENvb2tpZUxpc3RlbmVy
cy5jb250YWlucyhob3N0KSk7CisgICAgICAgIG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLmFk
ZChob3N0KTsKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zdGFydExpc3RlbmluZ0Zv
ckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhvc3QpOworICAgIH0KKworICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZG9tQ29va2llc0Zvckhvc3Qo
aG9zdCkpOworfQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnN1YnNj
cmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBo
b3N0cykKK3sKKyAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0cykgeworICAgICAgICBBU1NFUlQo
bV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMuY29udGFpbnMoaG9zdCkpOworICAgICAgICBtX2hv
c3RzV2l0aENvb2tpZUxpc3RlbmVycy5yZW1vdmUoaG9zdCk7CisgICAgfQorCisgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi0+c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNh
dGlvbnMoKnRoaXMsIGhvc3RzKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Q29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpLCAw
KTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0
ZWQoKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OkNvb2tpZXNEZWxldGVkKCksIDApOworfQorI2VuZGlmCisKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5z
aW9uSGFuZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGF1dG8qIHNlc3Np
b24gPSBuZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDg2Y2M2
MGQxYTk5NzVlOWI1ODUzMmIyNjFiYmNhY2EwNWIyOTlhNWYuLjQzZjE0NzA0ZmMxZTk3ZThhZDY1
YTJiOWZhMWMxN2RkYWQ3MGI3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQyLDYg
KzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgpAQCAtODcsNiArODgsOSBAQCBjbGFzcyBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M+CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAg
LCBwdWJsaWMgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAorI2VuZGlmCisjaWYg
RU5BQkxFKENPT0tJRV9DQUNIRSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb29raWVDaGFuZ2VP
YnNlcnZlcgogI2VuZGlmCiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6
CkBAIC0yNjYsNiArMjcwLDE1IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBuZXh0TWVzc2Fn
ZUJhdGNoSWRlbnRpZmllcihGdW5jdGlvbjx2b2lkKCk+JiYpOwogCisjaWYgRU5BQkxFKENPT0tJ
RV9DQUNIRSkKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGhvc3RzKTsKKyAgICB2b2lkIGRvbUNvb2tpZXNGb3JI
b3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlm
aWNhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mKT4mJik7CisKKyAgICAvLyBXZWJDb3JlOjpDb29raWVDaGFuZ2VPYnNlcnZlci4KKyAg
ICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JikgZmluYWw7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpIGZpbmFsOwor
I2VuZGlmCisKICAgICBzdHJ1Y3QgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyIHsKICAg
ICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKCkgPSBkZWZhdWx0OwogICAgICAg
ICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoY29uc3QgUmVzb3VyY2VOZXR3b3JrQWN0
aXZpdHlUcmFja2VyJikgPSBkZWZhdWx0OwpAQCAtMzI5LDYgKzM0Miw5IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgTmV0d29ya01ETlNSZWdpc3RlciBtX21kbnNSZWdpc3Rl
cjsKICNlbmRpZgorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgSGFzaFNldDxTdHJpbmc+
IG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzOworI2VuZGlmCiAKICAgICBib29sIG1fY2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDQzYjVmNjc0ZTU1ZThkNzZiMTI4
M2RkN2I3MjQ2YjY2MGIxODEyYWMuLjRmNGZjMjVmMjNjYzc3MGM4NjZkOWM4MmFkNTllMmUyOWJh
MjNmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MzQsNiArMzQsMTEgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2Vz
dGVkTmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3Qg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElE
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSkKIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgVW5zdWJzY3Jp
YmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhWZWN0b3I8U3RyaW5nPiBob3N0cykKKyAg
ICBEb21Db29raWVzRm9ySG9zdChTdHJpbmcgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNo
YW5nZU5vdGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBT
eW5jaHJvbm91cworI2VuZGlmCisKICAgICBDb29raWVzRm9yRE9NKFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgLT4g
KFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hy
b25vdXMKICAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGVudW06Ym9v
bCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBTdHJpbmcgY29va2llU3RyaW5n
KQogICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1
Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1
cmVDb29raWVzKSBTeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggODJkYjAxMmRlNjAzNmE2ZGRlMDhkNWViNDc1MGZmZTY2Mjk5MGFlNy4uY2E1
MDVlZTVlZWI1ZDdiMWM1MjU3ODkyNDY0ODI3OTg5OGQwODQyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02MjEsNiArNjIxLDcgQEAgZGVmIGhlYWRlcnNf
Zm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJF
dmVudC5oIiddLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVy
cyc6IFsnPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OklTT1dl
YlZUVEN1ZSc6IFsnPFdlYkNvcmUvSVNPVlRUQ3VlLmg+J10sCisgICAgICAgICdzdHJ1Y3QgV2Vi
Q29yZTo6Q29va2llJzogWyc8V2ViQ29yZS9Db29raWUuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dCc6IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4nXSwK
ICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpX
ZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlw
ZXMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2Vz
LnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGI2
NGExZjdkNTJmNGMwOWZmY2YyMWEzMzkyZWYyZDE0NjgzOTUwOTUuLjg0ZGY0OTRhMTY0N2JjMTE2
ZGUyOWIyNWZlODE1OGNmMTFlY2JlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVy
ZW5jZXMueWFtbApAQCAtNTUsNiArNTUsMTQgQEAgSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgIGh1
bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkF1dG9tYXRpYyBIVFRQUyB1cGdyYWRlIGZvciBrbm93
biBzdXBwb3J0ZWQgc2l0ZXMiCiAgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCiAKK0luUHJvY2Vz
c0Nvb2tpZUNhY2hlRW5hYmxlZDoKKyAgIHR5cGU6IGJvb2wKKyAgIGRlZmF1bHRWYWx1ZTogdHJ1
ZQorICAgY29uZGl0aW9uOiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgaHVtYW5SZWFkYWJsZU5h
bWU6ICJJbi1Qcm9jZXNzIENvb2tpZSBDYWNoZSIKKyAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlv
bjogIkluLVByb2Nlc3MgRE9NIENvb2tpZSBDYWNoZSIKKyAgIGNhdGVnb3J5OiBleHBlcmltZW50
YWwKKwogVGhpcmRQYXJ0eUlmcmFtZVJlZGlyZWN0QmxvY2tpbmdFbmFibGVkOgogICAgdHlwZTog
Ym9vbAogICAgZGVmYXVsdFZhbHVlOiB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3NDg5NGJkMjdiYWY1
ODk1MWU2YWYyNDFjODc5OThiYzVjNWViYWU4Li5hNWQwYmUxNDI3MWY2MzA2ZjgzNmI4ZmRiZDdk
NDIwZjI5NTI0NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTYyNCw2ICs2MjQsNyBAQCBXZWJQcm9jZXNz
L1dlYlBhZ2UvUGFnZUJhbm5lci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1Rh
YmxlQ29udHJvbGxlci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKK1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTFm
YzZmNzM3MmIxNjAzZTVkZDI1ZWIwYTRhNjAxYzZjOWJlMjNlYS4uZDI0YTgwNDhlMzQ1MDQ2MzQy
N2M5MzA0MzJlZjkwMDM5NzUxMWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjEzLDYg
KzYxMyw3IEBAIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKIFdl
YlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tCiAKIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KK1dl
YlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0ODg1YjQ2MzJkZTljODhjZjAyNjVkNWVl
ZjlhYjA3NTRiZjU1ODcuLmZlNzc4M2VmNGRjMmMxN2NiMWNiZjQ5ZGU3MDFlYTQ1MTgxZDZjN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTQzLDYgKzk0Myw3IEBACiAJCTQ2NkJDMDNDMUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY2QkMwMzkxRkEyNjZDOTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAvKiBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9h
ZE9ic2VydmVyLmggKi87IH07CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9j
ZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRh
U3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CisJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi87IH07
CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNp
dmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3
IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9
OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2
OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtMzQ4NCw2ICszNDg1LDggQEAKIAkJNDY3
MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NzFGRjFFMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNl
cnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAv
KiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8q
IFdlYkNvb2tpZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkNvb2tpZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2
OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25h
bFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92
aXNpb25hbFBhZ2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJC
NjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGlt
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFBy
b2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTY5OTcsOCArNzAwMCw4IEBACiAJCQkJMUE0MjJGOEExOEIyOUI1NDAwRDhDRDk2IC8qIFdL
SGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oICovLAogCQkJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgy
MCAvKiBXS0hUVFBDb29raWVTdG9yZS5oICovLAogCQkJCTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgy
MCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSAqLywKLQkJCQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYz
NUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8sCiAJCQkJNTFEMTI0ODYxRTczNEFF
MzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCAqLywKKwkJCQlERjQ2MkUw
RTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8sCiAJCQkJ
MUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbSAqLywK
IAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJp
dmF0ZS5oICovLAogCQkJCTFBNUIxQzRGMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24u
aCAqLywKQEAgLTg0MjIsNiArODQyNSw4IEBACiAJCQkJQkM3MkI5RjkxMUU2NDc2QjAwMUVCNEVB
IC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggKi8sCiAJCQkJNTE4NzFCNTkxMjdDQjg5RDAw
Rjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLywKIAkJCQk1MTg3MUI1QTEyN0NCODlEMDBG
NzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLywKKwkJCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3
RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICovLAorCQkJCTQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdE
MCAvKiBXZWJDb29raWVDYWNoZS5oICovLAogCQkJCTVDN0ZCNDZFMjFFOTdDMEIwMDlFMzI0MSAv
KiBXZWJDb29raWVKYXIuY3BwICovLAogCQkJCTVDN0ZCNDZGMjFFOTdDMEMwMDlFMzI0MSAvKiBX
ZWJDb29raWVKYXIuaCAqLywKIAkJCQkxQTVCMUM1MjE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9j
dW1lbnRMb2FkZXIuY3BwICovLApAQCAtMTAyNTQsNyArMTAyNTksNiBAQAogCQkJCTJENTg3NUJG
MjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50
V29ybGRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMx
NUEgLyogRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIx
QUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVG
QjE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAg
LTEwNjYyLDYgKzEwNjY2LDcgQEAKIAkJCQk1MUFDQkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2Vi
Q29udGV4dE1lbnVQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBQ0JCQTAxMjdBOEYyQzAw
RDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RjRERTI1MTY4RkE0NDgwMEM5NEFGQyAvKiBXZWJDb250ZXh0U3VwcGxlbWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1QzdGQjQ3MDIxRTk3REM1MDA5RTMyNDEgLyogV2ViQ29va2ll
SmFyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1MDEzMTVCOTREMDA5N0E3QkMgLyogV2Vi
Q29va2llTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0NDgxMzE1QjkyMjAwOTdB
N0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDcy
MSw3ICsxMDcyNiw2IEBACiAJCQkJRkVFNDNGRDMxRTY3QjAxODAwNzdENkQxIC8qIFdlYkluc3Bl
Y3RvckludGVycnVwdERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFREJEQ0Q3MUU2
OEQyMDUwMEE1OUY4RiAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNw
ZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREY0NjJFMEYyM0YyMkY1NTAwRUZG
MzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4
RTI4MzQxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdl
Ykluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLywKQEAgLTEwOTM0LDYgKzEwOTM4LDcgQEAKIAkJ
CQkwRjA0MTU5RTIzQzdDQzczMDA2MEEzRTIgLyogV0tDb250ZW50Vmlld01hYy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTExMDY1RkMyM0VDOTU3MjAwNTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTEwNjVGRDIzRUM5NTdCMDA1NDQzRDYgLyogV0tDb250ZW50
V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREY0NjJFMTIyM0YzMzhCRTAwRUZG
MzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUUy
NEIxMTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFF
NTJGOTgxOTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25u
ZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTExMDE3LDYgKzExMDIyLDcgQEAKIAkJ
CQkxQTQyMkY4QjE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCNjJFNzMxMjE0MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0
UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyog
V0tIVFRQQ29va2llU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCURGNDYyRTBGMjNGMjJGNTUw
MEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDNjZBNEI1MjMyMDk2MjQwMEVBNEQ0NCAvKiBXS0hUVFBDb29raWVTdG9yZVJlZi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTExMEFFMEQxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTIzQ0YxQzEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29u
RGF0YWJhc2VDRy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRl
eCAyOGJjMTJjMzQyM2Y5ZjI4MzU2YzNhODRjNjEyMjRjZmE0ZWQ3ZTk5Li4yOWU3YTE4YzI2ZGVi
ZGY3MzQ3YzM2YTgyMmNjODhkOTk4MWZhZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2lu
Y2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCkBAIC0yMzQsNiArMjM1
LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVBY2NlcHRQb2xpY3lD
aGFuZ2VkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kKICAgICBtX2Nvb2tpZUFjY2VwdFBvbGljeSA9
IG5ld1BvbGljeTsKIH0KIAorI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuY29va2llSmFyKCkuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2
b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tpZUphcigpLmNvb2tpZXNEZWxldGVkKCk7Cit9Cisj
ZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVT
T1VSQ0UpCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpI
YW5kbGUmIGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNTFmZGYzNTQ1MjRk
OTE1ZGRmNmVkNTk0YzdkMmMwZmQ4NjMzZDlkMS4uZmI4MTFlNDg2MjZkNzJlYzUxNGMxZjYzNmI4
NmRhMjNkMjczNmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQxLDYgKzQxLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3QgQ29va2llOwogc3RydWN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsK
IGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CkBAIC04Myw2ICs4
NCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvb2tpZXNFbmFibGVkKCkgY29uc3Q7CiAKKyNp
ZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmlu
ZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tp
ZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpIVFRQQ29va2llQWNj
ZXB0UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IDJhYTY4ODZlNTdhNTk5Y2JjMTdjMzVmNmI3NGU5OWQyYWIzYTg5ZTUuLjU0ODBkNTkzZTVk
YmZlODM2YzBhMmExM2RjNzVmMTdiOTc0ZWIyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDExIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0T25MaW5lU3RhdGUoYm9v
bCBpc09uTGluZSk7CiAgICAgQ29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpOwogCisjaWYgRU5BQkxFKENP
T0tJRV9DQUNIRSkKKyAgICBDb29raWVzQWRkZWQoU3RyaW5nIGhvc3QsIFZlY3RvcjxzdHJ1Y3Qg
V2ViQ29yZTo6Q29va2llPiBjb29raWVzKTsKKyAgICBDb29raWVzRGVsZXRlZCgpOworI2VuZGlm
CisKICAgICBDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpIC0+IChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIEFzeW5jCiAgICAgTWVzc2FnZXNB
dmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9y
dCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29h
L1dlYkNvb2tpZUNhY2hlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRhNWNhODY3NzJjYTJj
ZjYxOTdiMzYzZWQxMTQwODg4MGZhY2M4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCkBAIC0w
LDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShDT09LSUVfQ0FDSEUpCisjaW1wb3J0ICJXZWJDb29raWVDYWNoZS5oIgorCisjaW1wb3J0ICJX
ZWJQcm9jZXNzLmgiCisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK05ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6OmluTWVtb3J5U3RvcmFnZVNlc3Npb24o
KQoreworICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKSB7CisgICAgICAgIFN0cmlu
ZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdEluUHJvY2Vzc1N0b3JhZ2UtIiwgZ2V0
Q3VycmVudFByb2Nlc3NJRCgpKTsKKyAgICAgICAgYXV0byBzdG9yYWdlU2Vzc2lvbiA9IGFkb3B0
Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKHNlc3Npb25OYW1lLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBjb29raWVTdG9yYWdlID0gYWRvcHRD
RihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CisgICAgICAgIG1faW5NZW1vcnlTdG9yYWdlU2Vz
c2lvbiA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPihXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zZXNzaW9uSUQoKSwgV1RGTW92ZShzdG9yYWdlU2Vzc2lvbiksIFdURk1vdmUoY29v
a2llU3RvcmFnZSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6SXNJbk1lbW9yeUNvb2tpZVN0b3Jl
OjpZZXMpOworICAgIH0KKyAgICByZXR1cm4gKm1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUoQ09PS0lFX0NBQ0hF
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
Q2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2Fj
aGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY3MDZmZGJkMzgwY2Q4N2RkODg4ZDM4MTNmNjczNzU5ZTRmYjI5
MmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVDYWNoZS5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorI2luY2x1ZGUgIldlYkNv
b2tpZUNhY2hlLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKKy8vIEZJWE1FOiBUaGlzIGNhbiBldmVudHVhbGx5IGJlIHJlbW92ZWQsIHRo
aXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJ
LgorYm9vbCBXZWJDb29raWVDYWNoZTo6aXNGdW5jdGlvbmFsKCkKK3sKKyAgICByZXR1cm4gaW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKTsK
K30KKworU3RyaW5nIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3sKKyAgICBTdHJpbmcgaG9zdCA9
IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBpZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9y
YWdlLmNvbnRhaW5zKGhvc3QpKSB7CisgICAgICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7Cisg
ICAgICAgIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zID0gdHJ1ZTsK
KyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpEb21Db29raWVzRm9ySG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5n
KCksIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29va2llc0Zvckhvc3Q6OlJlcGx5KGNvb2tp
ZXMpLCAwKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHBydW5lQ2FjaGVJZk5l
Y2Vzc2FyeSgpOworICAgICAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5hZGQoaG9zdCk7
CisgICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAgICAgICAgICAgIGluTWVt
b3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKKyAgICB9CisgICAgcmV0dXJu
IGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91
bGRBc2tJVFA6Ok5vKS5maXJzdDsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6c2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQoreworICAgIFN0cmlu
ZyBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOworICAgIGlmIChtX2hvc3RzV2l0aEluTWVt
b3J5U3RvcmFnZS5jb250YWlucyhob3N0KSkKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lv
bigpLnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7Cit9CisKK3ZvaWQg
V2ViQ29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxDb29raWU+JiBjb29raWVzKQoreworICAgIGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0
b3JhZ2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYg
Y29va2llIDogY29va2llcykKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENv
b2tpZShjb29raWUpOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRGVsZXRlZCgp
Cit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y2xlYXIoKQorewor
ICAgIGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuaXNFbXB0eSgpKQorICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoY29weVRvVmVjdG9yKG1f
aG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlKSksIDApOworICAgIG1faG9zdHNXaXRoSW5NZW1vcnlT
dG9yYWdlLmNsZWFyKCk7CisgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbnVsbHB0cjsK
K30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y2xlYXJGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9z
dCkKK3sKKyAgICBhdXRvIGl0ID0gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuZmluZChob3N0
KTsKKyAgICBpZiAoaXQgPT0gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuZW5kKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLnJlbW92ZShpdCk7
CisgICAgVmVjdG9yPFN0cmluZz4gaG9zdHNUb1JlbW92ZSB7IGhvc3QgfTsKKyAgICBpbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhob3N0c1RvUmVtb3Zl
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoaG9zdHNU
b1JlbW92ZSksIDApOworCit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OnBydW5lQ2FjaGVJZk5l
Y2Vzc2FyeSgpCit7CisgICAgLy8gV2UgbWF5IHdhbnQgdG8gcmFpc2UgdGhpcyBsaW1pdCBpZiB3
ZSBzdGFydCB1c2luZyB0aGUgY2FjaGUgZm9yIHRoaXJkLXBhcnR5IGlmcmFtZXMuCisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIG1heENhY2hlZEhvc3RzID0gNTsKKworICAgIHdoaWxlIChtX2hv
c3RzV2l0aEluTWVtb3J5U3RvcmFnZS5zaXplKCkgPj0gbWF4Q2FjaGVkSG9zdHMpCisgICAgICAg
IGNsZWFyRm9ySG9zdCgqbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UucmFuZG9tKCkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVD
YWNoZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43MjE2NDViZmJmMWRhYjU3YjViY2E4Y2E3YTI1ZGRhYmFkY2Q4MjBiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llQ2FjaGUuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoQ09PS0lFX0NBQ0hFKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvb2tpZUNhY2hlIHsKK3B1
YmxpYzoKKyAgICBXZWJDb29raWVDYWNoZSgpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNGdW5j
dGlvbmFsKCk7CisKKyAgICBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29y
ZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpOworCisgICAgdm9pZCBjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBo
b3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZvaWQgY29va2llc0Rl
bGV0ZWQoKTsKKworICAgIHZvaWQgY2xlYXIoKTsKKyAgICB2b2lkIGNsZWFyRm9ySG9zdChjb25z
dCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKTsKKyAgICB2b2lkIHBydW5lQ2FjaGVJZk5lY2Vz
c2FyeSgpOworCisgICAgSGFzaFNldDxTdHJpbmc+IG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IG1f
aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKENPT0tJRV9DQUNIRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDMyNTgzMDVjNzg5ZDc3NWZlMTVj
MWMwODI4YzM2ZTllMmYyYTg2MDkuLmM4ZWFiODdjMWQ0NTUwMjhhNDg5OGVjNzRhYjJhYWM0NTJi
ZDg0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9h
ZGVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU3RvcmFnZVNlc3Npb25Qcm92aWRlci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTg4LDYgKzg5LDI1IEBAIHN0YXRpYyBib29sIHNob3VsZEJsb2NrQ29va2llcyhXZWJGcmFtZSog
ZnJhbWUsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsCiB9CiAjZW5kaWYKIAorI2lm
IEVOQUJMRShDT09LSUVfQ0FDSEUpCitib29sIFdlYkNvb2tpZUphcjo6aXNFbGlnaWJsZUZvckNh
Y2hlKFdlYkZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29u
c3QgVVJMJiByZXNvdXJjZVVSTCkgY29uc3QKK3sKKyAgICBhdXRvKiBwYWdlID0gZnJhbWUucGFn
ZSgpID8gZnJhbWUucGFnZSgpLT5jb3JlUGFnZSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXBhZ2Ug
fHwgIXBhZ2UtPnNldHRpbmdzKCkuaW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9jYWNoZS5pc0Z1bmN0aW9uYWwoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRm9yIG5vdywgd2Ugb25seSBjYWNoZSBjb29r
aWVzIGZvciBmaXJzdC1wYXJ0eSBjb250ZW50LiBUaGlyZC1wYXJ0eSBjb29raWUgY2FjaGluZyBp
cyBhIGJpdCBtb3JlIGNvbXBsaWNhdGVkIGR1ZSB0byBwYXJ0aXRpb25pbmcgYW5kIHN0b3JhZ2Ug
YWNjZXNzLgorICAgIFJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluIHsgcmVzb3VyY2VV
UkwgfTsKKyAgICBpZiAocmVzb3VyY2VEb21haW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICByZXR1cm4gZnJhbWUuaXNNYWluRnJhbWUoKSB8fCBSZWdpc3RyYWJsZURv
bWFpbiB7IGZpcnN0UGFydHlGb3JDb29raWVzIH0gPT0gcmVzb3VyY2VEb21haW47Cit9CisjZW5k
aWYKKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGF1dG8qIHdlYkZyYW1lID0gZG9j
dW1lbnQuZnJhbWUoKSA/IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpkb2N1bWVudC5mcmFtZSgp
KSA6IG51bGxwdHI7CkBAIC0xMDAsMTIgKzEyMCwxOSBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpj
b29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiAgICAgICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAorICAgIGF1dG8gc2FtZVNpdGVJbmZvID0g
Q29va2llSmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOworICAgIGF1dG8gaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgPSBDb29raWVKYXI6OnNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50
LCB1cmwpOwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgYXV0
byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKKyNpZiBFTkFCTEUo
Q09PS0lFX0NBQ0hFKQorICAgIGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndlYkZyYW1lLCBkb2N1
bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAgICByZXR1cm4gbV9jYWNo
ZS5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyNlbmRp
ZgorCiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nl
c3NlZCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCksIHNob3Vs
ZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBs
eShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgcmV0dXJuIGNvb2tpZVN0cmluZzsKQEAgLTEyMywxMSArMTUwLDM5IEBA
IHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCisgICAg
YXV0byBzYW1lU2l0ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhkb2N1bWVudCk7CiAg
ICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBhdXRvIHBhZ2VJRCA9
IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21E
T00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50
KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MsIGNv
b2tpZVN0cmluZyksIDApOworI2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCisgICAgaWYgKGlzRWxp
Z2libGVGb3JDYWNoZSgqd2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCks
IHVybCkpCisgICAgICAgIG1fY2FjaGUuc2V0Q29va2llc0Zyb21ET00oZG9jdW1lbnQuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgY29v
a2llU3RyaW5nKTsKKyNlbmRpZgorCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKK30KKwor
I2lmIEVOQUJMRShDT09LSUVfQ0FDSEUpCit2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0FkZGVk
KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tp
ZXMpCit7CisgICAgbV9jYWNoZS5jb29raWVzQWRkZWQoaG9zdCwgY29va2llcyk7Cit9CisKK3Zv
aWQgV2ViQ29va2llSmFyOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgbV9jYWNoZS5jb29raWVz
RGVsZXRlZCgpOworfQorCit2b2lkIFdlYkNvb2tpZUphcjo6Y2xlYXJDYWNoZSgpCit7CisgICAg
bV9jYWNoZS5jbGVhcigpOworfQorCit2b2lkIFdlYkNvb2tpZUphcjo6Y2xlYXJDYWNoZUZvckhv
c3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIG1fY2FjaGUuY2xlYXJGb3JIb3N0KGhvc3Qp
OwogfQorI2VuZGlmIC8vIEVOQUJMRShDT09LSUVfQ0FDSEUpCiAKIGJvb2wgV2ViQ29va2llSmFy
Ojpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCmluZGV4IDUy
OTQ4YTkxZGU1ZjE0NTI0OTkxMGRkNDk4MzQ0NTIwMDAxYTk3ZmIuLmY2YWU5YTg2MjNkMjE3OTE5
OWE1YWRmYzlmZGQ3Y2QzMTE2ZDRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiV2ViQ29va2llQ2FjaGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUph
ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ29va2llOworfQorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29va2llSmFyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkNvb2tpZUphciB7CkBAIC0zOSw4ICs0NCwyMiBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPFN0
cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3Jl
OjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOworCisjaWYgRU5BQkxF
KENPT0tJRV9DQUNIRSkKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3Qs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRl
ZCgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViQ29va2llSmFyKCk7CisKKyNpZiBFTkFC
TEUoQ09PS0lFX0NBQ0hFKQorICAgIHZvaWQgY2xlYXJDYWNoZSgpIGZpbmFsOworICAgIHZvaWQg
Y2xlYXJDYWNoZUZvckhvc3QoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0VsaWdp
YmxlRm9yQ2FjaGUoV2ViRnJhbWUmLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBj
b25zdCBVUkwmIHJlc291cmNlVVJMKSBjb25zdDsKKworICAgIG11dGFibGUgV2ViQ29va2llQ2Fj
aGUgbV9jYWNoZTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDUwOGJjYzEwMmVi
YTAwNjIwMzZiY2RjNWU4MDY2M2Y2MDM0ZmQwZTMuLmJkYTFlYWYxZWQ4YTQ2MWE2YWUyYjI3ZDhh
YzAxNDZhMzM5YzRiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAg
ICAgICBtYWtlVW5pcXVlUmVmPFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI+KCksCiAgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksCiAgICAgICAg
IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBXZWJDb29r
aWVKYXI6OmNyZWF0ZSgpLAorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jb29raWVK
YXIoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ+KCp0
aGlzKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCkKICAg
ICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRiMjQwOWI5
OTRkM2FlMGQyYjQzMTRiMzQ1YzI4ZjFhNGQzN2M3MDkuLjIxYjVhMmJjMTNmZWVlYWQ5NGE2ODQ2
Y2M1NTY1MzkzMGJmYjBjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTIwNSw2ICsyMDYsNyBAQCBX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlz
cGF0Y2hlcihXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpjcmVhdGUoKSkKICAgICAs
IG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAsIG1fY2Fj
aGVTdG9yYWdlUHJvdmlkZXIoV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAg
ICwgbV9jb29raWVKYXIoV2ViQ29va2llSmFyOjpjcmVhdGUoKSkKICAgICAsIG1fZG5zUHJlZmV0
Y2hIeXN0ZXJlcmlzKFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3Rh
dGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3Rz
LmNsZWFyKCk7IH0pCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3Bs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXI6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODUz
YzY2MGVjNjQ2NDU2M2E3NjU2NDM2MTkyOTU2NTRiMDczNTM0ZS4uMTU5MDkzNjBhZDdjYjA5MTEz
N2I3Y2FmMzM1MzVjZGUyYzk3ZGQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oCkBAIC0xMjAsNiArMTIwLDcgQEAgY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBXYXlsYW5kQ29t
cG9zaXRvckRpc3BsYXk7CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OwogY2xhc3Mg
V2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJD
b21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE7CiBjbGFzcyBXZWJDb25uZWN0aW9uVG9VSVByb2Nl
c3M7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTI5Myw2ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eSogYXV0b21hdGlvblNlc3Npb25Qcm94eSgpIHsgcmV0dXJu
IG1fYXV0b21hdGlvblNlc3Npb25Qcm94eS5nZXQoKTsgfQogCiAgICAgV2ViQ2FjaGVTdG9yYWdl
UHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKCkgeyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VQ
cm92aWRlci5nZXQoKTsgfQorICAgIFdlYkNvb2tpZUphciYgY29va2llSmFyKCkgeyByZXR1cm4g
bV9jb29raWVKYXIuZ2V0KCk7IH0KICAgICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciYgd2ViU29j
a2V0Q2hhbm5lbE1hbmFnZXIoKSB7IHJldHVybiBtX3dlYlNvY2tldENoYW5uZWxNYW5hZ2VyOyB9
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTU0LDYgKzU1Niw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKIAogICAgIFJlZjxXZWJDYWNoZVN0b3JhZ2VQcm92aWRlcj4gbV9jYWNoZVN0b3Jh
Z2VQcm92aWRlcjsKKyAgICBSZWY8V2ViQ29va2llSmFyPiBtX2Nvb2tpZUphcjsKICAgICBXZWJT
b2NrZXRDaGFubmVsTWFuYWdlciBtX3dlYlNvY2tldENoYW5uZWxNYW5hZ2VyOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExpYldlYlJUQ05ldHdvcms+IG1fbGliV2ViUlRDTmV0d29yazsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA0MWVkMWQyY2QwZTgxZjM2ZjFjYzY0ZjFjZmFhODA0M2Q1MjBlYjVjLi40ZWYwMzI3ZTRjNzBh
YjYxNTcwZWJmOWE3Y2YxN2I3YjNkYzk2MmE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAt
MDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgaW4tV2ViUHJvY2VzcyBjb29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3Vt
ZW50LmNvb2tpZSBpbiBtb3N0IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBs
YXlvdXQgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1
bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9k
YWxEaWFsb2cuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL2RvY3Vt
ZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUt
cGFyc2luZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3Vy
Y2VzL2Nsb3NlLW1vZGFsLWRpYWxvZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2Nvb2tpZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmct
aWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9yZXNvdXJj
ZXMvc2V0LWNvb2tpZS1hbmQtc2VydmUucGhwOiBBZGRlZC4KKwogMjAyMC0wMi0xMSAgSmFzb24g
TGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIGlPUyB3azIgXSBm
YXN0L3ZpZXdwb3J0L2lvcy93aWR0aC1pcy1kZXZpY2Utd2lkdGgtb3ZlcmZsb3dpbmctYm9keS1v
dmVyZmxvdy1oaWRkZW4tdGFsbC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dN
b2RhbERpYWxvZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMv
ZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjRhZjkyNGJmYjdlODFlYjNkMGNmNGQzZDQyY2IyMzA4YTQ0NTM1MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUt
YWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0
cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSBhZnRlciBhIHNo
b3dNb2RhbERpYWxvZygpIGNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSkgaXMgInRlc3RLZXk9dGVzdFZhbHVl
IgorUEFTUyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAiZm9vPWJhcjsgdGVz
dEtleT10ZXN0VmFsdWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2Rv
Y3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWFiODQ3YjMzZDUxOThlOTY2ZGE3YjA4Y2ViODg2MGExZDY5NDdlYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVu
dC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWwKQEAgLTAsMCArMSwzNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29r
aWVzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlucHV0IGlkPSJ0
ZXN0QnV0dG9uIiB0eXBlPSJidXR0b24iIHZhbHVlPSJDbGljayBtZSI+PC9pbnB1dD4KKzxzY3Jp
cHQ+CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUg
cmlnaHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsJyk7Citqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuc2V0
Q2FuT3BlbldpbmRvd3MoKTsKKwordGVzdEJ1dHRvbi5vbmNsaWNrID0gKCkgPT4geworICAgIGRv
Y3VtZW50LmNvb2tpZSA9ICJ0ZXN0S2V5PXRlc3RWYWx1ZSI7CisgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKScsICd0ZXN0S2V5PXRlc3RW
YWx1ZScpOworCisgICAgc2hvd01vZGFsRGlhbG9nKCJyZXNvdXJjZXMvc2V0LWNvb2tpZS1hbmQt
c2VydmUucGhwP2Nvb2tpZS1uYW1lPWZvbyZjb29raWUtdmFsdWU9YmFyJmRlc3RpbmF0aW9uPWNs
b3NlLW1vZGFsLWRpYWxvZy5odG1sIik7CisKKyAgICAvLyBUaGlzIGlzIHNvIHRoZSBjb29raWUg
Z2V0cyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisgICAgcmVnaXN0ZXJDb29raWVG
b3JDbGVhbnVwKCdmb289YmFyOyBwYXRoPS8nKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmco
J25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ2Zvbz1iYXI7IHRlc3RLZXk9dGVz
dFZhbHVlJyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworb25sb2FkID0gKCkgPT4gewor
ICAgIGludGVybmFscy53aXRoVXNlckdlc3R1cmUoKCkgPT4geworICAgICAgICB0ZXN0QnV0dG9u
LmNsaWNrKCk7CisgICAgfSk7Cit9OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2Vz
L2Nvb2tpZXMtdGVzdC1wb3N0LmpzJz48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVy
aW5nLWlmcmFtZS1wYXJzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zY2Y1YWRhOGM0OWFmNTI0NzA3ZWFkMmZhMThiNGU2M2QxOTIyM2E0Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50
LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIg
QEAKK1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFm
dGVyIGEgc2hvd01vZGFsRGlhbG9nKCkgY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10
ZXN0VmFsdWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShjb29raWVzSW5GcmFtZSkgaXMgImZvbz1i
YXI7IHRlc3RLZXk9dGVzdFZhbHVlIgorUEFTUyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29v
a2llKSBpcyAiZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUiCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVy
aW5nLWlmcmFtZS1wYXJzaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmYyOWVmYjUzOGNhNDdlMjI4Yjcz
OGZjNTNkOTUwNDQ5ZGE5Y2NiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLmh0bWwK
QEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcHJlLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tp
ZSByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSBhZnRlciBhIHNob3dNb2RhbERpYWxvZygpIGNhbGwn
KTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitmdW5jdGlvbiB2YWxpZGF0ZUNvb2tpZXNEdXJp
bmdDaGlsZEZyYW1lUGFyc2luZyhfY29va2llc0luRnJhbWUpCit7CisgICAgY29va2llc0luRnJh
bWUgPSBfY29va2llc0luRnJhbWU7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxp
emVDb29raWUoY29va2llc0luRnJhbWUpJywgJ2Zvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlJyk7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29v
a2llKScsICdmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZScpOworICAgIGZpbmlzaEpTVGVzdCgp
OyAgICAKK30KKworb25sb2FkID0gKCkgPT4geworICAgIGRvY3VtZW50LmNvb2tpZSA9ICJ0ZXN0
S2V5PXRlc3RWYWx1ZSI7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxpemVDb29r
aWUoZG9jdW1lbnQuY29va2llKScsICd0ZXN0S2V5PXRlc3RWYWx1ZScpOworCisgICAgLy8gVGhp
cyBpcyBzbyB0aGUgY29va2llIGdldHMgcmVtb3ZlZCBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0Lgor
ICAgIHJlZ2lzdGVyQ29va2llRm9yQ2xlYW51cCgnZm9vPWJhcjsgcGF0aD0vJyk7CisKKyAgICBs
ZXQgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CisgICAgaWZyYW1l
LnNyYyA9ICJyZXNvdXJjZXMvc2V0LWNvb2tpZS1hbmQtc2VydmUucGhwP2Nvb2tpZS1uYW1lPWZv
byZjb29raWUtdmFsdWU9YmFyJmRlc3RpbmF0aW9uPWRvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZy
YW1lLXBhcnNpbmctaWZyYW1lLmh0bWwiOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aWZyYW1lKTsKK307Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10
ZXN0LXBvc3QuanMnPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvY2xvc2UtbW9k
YWwtZGlhbG9nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY1NjhkZmVkYmIyZDNhOTVhMmYxNDNlNmVmMWM4
MjFlYWNiZGEyZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29v
a2llcy9yZXNvdXJjZXMvY2xvc2UtbW9kYWwtZGlhbG9nLmh0bWwKQEAgLTAsMCArMSw3IEBACis8
c2NyaXB0Pgorb25sb2FkID0gKCkgPT4geworICAgIGNsb3NlKCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgIHRlc3RSdW5uZXIuYWJvcnRNb2RhbCgpOworfTsKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9k
b2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9kb2N1bWVudC1jb29raWUtZHVyaW5n
LWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZDdhYjdhMzkyMmQxMDhh
MWY2MDI3OTllNjY4MzQzNWE4OTkyNGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1l
LXBhcnNpbmctaWZyYW1lLmh0bWwKQEAgLTAsMCArMSwzIEBACis8c2NyaXB0PgordG9wLnZhbGlk
YXRlQ29va2llc0R1cmluZ0NoaWxkRnJhbWVQYXJzaW5nKGRvY3VtZW50LmNvb2tpZSk7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJj
ZXMvc2V0LWNvb2tpZS1hbmQtc2VydmUucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29r
aWVzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHAKbmV3IGZpbGUgbW9kZSAxMDA3
NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTlmNDNm
MjllODUyZGRjYzA5Zjk2OWY4OTllOGYzZTEyYWJhYTg0OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0LWNvb2tpZS1hbmQtc2Vy
dmUucGhwCkBAIC0wLDAgKzEsMTMgQEAKKzw/cGhwCiskY29va2llTmFtZSA9ICRfR0VUWydjb29r
aWUtbmFtZSddOworJGNvb2tpZVZhbHVlID0gJF9HRVRbJ2Nvb2tpZS12YWx1ZSddOworJGRlc3Rp
bmF0aW9uID0gJF9HRVRbJ2Rlc3RpbmF0aW9uJ107CitoZWFkZXIoIkNvbnRlbnQtVHlwZTogdGV4
dC9odG1sIik7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLXN0b3JlIik7CitoZWFkZXIoIlNl
dC1Db29raWU6ICR7Y29va2llTmFtZX09JHtjb29raWVWYWx1ZX07IHBhdGg9LyIpOworJGZwID0g
Zm9wZW4oJGRlc3RpbmF0aW9uLCAncmInKTsKK2hlYWRlcigiQ29udGVudC1MZW5ndGg6ICIgLiBm
aWxlc2l6ZSgkZGVzdGluYXRpb24pKTsKKworZnBhc3N0aHJ1KCRmcCk7CitleGl0OworPz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390687</attachid>
            <date>2020-02-13 14:33:35 -0800</date>
            <delta_ts>2020-02-13 14:37:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207593-20200213143334.patch</filename>
            <type>text/plain</type>
            <size>91655</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJkMTIwYWVkNTVjMzVmZmVjODk5YWMz
NTFmNzAwNWI3ZWU4ZjkyZDkuLjNmMGU3YTRjMWVjMDVlOTVkZmMxYWZlMmVmNzNiZjlkOTBiZDM3
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nl
c3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4g
bW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYnVpbGQgdGltZSBmbGFn
cyBmb3IgbmV3IGZlYXR1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAtMDItMTEgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBpbi1iYW5kIFZUVCBj
YXB0aW9ucyB3aGVuIGxvYWRpbmcgbWVkaWEgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGI0NWQ3MmUyNjFlNDNiOWMwM2I0OGEwZWFiYTlmYmQ5MmNhZTBmMi4uODg2ZmYzMTI0MGRj
MmY2OWYxZDM0NDAyYzU1NjEzMjkwYmY1OTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBA
CisyMDIwLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dLMl1bQ29jb2FdIEltcGxlbWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9p
ZCBzeW5jIElQQyBmb3IgZG9jdW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTYwMjcwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlz
dG8uCisKKyAgICAgICAgSW1wbGVtZW50IGluLVdlYlByb2Nlc3MgRE9NIGNvb2tpZSBjYWNoZSBm
b3Igc2VydmluZyBgZG9jdW1lbnQuY29va2llYCByZXF1ZXN0cyBmcm9tIEphdmFTY3JpcHQuCisK
KyAgICAgICAgVGhlIGZpcnN0IHRpbWUgZG9jdW1lbnQuY29va2llIGlzIGNhbGxlZCBmb3IgYSBn
aXZlbiBob3N0LCB0aGUgV2ViUHJvY2VzcyB3aWxsIHB1bGwgaW4gYWxsIHRoZQorICAgICAgICBu
b24tSFRUUE9ubHkgY29va2llcyBmb3IgdGhhdCBob3N0IGZyb20gdGhlIE5ldHdvcmtQcm9jZXNz
IChzdGlsbCB2aWEgc3luYyBJUEMpIGFuZCBzdG9yZSB0aGVtCisgICAgICAgIGluIGFuIGluLW1l
bW9yeSBjb29raWUgc3RvcmUuIExhdGVyIGRvY3VtZW50LmNvb2tpZSBjYWxscyBmb3IgdGhpcyBo
b3N0IGZyb20gdGhpcyBXZWJQcm9jZXNzCisgICAgICAgIHdpbGwgdGhlbiBsZXZlcmFnZSB0aGUg
aW4tbWVtb3J5IGNvb2tpZSBzdG9yZSBhbmQgYXZvaWQgZG9pbmcgYSBzeW5jIElQQyB0byB0aGUg
TmV0d29ya1Byb2Nlc3MKKyAgICAgICAgZW50aXJlbHkuCisKKyAgICAgICAgVG8gbWFpbnRhaW4g
dGhlIGluLXByb2Nlc3MgY29va2llIHN0b3JlIHVwLXRvLWRhdGUsIHRoZSBXZWJQcm9jZXNzIHN1
YnNjcmliZSBmb3IgY29va2llLWNoYW5nZQorICAgICAgICBub3RpZmljYXRpb25zIGZyb20gdGhl
IE5ldHdvcmtQcm9jZXNzLCBvbmx5IGZvciB0aGUgaG9zdHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4K
KworICAgICAgICBJZiB0aGUgcGFnZSdzIEphdmFTY3JpcHQgc2V0cyBhIGNvb2tpZSBieSBzZXR0
aW5nIGRvY3VtZW50LmNvb2tpZSwgd2Ugd2lsbCBub3QgaW52YWxpZGF0ZSB0aGUKKyAgICAgICAg
Y2FjaGUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIEluc3RlYWQsIHdlIHNldCB0aGUgY29va2ll
IGluIG91ciBpbi1tZW1vcnkgY29va2llIGJlZm9yZQorICAgICAgICBzZW5kaW5nIHRoZSBuZXcg
Y29va2llIHRvIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBGb3IgY29tcGF0aWJpbGl0
eSByZWFzb25zLCBhbnkgc3luYyBJUEMgdG8gYSBnaXZlbiBob3N0IHdpbGwgY3VycmVudGx5IGlu
dmFsaWRhdGUgdGhlIGNvb2tpZQorICAgICAgICBjYWNoZSBmb3IgdGhpcyBob3N0LiBUaGlzIGlz
IGJlY2F1c2UgdGhpcyBzeW5jaHJvbm91cyBsb2FkIG1heSBjYXVzZSBjb29raWVzIHRvIGdldCBz
ZXQKKyAgICAgICAgc3luY2hyb25vdXNseSBhbmQgdGhlIHBhZ2UgY291bGQgYWNjZXNzIGRvY3Vt
ZW50LmNvb2tpZSByaWdodCBhZnRlciB0aGUgc3luYyBYSFIuIFRoaXMgYmVoYXZpb3IKKyAgICAg
ICAgaXMgY292ZXJlZCBieSB0aGUgZm9sbG93aW5nIGV4aXN0aW5nIHRlc3Q6CisgICAgICAgIC0g
aHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUu
aHRtbAorCisgICAgICAgIEFub3RoZXIgbGltaXRhdGlvbiBvZiB0aGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgY29va2llIGNhY2hlIGlzIHRoYXQgaXQgaXMgY3VycmVudGx5CisgICAg
ICAgIG9ubHkgbGV2ZXJhZ2VkIGZvciBmaXJzdCBwYXJ0eSBjb250ZW50LiBUaGlzIGlzIHN1Ym9w
dGltYWwgYW5kIGNvdWxkIGJlIGltcHJvdmVkIGluIGEgbGF0ZXIKKyAgICAgICAgaXRlcmF0aW9u
LiBIb3dldmVyLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpbiBTYWZhcmkgaXMgdGhhdCB0aGlyZC1w
YXJ0eSBpZnJhbWVzIGRvIG5vdCBoYXZlCisgICAgICAgIGNvb2tpZSBhY2Nlc3MgdW5sZXNzIHRo
ZXkgcmVxdWVzdCBpdCB1c2luZyB0aGUgc3RvcmFnZSBhY2Nlc3MgQVBJLiBXZSBhbHNvIGN1cnJl
bnRseSBoYXZlCisgICAgICAgIGEgbGltaXQgb2YgNSBob3N0cyB3aXRoIGNhY2hlZCBjb29raWVz
IHBlciBXZWJQcm9jZXNzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5o
dG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWxlYXNlQ3JpdGljYWxNZW1vcnkpOgorICAgICAgICAqIHBhZ2UvU2V0
dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXI6On5Db29raWVD
aGFuZ2VPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAg
ICAgKFdlYkNvcmU6Om5zQ29va2llc1RvQ29va2llVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlSFRUUENvb2tpZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29raWVzRm9y
VVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0
cENvb2tpZXNGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyQ29va2llcyk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVz
Rm9yU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpyZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3RlckNvb2tpZUNoYW5n
ZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcExpc3RlbmluZ0ZvckNv
b2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkb21Db29raWVzRm9ySG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkgY29uc3QpOgor
CiAyMDIwLTAyLTExICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVn
IDIwNzQyNDogQ3Jhc2ggaW4gV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcnNlQ29udGVu
dFR5cGUgd2hlbiBwYXJzaW5nIGludmFsaWQgTUlNRSB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRl
eCBjYTYzNjBhYTM3NTM5Y2Y2NDY5OTUzNWVlZDBmMjNhY2Y4MmFkMTlhLi5lM2FmMzMxMjEyZGNm
MGRiZTIxZGYzNzJlYTBlZGFmZmQxNzQ3ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMC0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBjb29raWUgY2FjaGUg
dG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBpbiBtb3N0IGNhc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1OTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRp
IEtvaXZpc3RvLgorCisgICAgICAgIEFkZCBuZXcgQ0ZOZXR3b3JrIFNQSSB0byBDRk5ldHdvcmtT
UEkuaCBmb3Igb3BlbiBzb3VyY2UgYnVpbGRzIGFuZCBmb3IgdXNpbmcgcmVzcG9uZHNUb1NlbGVj
dG9yLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoKKwogMjAyMC0wMi0x
MSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBX
cm9uZyBpbmNsdWRlcyBmb3IgaW50ZXJuYWwgU0RLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNmMjYxMTE3NDBlOWRk
MmFjYjEyZTY4NTBiZjExY2E3ZTg4ZjJiMWYuLjA5N2Y4M2JjMWU0MWZlY2EzNDIzNzk5ZThiY2E3
Y2Q1ZGI4NzE2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjAtMDItMTIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVt
ZW50IGluLVdlYlByb2Nlc3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1
bWVudC5jb29raWUgaW4gbW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAy
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBTZWUg
V2ViQ29yZSBDaGFuZ2VMb2cuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZG9tQ29va2llc0Zvckhv
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5z
dWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzQWRkZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0ZWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjb29raWVzQWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmNvb2tpZXNEZWxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbTogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmguCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmlzRnVuY3Rpb25hbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
Q2FjaGU6OmNvb2tpZXNBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpj
b29raWVzRGVsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpjbGVhcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpjbGVhckZvckhvc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmguCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZUphcjo6aXNFbGlnaWJsZUZvckNhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llSmFyOjpjb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
SmFyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXNEZWxldGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjbGVhckNhY2hlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llSmFyOjpjbGVhckNhY2hlRm9ySG9zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9vdmVycmlkZGVuTWVkaWFUeXBlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y29va2llSmFyKToKKwogMjAyMC0wMi0x
MSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydCByMjU1NjYyIGFzIGl0IHNlZW1zIHRvIGNhdXNlIGJsYW5rIHZpZXdzIGluIFNWQy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hTZXQuaAppbmRleCBlMjY4N2U5YjA2MmRkYzg0OTQ1OTQyZTkwMjQ2YWE4MWE3ZjQ0NTU1Li5l
ZTJjMjkxMzc4Mzg4MjViOTlkYTYwNDc5MzI5OWEzYThkYjNlYzAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC0x
MTIsNiArMTEyLDggQEAgcHVibGljOgogICAgIC8vIHRoZW0gYXJlIG5ldyB0byB0aGUgc2V0LiBS
ZXR1cm5zIGZhbHNlIGlmIHRoZSBzZXQgaXMgdW5jaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEl0ZXJhdG9yVHlwZT4KICAgICBib29sIGFkZChJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJh
dG9yVHlwZSBlbmQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KKyAgICBi
b29sIHJlbW92ZShJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpOwogCiAgICAg
Ym9vbCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7CiAgICAgYm9vbCByZW1vdmUoaXRlcmF0b3Ip
OwpAQCAtMjcwLDYgKzI3MiwxNiBAQCBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjphZGQo
SXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUgZW5kKQogICAgIHJldHVybiBjaGFuZ2Vk
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVt
cGxhdGU8dHlwZW5hbWUgSXRlcmF0b3JUeXBlPgoraW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
Pjo6cmVtb3ZlKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKK3sKKyAgICBi
b29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICBmb3IgKEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIGNoYW5nZWQgfD0gcmVtb3ZlKCppdGVyKTsK
KyAgICByZXR1cm4gY2hhbmdlZDsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZShpdGVy
YXRvciBpdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZDI0Yjg1ZTJkYTI0MTM0NmUwMGI3
MzM3YTU5NjgzYmU2MTAyMGMyOC4uMjlmMGY1NmExMjI3MzE0OTRiYzNlMDM5YTU2MmM3ODFhZDM3
ODQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU1Niw2ICs1NTYsMTAgQEAKICNkZWZpbmUg
SEFWRV9ERVZJQ0VfSURFTlRJVFkgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkK
KyNkZWZpbmUgSEFWRV9DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSAxCisjZW5kaWYKKwogI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NTAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBIQVZFX0RBVEFfUFJPVEVDVElP
Tl9LRVlDSEFJTiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmgKaW5kZXggNjY1OGU3MjhjOWM5ODJhNmZmODJjMGNhNDE2NDhjMmQ0ZGMxMTQ0
MC4uYTkyMDc2MGIzZDY5YzIzYmU4YjY4OWU1NmY0OGZkZDdkOGM2NDM5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTM5MSw2ICszOTEsMTAg
QEAgV1RGX0VYVEVSTl9DX0VORAogCiBAaW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKCkK
ICsgKHZvaWQpX3NldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdl
ICopc3RvcmFnZTsKKy0gKHZvaWQpX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
czooTlNTZXQ8TlNTdHJpbmcqPiogX19udWxsYWJsZSlkb21haW5MaXN0OworLSAodm9pZClfc2V0
Q29va2llc0FkZGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBDb29r
aWUqPiogYWRkZWRDb29raWVzLCBOU1VSTCogX19udWxsYWJsZSB1cmxGb3JBZGRlZENvb2tpZXMp
KWNvb2tpZXNBZGRlZEhhbmRsZXIgb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdCBfX251bGxhYmxl
KXF1ZXVlOworLSAodm9pZClfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVyOih2b2lkKF5fX251bGxh
YmxlKShOU0FycmF5PE5TSFRUUENvb2tpZSo+KiBfX251bGxhYmxlIGRlbGV0ZWRDb29raWVzLCBi
b29sIGRlbGV0ZWRBbGxDb29raWVzKSljb29raWVzRGVsZXRlZEhhbmRsZXIgb25RdWV1ZTooZGlz
cGF0Y2hfcXVldWVfdCBfX251bGxhYmxlKXF1ZXVlOworLSAoTlNBcnJheSogX19udWxsYWJsZSlf
Z2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJpbmcqKWRvbWFpbjsKIEBlbmQKIAogQGludGVyZmFj
ZSBOU1VSTFJlc3BvbnNlICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4NThlODgzMjI0
NGRmMjhhYTQ1MTIwNDcxZGQwZTI5YTgxNDEzZTdmLi41NmU4MzJmNGRiMTBjZWMzYTAyZjA4MWFi
OTliZGQxMGMxZWJkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcxOTUsMTEgKzcx
OTUsMTQgQEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKICAgICBt
X2NhY2hlZERPTUNvb2tpZXMgPSBTdHJpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSgpCit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFN5bmNocm9ub3VzIHJlc291
cmNlcyBsb2FkaW5nIGNhbiBzZXQgY29va2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVz
IGNhY2hlCiAgICAgLy8gaW4gdGhpcyBjYXNlLCB0byBiZSBzYWZlLgogICAgIGludmFsaWRhdGVE
T01Db29raWVDYWNoZSgpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisg
ICAgICAgIHBhZ2UtPmNvb2tpZUphcigpLmNsZWFyQ2FjaGVGb3JIb3N0KHVybC5ob3N0KCkudG9T
dHJpbmcoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlw
dChET01XcmFwcGVyV29ybGQmIHdvcmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1NjIwMjkx
YWJlYjNlMGM5OWRlOTY1NjVkMzFkYWRjMjk1MzYzYzAwLi4yZmM0ZGM2OWNlMWZhNjE0YWQ5NDM4
YzFmODdkOGE1ZjA0MTRhM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY0MCw3ICsxNjQw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENhY2hlZERPTUNvb2tpZXMoY29uc3QgU3RyaW5n
Jik7CiAgICAgYm9vbCBpc0RPTUNvb2tpZUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nv
b2tpZUNhY2hlRXhwaXJ5VGltZXIuaXNBY3RpdmUoKTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZURP
TUNvb2tpZUNhY2hlKCk7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkg
ZmluYWw7CisgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYp
IGZpbmFsOwogCiAgICAgYm9vbCBjYW5OYXZpZ2F0ZUludGVybmFsKEZyYW1lJiB0YXJnZXRGcmFt
ZSk7CiAgICAgYm9vbCBpc05hdmlnYXRpb25CbG9ja2VkQnlUaGlyZFBhcnR5SUZyYW1lUmVkaXJl
Y3RCbG9ja2luZyhGcmFtZSYgdGFyZ2V0RnJhbWUsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4
IDU4ODJlMWFiMWFiOTNiMzczZWEyM2E2YTAyODI0MWRlZWY1MzM4NjQuLjMyYWY3NDQ4MTQxYTc5
MWM4M2M2ZjI5MWVjZWRkYWRhMDFkMTlhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdl
UG9ydCkKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3NhZ2VQb3J0KTsKIH0KIAotdm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkK
K3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBVUkwmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCAwMDgzMWEyNjBiNTM3YTAwOTNhODgxMmRhNGJhNWZmZDVjMjU1NmE4
Li5iYzA0ZGY0OWQxYWU5Nzg5NjMwNWM4MjMxM2E2ZDVjMmY2MjQ0ZmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsKICAgICB2
b2lkIGRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRM
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCByZWYoKSB7
IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVm
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5k
ZXggODRkYmE0MGU5Mjg2Y2QzZmQ4MzgzNGJhYzAyMDE2MDAxYTI3ZjUwNy4uMzAwMjkzYTg2NmRh
YzRiMjA4NTdiN2U3NTI0NDc4MTEwYzVjODlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
aApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAorICAgIC8vIENvb2tpZSBDYWNoZS4KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNoZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNh
Y2hlRm9ySG9zdChjb25zdCBTdHJpbmcmKSB7IH0KKwogICAgIHZpcnR1YWwgfkNvb2tpZUphcigp
OwogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0
IERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggMmI3YmY0MjlkZDYyMmZjNzI3ZTEwMTMwMmVmZmVlZGQ1ZTRjMzg0Ny4uYzdlMGYzMWJl
NzIwNmZlZjhkYWFkMTg0NjFlNGY1YTI0YmJmN2Q2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTEwLDExICsxMTAsMTIgQEAgUmVmUHRyPFRocmVh
ZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXgKIAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgYXV0byByZXNvdXJjZVVSTCA9IHJlcXVl
c3QudXJsKCk7CiAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKICAgICAg
ICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVu
dCwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwotICAgIGNvbnRleHQuZGlkTG9hZFJl
c291cmNlU3luY2hyb25vdXNseSgpOworICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hy
b25vdXNseShyZXNvdXJjZVVSTCk7CiB9CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJy
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKaW5kZXggMzE2ZDIxNjk3YmRiZWU5MmQxM2FlMzlkNjRhNzQ0ZjM0ZmYxN2E1Yy4u
NDExZjg3MmRhNGIxMmE4MGNkMzk3MzIwODJkNzM5ZThlNDZiZjdjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2hyb21l
LmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKKyNp
bmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05OSw2ICsxMDAsMTAgQEAgc3RhdGlj
IHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9ub3VzIHN5bmNocm9ub3VzLCBNYWlu
dGFpbkJhY2tGb3J3YXJkQ2EKIAogICAgIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4o
KTsKIAorICAgIFBhZ2U6OmZvckVhY2hQYWdlKFtdKGF1dG8mIHBhZ2UpIHsKKyAgICAgICAgcGFn
ZS5jb29raWVKYXIoKS5jbGVhckNhY2hlKCk7CisgICAgfSk7CisKICAgICBmb3IgKGF1dG8mIGRv
Y3VtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERv
Y3VtZW50cygpKSkgewogICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlbGVhc2VNZW1v
cnkoKTsKICAgICAgICAgZG9jdW1lbnQtPmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggNWQzYTg4YzQ4ZjdhYTY3MGY4NGY4YjNmZTEx
YWJhMzExMDRiNGI0YS4uYTI3MWUxYzkzMzBmNDVlM2Y0MzYyODU1MjA3YzM5OGY5YmUwODRlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzYzLDYgKzM2Myw5IEBAIHJlcXVlc3RJ
ZGxlQ2FsbGJhY2tFbmFibGVkOgogSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFs
c2UKIAoraW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0
aGlyZFBhcnR5SWZyYW1lUmVkaXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDI5OTQyNzU2MjU4ZTkyNDNjM2IwYTEwMGIxYTNmNmY3
MmE4NDc1OGMuLmFjYWI3NTZiNTc3YzFhM2FjYzU3OTJmMWI3NTU1MTk5MTllNzU1NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5jcHAKQEAgLTU2LDYgKzU2LDIxIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpwZXJtaXRQcm9jZXNzVG9Vc2VDb29raWVBUEkoYm9vbCB2YWx1ZSkKICAgICAgICAgcmVt
b3ZlUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KTsKIH0KIAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkK
K3sKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHVucmVnaXN0ZXJD
b29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpOworI2VuZGlmCit9CisKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRvbUNv
b2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRF
RF9ZRVQoKTsKKyAgICByZXR1cm4geyB9OworfQorI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkK
KwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IDY1
MDZmMTA3NzA2NWE0ZDIxZjc5ODAxOTJmM2Q3NTA3ZWJjMjNhOWUuLjUyOWJiY2ZmNjAyM2M1ZTZi
MjlhNDAyMmIwNzNjNmJlNTg2Yjg0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYwLDYgKzYwLDkg
QEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENvb2tpZUphcjsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIgorT0JKQ19D
TEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU0hUVFBDb29raWU7CitPQkpDX0NMQVNTIE5TTXV0
YWJsZVNldDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OSw2ICs4MiwxNSBA
QCBlbnVtIGNsYXNzIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgOiB1aW50OF90IHsgQWxs
LCBBbGxPblNpdGVzV2l0aG91dFVzZXJJbgogZW51bSBjbGFzcyBGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBBbGxCdXRDb29r
aWVzTGl2ZU9uVGVzdGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3RpbmdUaW1lb3V0
IH07CiBlbnVtIGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07CiAKKyNpZiBI
QVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorY2xhc3MgQ29va2llQ2hhbmdlT2JzZXJ2
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvb2tpZUNoYW5nZU9ic2VydmVyKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb29raWVzRGVs
ZXRlZCgpID0gMDsKK307CisjZW5kaWYKKwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTkyLDkgKzEwNCwxMiBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTlNIVFRQQ29va2llU3RvcmFnZSAqbnNDb29raWVTdG9yYWdlKCkg
Y29uc3Q7CiAjZW5kaWYKIAorICAgIFdFQkNPUkVfRVhQT1JUIH5OZXR3b3JrU3RvcmFnZVNlc3Np
b24oKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoQ0ZTdHJpbmdSZWYgaWRlbnRpZmll
cik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lv
bklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiwgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+JiYpOworICAgIGVudW0gY2xhc3MgSXNJbk1lbW9yeUNvb2tpZVN0
b3JlIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
PiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJiwgSXNJbk1lbW9yeUNvb2tp
ZVN0b3JlID0gSXNJbk1lbW9yeUNvb2tpZVN0b3JlOjpObyk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIC8v
IE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGEgRm91bmRhdGlvbiBkZWZhdWx0IHNob3VsZCBi
ZSB1c2VkLgpAQCAtMTQ2LDYgKzE2MSwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVT
ZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8Q29va2llPiBkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3Qp
OworCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29r
aWVDaGFuZ2VPYnNlcnZlciYsIGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVD
aGFuZ2VPYnNlcnZlciYsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaG9zdHMpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpIGNvbnN0Owor
I2VuZGlmCisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwpAQCAt
MTczLDExICsxOTYsMjcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhU
VFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0
cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZikgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0
cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKmZpcnN0UGFydHks
IGNvbnN0IE9wdGlvbmFsPFNhbWVTaXRlSW5mbz4mLCBOU1VSTCAqKSBjb25zdDsKKyAgICBOU0Fy
cmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFApIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUENvb2tp
ZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqY29va2llcywgTlNVUkwg
KiwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJikgY29uc3Q7Cisg
ICAgdm9pZCBkZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TSFRUUENv
b2tpZSAqKSBjb25zdDsKKyNlbmRpZgorCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKKyAgICB2b2lkIHJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3Nhcnko
KTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgp
OworI2VuZGlmCisKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0cjxDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CisgICAgYm9vbCBtX2lz
SW5NZW1vcnlDb29raWVTdG9yZSB7IGZhbHNlIH07CiAjZWxpZiBVU0UoU09VUCkKICAgICBzdGF0
aWMgdm9pZCBjb29raWVzRGlkQ2hhbmdlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiopOwogCkBAIC0x
OTAsNiArMjI5LDEyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBt
X2NvbnRleHQ7CiAjZW5kaWYKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkp
CisgICAgYm9vbCBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzIHsgZmFsc2UgfTsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiBtX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
czsKKyAgICBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxDb29raWVDaGFuZ2VPYnNlcnZlcio+PiBt
X2Nvb2tpZUNoYW5nZU9ic2VydmVyczsKKyNlbmRpZgorCiAgICAgQ3JlZGVudGlhbFN0b3JhZ2Ug
bV9jcmVkZW50aWFsU3RvcmFnZTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGIwMWE3ZTY2YmYwOTE0
OTYxZDYzMDEwNzQxZTIyMTc1ZjllZmI5YjguLmUwZDg0ZjdjNTE3OTVlY2ViZjNlNTA2YzliMGEy
OGU4Y2I1YWI2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC03Mywx
MSArNzMsMTIgQEAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkYKICAgICByZXR1cm4gc3RvcmFnZVNl
c3Npb247CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+JiYgcGxhdGZvcm1TZXNzaW9uLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4m
JiBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpCitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmPiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+JiYgcGxhdGZvcm1Db29raWVTdG9yYWdlLCBJc0luTWVtb3J5Q29va2llU3Rv
cmUgaXNJbk1lbW9yeUNvb2tpZVN0b3JlKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQog
ICAgICwgbV9wbGF0Zm9ybVNlc3Npb24oV1RGTW92ZShwbGF0Zm9ybVNlc3Npb24pKQorICAgICwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUoaXNJbk1lbW9yeUNvb2tpZVN0b3JlID09IElzSW5NZW1v
cnlDb29raWVTdG9yZTo6WWVzKQogewotICAgIEFTU0VSVChwcm9jZXNzTWF5VXNlQ29va2llQVBJ
KCkgfHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSk7CisgICAgQVNTRVJUKHByb2Nlc3NNYXlVc2VD
b29raWVBUEkoKSB8fCAhcGxhdGZvcm1Db29raWVTdG9yYWdlIHx8IG1faXNJbk1lbW9yeUNvb2tp
ZVN0b3JlKTsKICAgICBtX3BsYXRmb3JtQ29va2llU3RvcmFnZSA9IHBsYXRmb3JtQ29va2llU3Rv
cmFnZSA/IFdURk1vdmUocGxhdGZvcm1Db29raWVTdG9yYWdlKSA6IGNvb2tpZVN0b3JhZ2UoKTsK
IH0KIApAQCAtODgsMTAgKzg5LDEwIEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZSgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCisgICAgaWYgKCFw
cm9jZXNzTWF5VXNlQ29va2llQVBJKCkgJiYgIW1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJv
Y2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBt
X2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBpZiAobV9wbGF0Zm9ybUNvb2tpZVN0b3Jh
Z2UpCiAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtQ29va2llU3RvcmFnZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDllOWE5MWI3MjUwZjM2MmI4NTk0NWYzZDcw
Mjc2ZTZhYmIxYWRkNDIuLjhkYzRkZjUxMmU2ZjllMDZiNDdlZjk3MmNkOTFjYzRkODQwODUzNzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nv
b2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBD
b29raWUgKiljb29raWVdOwpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
KTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5B
Y2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZvciAoY29u
c3QgYXV0byYgY29va2llIDogY29va2llcykKQEAgLTY4LDE5ICs2OCwxOCBAQCB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJgogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2ll
KGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8
fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgW25zQ29va2llU3RvcmFnZSgpIGRlbGV0
ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llXTsKIH0KIAotc3RhdGljIFZlY3RvcjxDb29r
aWU+IG5zQ29va2llc1RvQ29va2llVmVjdG9yKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nv
b2tpZXMpCitzdGF0aWMgVmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29raWVWZWN0b3IoTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcywgY29uc3QgRnVuY3Rpb248Ym9vbChOU0hU
VFBDb29raWUgKik+JiBmaWx0ZXIgPSB7IH0pCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotCiAgICAgVmVj
dG9yPENvb2tpZT4gY29va2llczsKICAgICBjb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bnNDb29raWVzLmNvdW50KTsKLSAgICBmb3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUgaW4gbnND
b29raWVzKQotICAgICAgICBjb29raWVzLnVuY2hlY2tlZEFwcGVuZChuc0Nvb2tpZSk7Ci0KKyAg
ICBmb3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUgaW4gbnNDb29raWVzKSB7CisgICAgICAgIGlm
ICghZmlsdGVyIHx8IGZpbHRlcihuc0Nvb2tpZSkpCisgICAgICAgICAgICBjb29raWVzLnVuY2hl
Y2tlZEFwcGVuZChuc0Nvb2tpZSk7CisgICAgfQogICAgIHJldHVybiBjb29raWVzOwogfQogCkBA
IC0xMTgsNyArMTE3LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2ll
U3RvcmUoKQogCiBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5z
Q29va2llU3RvcmFnZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8
IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBhdXRvIGNmQ29va2llU3RvcmFnZSA9IGNv
b2tpZVN0b3JhZ2UoKTsKICAgICBpZiAoIWNmQ29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2ll
U3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY2ZDb29r
aWVTdG9yYWdlKQogICAgICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRU
UENvb2tpZVN0b3JhZ2VdOwpAQCAtMTU4LDExICsxNTcsNiBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKQog
ICAgIENGVVJMQ2FjaGVTZXREaXNrQ2FwYWNpdHkoY2FjaGUuZ2V0KCksIDApOyAvLyBTZXR0aW5n
IGRpc2sgY2FjaGUgc2l6ZSBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBvbmNlIDxyZGFyOi8vcHJv
YmxlbS8xMjY1NjgxND4gaXMgZml4ZWQuCiAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5
KGNhY2hlLmdldCgpLCBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIG1lbW9yeUNhcGFjaXR5
XSk7CiAKLSAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tp
ZUFQSSgpKQotICAgICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb24ubGVha1JlZigpOwotCi0gICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOwotCiAgICAgYXV0byBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9y
YWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VT
ZXNzaW9uLmdldCgpKSk7CiAgICAgaWYgKCFjb29raWVTdG9yYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTE3MywyMCArMTY3LDIzIEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3Jl
YXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgcmV0
dXJuIHN0b3JhZ2VTZXNzaW9uLmxlYWtSZWYoKTsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmh0dHBD
b29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK05TQXJyYXkgKk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBj
b29raWVTdG9yYWdlKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBpZiAoIWNvb2tpZVN0
b3JhZ2UpCisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOworICAgIGlm
ICghY29va2llU3RvcmFnZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5
Q29va2llU3RvcmUpOwogICAgICAgICByZXR1cm4gW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJl
ZEhUVFBDb29raWVTdG9yYWdlXSBjb29raWVzXTsKKyAgICB9CiAgICAgCiAgICAgYXV0byBjb29r
aWVzID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFn
ZSkpOwogICAgIHJldHVybiBbTlNIVFRQQ29va2llIF9jZjJuc0Nvb2tpZXM6Y29va2llcy5nZXQo
KV07CiB9CiAKLXN0YXRpYyB2b2lkIGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlLCBOU0hUVFBDb29raWUgKmNvb2tpZSkKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29v
a2llU3RvcmFnZSwgTlNIVFRQQ29va2llICpjb29raWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFj
Y2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBpZiAoIWNv
b2tpZVN0b3JhZ2UpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJbk1lbW9yeUNvb2tp
ZVN0b3JlKTsKICAgICAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVT
dG9yYWdlXSBkZWxldGVDb29raWU6Y29va2llXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTIyNiw5ICsyMjMsOSBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChOU0hUVFBDb29r
aWVTdG9yYWdlICpzdG9yYWdlLCBOU1VSTCAqdXJsLCBOU1VSTCAqbQogICAgIHJldHVybiBjb29r
aWVzUHRyLT5hdXRvcmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0Zv
clVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TQXJyYXkgKmNvb2tp
ZXMsIE5TVVJMICp1cmwsIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29r
aWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAq
Y29va2llcywgTlNVUkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2Up
IHsKICNpZiAhKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDEwMTQwMCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQog
ICAgICAgICBpZiAoW05TSFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0
b3I6QHNlbGVjdG9yKF9zZXRDb29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6cG9saWN5UHJv
cGVydGllczopXSkKQEAgLTI1NSwyMSArMjUyLDIyIEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29r
aWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAq
CiAjZW5kaWYKIH0KIAotc3RhdGljIE5TQXJyYXkgKmh0dHBDb29raWVzRm9yVVJMKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IE9w
dGlvbmFsPFNhbWVTaXRlSW5mbz4mIHNhbWVTaXRlSW5mbywgTlNVUkwgKnVybCkKK05TQXJyYXkg
Kk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKSBjb25zdAogewotICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nv
b2tpZXMpKTsKLSAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpCisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0lu
TWVtb3J5Q29va2llU3RvcmUpOworICAgIGlmICghY29va2llU3RvcmFnZSkgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgICAgICBjb29raWVT
dG9yYWdlID0gX0NGSFRUUENvb2tpZVN0b3JhZ2VHZXREZWZhdWx0KGtDRkFsbG9jYXRvckRlZmF1
bHQpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBTdG9wIGNyZWF0aW5nIGEgbmV3IE5TSFRUUENv
b2tpZVN0b3JhZ2Ugb2JqZWN0IGVhY2ggdGltZSB3ZSB3YW50IHRvIHF1ZXJ5IHRoZSBjb29raWUg
amFyLgogICAgIC8vIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBjb3VsZCBpbnN0ZWFkIGtlZXAgYSBO
U0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBmb3IgdXMuCiAgICAgUmV0YWluUHRyPE5TSFRUUENv
b2tpZVN0b3JhZ2U+IG5zQ29va2llU3RvcmFnZSA9IGFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9y
YWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2VdKTsK
LSAgICByZXR1cm4gY29va2llc0ZvclVSTChuc0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCwgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvclVS
TChuc0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsK
IH0KIAogc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkgKnVu
ZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSkKIHsKLSAg
ICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NS
YXdDb29raWVzKSk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFt1bmZpbHRlcmVkQ29va2llcyBj
b3VudF07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBmaWx0ZXJlZENvb2tpZXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsK
IApAQCAtMzAyLDI3ICszMDAsMjYgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJD
b29raWVzKE5TQXJyYXkgKnVuZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1
cm4gZmlsdGVyZWRDb29raWVzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApCitOU0FycmF5ICpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYg
c2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdl
SUQpKQorICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxk
QmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNF
RF9QQVJBTShwYWdlSUQpOwogICAgIFVOVVNFRF9QQVJBTShzaG91bGRBc2tJVFApOwogI2VuZGlm
Ci0gICAgcmV0dXJuIGh0dHBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdl
dCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CisgICAgcmV0dXJuIGh0dHBDb29r
aWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwpOwogfQogCi1lbnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRU
UE9ubHksIEluY2x1ZGVIVFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhU
VFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCA9IFNob3VsZEFza0lUUDo6WWVzKQorc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lvbihjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJv
Y2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBt
X2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiAKLSAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChzZXNzaW9uLCBmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFAp
OworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgaWYgKCFb
Y29va2llcyBjb3VudF0pCiAgICAgICAgIHJldHVybiB7IFN0cmluZygpLCBmYWxzZSB9OyAvLyBS
ZXR1cm4gYSBudWxsIHN0cmluZywgbm90IGFuIGVtcHR5IG9uZSB0aGF0IFN0cmluZ0J1aWxkZXIg
d291bGQgY3JlYXRlIGJlbG93LgogCkBAIC0zNzQsMjIgKzM3MSwyMiBAQCBzdGF0aWMgdm9pZCBk
ZWxldGVBbGxIVFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2Up
CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QKIHsK
LSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRl
U2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Np
b24oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJ
bmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQog
CiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNr
SVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5
LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2ll
c0ZvclNlc3Npb24oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsK
IH0KIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNl
c3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94
eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZy
YW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZp
ZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIHJldHVybiBjb29raWVzRm9yU2Vz
c2lvbihoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNp
dGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBo
ZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5
LmluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lU
UCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAogewotICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nv
b2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTQ1Nyw3ICs0NTQsNyBAQCBib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSQogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0Zv
clVSTCgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChm
aXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJ
VFApOwogICAgIE5TVUludGVnZXIgY291bnQgPSBbY29va2llcyBjb3VudF07CiAgICAgcmF3Q29v
a2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKQEAgLTUxOCw3ICs1MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aG9zdAogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29r
aWVzIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIApAQCAtNTY2LDQgKzU2Myw5OCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQog
ICAgIFtzdG9yYWdlIF9zYXZlQ29va2llc107CiB9CiAKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0Vf
TElTVEVORVJfQVBJKQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVnaXN0ZXJDb29r
aWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1fZGlkUmVnaXN0ZXJD
b29raWVMaXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlkUmVnaXN0ZXJDb29r
aWVMaXN0ZW5lcnMgPSB0cnVlOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0Fk
ZGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICogbnNDb29raWVzLCBOU1VSTCAq
dXJsRm9yQWRkZWRDb29raWVzKSB7CisgICAgICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXMgPSBu
c0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihuc0Nvb2tpZXMpOworICAgICAgICBhdXRvIGhvc3QgPSBV
UkwodXJsRm9yQWRkZWRDb29raWVzKS5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIWhvc3QuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGl0ID0gbV9jb29raWVDaGFu
Z2VPYnNlcnZlcnMuZmluZChob3N0KTsKKyAgICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hhbmdl
T2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmb3IgKGF1dG8q
IG9ic2VydmVyIDogaXQtPnZhbHVlKQorICAgICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNBZGRl
ZChob3N0LCBjb29raWVzKTsKKyAgICB9IG9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KV07CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6XihO
U0FycmF5PE5TSFRUUENvb2tpZSAqPiAqLCBib29sIC8qZGVsZXRlZEFsbENvb2tpZXMqLykgewor
ICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVycyA6IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnZh
bHVlcygpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQor
ICAgICAgICAgICAgICAgIG9ic2VydmVyLT5jb29raWVzRGVsZXRlZCgpOworICAgICAgICB9Cisg
ICAgfSBvblF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNz
YXJ5KCkKK3sKKyAgICBpZiAoIW1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMpCisgICAgICAg
IHJldHVybjsKKworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0FkZGVkSGFuZGxl
cjpuaWwgb25RdWV1ZTpuaWxdOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0Rl
bGV0ZWRIYW5kbGVyOm5pbCBvblF1ZXVlOm5pbF07CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9z
ZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6bmlsXTsKKyAgICBtX2RpZFJlZ2lz
dGVyQ29va2llTGlzdGVuZXJzID0gZmFsc2U7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hh
bmdlT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgcmVnaXN0
ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpOworCisgICAgYXV0byYgb2JzZXJ2
ZXJzID0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5zdXJlKGhvc3QsIFtdIHsKKyAgICAgICAg
cmV0dXJuIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiB7IH07CisgICAgfSkuaXRlcmF0
b3ItPnZhbHVlOworICAgIEFTU0VSVCghb2JzZXJ2ZXJzLmNvbnRhaW5zKCZvYnNlcnZlcikpOwor
ICAgIG9ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKKworICAgIGlmICghbV9zdWJzY3JpYmVkRG9t
YWluc0ZvckNvb2tpZUNoYW5nZXMpCisgICAgICAgIG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29r
aWVDaGFuZ2VzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAgIGVs
c2UgaWYgKFttX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVj
dDooTlNTdHJpbmcgKilob3N0XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJl
ZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGFkZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAg
ICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
czptX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZp
Y2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IEhhc2hTZXQ8U3Ry
aW5nPiYgaG9zdHMpCit7CisgICAgYm9vbCBzdWJzY3JpYmVkVVJMc0NoYW5nZWQgPSBmYWxzZTsK
KyAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0cykgeworICAgICAgICBhdXRvIGl0ID0gbV9jb29r
aWVDaGFuZ2VPYnNlcnZlcnMuZmluZChob3N0KTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IG1fY29v
a2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKTsKKyAgICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hh
bmdlT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0
byYgb2JzZXJ2ZXJzID0gaXQtPnZhbHVlOworICAgICAgICBBU1NFUlQob2JzZXJ2ZXJzLmNvbnRh
aW5zKCZvYnNlcnZlcikpOworICAgICAgICBvYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7Cisg
ICAgICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2Nvb2tpZUNo
YW5nZU9ic2VydmVycy5yZW1vdmUoaXQpOworICAgICAgICAgICAgQVNTRVJUKFttX3N1YnNjcmli
ZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0
XSk7CisgICAgICAgICAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgcmVt
b3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgICAgICAgICAgc3Vic2NyaWJlZFVSTHND
aGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3Vic2NyaWJlZFVSTHND
aGFuZ2VkKQorICAgICAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcy5nZXQo
KV07Cit9CisKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZG9tQ29va2ll
c0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5TQXJyYXkgKm5zQ29va2llcyA9
IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJpbmcgKilob3N0
XTsKKyAgICByZXR1cm4gbnNDb29raWVzVG9Db29raWVWZWN0b3IobnNDb29raWVzLCBbXShOU0hU
VFBDb29raWUgKmNvb2tpZSkgeyByZXR1cm4gIWNvb2tpZS5IVFRQT25seTsgfSk7Cit9CisKKy8v
IEZJWE1FOiBUaGlzIGNhbiBldmVudHVhbGx5IGdvIGF3YXksIHRoaXMgaXMgbWVyZWx5IHRvIGVu
c3VyZSBhIHNtb290aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJLgorYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdAorewor
ICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBvcnRzQVBJID0gW25zQ29va2llU3RvcmFnZSgpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2ll
Q2hhbmdlczopXTsKKyAgICByZXR1cm4gc3VwcG9ydHNBUEk7Cit9CisKKyNlbmRpZiAvLyBIQVZF
KENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGU4MTczNDRmMTlkMzhlZGMxNjc2ZmEzZDY4
Njk2MmRjNzg2ZWFjYmQuLmQ3M2NmNDdiNjEwNGYzNWY4ZDBhYTFkN2Y0YmU0YmNlZGM3M2E2Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xMjQsNiArMTI0LDExIEBAIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KQogICAgIGZvciAoYXV0byYgcG9ydCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzKQogICAgICAg
ICBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkQ2xvc2VN
ZXNzYWdlUG9ydChwb3J0KTsKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkp
CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkp
CisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNo
YW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzKTsKKyNl
bmRpZgorCiAjaWYgVVNFKExJQldFQlJUQykKICAgICBpZiAobV9ydGNQcm92aWRlcikKICAgICAg
ICAgbV9ydGNQcm92aWRlci0+Y2xvc2UoKTsKQEAgLTYzMyw2ICs2MzgsNDggQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGMKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1
cmwsIGNvb2tpZU5hbWUpOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9D
b29raWVDaGFuZ2VOb3RpZmljYXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKKyAgICBpZiAoIW5l
dHdvcmtTdG9yYWdlU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIGlmIChzdWJz
Y3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgQVNTRVJUKCFtX2hv
c3RzV2l0aENvb2tpZUxpc3RlbmVycy5jb250YWlucyhob3N0KSk7CisgICAgICAgIG1faG9zdHNX
aXRoQ29va2llTGlzdGVuZXJzLmFkZChob3N0KTsKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5zdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhv
c3QpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN1YnNjcmliZVRvQ29va2llQ2hh
bmdlTm90aWZpY2F0aW9ucyk7CisjZW5kaWYKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+ZG9tQ29va2llc0Zvckhvc3QoaG9zdCkpOworfQorCisjaWYgSEFW
RShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGhvc3RzKQoreworICAgIGJvb2wgcmVtb3ZlZCA9IG1faG9zdHNX
aXRoQ29va2llTGlzdGVuZXJzLnJlbW92ZShob3N0cy5iZWdpbigpLCBob3N0cy5lbmQoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKKworICAgIGlmIChhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPnN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKCp0
aGlzLCBob3N0cyk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNv
b2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiBjb29raWVzKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKSwgMCk7Cit9CisK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNEZWxldGVkKCkKK3sK
KyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpDb29raWVzRGVsZXRlZCgpLCAwKTsKK30KKworI2VuZGlmCisKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFu
ZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDg2Y2M2MGQxYTk5
NzVlOWI1ODUzMmIyNjFiYmNhY2EwNWIyOTlhNWYuLmM0M2U4MmRmYjA5ODViOWY4MjBmNmI3MGMz
YjQ0NjYyNzkxNmUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
c3RyYWJsZURvbWFpbi5oPgpAQCAtODcsNiArODgsOSBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgLCBwdWJs
aWMgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAorI2VuZGlmCisjaWYgSEFWRShD
T09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb29raWVD
aGFuZ2VPYnNlcnZlcgogI2VuZGlmCiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBw
dWJsaWM6CkBAIC0yNjYsNiArMjcwLDE2IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBuZXh0
TWVzc2FnZUJhdGNoSWRlbnRpZmllcihGdW5jdGlvbjx2b2lkKCk+JiYpOwogCisgICAgdm9pZCBk
b21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29r
aWVDaGFuZ2VOb3RpZmljYXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jik+JiYpOworCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RF
TkVSX0FQSSkKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnMoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBob3N0cyk7CisKKyAgICAvLyBXZWJDb3JlOjpDb29r
aWVDaGFuZ2VPYnNlcnZlci4KKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhv
c3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgZmluYWw7CisgICAgdm9pZCBjb29r
aWVzRGVsZXRlZCgpIGZpbmFsOworI2VuZGlmCisKICAgICBzdHJ1Y3QgUmVzb3VyY2VOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyIHsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KCkgPSBkZWZhdWx0OwogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoY29u
c3QgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyJikgPSBkZWZhdWx0OwpAQCAtMzI5LDYg
KzM0Myw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgTmV0d29ya01ETlNS
ZWdpc3RlciBtX21kbnNSZWdpc3RlcjsKICNlbmRpZgorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9M
SVNURU5FUl9BUEkpCisgICAgSGFzaFNldDxTdHJpbmc+IG1faG9zdHNXaXRoQ29va2llTGlzdGVu
ZXJzOworI2VuZGlmCiAKICAgICBib29sIG1fY2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
RW5hYmxlZCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IDQzYjVmNjc0ZTU1ZThkNzZiMTI4M2RkN2I3MjQ2YjY2MGIxODEyYWMuLjg1
YTZlZjEyMGIxMDA1YzQwOWZjNWVhMzZlOWZmOTJiNWYzZjRjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzksNiArMzksMTAgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNr
SVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVz
KSBTeW5jaHJvbm91cwogICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNr
SVRQKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAg
ICBEZWxldGVDb29raWUoVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgRG9tQ29va2ll
c0Zvckhvc3QoU3RyaW5nIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmlj
YXRpb25zKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMK
KyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFVuc3Vic2NyaWJlRnJv
bUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoSGFzaFNldDxTdHJpbmc+IGhvc3RzKQorI2VuZGlm
CiAKICAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50
VHlwZSkKICAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQ
YXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDgyZGIwMTJkZTYwMzZhNmRkZTA4ZDVlYjQ3NTBmZmU2
NjI5OTBhZTcuLmNhNTA1ZWU1ZWViNWQ3YjFjNTI1Nzg5MjQ2NDgyNzk4OThkMDg0MmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjIxLDYgKzYyMSw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2
ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMnOiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpJU09XZWJWVFRDdWUnOiBbJzxXZWJDb3JlL0lTT1ZUVEN1ZS5oPiddLAorICAgICAg
ICAnc3RydWN0IFdlYkNvcmU6OkNvb2tpZSc6IFsnPFdlYkNvcmUvQ29va2llLmg+J10sCiAgICAg
ICAgICdzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3JlL0VsZW1lbnRD
b250ZXh0Lmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6
IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3Ry
dWN0IFdlYktpdDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbAppbmRleCBiNjRhMWY3ZDUyZjRjMDlmZmNmMjFhMzM5MmVmMmQxNDY4Mzk1MDk1Li5lNDRk
ZWExYTBjYmIzZWFmMmVjNDZlNzVlNjI0NWZiNGIyOTlmYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTU1LDYgKzU1LDEzIEBAIEhUVFBTVXBncmFkZUVu
YWJsZWQ6CiAgICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJBdXRvbWF0aWMgSFRUUFMgdXBn
cmFkZSBmb3Iga25vd24gc3VwcG9ydGVkIHNpdGVzIgogICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRh
bAogCitJblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQ6CisgICB0eXBlOiBib29sCisgICBkZWZh
dWx0VmFsdWU6IHRydWUKKyAgIGh1bWFuUmVhZGFibGVOYW1lOiAiSW4tUHJvY2VzcyBDb29raWUg
Q2FjaGUiCisgICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJJbi1Qcm9jZXNzIERPTSBDb29r
aWUgQ2FjaGUiCisgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisKIFRoaXJkUGFydHlJZnJhbWVS
ZWRpcmVjdEJsb2NraW5nRW5hYmxlZDoKICAgIHR5cGU6IGJvb2wKICAgIGRlZmF1bHRWYWx1ZTog
dHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggNzQ4OTRiZDI3YmFmNTg5NTFlNmFmMjQxYzg3OTk4YmM1YzVl
YmFlOC4uYTVkMGJlMTQyNzFmNjMwNmY4MzZiOGZkYmQ3ZDQyMGYyOTUyNDZlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC02MjQsNiArNjI0LDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3Bw
CiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2Fj
aGUuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGUxZmM2ZjczNzJiMTYwM2U1ZGQyNWViMGE0
YTYwMWM2YzliZTIzZWEuLmQyNGE4MDQ4ZTM0NTA0NjM0MjdjOTMwNDMyZWY5MDAzOTc1MTFjMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTYxMyw2ICs2MTMsNyBAQCBXZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5tbQogCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCitXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViQ29va2llQ2FjaGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VD
b2NvYS5tbQogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5
LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkNDg4NWI0NjMyZGU5Yzg4Y2YwMjY1ZDVlZWY5YWIwNzU0YmY1NTg3Li5mZTc3ODNl
ZjRkYzJjMTdjYjFjYmY0OWRlNzAxZWE0NTE4MWQ2YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk0Myw2ICs5NDMsNyBAQAogCQk0
NjZCQzAzQzFGQTI2NkRBMDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkJDMDM5
MUZBMjY2QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9
OwogCQk0NjcxRkYxRjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFE
MjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0
NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3
MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovOyB9
OworCQk0NjgwOUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMw
MEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBD
M0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBD
M0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJ
CTQ2QjA1MjQ3MjI2NjhEODUwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjA1MjQ0MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAw
MjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkJFQjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAq
LzsgfTsKQEAgLTM0ODQsNiArMzQ4NSw4IEBACiAJCTQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAv
KiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcxRkYxRTIzMjE3
RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlB
N0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQ
cm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njgz
NTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyog
QmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1l
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTk3LDggKzcwMDAsOCBAQAog
CQkJCTFBNDIyRjhBMThCMjlCNTQwMEQ4Q0Q5NiAvKiBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUu
aCAqLywKIAkJCQk1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUu
aCAqLywKIAkJCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUu
bW0gKi8sCi0JCQkJREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3Jl
UHJpdmF0ZS5oICovLAogCQkJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yZUludGVybmFsLmggKi8sCisJCQkJREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdL
SFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovLAogCQkJCTFBQjQwRUUzMUJGNjc3RTMwMEJBODFC
RSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnMubW0gKi8sCiAJCQkJMUFCNDBFRTQxQkY2NzdFMzAw
QkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCAqLywKIAkJCQkxQTVCMUM0
RjE4OTg2MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLmggKi8sCkBAIC04NDIyLDYgKzg0MjUs
OCBAQAogCQkJCUJDNzJCOUY5MTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oICovLAogCQkJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVu
dS5jcHAgKi8sCiAJCQkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmggKi8sCisJCQkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNw
cCAqLywKKwkJCQk0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAq
LywKIAkJCQk1QzdGQjQ2RTIxRTk3QzBCMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmNwcCAqLywK
IAkJCQk1QzdGQjQ2RjIxRTk3QzBDMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggKi8sCiAJCQkJ
MUE1QjFDNTIxODk4N0VERjAwNEZDRjlCIC8qIFdlYkRvY3VtZW50TG9hZGVyLmNwcCAqLywKQEAg
LTEwMjU0LDcgKzEwMjU5LDYgQEAKIAkJCQkyRDU4NzVCRjIxOUI1MzE1MDA3MEI5QUEgLyogRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMDVGRTU0MThEN0I5
REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTQxQUI1
MTJDMDJFQzQwMDJCRTY3QiAvKiBFZGl0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREY0
NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMwMzJEQTgxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQjE1QTg1MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTc1RkIxNDk2QjUyNjAwQTRFRTA2IC8qIEV2
ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDY2Miw2ICsxMDY2Niw3IEBACiAJ
CQkJNTFBQ0JCODIxMjdBOEJBRDAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxQUNCQkEwMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVu
dVByb3h5TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y0REUyNTE2OEZBNDQ4MDBDOTRBRkMg
LyogV2ViQ29udGV4dFN1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODA5QTdDMjNE
OTIyNUUwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM3
RkI0NzAyMUU5N0RDNTAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzMwOTM0NTAxMzE1Qjk0RDAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMzMDkzNDQ4MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTA3MjEsNyArMTA3MjYsNiBAQAogCQkJCUZF
RTQzRkQzMUU2N0IwMTgwMDc3RDZEMSAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRURCRENENzFFNjhEMjA1MDBBNTlGOEYgLyogV2ViSW5z
cGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzhFMkEzNjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9y
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYxMjdDODgy
QTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDkzNCw2ICsxMDkzOCw3IEBACiAJCQkJMEYwNDE1OUUyM0M3Q0M3MzAwNjBB
M0UyIC8qIFdLQ29udGVudFZpZXdNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTA2NUZDMjNF
Qzk1NzIwMDU0NDNENiAvKiBXS0NvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
MDY1RkQyM0VDOTU3QjAwNTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAorCQkJCURGNDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjlFMjRCMTEyMEUxNUMwMEExMzdFMCAvKiBX
S0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTUyRjk4MTkyMDI2NzIwMEExRkEzNyAv
KiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJB
NTE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMTAxNyw2ICsxMTAyMiw3IEBACiAJCQkJMUE0MjJGOEIxOEIyOUI1NDAwRDhD
RDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYy
RTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlERjQ2MkUwRjIzRjIyRjU1MDBFRkYzNUYgLyogV0tIVFRQQ29va2ll
U3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzY2QTRCNTIzMjA5NjI0MDBFQTRE
NDQgLyogV0tIVFRQQ29va2llU3RvcmVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTBBRTBE
MTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEyM0NGMUMxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMjhiYzEyYzM0MjNmOWYyODM1NmMz
YTg0YzYxMjI0Y2ZhNGVkN2U5OS4uMmJiNDc5ZTM5ZGU5YjZlOTU3ZjI5Y2ZiN2VlODUwNjRhMDBl
NTkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJD
b29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXJNZXNzYWdlcy5oIgpAQCAtMjM0LDYgKzIzNSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6Y29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChIVFRQQ29va2llQWNjZXB0
UG9saWN5CiAgICAgbV9jb29raWVBY2NlcHRQb2xpY3kgPSBuZXdQb2xpY3k7CiB9CiAKKyNpZiBI
QVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiBjb29raWVzKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNv
b2tpZUphcigpLmNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKK30KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5jb29raWVKYXIoKS5jb29raWVzRGVsZXRlZCgpOworfQorI2VuZGlmCisKICNp
ZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oCmluZGV4IDUxZmRmMzU0NTI0ZDkxNWRkZjZlZDU5NGM3ZDJjMGZkODYzM2Q5ZDEuLjc2ZDI2
NjUyMGMyNjBkMTUzYjk0MWQ3MzliYzQ0OTAxOGM2ZTRhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwor
c3RydWN0IENvb2tpZTsKIHN0cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7CiBzdHJ1Y3QgTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBlbnVtIGNsYXNzIEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
OiB1aW50OF90OwpAQCAtODMsNiArODQsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb29raWVz
RW5hYmxlZCgpIGNvbnN0OwogCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkK
KyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAyYWE2ODg2ZTU3YTU5OWNiYzE3
YzM1ZjZiNzRlOTlkMmFiM2E4OWU1Li42OTkzZmE3ZWY0NjBmNzU3NmQ2MWNmZTRiNjQzZDI5MGY4
MmQ4ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0z
MSw2ICszMSwxMSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5
UmVjZWl2ZXIgewogICAgIFNldE9uTGluZVN0YXRlKGJvb2wgaXNPbkxpbmUpOwogICAgIENvb2tp
ZUFjY2VwdFBvbGljeUNoYW5nZWQoZW51bTp1aW50OF90IFdlYkNvcmU6OkhUVFBDb29raWVBY2Nl
cHRQb2xpY3kgcG9saWN5KTsKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkp
CisgICAgQ29va2llc0FkZGVkKFN0cmluZyBob3N0LCBWZWN0b3I8c3RydWN0IFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcyk7CisgICAgQ29va2llc0RlbGV0ZWQoKTsKKyNlbmRpZgorCiAgICAgQ2hl
Y2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciBwb3J0KSAtPiAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
Okhhc0FjdGl2aXR5IGhhc0FjdGl2aXR5KSBBc3luYwogICAgIE1lc3NhZ2VzQXZhaWxhYmxlRm9y
UG9ydChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVD
YWNoZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
Q29va2llQ2FjaGVDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmJjNjZkOWQ0ZmM2ZDJmNjc2NjUwZWNj
NmRhYTVhMWFhMDYwNzA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJDb29raWVDYWNo
ZS5oIgorCisjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6OmluTWVt
b3J5U3RvcmFnZVNlc3Npb24oKQoreworICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
KSB7CisgICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdEluUHJv
Y2Vzc1N0b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKKyAgICAgICAgYXV0byBzdG9y
YWdlU2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CisgICAgICAgIG1f
aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSwgV1RGTW92ZShzdG9yYWdlU2Vz
c2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6SXNJ
bk1lbW9yeUNvb2tpZVN0b3JlOjpZZXMpOworICAgIH0KKyAgICByZXR1cm4gKm1faW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjNlZDIwYzY0NTMzYWM3NGFiNWJmYmQ3ZGEzYjM4Nzc4NWM5YzY3NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNw
cApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJDb29raWVDYWNoZS5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitib29sIFdlYkNvb2tpZUNhY2hlOjppc1N1cHBvcnRl
ZCgpCit7CisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICAvLyBGSVhN
RTogVGhpcyBjYW4gZXZlbnR1YWxseSBiZSByZW1vdmVkLCB0aGlzIGlzIG1lcmVseSB0byBlbnN1
cmUgYSBzbW9vdGggdHJhbnNpdGlvbiB0byB0aGUgbmV3IEFQSS4KKyAgICByZXR1cm4gaW5NZW1v
cnlTdG9yYWdlU2Vzc2lvbigpLnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKTsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK1N0cmluZyBXZWJDb29raWVDYWNo
ZTo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpCit7CisgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7Cisg
ICAgaWYgKCFtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyhob3N0KSkgeworICAg
ICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgICAgICBib29sIHN1YnNjcmliZVRvQ29v
a2llQ2hhbmdlTm90aWZpY2F0aW9ucyA9IHRydWU7CisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29v
a2llc0Zvckhvc3QodXJsLmhvc3QoKS50b1N0cmluZygpLCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkRvbUNvb2tpZXNGb3JIb3N0OjpSZXBseShjb29raWVzKSwgMCkpCisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICBwcnVuZUNhY2hlSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgbV9ob3N0
c1dpdGhJbk1lbW9yeVN0b3JhZ2UuYWRkKGhvc3QpOworICAgICAgICBmb3IgKGF1dG8mIGNvb2tp
ZSA6IGNvb2tpZXMpCisgICAgICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29v
a2llKGNvb2tpZSk7CisgICAgfQorICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCku
Y29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpObykuZmlyc3Q7Cit9CisK
K3ZvaWQgV2ViQ29va2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJp
bmcoKTsKKyAgICBpZiAobV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkp
CisgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWVzRnJvbURPTShmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6
Ok5vLCBjb29raWVTdHJpbmcpOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRk
ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcykKK3sK
KyAgICBpZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAg
IGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKK30KKwordm9pZCBX
ZWJDb29raWVDYWNoZTo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIGNsZWFyKCk7Cit9CisKK3Zv
aWQgV2ViQ29va2llQ2FjaGU6OmNsZWFyKCkKK3sKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElT
VEVORVJfQVBJKQorICAgIGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuaXNFbXB0eSgp
KQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMobV9o
b3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UpLCAwKTsKKyNlbmRpZgorICAgIG1faG9zdHNXaXRoSW5N
ZW1vcnlTdG9yYWdlLmNsZWFyKCk7CisgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbnVs
bHB0cjsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y2xlYXJGb3JIb3N0KGNvbnN0IFN0cmlu
ZyYgaG9zdCkKK3sKKyAgICBhdXRvIGl0ID0gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuZmlu
ZChob3N0KTsKKyAgICBpZiAoaXQgPT0gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLnJlbW92
ZShpdCk7CisgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMoVmVjdG9yPFN0cmluZz4geyBob3N0IH0pOworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9M
SVNURU5FUl9BUEkpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRp
b25zKEhhc2hTZXQ8U3RyaW5nPiB7IGhvc3QgfSksIDApOworI2VuZGlmCit9CisKK3ZvaWQgV2Vi
Q29va2llQ2FjaGU6OnBydW5lQ2FjaGVJZk5lY2Vzc2FyeSgpCit7CisgICAgLy8gV2UgbWF5IHdh
bnQgdG8gcmFpc2UgdGhpcyBsaW1pdCBpZiB3ZSBzdGFydCB1c2luZyB0aGUgY2FjaGUgZm9yIHRo
aXJkLXBhcnR5IGlmcmFtZXMuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heENhY2hlZEhv
c3RzID0gNTsKKworICAgIHdoaWxlIChtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5zaXplKCkg
Pj0gbWF4Q2FjaGVkSG9zdHMpCisgICAgICAgIGNsZWFyRm9ySG9zdCgqbV9ob3N0c1dpdGhJbk1l
bW9yeVN0b3JhZ2UucmFuZG9tKCkpOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigp
Cit7CisgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICByZXR1cm4gKm1faW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZkMGM0MTZlNTIwY2VkYzI0NmJlMTJmYTUzZmJjZmU3ODZmMzU1NWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVDYWNoZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0
ZUluZm8uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJDb29raWVDYWNoZSB7CitwdWJsaWM6CisgICAgV2ViQ29va2llQ2FjaGUoKSA9
IGRlZmF1bHQ7CisKKyAgICBib29sIGlzU3VwcG9ydGVkKCk7CisKKyAgICBTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOworCisgICAgdm9pZCBj
b29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpOworICAgIHZvaWQgY29va2llc0RlbGV0ZWQoKTsKKworICAgIHZvaWQgY2xlYXIoKTsK
KyAgICB2b2lkIGNsZWFyRm9ySG9zdChjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKTsK
KyAgICB2b2lkIHBydW5lQ2FjaGVJZk5lY2Vzc2FyeSgpOworCisgICAgSGFzaFNldDxTdHJpbmc+
IG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IG1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5kZXggMzI1ODMwNWM3ODlkNzc1ZmUxNWMxYzA4Mjhj
MzZlOWUyZjJhODYwOS4uNWFiMzI0NWNjZDVkYWMxY2Y1MzFkNGRlYjRkMGUxYTg1ZDA2OTFhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGll
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODgsNiAr
ODksMjMgQEAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywKIH0KICNlbmRpZgogCitib29sIFdlYkNv
b2tpZUphcjo6aXNFbGlnaWJsZUZvckNhY2hlKFdlYkZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkgY29uc3QKK3sKKyAg
ICBhdXRvKiBwYWdlID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFnZSgpLT5jb3JlUGFnZSgpIDog
bnVsbHB0cjsKKyAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPnNldHRpbmdzKCkuaW5Qcm9jZXNzQ29v
a2llQ2FjaGVFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9j
YWNoZS5pc1N1cHBvcnRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGb3Ig
bm93LCB3ZSBvbmx5IGNhY2hlIGNvb2tpZXMgZm9yIGZpcnN0LXBhcnR5IGNvbnRlbnQuIFRoaXJk
LXBhcnR5IGNvb2tpZSBjYWNoaW5nIGlzIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQgZHVlIHRvIHBh
cnRpdGlvbmluZyBhbmQgc3RvcmFnZSBhY2Nlc3MuCisgICAgUmVnaXN0cmFibGVEb21haW4gcmVz
b3VyY2VEb21haW4geyByZXNvdXJjZVVSTCB9OworICAgIGlmIChyZXNvdXJjZURvbWFpbi5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBmcmFtZS5pc01haW5G
cmFtZSgpIHx8IFJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eUZvckNvb2tpZXMgfSA9PSBy
ZXNvdXJjZURvbWFpbjsKK30KKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3Jl
OjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGF1dG8q
IHdlYkZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSA/IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpk
b2N1bWVudC5mcmFtZSgpKSA6IG51bGxwdHI7CkBAIC0xMDAsMTIgKzExOCwxNyBAQCBTdHJpbmcg
V2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAorICAgIGF1dG8g
c2FtZVNpdGVJbmZvID0gQ29va2llSmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOworICAgIGF1
dG8gaW5jbHVkZVNlY3VyZUNvb2tpZXMgPSBDb29raWVKYXI6OnNob3VsZEluY2x1ZGVTZWN1cmVD
b29raWVzKGRvY3VtZW50LCB1cmwpOwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFt
ZUlEKCk7CiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7
CiAKKyAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGUuY29va2llc0Zv
ckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CisKICAgICBTdHJpbmcgY29v
a2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCks
IHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRJbmNs
dWRlU2VjdXJlQ29va2llcyhkb2N1bWVudCwgdXJsKSwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJv
Y2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Zv
ckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKKyAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMo
KSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2Vj
dXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1
cm4gY29va2llU3RyaW5nOwpAQCAtMTIzLDEwICsxNDYsMzQgQEAgdm9pZCBXZWJDb29raWVKYXI6
OnNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKKyAgICBhdXRvIHNhbWVTaXRlSW5mbyA9
IENvb2tpZUphcjo6c2FtZVNpdGVJbmZvKGRvY3VtZW50KTsKICAgICBhdXRvIGZyYW1lSUQgPSB3
ZWJGcmFtZS0+ZnJhbWVJRCgpOwogICAgIGF1dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+
aWRlbnRpZmllcigpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7Cisg
ICAgaWYgKGlzRWxpZ2libGVGb3JDYWNoZSgqd2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCkpCisgICAgICAgIG1fY2FjaGUuc2V0Q29va2llc0Zyb21ET00oZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgY29va2llU3RyaW5nKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1l
bnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7Cit9
CisKK3ZvaWQgV2ViQ29va2llSmFyOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykKK3sKKyAgICBtX2NhY2hlLmNv
b2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNvb2tp
ZXNEZWxldGVkKCkKK3sKKyAgICBtX2NhY2hlLmNvb2tpZXNEZWxldGVkKCk7Cit9CisKK3ZvaWQg
V2ViQ29va2llSmFyOjpjbGVhckNhY2hlKCkKK3sKKyAgICBtX2NhY2hlLmNsZWFyKCk7Cit9CisK
K3ZvaWQgV2ViQ29va2llSmFyOjpjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3Qp
Cit7CisgICAgbV9jYWNoZS5jbGVhckZvckhvc3QoaG9zdCk7CiB9CiAKIGJvb2wgV2ViQ29va2ll
SmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCmluZGV4IDUy
OTQ4YTkxZGU1ZjE0NTI0OTkxMGRkNDk4MzQ0NTIwMDAxYTk3ZmIuLjhlZGJlMzE0ZWNhZmE3ZGFi
NGVlZmJlMmU4MjVmODBkZjI5NGQ5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiV2ViQ29va2llQ2FjaGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUph
ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ29va2llOworfQorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29va2llSmFyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkNvb2tpZUphciB7CkBAIC0zOSw4ICs0NCwxOCBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPFN0
cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3Jl
OjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOworCisgICAgdm9pZCBj
b29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpOworICAgIHZvaWQgY29va2llc0RlbGV0ZWQoKTsKKwogcHJpdmF0ZToKICAgICBXZWJD
b29raWVKYXIoKTsKKworICAgIHZvaWQgY2xlYXJDYWNoZSgpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJDYWNoZUZvckhvc3QoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0VsaWdpYmxl
Rm9yQ2FjaGUoV2ViRnJhbWUmLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25z
dCBVUkwmIHJlc291cmNlVVJMKSBjb25zdDsKKworICAgIG11dGFibGUgV2ViQ29va2llQ2FjaGUg
bV9jYWNoZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1MDhiY2MxMDJlYmEwMDYyMDM2YmNk
YzVlODA2NjNmNjAzNGZkMGUzLi5iZGExZWFmMWVkOGE0NjFhNmFlMmIyN2Q4YWMwMTQ2YTMzOWM0
YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNDY2LDcgKzQ2Niw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgbWFrZVVu
aXF1ZVJlZjxXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyPigpLAogICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLAogICAgICAgICBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6Y3JlYXRlKCp0aGlzKSwKLSAgICAgICAgV2ViQ29va2llSmFyOjpjcmVh
dGUoKSwKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCksCiAgICAg
ICAgIG1ha2VVbmlxdWVSZWY8V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50PigqdGhpcyksCiAgICAg
ICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpCiAgICAgKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0YjI0MDliOTk0ZDNhZTBkMmI0
MzE0YjM0NWMyOGYxYTRkMzdjNzA5Li4yMWI1YTJiYzEzZmVlZWFkOTRhNjg0NmNjNTU2NTM5MzBi
ZmIwYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00OCw2
ICs0OCw3IEBACiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgogI2luY2x1
ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvblRv
VUlQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCkBAIC0yMDUsNiArMjA2LDcgQEAgV2ViUHJvY2Vzczo6
V2ViUHJvY2VzcygpCiAgICAgLCBtX3dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIoV2Vi
SW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX3dlYkxvYWRl
clN0cmF0ZWd5KCpuZXcgV2ViTG9hZGVyU3RyYXRlZ3kpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVBy
b3ZpZGVyKFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fY29va2ll
SmFyKFdlYkNvb2tpZUphcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2Ruc1ByZWZldGNoSHlzdGVyZXJp
cyhbdGhpc10oUEFMOjpIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgaWYgKHN0YXRlID09IFBBTDo6
SHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2Ruc1ByZWZldGNoZWRIb3N0cy5jbGVhcigpOyB9
KQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICwgbV9wbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIoUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpjcmVhdGUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDg1M2M2NjBlYzY0NjQ1
NjNhNzY1NjQzNjE5Mjk1NjU0YjA3MzUzNGUuLjE1OTA5MzYwYWQ3Y2IwOTExMzdiN2NhZjMzNTM1
Y2RlMmM5N2RkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTIw
LDYgKzEyMCw3IEBAIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgV2F5bGFuZENvbXBvc2l0b3JEaXNw
bGF5OwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTsKIGNsYXNzIFdlYkNhY2hlU3Rv
cmFnZVByb3ZpZGVyOworY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhOwogY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwogY2xhc3Mg
V2ViRnJhbWU7CkBAIC0yOTMsNiArMjk0LDcgQEAgcHVibGljOgogICAgIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkqIGF1dG9tYXRpb25TZXNzaW9uUHJveHkoKSB7IHJldHVybiBtX2F1dG9tYXRp
b25TZXNzaW9uUHJveHkuZ2V0KCk7IH0KIAogICAgIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyJiBj
YWNoZVN0b3JhZ2VQcm92aWRlcigpIHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuZ2V0
KCk7IH0KKyAgICBXZWJDb29raWVKYXImIGNvb2tpZUphcigpIHsgcmV0dXJuIG1fY29va2llSmFy
LmdldCgpOyB9CiAgICAgV2ViU29ja2V0Q2hhbm5lbE1hbmFnZXImIHdlYlNvY2tldENoYW5uZWxN
YW5hZ2VyKCkgeyByZXR1cm4gbV93ZWJTb2NrZXRDaGFubmVsTWFuYWdlcjsgfQogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU1NCw2ICs1NTYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBSZWY8V2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI+IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7
CisgICAgUmVmPFdlYkNvb2tpZUphcj4gbV9jb29raWVKYXI7CiAgICAgV2ViU29ja2V0Q2hhbm5l
bE1hbmFnZXIgbV93ZWJTb2NrZXRDaGFubmVsTWFuYWdlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxMaWJXZWJSVENOZXR3b3JrPiBtX2xpYldlYlJUQ05ldHdvcms7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDFlZDFkMmNk
MGU4MWYzNmYxY2M2NGYxY2ZhYTgwNDNkNTIwZWI1Yy4uYWQ5MGM4ZThhMzJiNmQxNmE3ZjBlNmFi
M2RlYTNhY2M4YTg0MzI4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1bQ29jb2FdIEltcGxl
bWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9pZCBzeW5jIElQQyBmb3IgZG9j
dW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYwMjcw
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgQWRk
IGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL2Rv
Y3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2ctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dN
b2RhbERpYWxvZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFt
ZS1wYXJzaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9yZXNv
dXJjZXMvY2xvc2UtbW9kYWwtZGlhbG9nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvY29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2lu
Zy1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291
cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHA6IEFkZGVkLgorCiAyMDIwLTAyLTExICBKYXNv
biBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiBd
IGZhc3Qvdmlld3BvcnQvaW9zL3dpZHRoLWlzLWRldmljZS13aWR0aC1vdmVyZmxvd2luZy1ib2R5
LW92ZXJmbG93LWhpZGRlbi10YWxsLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hv
d01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2ll
cy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNGFmOTI0YmZiN2U4MWViM2QwY2Y0ZDNkNDJjYjIzMDhhNDQ1MzUxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tp
ZS1hZnRlci1zaG93TW9kYWxEaWFsb2ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rl
c3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEg
c2hvd01vZGFsRGlhbG9nKCkgY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0VmFs
dWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJmb289YmFyOyB0
ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMv
ZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YWI4NDdiMzNkNTE5OGU5NjZkYTdiMDhjZWI4ODYwYTFkNjk0N2Vh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3Vt
ZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cuaHRtbApAQCAtMCwwICsxLDM3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nv
b2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9
InRlc3RCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkNsaWNrIG1lIj48L2lucHV0PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRo
ZSByaWdodCB2YWx1ZSBhZnRlciBhIHNob3dNb2RhbERpYWxvZygpIGNhbGwnKTsKK2pzVGVzdElz
QXN5bmMgPSB0cnVlOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5z
ZXRDYW5PcGVuV2luZG93cygpOworCit0ZXN0QnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7CisgICAg
ZG9jdW1lbnQuY29va2llID0gInRlc3RLZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVz
dFZhbHVlJyk7CisKKyAgICBzaG93TW9kYWxEaWFsb2coInJlc291cmNlcy9zZXQtY29va2llLWFu
ZC1zZXJ2ZS5waHA/Y29va2llLW5hbWU9Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRpb249
Y2xvc2UtbW9kYWwtZGlhbG9nLmh0bWwiKTsKKworICAgIC8vIFRoaXMgaXMgc28gdGhlIGNvb2tp
ZSBnZXRzIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKyAgICByZWdpc3RlckNvb2tp
ZUZvckNsZWFudXAoJ2Zvbz1iYXI7IHBhdGg9LycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSknLCAnZm9vPWJhcjsgdGVzdEtleT10
ZXN0VmFsdWUnKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitvbmxvYWQgPSAoKSA9PiB7
CisgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7CisgICAgICAgIHRlc3RCdXR0
b24uY2xpY2soKTsKKyAgICB9KTsKK307Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJj
ZXMvY29va2llcy10ZXN0LXBvc3QuanMnPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1k
dXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNjZjVhZGE4YzQ5YWY1MjQ3MDdlYWQyZmExOGI0ZTYzZDE5MjIzYTQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1l
bnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MiBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUg
YWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0S2V5
PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXplQ29va2llKGNvb2tpZXNJbkZyYW1lKSBpcyAiZm9v
PWJhcjsgdGVzdEtleT10ZXN0VmFsdWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5j
b29raWUpIGlzICJmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2lu
Zy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1k
dXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjI5ZWZiNTM4Y2E0N2UyMjhi
NzM4ZmM1M2Q5NTA0NDlkYTljY2JiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRt
bApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29v
a2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEgc2hvd01vZGFsRGlhbG9nKCkgY2Fs
bCcpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHZhbGlkYXRlQ29va2llc0R1
cmluZ0NoaWxkRnJhbWVQYXJzaW5nKF9jb29raWVzSW5GcmFtZSkKK3sKKyAgICBjb29raWVzSW5G
cmFtZSA9IF9jb29raWVzSW5GcmFtZTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1h
bGl6ZUNvb2tpZShjb29raWVzSW5GcmFtZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUn
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5j
b29raWUpJywgJ2Zvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlJyk7CisgICAgZmluaXNoSlNUZXN0
KCk7ICAgIAorfQorCitvbmxvYWQgPSAoKSA9PiB7CisgICAgZG9jdW1lbnQuY29va2llID0gInRl
c3RLZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNv
b2tpZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICAvLyBU
aGlzIGlzIHNvIHRoZSBjb29raWUgZ2V0cyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3Qu
CisgICAgcmVnaXN0ZXJDb29raWVGb3JDbGVhbnVwKCdmb289YmFyOyBwYXRoPS8nKTsKKworICAg
IGxldCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJh
bWUuc3JjID0gInJlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHA/Y29va2llLW5hbWU9
Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRpb249ZG9jdW1lbnQtY29va2llLWR1cmluZy1p
ZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRtbCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpZnJhbWUpOworfTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVz
LXRlc3QtcG9zdC5qcyc+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Nsb3NlLW1vZGFsLWRpYWxv
Zy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1t
b2RhbC1kaWFsb2cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjU2OGRmZWRiYjJkM2E5NWEyZjE0M2U2ZWYx
YzgyMWVhY2JkYTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
b29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbApAQCAtMCwwICsxLDcgQEAK
KzxzY3JpcHQ+CitvbmxvYWQgPSAoKSA9PiB7CisgICAgY2xvc2UoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgdGVzdFJ1bm5lci5hYm9ydE1vZGFsKCk7Cit9OworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2Vz
L2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1kdXJp
bmctaWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkN2FiN2EzOTIyZDEw
OGExZjYwMjc5OWU2NjgzNDM1YTg5OTI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJh
bWUtcGFyc2luZy1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+Cit0b3AudmFs
aWRhdGVDb29raWVzRHVyaW5nQ2hpbGRGcmFtZVBhcnNpbmcoZG9jdW1lbnQuY29va2llKTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291
cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nv
b2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocApuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWY0
M2YyOWU4NTJkZGNjMDlmOTY5Zjg5OWU4ZjNlMTJhYmFhODQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1z
ZXJ2ZS5waHAKQEAgLTAsMCArMSwxMyBAQAorPD9waHAKKyRjb29raWVOYW1lID0gJF9HRVRbJ2Nv
b2tpZS1uYW1lJ107CiskY29va2llVmFsdWUgPSAkX0dFVFsnY29va2llLXZhbHVlJ107CiskZGVz
dGluYXRpb24gPSAkX0dFVFsnZGVzdGluYXRpb24nXTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0
ZXh0L2h0bWwiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUiKTsKK2hlYWRlcigi
U2V0LUNvb2tpZTogJHtjb29raWVOYW1lfT0ke2Nvb2tpZVZhbHVlfTsgcGF0aD0vIik7CiskZnAg
PSBmb3BlbigkZGVzdGluYXRpb24sICdyYicpOworaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAu
IGZpbGVzaXplKCRkZXN0aW5hdGlvbikpOworCitmcGFzc3RocnUoJGZwKTsKK2V4aXQ7Cis/Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390688</attachid>
            <date>2020-02-13 14:37:32 -0800</date>
            <delta_ts>2020-02-13 15:00:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207593-20200213143732.patch</filename>
            <type>text/plain</type>
            <size>91655</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJkMTIwYWVkNTVjMzVmZmVjODk5YWMz
NTFmNzAwNWI3ZWU4ZjkyZDkuLjNmMGU3YTRjMWVjMDVlOTVkZmMxYWZlMmVmNzNiZjlkOTBiZDM3
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nl
c3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4g
bW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYnVpbGQgdGltZSBmbGFn
cyBmb3IgbmV3IGZlYXR1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAtMDItMTEgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBpbi1iYW5kIFZUVCBj
YXB0aW9ucyB3aGVuIGxvYWRpbmcgbWVkaWEgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGI0NWQ3MmUyNjFlNDNiOWMwM2I0OGEwZWFiYTlmYmQ5MmNhZTBmMi4uODg2ZmYzMTI0MGRj
MmY2OWYxZDM0NDAyYzU1NjEzMjkwYmY1OTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBA
CisyMDIwLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dLMl1bQ29jb2FdIEltcGxlbWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9p
ZCBzeW5jIElQQyBmb3IgZG9jdW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTYwMjcwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlz
dG8uCisKKyAgICAgICAgSW1wbGVtZW50IGluLVdlYlByb2Nlc3MgRE9NIGNvb2tpZSBjYWNoZSBm
b3Igc2VydmluZyBgZG9jdW1lbnQuY29va2llYCByZXF1ZXN0cyBmcm9tIEphdmFTY3JpcHQuCisK
KyAgICAgICAgVGhlIGZpcnN0IHRpbWUgZG9jdW1lbnQuY29va2llIGlzIGNhbGxlZCBmb3IgYSBn
aXZlbiBob3N0LCB0aGUgV2ViUHJvY2VzcyB3aWxsIHB1bGwgaW4gYWxsIHRoZQorICAgICAgICBu
b24tSFRUUE9ubHkgY29va2llcyBmb3IgdGhhdCBob3N0IGZyb20gdGhlIE5ldHdvcmtQcm9jZXNz
IChzdGlsbCB2aWEgc3luYyBJUEMpIGFuZCBzdG9yZSB0aGVtCisgICAgICAgIGluIGFuIGluLW1l
bW9yeSBjb29raWUgc3RvcmUuIExhdGVyIGRvY3VtZW50LmNvb2tpZSBjYWxscyBmb3IgdGhpcyBo
b3N0IGZyb20gdGhpcyBXZWJQcm9jZXNzCisgICAgICAgIHdpbGwgdGhlbiBsZXZlcmFnZSB0aGUg
aW4tbWVtb3J5IGNvb2tpZSBzdG9yZSBhbmQgYXZvaWQgZG9pbmcgYSBzeW5jIElQQyB0byB0aGUg
TmV0d29ya1Byb2Nlc3MKKyAgICAgICAgZW50aXJlbHkuCisKKyAgICAgICAgVG8gbWFpbnRhaW4g
dGhlIGluLXByb2Nlc3MgY29va2llIHN0b3JlIHVwLXRvLWRhdGUsIHRoZSBXZWJQcm9jZXNzIHN1
YnNjcmliZSBmb3IgY29va2llLWNoYW5nZQorICAgICAgICBub3RpZmljYXRpb25zIGZyb20gdGhl
IE5ldHdvcmtQcm9jZXNzLCBvbmx5IGZvciB0aGUgaG9zdHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4K
KworICAgICAgICBJZiB0aGUgcGFnZSdzIEphdmFTY3JpcHQgc2V0cyBhIGNvb2tpZSBieSBzZXR0
aW5nIGRvY3VtZW50LmNvb2tpZSwgd2Ugd2lsbCBub3QgaW52YWxpZGF0ZSB0aGUKKyAgICAgICAg
Y2FjaGUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIEluc3RlYWQsIHdlIHNldCB0aGUgY29va2ll
IGluIG91ciBpbi1tZW1vcnkgY29va2llIGJlZm9yZQorICAgICAgICBzZW5kaW5nIHRoZSBuZXcg
Y29va2llIHRvIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBGb3IgY29tcGF0aWJpbGl0
eSByZWFzb25zLCBhbnkgc3luYyBJUEMgdG8gYSBnaXZlbiBob3N0IHdpbGwgY3VycmVudGx5IGlu
dmFsaWRhdGUgdGhlIGNvb2tpZQorICAgICAgICBjYWNoZSBmb3IgdGhpcyBob3N0LiBUaGlzIGlz
IGJlY2F1c2UgdGhpcyBzeW5jaHJvbm91cyBsb2FkIG1heSBjYXVzZSBjb29raWVzIHRvIGdldCBz
ZXQKKyAgICAgICAgc3luY2hyb25vdXNseSBhbmQgdGhlIHBhZ2UgY291bGQgYWNjZXNzIGRvY3Vt
ZW50LmNvb2tpZSByaWdodCBhZnRlciB0aGUgc3luYyBYSFIuIFRoaXMgYmVoYXZpb3IKKyAgICAg
ICAgaXMgY292ZXJlZCBieSB0aGUgZm9sbG93aW5nIGV4aXN0aW5nIHRlc3Q6CisgICAgICAgIC0g
aHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUu
aHRtbAorCisgICAgICAgIEFub3RoZXIgbGltaXRhdGlvbiBvZiB0aGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgY29va2llIGNhY2hlIGlzIHRoYXQgaXQgaXMgY3VycmVudGx5CisgICAg
ICAgIG9ubHkgbGV2ZXJhZ2VkIGZvciBmaXJzdCBwYXJ0eSBjb250ZW50LiBUaGlzIGlzIHN1Ym9w
dGltYWwgYW5kIGNvdWxkIGJlIGltcHJvdmVkIGluIGEgbGF0ZXIKKyAgICAgICAgaXRlcmF0aW9u
LiBIb3dldmVyLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpbiBTYWZhcmkgaXMgdGhhdCB0aGlyZC1w
YXJ0eSBpZnJhbWVzIGRvIG5vdCBoYXZlCisgICAgICAgIGNvb2tpZSBhY2Nlc3MgdW5sZXNzIHRo
ZXkgcmVxdWVzdCBpdCB1c2luZyB0aGUgc3RvcmFnZSBhY2Nlc3MgQVBJLiBXZSBhbHNvIGN1cnJl
bnRseSBoYXZlCisgICAgICAgIGEgbGltaXQgb2YgNSBob3N0cyB3aXRoIGNhY2hlZCBjb29raWVz
IHBlciBXZWJQcm9jZXNzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5o
dG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWxlYXNlQ3JpdGljYWxNZW1vcnkpOgorICAgICAgICAqIHBhZ2UvU2V0
dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXI6On5Db29raWVD
aGFuZ2VPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAg
ICAgKFdlYkNvcmU6Om5zQ29va2llc1RvQ29va2llVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlSFRUUENvb2tpZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29raWVzRm9y
VVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0
cENvb2tpZXNGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyQ29va2llcyk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVz
Rm9yU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpyZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3RlckNvb2tpZUNoYW5n
ZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcExpc3RlbmluZ0ZvckNv
b2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkb21Db29raWVzRm9ySG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkgY29uc3QpOgor
CiAyMDIwLTAyLTExICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVn
IDIwNzQyNDogQ3Jhc2ggaW4gV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcnNlQ29udGVu
dFR5cGUgd2hlbiBwYXJzaW5nIGludmFsaWQgTUlNRSB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRl
eCBjYTYzNjBhYTM3NTM5Y2Y2NDY5OTUzNWVlZDBmMjNhY2Y4MmFkMTlhLi5lM2FmMzMxMjEyZGNm
MGRiZTIxZGYzNzJlYTBlZGFmZmQxNzQ3ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMC0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBjb29raWUgY2FjaGUg
dG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBpbiBtb3N0IGNhc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1OTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRp
IEtvaXZpc3RvLgorCisgICAgICAgIEFkZCBuZXcgQ0ZOZXR3b3JrIFNQSSB0byBDRk5ldHdvcmtT
UEkuaCBmb3Igb3BlbiBzb3VyY2UgYnVpbGRzIGFuZCBmb3IgdXNpbmcgcmVzcG9uZHNUb1NlbGVj
dG9yLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoKKwogMjAyMC0wMi0x
MSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBX
cm9uZyBpbmNsdWRlcyBmb3IgaW50ZXJuYWwgU0RLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNmMjYxMTE3NDBlOWRk
MmFjYjEyZTY4NTBiZjExY2E3ZTg4ZjJiMWYuLjA5N2Y4M2JjMWU0MWZlY2EzNDIzNzk5ZThiY2E3
Y2Q1ZGI4NzE2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjAtMDItMTIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVt
ZW50IGluLVdlYlByb2Nlc3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1
bWVudC5jb29raWUgaW4gbW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAy
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBTZWUg
V2ViQ29yZSBDaGFuZ2VMb2cuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZG9tQ29va2llc0Zvckhv
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5z
dWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzQWRkZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0ZWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjb29raWVzQWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmNvb2tpZXNEZWxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbTogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmguCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmlzRnVuY3Rpb25hbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
Q2FjaGU6OmNvb2tpZXNBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpj
b29raWVzRGVsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpjbGVhcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpjbGVhckZvckhvc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmguCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZUphcjo6aXNFbGlnaWJsZUZvckNhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llSmFyOjpjb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
SmFyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXNEZWxldGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjbGVhckNhY2hlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llSmFyOjpjbGVhckNhY2hlRm9ySG9zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9vdmVycmlkZGVuTWVkaWFUeXBlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y29va2llSmFyKToKKwogMjAyMC0wMi0x
MSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydCByMjU1NjYyIGFzIGl0IHNlZW1zIHRvIGNhdXNlIGJsYW5rIHZpZXdzIGluIFNWQy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hTZXQuaAppbmRleCBlMjY4N2U5YjA2MmRkYzg0OTQ1OTQyZTkwMjQ2YWE4MWE3ZjQ0NTU1Li5l
ZTJjMjkxMzc4Mzg4MjViOTlkYTYwNDc5MzI5OWEzYThkYjNlYzAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC0x
MTIsNiArMTEyLDggQEAgcHVibGljOgogICAgIC8vIHRoZW0gYXJlIG5ldyB0byB0aGUgc2V0LiBS
ZXR1cm5zIGZhbHNlIGlmIHRoZSBzZXQgaXMgdW5jaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEl0ZXJhdG9yVHlwZT4KICAgICBib29sIGFkZChJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJh
dG9yVHlwZSBlbmQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KKyAgICBi
b29sIHJlbW92ZShJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpOwogCiAgICAg
Ym9vbCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7CiAgICAgYm9vbCByZW1vdmUoaXRlcmF0b3Ip
OwpAQCAtMjcwLDYgKzI3MiwxNiBAQCBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjphZGQo
SXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUgZW5kKQogICAgIHJldHVybiBjaGFuZ2Vk
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVt
cGxhdGU8dHlwZW5hbWUgSXRlcmF0b3JUeXBlPgoraW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
Pjo6cmVtb3ZlKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKK3sKKyAgICBi
b29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICBmb3IgKEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIGNoYW5nZWQgfD0gcmVtb3ZlKCppdGVyKTsK
KyAgICByZXR1cm4gY2hhbmdlZDsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZShpdGVy
YXRvciBpdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZDI0Yjg1ZTJkYTI0MTM0NmUwMGI3
MzM3YTU5NjgzYmU2MTAyMGMyOC4uMjlmMGY1NmExMjI3MzE0OTRiYzNlMDM5YTU2MmM3ODFhZDM3
ODQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU1Niw2ICs1NTYsMTAgQEAKICNkZWZpbmUg
SEFWRV9ERVZJQ0VfSURFTlRJVFkgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkK
KyNkZWZpbmUgSEFWRV9DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSAxCisjZW5kaWYKKwogI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NTAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBIQVZFX0RBVEFfUFJPVEVDVElP
Tl9LRVlDSEFJTiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmgKaW5kZXggNjY1OGU3MjhjOWM5ODJhNmZmODJjMGNhNDE2NDhjMmQ0ZGMxMTQ0
MC4uYTkyMDc2MGIzZDY5YzIzYmU4YjY4OWU1NmY0OGZkZDdkOGM2NDM5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTM5MSw2ICszOTEsMTAg
QEAgV1RGX0VYVEVSTl9DX0VORAogCiBAaW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKCkK
ICsgKHZvaWQpX3NldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdl
ICopc3RvcmFnZTsKKy0gKHZvaWQpX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
czooTlNTZXQ8TlNTdHJpbmcqPiogX19udWxsYWJsZSlkb21haW5MaXN0OworLSAodm9pZClfc2V0
Q29va2llc0FkZGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBDb29r
aWUqPiogYWRkZWRDb29raWVzLCBOU1VSTCogX19udWxsYWJsZSB1cmxGb3JBZGRlZENvb2tpZXMp
KWNvb2tpZXNBZGRlZEhhbmRsZXIgb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdCBfX251bGxhYmxl
KXF1ZXVlOworLSAodm9pZClfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVyOih2b2lkKF5fX251bGxh
YmxlKShOU0FycmF5PE5TSFRUUENvb2tpZSo+KiBfX251bGxhYmxlIGRlbGV0ZWRDb29raWVzLCBi
b29sIGRlbGV0ZWRBbGxDb29raWVzKSljb29raWVzRGVsZXRlZEhhbmRsZXIgb25RdWV1ZTooZGlz
cGF0Y2hfcXVldWVfdCBfX251bGxhYmxlKXF1ZXVlOworLSAoTlNBcnJheSogX19udWxsYWJsZSlf
Z2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJpbmcqKWRvbWFpbjsKIEBlbmQKIAogQGludGVyZmFj
ZSBOU1VSTFJlc3BvbnNlICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4NThlODgzMjI0
NGRmMjhhYTQ1MTIwNDcxZGQwZTI5YTgxNDEzZTdmLi41NmU4MzJmNGRiMTBjZWMzYTAyZjA4MWFi
OTliZGQxMGMxZWJkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcxOTUsMTEgKzcx
OTUsMTQgQEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKICAgICBt
X2NhY2hlZERPTUNvb2tpZXMgPSBTdHJpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSgpCit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFN5bmNocm9ub3VzIHJlc291
cmNlcyBsb2FkaW5nIGNhbiBzZXQgY29va2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVz
IGNhY2hlCiAgICAgLy8gaW4gdGhpcyBjYXNlLCB0byBiZSBzYWZlLgogICAgIGludmFsaWRhdGVE
T01Db29raWVDYWNoZSgpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisg
ICAgICAgIHBhZ2UtPmNvb2tpZUphcigpLmNsZWFyQ2FjaGVGb3JIb3N0KHVybC5ob3N0KCkudG9T
dHJpbmcoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlw
dChET01XcmFwcGVyV29ybGQmIHdvcmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1NjIwMjkx
YWJlYjNlMGM5OWRlOTY1NjVkMzFkYWRjMjk1MzYzYzAwLi4yZmM0ZGM2OWNlMWZhNjE0YWQ5NDM4
YzFmODdkOGE1ZjA0MTRhM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY0MCw3ICsxNjQw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENhY2hlZERPTUNvb2tpZXMoY29uc3QgU3RyaW5n
Jik7CiAgICAgYm9vbCBpc0RPTUNvb2tpZUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nv
b2tpZUNhY2hlRXhwaXJ5VGltZXIuaXNBY3RpdmUoKTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZURP
TUNvb2tpZUNhY2hlKCk7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkg
ZmluYWw7CisgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYp
IGZpbmFsOwogCiAgICAgYm9vbCBjYW5OYXZpZ2F0ZUludGVybmFsKEZyYW1lJiB0YXJnZXRGcmFt
ZSk7CiAgICAgYm9vbCBpc05hdmlnYXRpb25CbG9ja2VkQnlUaGlyZFBhcnR5SUZyYW1lUmVkaXJl
Y3RCbG9ja2luZyhGcmFtZSYgdGFyZ2V0RnJhbWUsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4
IDU4ODJlMWFiMWFiOTNiMzczZWEyM2E2YTAyODI0MWRlZWY1MzM4NjQuLjMyYWY3NDQ4MTQxYTc5
MWM4M2M2ZjI5MWVjZWRkYWRhMDFkMTlhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdl
UG9ydCkKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3NhZ2VQb3J0KTsKIH0KIAotdm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkK
K3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBVUkwmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCAwMDgzMWEyNjBiNTM3YTAwOTNhODgxMmRhNGJhNWZmZDVjMjU1NmE4
Li5iYzA0ZGY0OWQxYWU5Nzg5NjMwNWM4MjMxM2E2ZDVjMmY2MjQ0ZmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsKICAgICB2
b2lkIGRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRM
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCByZWYoKSB7
IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVm
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5k
ZXggODRkYmE0MGU5Mjg2Y2QzZmQ4MzgzNGJhYzAyMDE2MDAxYTI3ZjUwNy4uMzAwMjkzYTg2NmRh
YzRiMjA4NTdiN2U3NTI0NDc4MTEwYzVjODlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
aApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAorICAgIC8vIENvb2tpZSBDYWNoZS4KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNoZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNh
Y2hlRm9ySG9zdChjb25zdCBTdHJpbmcmKSB7IH0KKwogICAgIHZpcnR1YWwgfkNvb2tpZUphcigp
OwogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0
IERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggMmI3YmY0MjlkZDYyMmZjNzI3ZTEwMTMwMmVmZmVlZGQ1ZTRjMzg0Ny4uYzdlMGYzMWJl
NzIwNmZlZjhkYWFkMTg0NjFlNGY1YTI0YmJmN2Q2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTEwLDExICsxMTAsMTIgQEAgUmVmUHRyPFRocmVh
ZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXgKIAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgYXV0byByZXNvdXJjZVVSTCA9IHJlcXVl
c3QudXJsKCk7CiAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKICAgICAg
ICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVu
dCwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwotICAgIGNvbnRleHQuZGlkTG9hZFJl
c291cmNlU3luY2hyb25vdXNseSgpOworICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hy
b25vdXNseShyZXNvdXJjZVVSTCk7CiB9CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJy
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKaW5kZXggMzE2ZDIxNjk3YmRiZWU5MmQxM2FlMzlkNjRhNzQ0ZjM0ZmYxN2E1Yy4u
NDExZjg3MmRhNGIxMmE4MGNkMzk3MzIwODJkNzM5ZThlNDZiZjdjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2hyb21l
LmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKKyNp
bmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05OSw2ICsxMDAsMTAgQEAgc3RhdGlj
IHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9ub3VzIHN5bmNocm9ub3VzLCBNYWlu
dGFpbkJhY2tGb3J3YXJkQ2EKIAogICAgIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4o
KTsKIAorICAgIFBhZ2U6OmZvckVhY2hQYWdlKFtdKGF1dG8mIHBhZ2UpIHsKKyAgICAgICAgcGFn
ZS5jb29raWVKYXIoKS5jbGVhckNhY2hlKCk7CisgICAgfSk7CisKICAgICBmb3IgKGF1dG8mIGRv
Y3VtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERv
Y3VtZW50cygpKSkgewogICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlbGVhc2VNZW1v
cnkoKTsKICAgICAgICAgZG9jdW1lbnQtPmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggNWQzYTg4YzQ4ZjdhYTY3MGY4NGY4YjNmZTEx
YWJhMzExMDRiNGI0YS4uYTI3MWUxYzkzMzBmNDVlM2Y0MzYyODU1MjA3YzM5OGY5YmUwODRlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzYzLDYgKzM2Myw5IEBAIHJlcXVlc3RJ
ZGxlQ2FsbGJhY2tFbmFibGVkOgogSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFs
c2UKIAoraW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0
aGlyZFBhcnR5SWZyYW1lUmVkaXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDI5OTQyNzU2MjU4ZTkyNDNjM2IwYTEwMGIxYTNmNmY3
MmE4NDc1OGMuLmFjYWI3NTZiNTc3YzFhM2FjYzU3OTJmMWI3NTU1MTk5MTllNzU1NjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5jcHAKQEAgLTU2LDYgKzU2LDIxIEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpwZXJtaXRQcm9jZXNzVG9Vc2VDb29raWVBUEkoYm9vbCB2YWx1ZSkKICAgICAgICAgcmVt
b3ZlUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KTsKIH0KIAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkK
K3sKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHVucmVnaXN0ZXJD
b29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpOworI2VuZGlmCit9CisKKyNpZiAhUExB
VEZPUk0oQ09DT0EpCitWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRvbUNv
b2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRF
RF9ZRVQoKTsKKyAgICByZXR1cm4geyB9OworfQorI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkK
KwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCmluZGV4IDY1
MDZmMTA3NzA2NWE0ZDIxZjc5ODAxOTJmM2Q3NTA3ZWJjMjNhOWUuLjUyOWJiY2ZmNjAyM2M1ZTZi
MjlhNDAyMmIwNzNjNmJlNTg2Yjg0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaApAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYwLDYgKzYwLDkg
QEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291cENvb2tpZUphcjsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VPYnNlcnZlci5oIgorT0JKQ19D
TEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU0hUVFBDb29raWU7CitPQkpDX0NMQVNTIE5TTXV0
YWJsZVNldDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OSw2ICs4MiwxNSBA
QCBlbnVtIGNsYXNzIFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgOiB1aW50OF90IHsgQWxs
LCBBbGxPblNpdGVzV2l0aG91dFVzZXJJbgogZW51bSBjbGFzcyBGaXJzdFBhcnR5V2Vic2l0ZURh
dGFSZW1vdmFsTW9kZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29raWVzLCBOb25lLCBBbGxCdXRDb29r
aWVzTGl2ZU9uVGVzdGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tpZXNSZXByb1Rlc3RpbmdUaW1lb3V0
IH07CiBlbnVtIGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2wgeyBObywgWWVzIH07CiAKKyNpZiBI
QVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorY2xhc3MgQ29va2llQ2hhbmdlT2JzZXJ2
ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvb2tpZUNoYW5nZU9ic2VydmVyKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb29raWVzRGVs
ZXRlZCgpID0gMDsKK307CisjZW5kaWYKKwogY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTkyLDkgKzEwNCwxMiBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgTlNIVFRQQ29va2llU3RvcmFnZSAqbnNDb29raWVTdG9yYWdlKCkg
Y29uc3Q7CiAjZW5kaWYKIAorICAgIFdFQkNPUkVfRVhQT1JUIH5OZXR3b3JrU3RvcmFnZVNlc3Np
b24oKTsKKwogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAg
IFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4g
Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkZvcklkZW50aWZpZXIoQ0ZTdHJpbmdSZWYgaWRlbnRpZmll
cik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lv
bklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiwgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+JiYpOworICAgIGVudW0gY2xhc3MgSXNJbk1lbW9yeUNvb2tpZVN0
b3JlIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
PiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mJiwgSXNJbk1lbW9yeUNvb2tp
ZVN0b3JlID0gSXNJbk1lbW9yeUNvb2tpZVN0b3JlOjpObyk7CiAgICAgV0VCQ09SRV9FWFBPUlQg
ZXhwbGljaXQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIC8v
IE1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGEgRm91bmRhdGlvbiBkZWZhdWx0IHNob3VsZCBi
ZSB1c2VkLgpAQCAtMTQ2LDYgKzE2MSwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVT
ZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFApIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JikgY29uc3Q7CiAKKyAgICBXRUJDT1JFX0VY
UE9SVCBWZWN0b3I8Q29va2llPiBkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3Qp
OworCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29r
aWVDaGFuZ2VPYnNlcnZlciYsIGNvbnN0IFN0cmluZyYgaG9zdCk7CisgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBzdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVD
aGFuZ2VPYnNlcnZlciYsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaG9zdHMpOworICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgc3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpIGNvbnN0Owor
I2VuZGlmCisKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1faXNSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIHNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25h
bDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwpAQCAt
MTczLDExICsxOTYsMjcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90SW5jbHVkZUhU
VFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiwgSW5jbHVkZUhUVFBPbmx5T3JOb3QsIEluY2x1ZGVTZWN1cmVDb29raWVzLCBT
aG91bGRBc2tJVFAgPSBTaG91bGRBc2tJVFA6OlllcykgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0
cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZikgY29uc3Q7CisgICAgTlNBcnJheSAqaHR0
cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNVUkwgKmZpcnN0UGFydHks
IGNvbnN0IE9wdGlvbmFsPFNhbWVTaXRlSW5mbz4mLCBOU1VSTCAqKSBjb25zdDsKKyAgICBOU0Fy
cmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+LCBTaG91bGRBc2tJVFApIGNvbnN0OworICAgIHZvaWQgc2V0SFRUUENvb2tp
ZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNBcnJheSAqY29va2llcywgTlNVUkwg
KiwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJikgY29uc3Q7Cisg
ICAgdm9pZCBkZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TSFRUUENv
b2tpZSAqKSBjb25zdDsKKyNlbmRpZgorCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKKyAgICB2b2lkIHJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3Nhcnko
KTsKKyAgICB2b2lkIHVucmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgp
OworI2VuZGlmCisKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKIAogI2lmIFBMQVRG
T1JNKENPQ09BKSB8fCBVU0UoQ0ZVUkxDT05ORUNUSU9OKQogICAgIFJldGFpblB0cjxDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CisgICAgYm9vbCBtX2lz
SW5NZW1vcnlDb29raWVTdG9yZSB7IGZhbHNlIH07CiAjZWxpZiBVU0UoU09VUCkKICAgICBzdGF0
aWMgdm9pZCBjb29raWVzRGlkQ2hhbmdlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiopOwogCkBAIC0x
OTAsNiArMjI5LDEyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPE5ldHdvcmtpbmdDb250ZXh0PiBt
X2NvbnRleHQ7CiAjZW5kaWYKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkp
CisgICAgYm9vbCBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzIHsgZmFsc2UgfTsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlU2V0PiBtX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
czsKKyAgICBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxDb29raWVDaGFuZ2VPYnNlcnZlcio+PiBt
X2Nvb2tpZUNoYW5nZU9ic2VydmVyczsKKyNlbmRpZgorCiAgICAgQ3JlZGVudGlhbFN0b3JhZ2Ug
bV9jcmVkZW50aWFsU3RvcmFnZTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCmluZGV4IGIwMWE3ZTY2YmYwOTE0
OTYxZDYzMDEwNzQxZTIyMTc1ZjllZmI5YjguLmUwZDg0ZjdjNTE3OTVlY2ViZjNlNTA2YzliMGEy
OGU4Y2I1YWI2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCkBAIC03Mywx
MSArNzMsMTIgQEAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y3JlYXRlQ0ZTdG9yYWdlU2Vzc2lvbkYKICAgICByZXR1cm4gc3RvcmFnZVNl
c3Npb247CiB9CiAKLU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25S
ZWY+JiYgcGxhdGZvcm1TZXNzaW9uLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4m
JiBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpCitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmPiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+JiYgcGxhdGZvcm1Db29raWVTdG9yYWdlLCBJc0luTWVtb3J5Q29va2llU3Rv
cmUgaXNJbk1lbW9yeUNvb2tpZVN0b3JlKQogICAgIDogbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQog
ICAgICwgbV9wbGF0Zm9ybVNlc3Npb24oV1RGTW92ZShwbGF0Zm9ybVNlc3Npb24pKQorICAgICwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUoaXNJbk1lbW9yeUNvb2tpZVN0b3JlID09IElzSW5NZW1v
cnlDb29raWVTdG9yZTo6WWVzKQogewotICAgIEFTU0VSVChwcm9jZXNzTWF5VXNlQ29va2llQVBJ
KCkgfHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSk7CisgICAgQVNTRVJUKHByb2Nlc3NNYXlVc2VD
b29raWVBUEkoKSB8fCAhcGxhdGZvcm1Db29raWVTdG9yYWdlIHx8IG1faXNJbk1lbW9yeUNvb2tp
ZVN0b3JlKTsKICAgICBtX3BsYXRmb3JtQ29va2llU3RvcmFnZSA9IHBsYXRmb3JtQ29va2llU3Rv
cmFnZSA/IFdURk1vdmUocGxhdGZvcm1Db29raWVTdG9yYWdlKSA6IGNvb2tpZVN0b3JhZ2UoKTsK
IH0KIApAQCAtODgsMTAgKzg5LDEwIEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIAogUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZSgp
IGNvbnN0CiB7Ci0gICAgaWYgKCFwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCisgICAgaWYgKCFw
cm9jZXNzTWF5VXNlQ29va2llQVBJKCkgJiYgIW1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJv
Y2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBt
X2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBpZiAobV9wbGF0Zm9ybUNvb2tpZVN0b3Jh
Z2UpCiAgICAgICAgIHJldHVybiBtX3BsYXRmb3JtQ29va2llU3RvcmFnZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDllOWE5MWI3MjUwZjM2MmI4NTk0NWYzZDcw
Mjc2ZTZhYmIxYWRkNDIuLmE4ZGE5M2M1MTFmOThjZjIxMjRlMGNmMTI1Y2YzZTQ2OGRmYThmMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDYsNyArNDYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nv
b2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBD
b29raWUgKiljb29raWVdOwpAQCAtNTUsNyArNTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0Q29va2llKGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
KTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5B
Y2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBSZXRh
aW5QdHI8TlNNdXRhYmxlQXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZvciAoY29u
c3QgYXV0byYgY29va2llIDogY29va2llcykKQEAgLTY4LDE5ICs2OCwxOCBAQCB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2ll
cywgY29uc3QgVVJMJgogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2ll
KGNvbnN0IENvb2tpZSYgY29va2llKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8
fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgW25zQ29va2llU3RvcmFnZSgpIGRlbGV0
ZUNvb2tpZTooTlNIVFRQQ29va2llICopY29va2llXTsKIH0KIAotc3RhdGljIFZlY3RvcjxDb29r
aWU+IG5zQ29va2llc1RvQ29va2llVmVjdG9yKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nv
b2tpZXMpCitzdGF0aWMgVmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29raWVWZWN0b3IoTlNB
cnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcywgY29uc3QgRnVuY3Rpb248Ym9vbChOU0hU
VFBDb29raWUgKik+JiBmaWx0ZXIgPSB7IH0pCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotCiAgICAgVmVj
dG9yPENvb2tpZT4gY29va2llczsKICAgICBjb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
bnNDb29raWVzLmNvdW50KTsKLSAgICBmb3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUgaW4gbnND
b29raWVzKQotICAgICAgICBjb29raWVzLnVuY2hlY2tlZEFwcGVuZChuc0Nvb2tpZSk7Ci0KKyAg
ICBmb3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUgaW4gbnNDb29raWVzKSB7CisgICAgICAgIGlm
ICghZmlsdGVyIHx8IGZpbHRlcihuc0Nvb2tpZSkpCisgICAgICAgICAgICBjb29raWVzLnVuY2hl
Y2tlZEFwcGVuZChuc0Nvb2tpZSk7CisgICAgfQogICAgIHJldHVybiBjb29raWVzOwogfQogCkBA
IC0xMTgsNyArMTE3LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2ll
U3RvcmUoKQogCiBOU0hUVFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5z
Q29va2llU3RvcmFnZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8
IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBhdXRvIGNmQ29va2llU3RvcmFnZSA9IGNv
b2tpZVN0b3JhZ2UoKTsKICAgICBpZiAoIWNmQ29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2ll
U3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY2ZDb29r
aWVTdG9yYWdlKQogICAgICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRU
UENvb2tpZVN0b3JhZ2VdOwpAQCAtMTU4LDExICsxNTcsNiBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKQog
ICAgIENGVVJMQ2FjaGVTZXREaXNrQ2FwYWNpdHkoY2FjaGUuZ2V0KCksIDApOyAvLyBTZXR0aW5n
IGRpc2sgY2FjaGUgc2l6ZSBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBvbmNlIDxyZGFyOi8vcHJv
YmxlbS8xMjY1NjgxND4gaXMgZml4ZWQuCiAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5
KGNhY2hlLmdldCgpLCBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIG1lbW9yeUNhcGFjaXR5
XSk7CiAKLSAgICBpZiAoIU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tp
ZUFQSSgpKQotICAgICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb24ubGVha1JlZigpOwotCi0gICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOwotCiAgICAgYXV0byBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9y
YWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VT
ZXNzaW9uLmdldCgpKSk7CiAgICAgaWYgKCFjb29raWVTdG9yYWdlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTE3MywyMCArMTY3LDIzIEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3Jl
YXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgcmV0
dXJuIHN0b3JhZ2VTZXNzaW9uLmxlYWtSZWYoKTsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmh0dHBD
b29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK05TQXJyYXkgKk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBj
b29raWVTdG9yYWdlKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBpZiAoIWNvb2tpZVN0
b3JhZ2UpCisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOworICAgIGlm
ICghY29va2llU3RvcmFnZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5
Q29va2llU3RvcmUpOwogICAgICAgICByZXR1cm4gW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJl
ZEhUVFBDb29raWVTdG9yYWdlXSBjb29raWVzXTsKKyAgICB9CiAgICAgCiAgICAgYXV0byBjb29r
aWVzID0gYWRvcHRDRihDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFn
ZSkpOwogICAgIHJldHVybiBbTlNIVFRQQ29va2llIF9jZjJuc0Nvb2tpZXM6Y29va2llcy5nZXQo
KV07CiB9CiAKLXN0YXRpYyB2b2lkIGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlLCBOU0hUVFBDb29raWUgKmNvb2tpZSkKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29v
a2llU3RvcmFnZSwgTlNIVFRQQ29va2llICpjb29raWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFj
Y2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBpZiAoIWNv
b2tpZVN0b3JhZ2UpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJbk1lbW9yeUNvb2tp
ZVN0b3JlKTsKICAgICAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVT
dG9yYWdlXSBkZWxldGVDb29raWU6Y29va2llXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTIyNiw5ICsyMjMsOSBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChOU0hUVFBDb29r
aWVTdG9yYWdlICpzdG9yYWdlLCBOU1VSTCAqdXJsLCBOU1VSTCAqbQogICAgIHJldHVybiBjb29r
aWVzUHRyLT5hdXRvcmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0Zv
clVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TQXJyYXkgKmNvb2tp
ZXMsIE5TVVJMICp1cmwsIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29r
aWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAq
Y29va2llcywgTlNVUkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2Up
IHsKICNpZiAhKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA8IDEwMTQwMCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQog
ICAgICAgICBpZiAoW05TSFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0
b3I6QHNlbGVjdG9yKF9zZXRDb29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6cG9saWN5UHJv
cGVydGllczopXSkKQEAgLTI1NSwyMSArMjUyLDIyIEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29r
aWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAq
CiAjZW5kaWYKIH0KIAotc3RhdGljIE5TQXJyYXkgKmh0dHBDb29raWVzRm9yVVJMKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IE9w
dGlvbmFsPFNhbWVTaXRlSW5mbz4mIHNhbWVTaXRlSW5mbywgTlNVUkwgKnVybCkKK05TQXJyYXkg
Kk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKSBjb25zdAogewotICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nv
b2tpZXMpKTsKLSAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpCisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0lu
TWVtb3J5Q29va2llU3RvcmUpOworICAgIGlmICghY29va2llU3RvcmFnZSkgeworICAgICAgICBS
RUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgICAgICBjb29raWVT
dG9yYWdlID0gX0NGSFRUUENvb2tpZVN0b3JhZ2VHZXREZWZhdWx0KGtDRkFsbG9jYXRvckRlZmF1
bHQpOworICAgIH0KIAogICAgIC8vIEZJWE1FOiBTdG9wIGNyZWF0aW5nIGEgbmV3IE5TSFRUUENv
b2tpZVN0b3JhZ2Ugb2JqZWN0IGVhY2ggdGltZSB3ZSB3YW50IHRvIHF1ZXJ5IHRoZSBjb29raWUg
amFyLgogICAgIC8vIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiBjb3VsZCBpbnN0ZWFkIGtlZXAgYSBO
U0hUVFBDb29raWVTdG9yYWdlIG9iamVjdCBmb3IgdXMuCiAgICAgUmV0YWluUHRyPE5TSFRUUENv
b2tpZVN0b3JhZ2U+IG5zQ29va2llU3RvcmFnZSA9IGFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9y
YWdlIGFsbG9jXSBfaW5pdFdpdGhDRkhUVFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2VdKTsK
LSAgICByZXR1cm4gY29va2llc0ZvclVSTChuc0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCwgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvclVS
TChuc0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsK
IH0KIAogc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkgKnVu
ZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSkKIHsKLSAg
ICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NS
YXdDb29raWVzKSk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFt1bmZpbHRlcmVkQ29va2llcyBj
b3VudF07CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBmaWx0ZXJlZENvb2tpZXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsK
IApAQCAtMzAyLDI3ICszMDAsMjYgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJD
b29raWVzKE5TQXJyYXkgKnVuZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1
cm4gZmlsdGVyZWRDb29raWVzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApCitOU0FycmF5ICpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRl
bnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9T
VEFUSVNUSUNTKQotICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYg
c2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdl
SUQpKQorICAgIGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxk
QmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKICAgICAgICAg
cmV0dXJuIG5pbDsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNF
RF9QQVJBTShwYWdlSUQpOwogICAgIFVOVVNFRF9QQVJBTShzaG91bGRBc2tJVFApOwogI2VuZGlm
Ci0gICAgcmV0dXJuIGh0dHBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdl
dCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CisgICAgcmV0dXJuIGh0dHBDb29r
aWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwpOwogfQogCi1lbnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRU
UE9ubHksIEluY2x1ZGVIVFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhU
VFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxk
QXNrSVRQIHNob3VsZEFza0lUUCA9IFNob3VsZEFza0lUUDo6WWVzKQorc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lvbihjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJv
Y2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBt
X2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiAKLSAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChzZXNzaW9uLCBmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFAp
OworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgaWYgKCFb
Y29va2llcyBjb3VudF0pCiAgICAgICAgIHJldHVybiB7IFN0cmluZygpLCBmYWxzZSB9OyAvLyBS
ZXR1cm4gYSBudWxsIHN0cmluZywgbm90IGFuIGVtcHR5IG9uZSB0aGF0IFN0cmluZ0J1aWxkZXIg
d291bGQgY3JlYXRlIGJlbG93LgogCkBAIC0zNzQsMjIgKzM3MSwyMiBAQCBzdGF0aWMgdm9pZCBk
ZWxldGVBbGxIVFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2Up
CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QKIHsK
LSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRl
U2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Np
b24oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJ
bmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQog
CiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNr
SVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5
LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2ll
c0ZvclNlc3Npb24oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsK
IH0KIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQ
cm94eSYgaGVhZGVyRmllbGRQcm94eSkgY29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNl
c3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94
eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZy
YW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZp
ZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIHJldHVybiBjb29raWVzRm9yU2Vz
c2lvbihoZWFkZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNp
dGVJbmZvLCBoZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBo
ZWFkZXJGaWVsZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5
LmluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZp
ZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lU
UCBzaG91bGRBc2tJVFAsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAogewotICAgIEFT
U0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nv
b2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdl
OjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAg
ICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTQ1Nyw3ICs0NTQsNyBAQCBib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSQogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0Zv
clVSTCgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJ
RCwgc2hvdWxkQXNrSVRQKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChm
aXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJ
VFApOwogICAgIE5TVUludGVnZXIgY291bnQgPSBbY29va2llcyBjb3VudF07CiAgICAgcmF3Q29v
a2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsg
aSA8IGNvdW50OyArK2kpIHsKQEAgLTUxOCw3ICs1MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
aG9zdAogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3Ru
YW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29r
aWVzIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIApAQCAtNTY2LDQgKzU2Myw5OCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQog
ICAgIFtzdG9yYWdlIF9zYXZlQ29va2llc107CiB9CiAKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQorewor
ICAgIE5TQXJyYXkgKm5zQ29va2llcyA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0Zv
ckRvbWFpbjooTlNTdHJpbmcgKilob3N0XTsKKyAgICByZXR1cm4gbnNDb29raWVzVG9Db29raWVW
ZWN0b3IobnNDb29raWVzLCBbXShOU0hUVFBDb29raWUgKmNvb2tpZSkgeyByZXR1cm4gIWNvb2tp
ZS5IVFRQT25seTsgfSk7Cit9CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJ
KQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0
ZW5lcnNJZk5lY2Vzc2FyeSgpCit7CisgICAgaWYgKG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5l
cnMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMg
PSB0cnVlOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0FkZGVkSGFuZGxlcjpe
KE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICogbnNDb29raWVzLCBOU1VSTCAqdXJsRm9yQWRkZWRD
b29raWVzKSB7CisgICAgICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXMgPSBuc0Nvb2tpZXNUb0Nv
b2tpZVZlY3Rvcihuc0Nvb2tpZXMpOworICAgICAgICBhdXRvIGhvc3QgPSBVUkwodXJsRm9yQWRk
ZWRDb29raWVzKS5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWhv
c3QuaXNOdWxsKCkpOworICAgICAgICBhdXRvIGl0ID0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMu
ZmluZChob3N0KTsKKyAgICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDog
aXQtPnZhbHVlKQorICAgICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNBZGRlZChob3N0LCBjb29r
aWVzKTsKKyAgICB9IG9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07CisgICAgW25z
Q29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6XihOU0FycmF5PE5TSFRU
UENvb2tpZSAqPiAqLCBib29sIC8qZGVsZXRlZEFsbENvb2tpZXMqLykgeworICAgICAgICBmb3Ig
KGF1dG8mIG9ic2VydmVycyA6IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnZhbHVlcygpKSB7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAgICAgICAg
ICAgIG9ic2VydmVyLT5jb29raWVzRGVsZXRlZCgpOworICAgICAgICB9CisgICAgfSBvblF1ZXVl
OmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6dW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCkKK3sKKyAg
ICBpZiAoIW1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0FkZGVkSGFuZGxlcjpuaWwgb25RdWV1
ZTpuaWxdOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVy
Om5pbCBvblF1ZXVlOm5pbF07CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRTdWJzY3JpYmVk
RG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6bmlsXTsKKyAgICBtX2RpZFJlZ2lzdGVyQ29va2llTGlz
dGVuZXJzID0gZmFsc2U7Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdGFydExp
c3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hhbmdlT2JzZXJ2ZXIm
IG9ic2VydmVyLCBjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgcmVnaXN0ZXJDb29raWVDaGFu
Z2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpOworCisgICAgYXV0byYgb2JzZXJ2ZXJzID0gbV9jb29r
aWVDaGFuZ2VPYnNlcnZlcnMuZW5zdXJlKGhvc3QsIFtdIHsKKyAgICAgICAgcmV0dXJuIEhhc2hT
ZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPiB7IH07CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwor
ICAgIEFTU0VSVCghb2JzZXJ2ZXJzLmNvbnRhaW5zKCZvYnNlcnZlcikpOworICAgIG9ic2VydmVy
cy5hZGQoJm9ic2VydmVyKTsKKworICAgIGlmICghbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tp
ZUNoYW5nZXMpCisgICAgICAgIG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzID0g
YWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAgIGVsc2UgaWYgKFttX3N1
YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcg
Kilob3N0XSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JD
b29raWVDaGFuZ2VzIGFkZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICBbbnNDb29raWVT
dG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmli
ZWREb21haW5zRm9yQ29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29r
aWVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaG9zdHMp
Cit7CisgICAgYm9vbCBzdWJzY3JpYmVkVVJMc0NoYW5nZWQgPSBmYWxzZTsKKyAgICBmb3IgKGF1
dG8mIGhvc3QgOiBob3N0cykgeworICAgICAgICBhdXRvIGl0ID0gbV9jb29raWVDaGFuZ2VPYnNl
cnZlcnMuZmluZChob3N0KTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IG1fY29va2llQ2hhbmdlT2Jz
ZXJ2ZXJzLmVuZCgpKTsKKyAgICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJz
LmVuZCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYgb2JzZXJ2ZXJz
ID0gaXQtPnZhbHVlOworICAgICAgICBBU1NFUlQob2JzZXJ2ZXJzLmNvbnRhaW5zKCZvYnNlcnZl
cikpOworICAgICAgICBvYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CisgICAgICAgIGlmIChv
YnNlcnZlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBtX2Nvb2tpZUNoYW5nZU9ic2VydmVy
cy5yZW1vdmUoaXQpOworICAgICAgICAgICAgQVNTRVJUKFttX3N1YnNjcmliZWREb21haW5zRm9y
Q29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0XSk7CisgICAgICAg
ICAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgcmVtb3ZlT2JqZWN0OihO
U1N0cmluZyAqKWhvc3RdOworICAgICAgICAgICAgc3Vic2NyaWJlZFVSTHNDaGFuZ2VkID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3Vic2NyaWJlZFVSTHNDaGFuZ2VkKQorICAg
ICAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hh
bmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKKy8v
IEZJWE1FOiBUaGlzIGNhbiBldmVudHVhbGx5IGdvIGF3YXksIHRoaXMgaXMgbWVyZWx5IHRvIGVu
c3VyZSBhIHNtb290aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJLgorYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdAorewor
ICAgIHN0YXRpYyBjb25zdCBib29sIHN1cHBvcnRzQVBJID0gW25zQ29va2llU3RvcmFnZSgpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2ll
Q2hhbmdlczopXTsKKyAgICByZXR1cm4gc3VwcG9ydHNBUEk7Cit9CisKKyNlbmRpZiAvLyBIQVZF
KENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGU4MTczNDRmMTlkMzhlZGMxNjc2ZmEzZDY4
Njk2MmRjNzg2ZWFjYmQuLmQ3M2NmNDdiNjEwNGYzNWY4ZDBhYTFkN2Y0YmU0YmNlZGM3M2E2Y2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC0xMjQsNiArMTI0LDExIEBAIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KQogICAgIGZvciAoYXV0byYgcG9ydCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzKQogICAgICAg
ICBuZXR3b3JrUHJvY2VzcygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkQ2xvc2VN
ZXNzYWdlUG9ydChwb3J0KTsKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkp
CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkp
CisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNo
YW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzKTsKKyNl
bmRpZgorCiAjaWYgVVNFKExJQldFQlJUQykKICAgICBpZiAobV9ydGNQcm92aWRlcikKICAgICAg
ICAgbV9ydGNQcm92aWRlci0+Y2xvc2UoKTsKQEAgLTYzMyw2ICs2MzgsNDggQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGMKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1
cmwsIGNvb2tpZU5hbWUpOwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9D
b29raWVDaGFuZ2VOb3RpZmljYXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0
byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKKyAgICBpZiAoIW5l
dHdvcmtTdG9yYWdlU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIGlmIChzdWJz
Y3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgQVNTRVJUKCFtX2hv
c3RzV2l0aENvb2tpZUxpc3RlbmVycy5jb250YWlucyhob3N0KSk7CisgICAgICAgIG1faG9zdHNX
aXRoQ29va2llTGlzdGVuZXJzLmFkZChob3N0KTsKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uLT5zdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhv
c3QpOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN1YnNjcmliZVRvQ29va2llQ2hh
bmdlTm90aWZpY2F0aW9ucyk7CisjZW5kaWYKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+ZG9tQ29va2llc0Zvckhvc3QoaG9zdCkpOworfQorCisjaWYgSEFW
RShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGhvc3RzKQoreworICAgIGJvb2wgcmVtb3ZlZCA9IG1faG9zdHNX
aXRoQ29va2llTGlzdGVuZXJzLnJlbW92ZShob3N0cy5iZWdpbigpLCBob3N0cy5lbmQoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsKKworICAgIGlmIChhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPnN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKCp0
aGlzLCBob3N0cyk7Cit9CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNv
b2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JiBjb29raWVzKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKSwgMCk7Cit9CisK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNEZWxldGVkKCkKK3sK
KyAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpDb29raWVzRGVsZXRlZCgpLCAwKTsKK30KKworI2VuZGlmCisKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFu
ZGxlLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IDg2Y2M2MGQxYTk5
NzVlOWI1ODUzMmIyNjFiYmNhY2EwNWIyOTlhNWYuLmM0M2U4MmRmYjA5ODViOWY4MjBmNmI3MGMz
YjQ0NjYyNzkxNmUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQyLDYgKzQyLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdp
c3RyYWJsZURvbWFpbi5oPgpAQCAtODcsNiArODgsOSBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcwogICAgIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M+CiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgLCBwdWJs
aWMgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OkNsaWVudAorI2VuZGlmCisjaWYgSEFWRShD
T09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb29raWVD
aGFuZ2VPYnNlcnZlcgogI2VuZGlmCiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBw
dWJsaWM6CkBAIC0yNjYsNiArMjcwLDE2IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBuZXh0
TWVzc2FnZUJhdGNoSWRlbnRpZmllcihGdW5jdGlvbjx2b2lkKCk+JiYpOwogCisgICAgdm9pZCBk
b21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29r
aWVDaGFuZ2VOb3RpZmljYXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jik+JiYpOworCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RF
TkVSX0FQSSkKKyAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnMoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBob3N0cyk7CisKKyAgICAvLyBXZWJDb3JlOjpDb29r
aWVDaGFuZ2VPYnNlcnZlci4KKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhv
c3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgZmluYWw7CisgICAgdm9pZCBjb29r
aWVzRGVsZXRlZCgpIGZpbmFsOworI2VuZGlmCisKICAgICBzdHJ1Y3QgUmVzb3VyY2VOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyIHsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KCkgPSBkZWZhdWx0OwogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoY29u
c3QgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyJikgPSBkZWZhdWx0OwpAQCAtMzI5LDYg
KzM0Myw5IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgTmV0d29ya01ETlNS
ZWdpc3RlciBtX21kbnNSZWdpc3RlcjsKICNlbmRpZgorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9M
SVNURU5FUl9BUEkpCisgICAgSGFzaFNldDxTdHJpbmc+IG1faG9zdHNXaXRoQ29va2llTGlzdGVu
ZXJzOworI2VuZGlmCiAKICAgICBib29sIG1fY2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
RW5hYmxlZCB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCmluZGV4IDQzYjVmNjc0ZTU1ZThkNzZiMTI4M2RkN2I3MjQ2YjY2MGIxODEyYWMuLjg1
YTZlZjEyMGIxMDA1YzQwOWZjNWVhMzZlOWZmOTJiNWYzZjRjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMzksNiArMzksMTAgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNr
SVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVz
KSBTeW5jaHJvbm91cwogICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNr
SVRQKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAg
ICBEZWxldGVDb29raWUoVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgRG9tQ29va2ll
c0Zvckhvc3QoU3RyaW5nIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmlj
YXRpb25zKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMK
KyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFVuc3Vic2NyaWJlRnJv
bUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoSGFzaFNldDxTdHJpbmc+IGhvc3RzKQorI2VuZGlm
CiAKICAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50
VHlwZSkKICAgICBSZWdpc3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQ
YXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDgyZGIwMTJkZTYwMzZhNmRkZTA4ZDVlYjQ3NTBmZmU2
NjI5OTBhZTcuLmNhNTA1ZWU1ZWViNWQ3YjFjNTI1Nzg5MjQ2NDgyNzk4OThkMDg0MmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjIxLDYgKzYyMSw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2
ZW50JzogWyciV2ViRXZlbnQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhRW5naW5lU3Vw
cG9ydFBhcmFtZXRlcnMnOiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAgICAgICAgICdX
ZWJDb3JlOjpJU09XZWJWVFRDdWUnOiBbJzxXZWJDb3JlL0lTT1ZUVEN1ZS5oPiddLAorICAgICAg
ICAnc3RydWN0IFdlYkNvcmU6OkNvb2tpZSc6IFsnPFdlYkNvcmUvQ29va2llLmg+J10sCiAgICAg
ICAgICdzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3JlL0VsZW1lbnRD
b250ZXh0Lmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6
IFsnIldlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3Ry
dWN0IFdlYktpdDo6V2ViVXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyRGF0YVR5cGVzLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlcy55YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbAppbmRleCBiNjRhMWY3ZDUyZjRjMDlmZmNmMjFhMzM5MmVmMmQxNDY4Mzk1MDk1Li5lNDRk
ZWExYTBjYmIzZWFmMmVjNDZlNzVlNjI0NWZiNGIyOTlmYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTU1LDYgKzU1LDEzIEBAIEhUVFBTVXBncmFkZUVu
YWJsZWQ6CiAgICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJBdXRvbWF0aWMgSFRUUFMgdXBn
cmFkZSBmb3Iga25vd24gc3VwcG9ydGVkIHNpdGVzIgogICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRh
bAogCitJblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQ6CisgICB0eXBlOiBib29sCisgICBkZWZh
dWx0VmFsdWU6IHRydWUKKyAgIGh1bWFuUmVhZGFibGVOYW1lOiAiSW4tUHJvY2VzcyBDb29raWUg
Q2FjaGUiCisgICBodW1hblJlYWRhYmxlRGVzY3JpcHRpb246ICJJbi1Qcm9jZXNzIERPTSBDb29r
aWUgQ2FjaGUiCisgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCisKIFRoaXJkUGFydHlJZnJhbWVS
ZWRpcmVjdEJsb2NraW5nRW5hYmxlZDoKICAgIHR5cGU6IGJvb2wKICAgIGRlZmF1bHRWYWx1ZTog
dHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKaW5kZXggNzQ4OTRiZDI3YmFmNTg5NTFlNmFmMjQxYzg3OTk4YmM1YzVl
YmFlOC4uYTVkMGJlMTQyNzFmNjMwNmY4MzZiOGZkYmQ3ZDQyMGYyOTUyNDZlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0CkBAIC02MjQsNiArNjI0LDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3Bw
CiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2Fj
aGUuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGUxZmM2ZjczNzJiMTYwM2U1ZGQyNWViMGE0
YTYwMWM2YzliZTIzZWEuLmQyNGE4MDQ4ZTM0NTA0NjM0MjdjOTMwNDMyZWY5MDAzOTc1MTFjMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTYxMyw2ICs2MTMsNyBAQCBXZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5tbQogCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
VGV4dENoZWNraW5nQ29udHJvbGxlclByb3h5Lm1tCitXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2Ev
V2ViQ29va2llQ2FjaGVDb2NvYS5tbQogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VD
b2NvYS5tbQogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5
LmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBkNDg4NWI0NjMyZGU5Yzg4Y2YwMjY1ZDVlZWY5YWIwNzU0YmY1NTg3Li5mZTc3ODNl
ZjRkYzJjMTdjYjFjYmY0OWRlNzAxZWE0NTE4MWQ2YzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk0Myw2ICs5NDMsNyBAQAogCQk0
NjZCQzAzQzFGQTI2NkRBMDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkJDMDM5
MUZBMjY2QzkwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9
OwogCQk0NjcxRkYxRjIzMjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFE
MjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0
NjdFNDNFODIyNDNGRjdEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3
MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovOyB9
OworCQk0NjgwOUE3QzIzRDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMw
MEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBD
M0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBD
M0RFREEgLyogQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJ
CTQ2QjA1MjQ3MjI2NjhEODUwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2Vzc0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjA1MjQ0MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
bkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAw
MjY5ODY3IC8qIFN0b3JhZ2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NkJFQjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAq
LzsgfTsKQEAgLTM0ODQsNiArMzQ4NSw4IEBACiAJCTQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAv
KiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcxRkYxRTIzMjE3
RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlB
N0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ2ODA5QTdCMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQ
cm92aXNpb25hbFBhZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm92aXNpb25hbFBhZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0Njgz
NTY5QjIxRTgxQ0M3MDA2RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyog
QmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1l
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02OTk3LDggKzcwMDAsOCBAQAog
CQkJCTFBNDIyRjhBMThCMjlCNTQwMEQ4Q0Q5NiAvKiBXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUu
aCAqLywKIAkJCQk1MUQxMjQ4NDFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUu
aCAqLywKIAkJCQk1MUQxMjQ4NTFFNzM0QUUzMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUu
bW0gKi8sCi0JCQkJREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3Jl
UHJpdmF0ZS5oICovLAogCQkJCTUxRDEyNDg2MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29r
aWVTdG9yZUludGVybmFsLmggKi8sCisJCQkJREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdL
SFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovLAogCQkJCTFBQjQwRUUzMUJGNjc3RTMwMEJBODFC
RSAvKiBXS01lbnVJdGVtSWRlbnRpZmllcnMubW0gKi8sCiAJCQkJMUFCNDBFRTQxQkY2NzdFMzAw
QkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVyc1ByaXZhdGUuaCAqLywKIAkJCQkxQTVCMUM0
RjE4OTg2MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLmggKi8sCkBAIC04NDIyLDYgKzg0MjUs
OCBAQAogCQkJCUJDNzJCOUY5MTFFNjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oICovLAogCQkJCTUxODcxQjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVu
dS5jcHAgKi8sCiAJCQkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmggKi8sCisJCQkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNw
cCAqLywKKwkJCQk0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAq
LywKIAkJCQk1QzdGQjQ2RTIxRTk3QzBCMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmNwcCAqLywK
IAkJCQk1QzdGQjQ2RjIxRTk3QzBDMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggKi8sCiAJCQkJ
MUE1QjFDNTIxODk4N0VERjAwNEZDRjlCIC8qIFdlYkRvY3VtZW50TG9hZGVyLmNwcCAqLywKQEAg
LTEwMjU0LDcgKzEwMjU5LDYgQEAKIAkJCQkyRDU4NzVCRjIxOUI1MzE1MDA3MEI5QUEgLyogRWRp
dGFibGVJbWFnZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMDVGRTU0MThEN0I5
REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTQxQUI1
MTJDMDJFQzQwMDJCRTY3QiAvKiBFZGl0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREY0
NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkMwMzJEQTgxMEY0MzdEMTAwNThDMTVBIC8qIEVuY29kZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxQjE1QTg1MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZpcm9ubWVudFV0aWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTc1RkIxNDk2QjUyNjAwQTRFRTA2IC8qIEV2
ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDY2Miw2ICsxMDY2Niw3IEBACiAJ
CQkJNTFBQ0JCODIxMjdBOEJBRDAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxQUNCQkEwMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVu
dVByb3h5TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y0REUyNTE2OEZBNDQ4MDBDOTRBRkMg
LyogV2ViQ29udGV4dFN1cHBsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2ODA5QTdDMjNE
OTIyNUUwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM3
RkI0NzAyMUU5N0RDNTAwOUUzMjQxIC8qIFdlYkNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzMwOTM0NTAxMzE1Qjk0RDAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMzMDkzNDQ4MTMxNUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2Vy
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTA3MjEsNyArMTA3MjYsNiBAQAogCQkJCUZF
RTQzRkQzMUU2N0IwMTgwMDc3RDZEMSAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlGRURCRENENzFFNjhEMjA1MDBBNTlGOEYgLyogV2ViSW5z
cGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QzhFMkEzNjEyNzc4NTI0MDBCQzdCRDAgLyogV2ViSW5zcGVjdG9yTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAotCQkJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9y
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyODM0MTI3NUQ3MzgwMEJDN0JEMCAv
KiBXZWJJbnNwZWN0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBOEI5NDYxMjdDODgy
QTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFDODkxRDY2MTlCMTI0RkYwMEJBNzlERCAvKiBXZWJJbnNwZWN0b3JVSS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDkzNCw2ICsxMDkzOCw3IEBACiAJCQkJMEYwNDE1OUUyM0M3Q0M3MzAwNjBB
M0UyIC8qIFdLQ29udGVudFZpZXdNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTA2NUZDMjNF
Qzk1NzIwMDU0NDNENiAvKiBXS0NvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
MDY1RkQyM0VDOTU3QjAwNTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAorCQkJCURGNDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjlFMjRCMTEyMEUxNUMwMEExMzdFMCAvKiBX
S0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTUyRjk4MTkyMDI2NzIwMEExRkEzNyAv
KiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJB
NTE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMTAxNyw2ICsxMTAyMiw3IEBACiAJCQkJMUE0MjJGOEIxOEIyOUI1NDAwRDhD
RDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjYy
RTczMTIxNDMwNDdCMDAwNjlFQzM1IC8qIFdLSGl0VGVzdFJlc3VsdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFEMTI0OTkxRTc2M0MwMTAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlERjQ2MkUwRjIzRjIyRjU1MDBFRkYzNUYgLyogV0tIVFRQQ29va2ll
U3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzY2QTRCNTIzMjA5NjI0MDBFQTRE
NDQgLyogV0tIVFRQQ29va2llU3RvcmVSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMTBBRTBE
MTMzQzE2Q0IwMDcyNzE3QSAvKiBXS0ljb25EYXRhYmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEyM0NGMUMxMzNEMjYwQTAwNTZGODAwIC8qIFdLSWNvbkRhdGFiYXNlQ0cuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggMjhiYzEyYzM0MjNmOWYyODM1NmMz
YTg0YzYxMjI0Y2ZhNGVkN2U5OS4uMmJiNDc5ZTM5ZGU5YjZlOTU3ZjI5Y2ZiN2VlODUwNjRhMDBl
NTkwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiU3RvcmFnZUFyZWFNYXAuaCIKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcE1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJXZWJD
b29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRl
ICJXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXJNZXNzYWdlcy5oIgpAQCAtMjM0LDYgKzIzNSwxOCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbjo6Y29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChIVFRQQ29va2llQWNjZXB0
UG9saWN5CiAgICAgbV9jb29raWVBY2NlcHRQb2xpY3kgPSBuZXdQb2xpY3k7CiB9CiAKKyNpZiBI
QVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQordm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiBjb29raWVzKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNv
b2tpZUphcigpLmNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKK30KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5jb29raWVKYXIoKS5jb29raWVzRGVsZXRlZCgpOworfQorI2VuZGlmCisKICNp
ZiBFTkFCTEUoU0hBUkVBQkxFX1JFU09VUkNFKQogdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZENhY2hlUmVzb3VyY2UoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oCmluZGV4IDUxZmRmMzU0NTI0ZDkxNWRkZjZlZDU5NGM3ZDJjMGZkODYzM2Q5ZDEuLjc2ZDI2
NjUyMGMyNjBkMTUzYjk0MWQ3MzliYzQ0OTAxOGM2ZTRhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFJlc291cmNl
RXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwor
c3RydWN0IENvb2tpZTsKIHN0cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7CiBzdHJ1Y3QgTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM7CiBlbnVtIGNsYXNzIEhUVFBDb29raWVBY2NlcHRQb2xpY3kg
OiB1aW50OF90OwpAQCAtODMsNiArODQsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBjb29raWVz
RW5hYmxlZCgpIGNvbnN0OwogCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkK
KyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciwgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAyYWE2ODg2ZTU3YTU5OWNiYzE3
YzM1ZjZiNzRlOTlkMmFiM2E4OWU1Li42OTkzZmE3ZWY0NjBmNzU3NmQ2MWNmZTRiNjQzZDI5MGY4
MmQ4ZDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0z
MSw2ICszMSwxMSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gTGVnYWN5
UmVjZWl2ZXIgewogICAgIFNldE9uTGluZVN0YXRlKGJvb2wgaXNPbkxpbmUpOwogICAgIENvb2tp
ZUFjY2VwdFBvbGljeUNoYW5nZWQoZW51bTp1aW50OF90IFdlYkNvcmU6OkhUVFBDb29raWVBY2Nl
cHRQb2xpY3kgcG9saWN5KTsKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkp
CisgICAgQ29va2llc0FkZGVkKFN0cmluZyBob3N0LCBWZWN0b3I8c3RydWN0IFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcyk7CisgICAgQ29va2llc0RlbGV0ZWQoKTsKKyNlbmRpZgorCiAgICAgQ2hl
Y2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciBwb3J0KSAtPiAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
Okhhc0FjdGl2aXR5IGhhc0FjdGl2aXR5KSBBc3luYwogICAgIE1lc3NhZ2VzQXZhaWxhYmxlRm9y
UG9ydChzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVD
YWNoZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2Vi
Q29va2llQ2FjaGVDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NmJjNjZkOWQ0ZmM2ZDJmNjc2NjUwZWNj
NmRhYTVhMWFhMDYwNzA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbQpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJDb29raWVDYWNo
ZS5oIgorCisjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViQ29va2llQ2FjaGU6OmluTWVt
b3J5U3RvcmFnZVNlc3Npb24oKQoreworICAgIGlmICghbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
KSB7CisgICAgICAgIFN0cmluZyBzZXNzaW9uTmFtZSA9IG1ha2VTdHJpbmcoIldlYktpdEluUHJv
Y2Vzc1N0b3JhZ2UtIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpKTsKKyAgICAgICAgYXV0byBzdG9y
YWdlU2Vzc2lvbiA9IGFkb3B0Q0YoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KHNlc3Npb25OYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBjb29r
aWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7CisgICAgICAgIG1f
aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbiA9IG1ha2VVbmlxdWU8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
PihXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSwgV1RGTW92ZShzdG9yYWdlU2Vz
c2lvbiksIFdURk1vdmUoY29va2llU3RvcmFnZSksIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6SXNJ
bk1lbW9yeUNvb2tpZVN0b3JlOjpZZXMpOworICAgIH0KKyAgICByZXR1cm4gKm1faW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjNlZDIwYzY0NTMzYWM3NGFiNWJmYmQ3ZGEzYjM4Nzc4NWM5YzY3NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNw
cApAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJDb29raWVDYWNoZS5oIgorCisjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitib29sIFdlYkNvb2tpZUNhY2hlOjppc1N1cHBvcnRl
ZCgpCit7CisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICAvLyBGSVhN
RTogVGhpcyBjYW4gZXZlbnR1YWxseSBiZSByZW1vdmVkLCB0aGlzIGlzIG1lcmVseSB0byBlbnN1
cmUgYSBzbW9vdGggdHJhbnNpdGlvbiB0byB0aGUgbmV3IEFQSS4KKyAgICByZXR1cm4gaW5NZW1v
cnlTdG9yYWdlU2Vzc2lvbigpLnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKTsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK1N0cmluZyBXZWJDb29raWVDYWNo
ZTo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpCit7CisgICAgU3RyaW5nIGhvc3QgPSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7Cisg
ICAgaWYgKCFtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyhob3N0KSkgeworICAg
ICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOworICAgICAgICBib29sIHN1YnNjcmliZVRvQ29v
a2llQ2hhbmdlTm90aWZpY2F0aW9ucyA9IHRydWU7CisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29v
a2llc0Zvckhvc3QodXJsLmhvc3QoKS50b1N0cmluZygpLCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkRvbUNvb2tpZXNGb3JIb3N0OjpSZXBseShjb29raWVzKSwgMCkpCisgICAgICAgICAgICByZXR1
cm4geyB9OworICAgICAgICBwcnVuZUNhY2hlSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgbV9ob3N0
c1dpdGhJbk1lbW9yeVN0b3JhZ2UuYWRkKGhvc3QpOworICAgICAgICBmb3IgKGF1dG8mIGNvb2tp
ZSA6IGNvb2tpZXMpCisgICAgICAgICAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc2V0Q29v
a2llKGNvb2tpZSk7CisgICAgfQorICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCku
Y29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQOjpObykuZmlyc3Q7Cit9CisK
K3ZvaWQgV2ViQ29va2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJp
bmcoKTsKKyAgICBpZiAobV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkp
CisgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWVzRnJvbURPTShmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBTaG91bGRBc2tJVFA6
Ok5vLCBjb29raWVTdHJpbmcpOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRk
ZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcykKK3sK
KyAgICBpZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBmb3IgKGF1dG8mIGNvb2tpZSA6IGNvb2tpZXMpCisgICAgICAg
IGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKK30KKwordm9pZCBX
ZWJDb29raWVDYWNoZTo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIGNsZWFyKCk7Cit9CisKK3Zv
aWQgV2ViQ29va2llQ2FjaGU6OmNsZWFyKCkKK3sKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElT
VEVORVJfQVBJKQorICAgIGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuaXNFbXB0eSgp
KQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMobV9o
b3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UpLCAwKTsKKyNlbmRpZgorICAgIG1faG9zdHNXaXRoSW5N
ZW1vcnlTdG9yYWdlLmNsZWFyKCk7CisgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbnVs
bHB0cjsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y2xlYXJGb3JIb3N0KGNvbnN0IFN0cmlu
ZyYgaG9zdCkKK3sKKyAgICBhdXRvIGl0ID0gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuZmlu
ZChob3N0KTsKKyAgICBpZiAoaXQgPT0gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLnJlbW92
ZShpdCk7CisgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMoVmVjdG9yPFN0cmluZz4geyBob3N0IH0pOworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9M
SVNURU5FUl9BUEkpCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpVbnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRp
b25zKEhhc2hTZXQ8U3RyaW5nPiB7IGhvc3QgfSksIDApOworI2VuZGlmCit9CisKK3ZvaWQgV2Vi
Q29va2llQ2FjaGU6OnBydW5lQ2FjaGVJZk5lY2Vzc2FyeSgpCit7CisgICAgLy8gV2UgbWF5IHdh
bnQgdG8gcmFpc2UgdGhpcyBsaW1pdCBpZiB3ZSBzdGFydCB1c2luZyB0aGUgY2FjaGUgZm9yIHRo
aXJkLXBhcnR5IGlmcmFtZXMuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heENhY2hlZEhv
c3RzID0gNTsKKworICAgIHdoaWxlIChtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5zaXplKCkg
Pj0gbWF4Q2FjaGVkSG9zdHMpCisgICAgICAgIGNsZWFyRm9ySG9zdCgqbV9ob3N0c1dpdGhJbk1l
bW9yeVN0b3JhZ2UucmFuZG9tKCkpOworfQorCisjaWYgIVBMQVRGT1JNKENPQ09BKQorTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigp
Cit7CisgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICByZXR1cm4gKm1faW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNh
Y2hlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZkMGM0MTZlNTIwY2VkYzI0NmJlMTJmYTUzZmJjZmU3ODZmMzU1NWQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVDYWNoZS5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TYW1lU2l0
ZUluZm8uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb247Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJDb29raWVDYWNoZSB7CitwdWJsaWM6CisgICAgV2ViQ29va2llQ2FjaGUoKSA9
IGRlZmF1bHQ7CisKKyAgICBib29sIGlzU3VwcG9ydGVkKCk7CisKKyAgICBTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKTsKKyAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOworCisgICAgdm9pZCBj
b29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpOworICAgIHZvaWQgY29va2llc0RlbGV0ZWQoKTsKKworICAgIHZvaWQgY2xlYXIoKTsK
KyAgICB2b2lkIGNsZWFyRm9ySG9zdChjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKTsK
KyAgICB2b2lkIHBydW5lQ2FjaGVJZk5lY2Vzc2FyeSgpOworCisgICAgSGFzaFNldDxTdHJpbmc+
IG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24+IG1faW5NZW1vcnlTdG9yYWdlU2Vzc2lvbjsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5kZXggMzI1ODMwNWM3ODlkNzc1ZmUxNWMxYzA4Mjhj
MzZlOWUyZjJhODYwOS4uNWFiMzI0NWNjZDVkYWMxY2Y1MzFkNGRlYjRkMGUxYTg1ZDA2OTFhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGll
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dG9yYWdlU2Vzc2lvblByb3ZpZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODgsNiAr
ODksMjMgQEAgc3RhdGljIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywKIH0KICNlbmRpZgogCitib29sIFdlYkNv
b2tpZUphcjo6aXNFbGlnaWJsZUZvckNhY2hlKFdlYkZyYW1lJiBmcmFtZSwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZVVSTCkgY29uc3QKK3sKKyAg
ICBhdXRvKiBwYWdlID0gZnJhbWUucGFnZSgpID8gZnJhbWUucGFnZSgpLT5jb3JlUGFnZSgpIDog
bnVsbHB0cjsKKyAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPnNldHRpbmdzKCkuaW5Qcm9jZXNzQ29v
a2llQ2FjaGVFbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9j
YWNoZS5pc1N1cHBvcnRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGb3Ig
bm93LCB3ZSBvbmx5IGNhY2hlIGNvb2tpZXMgZm9yIGZpcnN0LXBhcnR5IGNvbnRlbnQuIFRoaXJk
LXBhcnR5IGNvb2tpZSBjYWNoaW5nIGlzIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQgZHVlIHRvIHBh
cnRpdGlvbmluZyBhbmQgc3RvcmFnZSBhY2Nlc3MuCisgICAgUmVnaXN0cmFibGVEb21haW4gcmVz
b3VyY2VEb21haW4geyByZXNvdXJjZVVSTCB9OworICAgIGlmIChyZXNvdXJjZURvbWFpbi5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBmcmFtZS5pc01haW5G
cmFtZSgpIHx8IFJlZ2lzdHJhYmxlRG9tYWluIHsgZmlyc3RQYXJ0eUZvckNvb2tpZXMgfSA9PSBy
ZXNvdXJjZURvbWFpbjsKK30KKwogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3Jl
OjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGF1dG8q
IHdlYkZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSA/IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpk
b2N1bWVudC5mcmFtZSgpKSA6IG51bGxwdHI7CkBAIC0xMDAsMTIgKzExOCwxNyBAQCBTdHJpbmcg
V2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiB7IH07CiAjZW5kaWYKIAorICAgIGF1dG8g
c2FtZVNpdGVJbmZvID0gQ29va2llSmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOworICAgIGF1
dG8gaW5jbHVkZVNlY3VyZUNvb2tpZXMgPSBDb29raWVKYXI6OnNob3VsZEluY2x1ZGVTZWN1cmVD
b29raWVzKGRvY3VtZW50LCB1cmwpOwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFt
ZUlEKCk7CiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7
CiAKKyAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGUuY29va2llc0Zv
ckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwg
ZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CisKICAgICBTdHJpbmcgY29v
a2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7Ci0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCks
IHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRJbmNs
dWRlU2VjdXJlQ29va2llcyhkb2N1bWVudCwgdXJsKSwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJv
Y2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0Zv
ckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKKyAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMo
KSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIHNob3VsZEFza0lUUEluTmV0d29ya1Byb2Nlc3MpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywgc2Vj
dXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1
cm4gY29va2llU3RyaW5nOwpAQCAtMTIzLDEwICsxNDYsMzQgQEAgdm9pZCBXZWJDb29raWVKYXI6
OnNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKKyAgICBhdXRvIHNhbWVTaXRlSW5mbyA9
IENvb2tpZUphcjo6c2FtZVNpdGVJbmZvKGRvY3VtZW50KTsKICAgICBhdXRvIGZyYW1lSUQgPSB3
ZWJGcmFtZS0+ZnJhbWVJRCgpOwogICAgIGF1dG8gcGFnZUlEID0gd2ViRnJhbWUtPnBhZ2UoKS0+
aWRlbnRpZmllcigpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8oZG9jdW1lbnQpLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7Cisg
ICAgaWYgKGlzRWxpZ2libGVGb3JDYWNoZSgqd2ViRnJhbWUsIGRvY3VtZW50LmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCkpCisgICAgICAgIG1fY2FjaGUuc2V0Q29va2llc0Zyb21ET00oZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgY29va2llU3RyaW5nKTsKKworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oZG9jdW1l
bnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBh
Z2VJRCwgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcywgY29va2llU3RyaW5nKSwgMCk7Cit9
CisKK3ZvaWQgV2ViQ29va2llSmFyOjpjb29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgY29va2llcykKK3sKKyAgICBtX2NhY2hlLmNv
b2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNvb2tp
ZXNEZWxldGVkKCkKK3sKKyAgICBtX2NhY2hlLmNvb2tpZXNEZWxldGVkKCk7Cit9CisKK3ZvaWQg
V2ViQ29va2llSmFyOjpjbGVhckNhY2hlKCkKK3sKKyAgICBtX2NhY2hlLmNsZWFyKCk7Cit9CisK
K3ZvaWQgV2ViQ29va2llSmFyOjpjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3Qp
Cit7CisgICAgbV9jYWNoZS5jbGVhckZvckhvc3QoaG9zdCk7CiB9CiAKIGJvb2wgV2ViQ29va2ll
SmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCmluZGV4IDUy
OTQ4YTkxZGU1ZjE0NTI0OTkxMGRkNDk4MzQ0NTIwMDAxYTk3ZmIuLjhlZGJlMzE0ZWNhZmE3ZGFi
NGVlZmJlMmU4MjVmODBkZjI5NGQ5NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDggKzI1LDEzIEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiV2ViQ29va2llQ2FjaGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUph
ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ29va2llOworfQorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQ29va2llSmFyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OkNvb2tpZUphciB7CkBAIC0zOSw4ICs0NCwxOCBAQCBwdWJsaWM6CiAgICAgc3RkOjpwYWlyPFN0
cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3Jl
OjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOworCisgICAgdm9pZCBj
b29raWVzQWRkZWQoY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpOworICAgIHZvaWQgY29va2llc0RlbGV0ZWQoKTsKKwogcHJpdmF0ZToKICAgICBXZWJD
b29raWVKYXIoKTsKKworICAgIHZvaWQgY2xlYXJDYWNoZSgpIGZpbmFsOworICAgIHZvaWQgY2xl
YXJDYWNoZUZvckhvc3QoY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgYm9vbCBpc0VsaWdpYmxl
Rm9yQ2FjaGUoV2ViRnJhbWUmLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25z
dCBVUkwmIHJlc291cmNlVVJMKSBjb25zdDsKKworICAgIG11dGFibGUgV2ViQ29va2llQ2FjaGUg
bV9jYWNoZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1MDhiY2MxMDJlYmEwMDYyMDM2YmNk
YzVlODA2NjNmNjAzNGZkMGUzLi5iZGExZWFmMWVkOGE0NjFhNmFlMmIyN2Q4YWMwMTQ2YTMzOWM0
YjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtNDY2LDcgKzQ2Niw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICAgICAgbWFrZVVu
aXF1ZVJlZjxXZWJLaXQ6OkxpYldlYlJUQ1Byb3ZpZGVyPigpLAogICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLAogICAgICAgICBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6Y3JlYXRlKCp0aGlzKSwKLSAgICAgICAgV2ViQ29va2llSmFyOjpjcmVh
dGUoKSwKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCksCiAgICAg
ICAgIG1ha2VVbmlxdWVSZWY8V2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50PigqdGhpcyksCiAgICAg
ICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpCiAgICAgKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA0YjI0MDliOTk0ZDNhZTBkMmI0
MzE0YjM0NWMyOGYxYTRkMzdjNzA5Li4yMWI1YTJiYzEzZmVlZWFkOTRhNjg0NmNjNTU2NTM5MzBi
ZmIwYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC00OCw2
ICs0OCw3IEBACiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIgogI2luY2x1
ZGUgIldlYkNhY2hlU3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViQ29ubmVjdGlvblRv
VUlQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViQ29va2llSmFyLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCkBAIC0yMDUsNiArMjA2LDcgQEAgV2ViUHJvY2Vzczo6
V2ViUHJvY2VzcygpCiAgICAgLCBtX3dlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIoV2Vi
SW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX3dlYkxvYWRl
clN0cmF0ZWd5KCpuZXcgV2ViTG9hZGVyU3RyYXRlZ3kpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVBy
b3ZpZGVyKFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyOjpjcmVhdGUoKSkKKyAgICAsIG1fY29va2ll
SmFyKFdlYkNvb2tpZUphcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2Ruc1ByZWZldGNoSHlzdGVyZXJp
cyhbdGhpc10oUEFMOjpIeXN0ZXJlc2lzU3RhdGUgc3RhdGUpIHsgaWYgKHN0YXRlID09IFBBTDo6
SHlzdGVyZXNpc1N0YXRlOjpTdG9wcGVkKSBtX2Ruc1ByZWZldGNoZWRIb3N0cy5jbGVhcigpOyB9
KQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogICAgICwgbV9wbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIoUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpjcmVhdGUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDg1M2M2NjBlYzY0NjQ1
NjNhNzY1NjQzNjE5Mjk1NjU0YjA3MzUzNGUuLjE1OTA5MzYwYWQ3Y2IwOTExMzdiN2NhZjMzNTM1
Y2RlMmM5N2RkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTIw
LDYgKzEyMCw3IEBAIGNsYXNzIFVzZXJEYXRhOwogY2xhc3MgV2F5bGFuZENvbXBvc2l0b3JEaXNw
bGF5OwogY2xhc3MgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTsKIGNsYXNzIFdlYkNhY2hlU3Rv
cmFnZVByb3ZpZGVyOworY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3REYXRhOwogY2xhc3MgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzOwogY2xhc3Mg
V2ViRnJhbWU7CkBAIC0yOTMsNiArMjk0LDcgQEAgcHVibGljOgogICAgIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkqIGF1dG9tYXRpb25TZXNzaW9uUHJveHkoKSB7IHJldHVybiBtX2F1dG9tYXRp
b25TZXNzaW9uUHJveHkuZ2V0KCk7IH0KIAogICAgIFdlYkNhY2hlU3RvcmFnZVByb3ZpZGVyJiBj
YWNoZVN0b3JhZ2VQcm92aWRlcigpIHsgcmV0dXJuIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIuZ2V0
KCk7IH0KKyAgICBXZWJDb29raWVKYXImIGNvb2tpZUphcigpIHsgcmV0dXJuIG1fY29va2llSmFy
LmdldCgpOyB9CiAgICAgV2ViU29ja2V0Q2hhbm5lbE1hbmFnZXImIHdlYlNvY2tldENoYW5uZWxN
YW5hZ2VyKCkgeyByZXR1cm4gbV93ZWJTb2NrZXRDaGFubmVsTWFuYWdlcjsgfQogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTU1NCw2ICs1NTYsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBSZWY8V2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI+IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXI7
CisgICAgUmVmPFdlYkNvb2tpZUphcj4gbV9jb29raWVKYXI7CiAgICAgV2ViU29ja2V0Q2hhbm5l
bE1hbmFnZXIgbV93ZWJTb2NrZXRDaGFubmVsTWFuYWdlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxMaWJXZWJSVENOZXR3b3JrPiBtX2xpYldlYlJUQ05ldHdvcms7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDFlZDFkMmNk
MGU4MWYzNmYxY2M2NGYxY2ZhYTgwNDNkNTIwZWI1Yy4uYWQ5MGM4ZThhMzJiNmQxNmE3ZjBlNmFi
M2RlYTNhY2M4YTg0MzI4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAyLTEyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1bQ29jb2FdIEltcGxl
bWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9pZCBzeW5jIElQQyBmb3IgZG9j
dW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYwMjcw
Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgQWRk
IGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL2Rv
Y3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2ctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dN
b2RhbERpYWxvZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFt
ZS1wYXJzaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9yZXNv
dXJjZXMvY2xvc2UtbW9kYWwtZGlhbG9nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvY29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2lu
Zy1pZnJhbWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291
cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHA6IEFkZGVkLgorCiAyMDIwLTAyLTExICBKYXNv
biBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiBd
IGZhc3Qvdmlld3BvcnQvaW9zL3dpZHRoLWlzLWRldmljZS13aWR0aC1vdmVyZmxvd2luZy1ib2R5
LW92ZXJmbG93LWhpZGRlbi10YWxsLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hv
d01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2ll
cy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mNGFmOTI0YmZiN2U4MWViM2QwY2Y0ZDNkNDJjYjIzMDhhNDQ1MzUxCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tp
ZS1hZnRlci1zaG93TW9kYWxEaWFsb2ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rl
c3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEg
c2hvd01vZGFsRGlhbG9nKCkgY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0VmFs
dWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJmb289YmFyOyB0
ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMv
ZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45YWI4NDdiMzNkNTE5OGU5NjZkYTdiMDhjZWI4ODYwYTFkNjk0N2Vh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3Vt
ZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cuaHRtbApAQCAtMCwwICsxLDM3IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nv
b2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9
InRlc3RCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkNsaWNrIG1lIj48L2lucHV0PgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRo
ZSByaWdodCB2YWx1ZSBhZnRlciBhIHNob3dNb2RhbERpYWxvZygpIGNhbGwnKTsKK2pzVGVzdElz
QXN5bmMgPSB0cnVlOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5z
ZXRDYW5PcGVuV2luZG93cygpOworCit0ZXN0QnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7CisgICAg
ZG9jdW1lbnQuY29va2llID0gInRlc3RLZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVz
dFZhbHVlJyk7CisKKyAgICBzaG93TW9kYWxEaWFsb2coInJlc291cmNlcy9zZXQtY29va2llLWFu
ZC1zZXJ2ZS5waHA/Y29va2llLW5hbWU9Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRpb249
Y2xvc2UtbW9kYWwtZGlhbG9nLmh0bWwiKTsKKworICAgIC8vIFRoaXMgaXMgc28gdGhlIGNvb2tp
ZSBnZXRzIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKyAgICByZWdpc3RlckNvb2tp
ZUZvckNsZWFudXAoJ2Zvbz1iYXI7IHBhdGg9LycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
Zygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSknLCAnZm9vPWJhcjsgdGVzdEtleT10
ZXN0VmFsdWUnKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitvbmxvYWQgPSAoKSA9PiB7
CisgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7CisgICAgICAgIHRlc3RCdXR0
b24uY2xpY2soKTsKKyAgICB9KTsKK307Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJj
ZXMvY29va2llcy10ZXN0LXBvc3QuanMnPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1k
dXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjNjZjVhZGE4YzQ5YWY1MjQ3MDdlYWQyZmExOGI0ZTYzZDE5MjIzYTQK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1l
bnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MiBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUg
YWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0S2V5
PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXplQ29va2llKGNvb2tpZXNJbkZyYW1lKSBpcyAiZm9v
PWJhcjsgdGVzdEtleT10ZXN0VmFsdWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5j
b29raWUpIGlzICJmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2lu
Zy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1k
dXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjI5ZWZiNTM4Y2E0N2UyMjhi
NzM4ZmM1M2Q5NTA0NDlkYTljY2JiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRt
bApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29v
a2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEgc2hvd01vZGFsRGlhbG9nKCkgY2Fs
bCcpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHZhbGlkYXRlQ29va2llc0R1
cmluZ0NoaWxkRnJhbWVQYXJzaW5nKF9jb29raWVzSW5GcmFtZSkKK3sKKyAgICBjb29raWVzSW5G
cmFtZSA9IF9jb29raWVzSW5GcmFtZTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1h
bGl6ZUNvb2tpZShjb29raWVzSW5GcmFtZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUn
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5j
b29raWUpJywgJ2Zvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlJyk7CisgICAgZmluaXNoSlNUZXN0
KCk7ICAgIAorfQorCitvbmxvYWQgPSAoKSA9PiB7CisgICAgZG9jdW1lbnQuY29va2llID0gInRl
c3RLZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNv
b2tpZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICAvLyBU
aGlzIGlzIHNvIHRoZSBjb29raWUgZ2V0cyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3Qu
CisgICAgcmVnaXN0ZXJDb29raWVGb3JDbGVhbnVwKCdmb289YmFyOyBwYXRoPS8nKTsKKworICAg
IGxldCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJh
bWUuc3JjID0gInJlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHA/Y29va2llLW5hbWU9
Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRpb249ZG9jdW1lbnQtY29va2llLWR1cmluZy1p
ZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRtbCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChpZnJhbWUpOworfTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVz
LXRlc3QtcG9zdC5qcyc+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Nsb3NlLW1vZGFsLWRpYWxv
Zy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1t
b2RhbC1kaWFsb2cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjU2OGRmZWRiYjJkM2E5NWEyZjE0M2U2ZWYx
YzgyMWVhY2JkYTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
b29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbApAQCAtMCwwICsxLDcgQEAK
KzxzY3JpcHQ+CitvbmxvYWQgPSAoKSA9PiB7CisgICAgY2xvc2UoKTsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgdGVzdFJ1bm5lci5hYm9ydE1vZGFsKCk7Cit9OworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2Vz
L2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1kdXJp
bmctaWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkN2FiN2EzOTIyZDEw
OGExZjYwMjc5OWU2NjgzNDM1YTg5OTI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJh
bWUtcGFyc2luZy1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+Cit0b3AudmFs
aWRhdGVDb29raWVzRHVyaW5nQ2hpbGRGcmFtZVBhcnNpbmcoZG9jdW1lbnQuY29va2llKTsKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291
cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nv
b2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocApuZXcgZmlsZSBtb2RlIDEw
MDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWY0
M2YyOWU4NTJkZGNjMDlmOTY5Zjg5OWU4ZjNlMTJhYmFhODQ4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1z
ZXJ2ZS5waHAKQEAgLTAsMCArMSwxMyBAQAorPD9waHAKKyRjb29raWVOYW1lID0gJF9HRVRbJ2Nv
b2tpZS1uYW1lJ107CiskY29va2llVmFsdWUgPSAkX0dFVFsnY29va2llLXZhbHVlJ107CiskZGVz
dGluYXRpb24gPSAkX0dFVFsnZGVzdGluYXRpb24nXTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0
ZXh0L2h0bWwiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUiKTsKK2hlYWRlcigi
U2V0LUNvb2tpZTogJHtjb29raWVOYW1lfT0ke2Nvb2tpZVZhbHVlfTsgcGF0aD0vIik7CiskZnAg
PSBmb3BlbigkZGVzdGluYXRpb24sICdyYicpOworaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAu
IGZpbGVzaXplKCRkZXN0aW5hdGlvbikpOworCitmcGFzc3RocnUoJGZwKTsKK2V4aXQ7Cis/Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390691</attachid>
            <date>2020-02-13 15:00:29 -0800</date>
            <delta_ts>2020-02-13 15:26:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207593-20200213150028.patch</filename>
            <type>text/plain</type>
            <size>91693</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJkMTIwYWVkNTVjMzVmZmVjODk5YWMz
NTFmNzAwNWI3ZWU4ZjkyZDkuLjNmMGU3YTRjMWVjMDVlOTVkZmMxYWZlMmVmNzNiZjlkOTBiZDM3
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nl
c3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4g
bW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYnVpbGQgdGltZSBmbGFn
cyBmb3IgbmV3IGZlYXR1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAtMDItMTEgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBpbi1iYW5kIFZUVCBj
YXB0aW9ucyB3aGVuIGxvYWRpbmcgbWVkaWEgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGI0NWQ3MmUyNjFlNDNiOWMwM2I0OGEwZWFiYTlmYmQ5MmNhZTBmMi4uODg2ZmYzMTI0MGRj
MmY2OWYxZDM0NDAyYzU1NjEzMjkwYmY1OTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBA
CisyMDIwLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dLMl1bQ29jb2FdIEltcGxlbWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9p
ZCBzeW5jIElQQyBmb3IgZG9jdW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTYwMjcwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlz
dG8uCisKKyAgICAgICAgSW1wbGVtZW50IGluLVdlYlByb2Nlc3MgRE9NIGNvb2tpZSBjYWNoZSBm
b3Igc2VydmluZyBgZG9jdW1lbnQuY29va2llYCByZXF1ZXN0cyBmcm9tIEphdmFTY3JpcHQuCisK
KyAgICAgICAgVGhlIGZpcnN0IHRpbWUgZG9jdW1lbnQuY29va2llIGlzIGNhbGxlZCBmb3IgYSBn
aXZlbiBob3N0LCB0aGUgV2ViUHJvY2VzcyB3aWxsIHB1bGwgaW4gYWxsIHRoZQorICAgICAgICBu
b24tSFRUUE9ubHkgY29va2llcyBmb3IgdGhhdCBob3N0IGZyb20gdGhlIE5ldHdvcmtQcm9jZXNz
IChzdGlsbCB2aWEgc3luYyBJUEMpIGFuZCBzdG9yZSB0aGVtCisgICAgICAgIGluIGFuIGluLW1l
bW9yeSBjb29raWUgc3RvcmUuIExhdGVyIGRvY3VtZW50LmNvb2tpZSBjYWxscyBmb3IgdGhpcyBo
b3N0IGZyb20gdGhpcyBXZWJQcm9jZXNzCisgICAgICAgIHdpbGwgdGhlbiBsZXZlcmFnZSB0aGUg
aW4tbWVtb3J5IGNvb2tpZSBzdG9yZSBhbmQgYXZvaWQgZG9pbmcgYSBzeW5jIElQQyB0byB0aGUg
TmV0d29ya1Byb2Nlc3MKKyAgICAgICAgZW50aXJlbHkuCisKKyAgICAgICAgVG8gbWFpbnRhaW4g
dGhlIGluLXByb2Nlc3MgY29va2llIHN0b3JlIHVwLXRvLWRhdGUsIHRoZSBXZWJQcm9jZXNzIHN1
YnNjcmliZSBmb3IgY29va2llLWNoYW5nZQorICAgICAgICBub3RpZmljYXRpb25zIGZyb20gdGhl
IE5ldHdvcmtQcm9jZXNzLCBvbmx5IGZvciB0aGUgaG9zdHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4K
KworICAgICAgICBJZiB0aGUgcGFnZSdzIEphdmFTY3JpcHQgc2V0cyBhIGNvb2tpZSBieSBzZXR0
aW5nIGRvY3VtZW50LmNvb2tpZSwgd2Ugd2lsbCBub3QgaW52YWxpZGF0ZSB0aGUKKyAgICAgICAg
Y2FjaGUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIEluc3RlYWQsIHdlIHNldCB0aGUgY29va2ll
IGluIG91ciBpbi1tZW1vcnkgY29va2llIGJlZm9yZQorICAgICAgICBzZW5kaW5nIHRoZSBuZXcg
Y29va2llIHRvIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBGb3IgY29tcGF0aWJpbGl0
eSByZWFzb25zLCBhbnkgc3luYyBJUEMgdG8gYSBnaXZlbiBob3N0IHdpbGwgY3VycmVudGx5IGlu
dmFsaWRhdGUgdGhlIGNvb2tpZQorICAgICAgICBjYWNoZSBmb3IgdGhpcyBob3N0LiBUaGlzIGlz
IGJlY2F1c2UgdGhpcyBzeW5jaHJvbm91cyBsb2FkIG1heSBjYXVzZSBjb29raWVzIHRvIGdldCBz
ZXQKKyAgICAgICAgc3luY2hyb25vdXNseSBhbmQgdGhlIHBhZ2UgY291bGQgYWNjZXNzIGRvY3Vt
ZW50LmNvb2tpZSByaWdodCBhZnRlciB0aGUgc3luYyBYSFIuIFRoaXMgYmVoYXZpb3IKKyAgICAg
ICAgaXMgY292ZXJlZCBieSB0aGUgZm9sbG93aW5nIGV4aXN0aW5nIHRlc3Q6CisgICAgICAgIC0g
aHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUu
aHRtbAorCisgICAgICAgIEFub3RoZXIgbGltaXRhdGlvbiBvZiB0aGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgY29va2llIGNhY2hlIGlzIHRoYXQgaXQgaXMgY3VycmVudGx5CisgICAg
ICAgIG9ubHkgbGV2ZXJhZ2VkIGZvciBmaXJzdCBwYXJ0eSBjb250ZW50LiBUaGlzIGlzIHN1Ym9w
dGltYWwgYW5kIGNvdWxkIGJlIGltcHJvdmVkIGluIGEgbGF0ZXIKKyAgICAgICAgaXRlcmF0aW9u
LiBIb3dldmVyLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpbiBTYWZhcmkgaXMgdGhhdCB0aGlyZC1w
YXJ0eSBpZnJhbWVzIGRvIG5vdCBoYXZlCisgICAgICAgIGNvb2tpZSBhY2Nlc3MgdW5sZXNzIHRo
ZXkgcmVxdWVzdCBpdCB1c2luZyB0aGUgc3RvcmFnZSBhY2Nlc3MgQVBJLiBXZSBhbHNvIGN1cnJl
bnRseSBoYXZlCisgICAgICAgIGEgbGltaXQgb2YgNSBob3N0cyB3aXRoIGNhY2hlZCBjb29raWVz
IHBlciBXZWJQcm9jZXNzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5o
dG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWxlYXNlQ3JpdGljYWxNZW1vcnkpOgorICAgICAgICAqIHBhZ2UvU2V0
dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXI6On5Db29raWVD
aGFuZ2VPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAg
ICAgKFdlYkNvcmU6Om5zQ29va2llc1RvQ29va2llVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlSFRUUENvb2tpZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29raWVzRm9y
VVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0
cENvb2tpZXNGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyQ29va2llcyk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVz
Rm9yU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpyZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3RlckNvb2tpZUNoYW5n
ZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcExpc3RlbmluZ0ZvckNv
b2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkb21Db29raWVzRm9ySG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkgY29uc3QpOgor
CiAyMDIwLTAyLTExICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVn
IDIwNzQyNDogQ3Jhc2ggaW4gV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcnNlQ29udGVu
dFR5cGUgd2hlbiBwYXJzaW5nIGludmFsaWQgTUlNRSB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRl
eCBjYTYzNjBhYTM3NTM5Y2Y2NDY5OTUzNWVlZDBmMjNhY2Y4MmFkMTlhLi5lM2FmMzMxMjEyZGNm
MGRiZTIxZGYzNzJlYTBlZGFmZmQxNzQ3ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMC0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBjb29raWUgY2FjaGUg
dG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBpbiBtb3N0IGNhc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1OTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRp
IEtvaXZpc3RvLgorCisgICAgICAgIEFkZCBuZXcgQ0ZOZXR3b3JrIFNQSSB0byBDRk5ldHdvcmtT
UEkuaCBmb3Igb3BlbiBzb3VyY2UgYnVpbGRzIGFuZCBmb3IgdXNpbmcgcmVzcG9uZHNUb1NlbGVj
dG9yLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoKKwogMjAyMC0wMi0x
MSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBX
cm9uZyBpbmNsdWRlcyBmb3IgaW50ZXJuYWwgU0RLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNmMjYxMTE3NDBlOWRk
MmFjYjEyZTY4NTBiZjExY2E3ZTg4ZjJiMWYuLjA5N2Y4M2JjMWU0MWZlY2EzNDIzNzk5ZThiY2E3
Y2Q1ZGI4NzE2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjAtMDItMTIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVt
ZW50IGluLVdlYlByb2Nlc3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1
bWVudC5jb29raWUgaW4gbW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAy
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBTZWUg
V2ViQ29yZSBDaGFuZ2VMb2cuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZG9tQ29va2llc0Zvckhv
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5z
dWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzQWRkZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0ZWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjb29raWVzQWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmNvb2tpZXNEZWxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbTogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmguCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmlzRnVuY3Rpb25hbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
Q2FjaGU6OmNvb2tpZXNBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpj
b29raWVzRGVsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpjbGVhcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpjbGVhckZvckhvc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmguCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZUphcjo6aXNFbGlnaWJsZUZvckNhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llSmFyOjpjb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
SmFyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXNEZWxldGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjbGVhckNhY2hlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llSmFyOjpjbGVhckNhY2hlRm9ySG9zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9vdmVycmlkZGVuTWVkaWFUeXBlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y29va2llSmFyKToKKwogMjAyMC0wMi0x
MSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydCByMjU1NjYyIGFzIGl0IHNlZW1zIHRvIGNhdXNlIGJsYW5rIHZpZXdzIGluIFNWQy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hTZXQuaAppbmRleCBlMjY4N2U5YjA2MmRkYzg0OTQ1OTQyZTkwMjQ2YWE4MWE3ZjQ0NTU1Li5l
ZTJjMjkxMzc4Mzg4MjViOTlkYTYwNDc5MzI5OWEzYThkYjNlYzAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC0x
MTIsNiArMTEyLDggQEAgcHVibGljOgogICAgIC8vIHRoZW0gYXJlIG5ldyB0byB0aGUgc2V0LiBS
ZXR1cm5zIGZhbHNlIGlmIHRoZSBzZXQgaXMgdW5jaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEl0ZXJhdG9yVHlwZT4KICAgICBib29sIGFkZChJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJh
dG9yVHlwZSBlbmQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KKyAgICBi
b29sIHJlbW92ZShJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpOwogCiAgICAg
Ym9vbCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7CiAgICAgYm9vbCByZW1vdmUoaXRlcmF0b3Ip
OwpAQCAtMjcwLDYgKzI3MiwxNiBAQCBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjphZGQo
SXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUgZW5kKQogICAgIHJldHVybiBjaGFuZ2Vk
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVt
cGxhdGU8dHlwZW5hbWUgSXRlcmF0b3JUeXBlPgoraW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
Pjo6cmVtb3ZlKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKK3sKKyAgICBi
b29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICBmb3IgKEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIGNoYW5nZWQgfD0gcmVtb3ZlKCppdGVyKTsK
KyAgICByZXR1cm4gY2hhbmdlZDsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZShpdGVy
YXRvciBpdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZDI0Yjg1ZTJkYTI0MTM0NmUwMGI3
MzM3YTU5NjgzYmU2MTAyMGMyOC4uMjlmMGY1NmExMjI3MzE0OTRiYzNlMDM5YTU2MmM3ODFhZDM3
ODQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU1Niw2ICs1NTYsMTAgQEAKICNkZWZpbmUg
SEFWRV9ERVZJQ0VfSURFTlRJVFkgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkK
KyNkZWZpbmUgSEFWRV9DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSAxCisjZW5kaWYKKwogI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NTAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBIQVZFX0RBVEFfUFJPVEVDVElP
Tl9LRVlDSEFJTiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmgKaW5kZXggNjY1OGU3MjhjOWM5ODJhNmZmODJjMGNhNDE2NDhjMmQ0ZGMxMTQ0
MC4uYTkyMDc2MGIzZDY5YzIzYmU4YjY4OWU1NmY0OGZkZDdkOGM2NDM5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTM5MSw2ICszOTEsMTAg
QEAgV1RGX0VYVEVSTl9DX0VORAogCiBAaW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKCkK
ICsgKHZvaWQpX3NldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdl
ICopc3RvcmFnZTsKKy0gKHZvaWQpX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
czooTlNTZXQ8TlNTdHJpbmcqPiogX19udWxsYWJsZSlkb21haW5MaXN0OworLSAodm9pZClfc2V0
Q29va2llc0FkZGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBDb29r
aWUqPiogYWRkZWRDb29raWVzLCBOU1VSTCogX19udWxsYWJsZSB1cmxGb3JBZGRlZENvb2tpZXMp
KWNvb2tpZXNBZGRlZEhhbmRsZXIgb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdCBfX251bGxhYmxl
KXF1ZXVlOworLSAodm9pZClfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVyOih2b2lkKF5fX251bGxh
YmxlKShOU0FycmF5PE5TSFRUUENvb2tpZSo+KiBfX251bGxhYmxlIGRlbGV0ZWRDb29raWVzLCBi
b29sIGRlbGV0ZWRBbGxDb29raWVzKSljb29raWVzRGVsZXRlZEhhbmRsZXIgb25RdWV1ZTooZGlz
cGF0Y2hfcXVldWVfdCBfX251bGxhYmxlKXF1ZXVlOworLSAoTlNBcnJheSogX19udWxsYWJsZSlf
Z2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJpbmcqKWRvbWFpbjsKIEBlbmQKIAogQGludGVyZmFj
ZSBOU1VSTFJlc3BvbnNlICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4NThlODgzMjI0
NGRmMjhhYTQ1MTIwNDcxZGQwZTI5YTgxNDEzZTdmLi41NmU4MzJmNGRiMTBjZWMzYTAyZjA4MWFi
OTliZGQxMGMxZWJkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcxOTUsMTEgKzcx
OTUsMTQgQEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKICAgICBt
X2NhY2hlZERPTUNvb2tpZXMgPSBTdHJpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSgpCit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFN5bmNocm9ub3VzIHJlc291
cmNlcyBsb2FkaW5nIGNhbiBzZXQgY29va2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVz
IGNhY2hlCiAgICAgLy8gaW4gdGhpcyBjYXNlLCB0byBiZSBzYWZlLgogICAgIGludmFsaWRhdGVE
T01Db29raWVDYWNoZSgpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisg
ICAgICAgIHBhZ2UtPmNvb2tpZUphcigpLmNsZWFyQ2FjaGVGb3JIb3N0KHVybC5ob3N0KCkudG9T
dHJpbmcoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlw
dChET01XcmFwcGVyV29ybGQmIHdvcmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1NjIwMjkx
YWJlYjNlMGM5OWRlOTY1NjVkMzFkYWRjMjk1MzYzYzAwLi4yZmM0ZGM2OWNlMWZhNjE0YWQ5NDM4
YzFmODdkOGE1ZjA0MTRhM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY0MCw3ICsxNjQw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENhY2hlZERPTUNvb2tpZXMoY29uc3QgU3RyaW5n
Jik7CiAgICAgYm9vbCBpc0RPTUNvb2tpZUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nv
b2tpZUNhY2hlRXhwaXJ5VGltZXIuaXNBY3RpdmUoKTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZURP
TUNvb2tpZUNhY2hlKCk7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkg
ZmluYWw7CisgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYp
IGZpbmFsOwogCiAgICAgYm9vbCBjYW5OYXZpZ2F0ZUludGVybmFsKEZyYW1lJiB0YXJnZXRGcmFt
ZSk7CiAgICAgYm9vbCBpc05hdmlnYXRpb25CbG9ja2VkQnlUaGlyZFBhcnR5SUZyYW1lUmVkaXJl
Y3RCbG9ja2luZyhGcmFtZSYgdGFyZ2V0RnJhbWUsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4
IDU4ODJlMWFiMWFiOTNiMzczZWEyM2E2YTAyODI0MWRlZWY1MzM4NjQuLjMyYWY3NDQ4MTQxYTc5
MWM4M2M2ZjI5MWVjZWRkYWRhMDFkMTlhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdl
UG9ydCkKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3NhZ2VQb3J0KTsKIH0KIAotdm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkK
K3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBVUkwmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCAwMDgzMWEyNjBiNTM3YTAwOTNhODgxMmRhNGJhNWZmZDVjMjU1NmE4
Li5iYzA0ZGY0OWQxYWU5Nzg5NjMwNWM4MjMxM2E2ZDVjMmY2MjQ0ZmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsKICAgICB2
b2lkIGRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRM
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCByZWYoKSB7
IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVm
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5k
ZXggODRkYmE0MGU5Mjg2Y2QzZmQ4MzgzNGJhYzAyMDE2MDAxYTI3ZjUwNy4uMzAwMjkzYTg2NmRh
YzRiMjA4NTdiN2U3NTI0NDc4MTEwYzVjODlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
aApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAorICAgIC8vIENvb2tpZSBDYWNoZS4KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNoZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNh
Y2hlRm9ySG9zdChjb25zdCBTdHJpbmcmKSB7IH0KKwogICAgIHZpcnR1YWwgfkNvb2tpZUphcigp
OwogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0
IERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggMmI3YmY0MjlkZDYyMmZjNzI3ZTEwMTMwMmVmZmVlZGQ1ZTRjMzg0Ny4uYzdlMGYzMWJl
NzIwNmZlZjhkYWFkMTg0NjFlNGY1YTI0YmJmN2Q2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTEwLDExICsxMTAsMTIgQEAgUmVmUHRyPFRocmVh
ZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXgKIAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgYXV0byByZXNvdXJjZVVSTCA9IHJlcXVl
c3QudXJsKCk7CiAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKICAgICAg
ICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVu
dCwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwotICAgIGNvbnRleHQuZGlkTG9hZFJl
c291cmNlU3luY2hyb25vdXNseSgpOworICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hy
b25vdXNseShyZXNvdXJjZVVSTCk7CiB9CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJy
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKaW5kZXggMzE2ZDIxNjk3YmRiZWU5MmQxM2FlMzlkNjRhNzQ0ZjM0ZmYxN2E1Yy4u
NDExZjg3MmRhNGIxMmE4MGNkMzk3MzIwODJkNzM5ZThlNDZiZjdjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2hyb21l
LmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKKyNp
bmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05OSw2ICsxMDAsMTAgQEAgc3RhdGlj
IHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9ub3VzIHN5bmNocm9ub3VzLCBNYWlu
dGFpbkJhY2tGb3J3YXJkQ2EKIAogICAgIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4o
KTsKIAorICAgIFBhZ2U6OmZvckVhY2hQYWdlKFtdKGF1dG8mIHBhZ2UpIHsKKyAgICAgICAgcGFn
ZS5jb29raWVKYXIoKS5jbGVhckNhY2hlKCk7CisgICAgfSk7CisKICAgICBmb3IgKGF1dG8mIGRv
Y3VtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERv
Y3VtZW50cygpKSkgewogICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlbGVhc2VNZW1v
cnkoKTsKICAgICAgICAgZG9jdW1lbnQtPmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggNWQzYTg4YzQ4ZjdhYTY3MGY4NGY4YjNmZTEx
YWJhMzExMDRiNGI0YS4uYTI3MWUxYzkzMzBmNDVlM2Y0MzYyODU1MjA3YzM5OGY5YmUwODRlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzYzLDYgKzM2Myw5IEBAIHJlcXVlc3RJ
ZGxlQ2FsbGJhY2tFbmFibGVkOgogSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFs
c2UKIAoraW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0
aGlyZFBhcnR5SWZyYW1lUmVkaXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDI5OTQyNzU2MjU4ZTkyNDNjM2IwYTEwMGIxYTNmNmY3
MmE4NDc1OGMuLjQ5YTIwZDQ5NmJjYWIyM2Y5ZjI3ZjcxMDA5ZWMyMTI1Y2I2ODMwODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5jcHAKQEAgLTU2LDYgKzU2LDE0IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpwZXJtaXRQcm9jZXNzVG9Vc2VDb29raWVBUEkoYm9vbCB2YWx1ZSkKICAgICAgICAgcmVt
b3ZlUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJikKK3sKKyAgICBBU1NF
UlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOworICAgIHJldHVybiB7IH07Cit9CisjZW5kaWYgLy8g
IVBMQVRGT1JNKENPQ09BKQorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
IAogYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tp
ZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDY1YTRkMjFmNzk4MDE5MmYzZDc1MDdlYmMyM2E5ZS4u
ZjUxOTI2OWQzOTZmMjM3OWJjZTI5ZjI4NmQ2OWJiZGQ4NjZmMmM3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjAsNiArNjAsOSBAQCB0eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBTb3VwQ29v
a2llSmFyOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZU9i
c2VydmVyLmgiCitPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5TSFRUUENvb2tpZTsK
K09CSkNfQ0xBU1MgTlNNdXRhYmxlU2V0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTc5LDYgKzgyLDE1IEBAIGVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckluCiBlbnVtIGNsYXNzIEZp
cnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIDogdWludDhfdCB7IEFsbEJ1dENvb2tpZXMs
IE5vbmUsIEFsbEJ1dENvb2tpZXNMaXZlT25UZXN0aW5nVGltZW91dCwgQWxsQnV0Q29va2llc1Jl
cHJvVGVzdGluZ1RpbWVvdXQgfTsKIGVudW0gY2xhc3MgU2hvdWxkQXNrSVRQIDogYm9vbCB7IE5v
LCBZZXMgfTsKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCitjbGFzcyBD
b29raWVDaGFuZ2VPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29va2llQ2hhbmdl
T2JzZXJ2ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmlu
ZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNvb2tpZXNEZWxldGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBjbGFzcyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTIsOSArMTA0
LDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBOU0hUVFBDb29raWVTdG9yYWdlICpu
c0Nvb2tpZVN0b3JhZ2UoKSBjb25zdDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgV0VCQ09SRV9FWFBPUlQgfk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOworI2VuZGlmCisKICNp
ZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IGNyZWF0ZUNGU3Rv
cmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpOwotICAgIFdF
QkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgUmV0YWlu
UHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiYmKTsKKyAgICBlbnVtIGNsYXNzIElzSW5NZW1vcnlDb29raWVTdG9yZSA6IGJvb2wg
eyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiwgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYsIElzSW5NZW1vcnlDb29raWVTdG9yZSA9IElz
SW5NZW1vcnlDb29raWVTdG9yZTo6Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAKICAgICAvLyBNYXkgYmUgbnVs
bCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4KQEAg
LTE0Niw2ICsxNjMsMTQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2ll
cywgU2hvdWxkQXNrSVRQKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PENvb2tpZT4gZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KTsKKworI2lmIEhB
VkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hhbmdlT2Jz
ZXJ2ZXImLCBjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rv
cExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hhbmdlT2JzZXJ2
ZXImLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGhvc3RzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIHN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdDsKKyNlbmRpZgorCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91
bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKQEAgLTE3MywxMSArMTk4
LDI3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5j
bHVkZUhUVFBPbmx5IH07CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNl
c3Npb24oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4s
IEluY2x1ZGVIVFRQT25seU9yTm90LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQ
ID0gU2hvdWxkQXNrSVRQOjpZZXMpIGNvbnN0OworICAgIE5TQXJyYXkgKmh0dHBDb29raWVzKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYpIGNvbnN0OworICAgIE5TQXJyYXkgKmh0dHBDb29raWVzRm9y
VVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRp
b25hbDxTYW1lU2l0ZUluZm8+JiwgTlNVUkwgKikgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2ll
c0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiwgU2hvdWxkQXNrSVRQKSBjb25zdDsKKyAgICB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJMICosIE5TVVJMICpt
YWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNvbnN0OworICAgIHZvaWQgZGVs
ZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0hUVFBDb29raWUgKikgY29u
c3Q7CisjZW5kaWYKKworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAg
dm9pZCByZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7CisgICAgdm9p
ZCB1bnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgor
CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkg
fHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZj4gbV9wbGF0Zm9ybVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IG1fcGxhdGZvcm1Db29raWVTdG9yYWdlOworICAgIGJvb2wgbV9pc0luTWVtb3J5Q29v
a2llU3RvcmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgc3RhdGljIHZvaWQgY29v
a2llc0RpZENoYW5nZShOZXR3b3JrU3RvcmFnZVNlc3Npb24qKTsKIApAQCAtMTkwLDYgKzIzMSwx
MiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0Owog
I2VuZGlmCiAKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIGJvb2wg
bV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycyB7IGZhbHNlIH07CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZVNldD4gbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM7CisgICAgSGFz
aE1hcDxTdHJpbmcsIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPj4gbV9jb29raWVDaGFu
Z2VPYnNlcnZlcnM7CisjZW5kaWYKKwogICAgIENyZWRlbnRpYWxTdG9yYWdlIG1fY3JlZGVudGlh
bFN0b3JhZ2U7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNl
c3Npb25DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAppbmRleCBiMDFhN2U2NmJmMDkxNDk2MWQ2MzAxMDc0
MWUyMjE3NWY5ZWZiOWI4Li5lMGQ4NGY3YzUxNzk1ZWNlYmYzZTUwNmM5YjBhMjhlOGNiNWFiNmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtNzMsMTEgKzczLDEyIEBA
IFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25GCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQog
Ci1OZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmIHBsYXRm
b3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYgcGxhdGZvcm1D
b29raWVTdG9yYWdlKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZj4mJiBwbGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiYmIHBsYXRmb3JtQ29va2llU3RvcmFnZSwgSXNJbk1lbW9yeUNvb2tpZVN0b3JlIGlzSW5NZW1v
cnlDb29raWVTdG9yZSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fcGxh
dGZvcm1TZXNzaW9uKFdURk1vdmUocGxhdGZvcm1TZXNzaW9uKSkKKyAgICAsIG1faXNJbk1lbW9y
eUNvb2tpZVN0b3JlKGlzSW5NZW1vcnlDb29raWVTdG9yZSA9PSBJc0luTWVtb3J5Q29va2llU3Rv
cmU6OlllcykKIHsKLSAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpIHx8ICFwbGF0
Zm9ybUNvb2tpZVN0b3JhZ2UpOworICAgIEFTU0VSVChwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkg
fHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAg
ICAgbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPyBXVEZN
b3ZlKHBsYXRmb3JtQ29va2llU3RvcmFnZSkgOiBjb29raWVTdG9yYWdlKCk7CiB9CiAKQEAgLTg4
LDEwICs4OSwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UoKSBjb25zdAogewot
ICAgIGlmICghcHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQorICAgIGlmICghcHJvY2Vzc01heVVz
ZUNvb2tpZUFQSSgpICYmICFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5
Q29va2llU3RvcmUpOwogCiAgICAgaWYgKG1fcGxhdGZvcm1Db29raWVTdG9yYWdlKQogICAgICAg
ICByZXR1cm4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNl
c3Npb25Db2NvYS5tbQppbmRleCA5ZTlhOTFiNzI1MGYzNjJiODU5NDVmM2Q3MDI3NmU2YWJiMWFk
ZDQyLi42OGFhMzIzZmI5MDJhNzUzM2I0MWFlODBjMTk3Yzc3YTg0ZTU2YTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDkgKzQ0LDE2IEBAIEBlbmQK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3Jr
U3RvcmFnZVNlc3Npb24oKQoreworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkp
CisgICAgdW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7CisjZW5k
aWYKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZShjb25zdCBDb29r
aWUmIGNvb2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJp
dmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVt
b3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAg
IFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CkBA
IC01NSw3ICs2Miw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29u
c3QgQ29va2llJiBjb29raWUpCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29r
aWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQ
cm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8
IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJh
eT4gbnNDb29raWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENh
cGFjaXR5OmNvb2tpZXMuc2l6ZSgpXSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBj
b29raWVzKQpAQCAtNjgsMTkgKzc1LDE4IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmCiAKIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUoY29uc3QgQ29va2llJiBjb29r
aWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFBy
b2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tp
ZVN0b3JlKTsKICAgICBbbnNDb29raWVTdG9yYWdlKCkgZGVsZXRlQ29va2llOihOU0hUVFBDb29r
aWUgKiljb29raWVdOwogfQogCi1zdGF0aWMgVmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29r
aWVWZWN0b3IoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykKK3N0YXRpYyBWZWN0
b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0FycmF5PE5TSFRUUENvb2tpZSAq
PiAqbnNDb29raWVzLCBjb25zdCBGdW5jdGlvbjxib29sKE5TSFRUUENvb2tpZSAqKT4mIGZpbHRl
ciA9IHsgfSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBWZWN0b3I8Q29va2llPiBjb29raWVz
OwogICAgIGNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0Nvb2tpZXMuY291bnQpOwot
ICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpCi0gICAgICAgIGNv
b2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsKLQorICAgIGZvciAoTlNIVFRQQ29va2ll
ICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpIHsKKyAgICAgICAgaWYgKCFmaWx0ZXIgfHwgZmlsdGVy
KG5zQ29va2llKSkKKyAgICAgICAgICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2ll
KTsKKyAgICB9CiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKQEAgLTExOCw3ICsxMjQsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAKIE5TSFRUUENv
b2tpZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29u
c3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpD
YW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJv
Y2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2ll
U3RvcmUpOwogICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwogICAg
IGlmICghY2ZDb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBD
b29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAg
IHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CkBA
IC0xNTgsMTEgKzE2NCw2IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0
b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZVUkxDYWNoZVNldERp
c2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNo
b3VsZCBub3QgYmUgbmVjZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBm
aXhlZC4KICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNV
UkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGlmICghTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCi0gICAgICAgIHJl
dHVybiBzdG9yYWdlU2Vzc2lvbi5sZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1By
aXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBh
dXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tp
ZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAg
ICBpZiAoIWNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTczLDIw
ICsxNzQsMjMgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNl
c3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllcikKICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb24u
bGVha1JlZigpOwogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tpZXMoQ0ZIVFRQQ29va2ll
U3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpodHRwQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2Fu
QWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAg
ICAgIHJldHVybiBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2Vd
IGNvb2tpZXNdOworICAgIH0KICAgICAKICAgICBhdXRvIGNvb2tpZXMgPSBhZG9wdENGKENGSFRU
UENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhjb29raWVTdG9yYWdlKSk7CiAgICAgcmV0dXJuIFtO
U0hUVFBDb29raWUgX2NmMm5zQ29va2llczpjb29raWVzLmdldCgpXTsKIH0KIAotc3RhdGljIHZv
aWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2Us
IE5TSFRUUENvb2tpZSAqY29va2llKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0hUVFBD
b29raWUgKmNvb2tpZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgeworICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgICAgICBb
W05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGRlbGV0ZUNvb2tp
ZTpjb29raWVdOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI2LDkgKzIzMCw5IEBAIHN0
YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2Us
IE5TVVJMICp1cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNvb2tpZXNQdHItPmF1dG9yZWxlYXNl
KCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0
b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKnVybCwgTlNV
UkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8pCit2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqdXJs
LCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bykgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5
Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewogI2lmICEoUExBVEZPUk0o
TUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAmJiAhUExB
VEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgICAgIGlmIChbTlNIVFRQ
Q29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENv
b2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQpAQCAtMjU1
LDIxICsyNTksMjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICoKICNlbmRpZgogfQogCi1zdGF0
aWMgTlNBcnJheSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29r
aWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZv
PiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3Jh
Z2UsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1l
U2l0ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICgh
Y29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJp
dmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7
CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lz
SW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29v
a2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgfQogCiAgICAg
Ly8gRklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3Qg
ZWFjaCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAgLy8gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tpZVN0b3JhZ2Ug
b2JqZWN0IGZvciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFnZT4gbnNDb29r
aWVTdG9yYWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0
aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0pOwotICAgIHJldHVybiBjb29raWVz
Rm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8pOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5n
ZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogfQogCiBzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9w
dGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICBO
U1VJbnRlZ2VyIGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVzIGNvdW50XTsKICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogCkBAIC0zMDIsMjcgKzMwNywy
NiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5m
aWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7
CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
clVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
KSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYg
KHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2Nr
Q29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3Vs
ZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQ
YXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CiAg
ICAgVU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5kaWYKLSAgICByZXR1cm4gaHR0cENv
b2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3Rv
cmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9CiAKLWVudW0g
SW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBP
bmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQ
ID0gU2hvdWxkQXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxG
cmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0
CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2Fu
QWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0
b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkg
KmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29v
a2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAoIVtjb29raWVzIGNvdW50XSkKICAg
ICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBhIG51bGwgc3RyaW5n
LCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBjcmVhdGUgYmVsb3cu
CiAKQEAgLTM3NCwyMiArMzc4LDIyIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVz
KENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKIAogc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVz
Rm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQs
IHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91
bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29r
aWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHks
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFBy
b3h5KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVy
RmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVh
ZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQ
cm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2Vj
dXJlQ29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJv
eHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxk
UHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29u
c3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2
aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIApAQCAtNDU3LDcgKzQ2MSw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOwor
ICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgTlNVSW50ZWdl
ciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0
eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpA
QCAtNTE4LDcgKzUyMiw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0CiAKIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5
Q29va2llcykKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5
Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC01
NjYsNCArNTcwLDk4IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxDb29r
aWVzTW9kaWZpZWRTaW5jZShXYWxsVGltZSB0aW1lUG9pbnQpCiAgICAgW3N0b3JhZ2UgX3NhdmVD
b29raWVzXTsKIH0KIAorVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkb21D
b29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgTlNBcnJheSAqbnNDb29r
aWVzID0gW25zQ29va2llU3RvcmFnZSgpIF9nZXRDb29raWVzRm9yRG9tYWluOihOU1N0cmluZyAq
KWhvc3RdOworICAgIHJldHVybiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihuc0Nvb2tpZXMsIFtd
KE5TSFRUUENvb2tpZSAqY29va2llKSB7IHJldHVybiAhY29va2llLkhUVFBPbmx5OyB9KTsKK30K
KworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisKK3ZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpyZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCkK
K3sKKyAgICBpZiAobV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycykKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycyA9IHRydWU7CisgICAgW25zQ29v
a2llU3RvcmFnZSgpIF9zZXRDb29raWVzQWRkZWRIYW5kbGVyOl4oTlNBcnJheTxOU0hUVFBDb29r
aWUgKj4gKiBuc0Nvb2tpZXMsIE5TVVJMICp1cmxGb3JBZGRlZENvb2tpZXMpIHsKKyAgICAgICAg
VmVjdG9yPENvb2tpZT4gY29va2llcyA9IG5zQ29va2llc1RvQ29va2llVmVjdG9yKG5zQ29va2ll
cyk7CisgICAgICAgIGF1dG8gaG9zdCA9IFVSTCh1cmxGb3JBZGRlZENvb2tpZXMpLmhvc3QoKS50
b1N0cmluZygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaG9zdC5pc051bGwoKSk7CisgICAg
ICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5kKGhvc3QpOworICAgICAg
ICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBpdC0+dmFsdWUpCisgICAgICAg
ICAgICBvYnNlcnZlci0+Y29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworICAgIH0gb25RdWV1
ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3Nl
dENvb2tpZXNEZWxldGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICosIGJvb2wg
LypkZWxldGVkQWxsQ29va2llcyovKSB7CisgICAgICAgIGZvciAoYXV0byYgb2JzZXJ2ZXJzIDog
bV9jb29raWVDaGFuZ2VPYnNlcnZlcnMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0
byogb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCisgICAgICAgICAgICAgICAgb2JzZXJ2ZXItPmNvb2tp
ZXNEZWxldGVkKCk7CisgICAgICAgIH0KKyAgICB9IG9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp1bnJlZ2lzdGVyQ29v
a2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmICghbV9kaWRSZWdpc3Rl
ckNvb2tpZUxpc3RlbmVycykKKyAgICAgICAgcmV0dXJuOworCisgICAgW25zQ29va2llU3RvcmFn
ZSgpIF9zZXRDb29raWVzQWRkZWRIYW5kbGVyOm5pbCBvblF1ZXVlOm5pbF07CisgICAgW25zQ29v
a2llU3RvcmFnZSgpIF9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6bmlsIG9uUXVldWU6bmlsXTsK
KyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hh
bmdlczpuaWxdOworICAgIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgPSBmYWxzZTsKK30K
Kwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hh
bmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFN0
cmluZyYgaG9zdCkKK3sKKyAgICByZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNz
YXJ5KCk7CisKKyAgICBhdXRvJiBvYnNlcnZlcnMgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5l
bnN1cmUoaG9zdCwgW10geworICAgICAgICByZXR1cm4gSGFzaFNldDxDb29raWVDaGFuZ2VPYnNl
cnZlcio+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgQVNTRVJUKCFvYnNlcnZl
cnMuY29udGFpbnMoJm9ic2VydmVyKSk7CisgICAgb2JzZXJ2ZXJzLmFkZCgmb2JzZXJ2ZXIpOwor
CisgICAgaWYgKCFtX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcykKKyAgICAgICAg
bV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
U2V0IGFsbG9jXSBpbml0XSk7CisgICAgZWxzZSBpZiAoW21fc3Vic2NyaWJlZERvbWFpbnNGb3JD
b29raWVDaGFuZ2VzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgYWRkT2Jq
ZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0U3Vic2Ny
aWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOm1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVD
aGFuZ2VzLmdldCgpXTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3BMaXN0
ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5nZU9ic2VydmVyJiBv
YnNlcnZlciwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBob3N0cykKK3sKKyAgICBib29sIHN1YnNj
cmliZWRVUkxzQ2hhbmdlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaG9zdCA6IGhvc3RzKSB7
CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5kKGhvc3QpOwor
ICAgICAgICBBU1NFUlQoaXQgIT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpOworICAg
ICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBvYnNlcnZlcnMgPSBpdC0+dmFsdWU7CisgICAg
ICAgIEFTU0VSVChvYnNlcnZlcnMuY29udGFpbnMoJm9ic2VydmVyKSk7CisgICAgICAgIG9ic2Vy
dmVycy5yZW1vdmUoJm9ic2VydmVyKTsKKyAgICAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnJlbW92ZShpdCk7CisgICAg
ICAgICAgICBBU1NFUlQoW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGNvbnRh
aW5zT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdKTsKKyAgICAgICAgICAgIFttX3N1YnNjcmliZWRE
b21haW5zRm9yQ29va2llQ2hhbmdlcyByZW1vdmVPYmplY3Q6KE5TU3RyaW5nICopaG9zdF07Cisg
ICAgICAgICAgICBzdWJzY3JpYmVkVVJMc0NoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAg
fQorICAgIGlmIChzdWJzY3JpYmVkVVJMc0NoYW5nZWQpCisgICAgICAgIFtuc0Nvb2tpZVN0b3Jh
Z2UoKSBfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOm1fc3Vic2NyaWJlZERv
bWFpbnNGb3JDb29raWVDaGFuZ2VzLmdldCgpXTsKK30KKworLy8gRklYTUU6IFRoaXMgY2FuIGV2
ZW50dWFsbHkgZ28gYXdheSwgdGhpcyBpcyBtZXJlbHkgdG8gZW5zdXJlIGEgc21vb3RoIHRyYW5z
aXRpb24gdG8gdGhlIG5ldyBBUEkuCitib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3VwcG9y
dHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpIGNvbnN0Cit7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgc3VwcG9ydHNBUEkgPSBbbnNDb29raWVTdG9yYWdlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOildOworICAgIHJl
dHVybiBzdXBwb3J0c0FQSTsKK30KKworI2VuZGlmIC8vIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNU
RU5FUl9BUEkpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggZTgxNzM0NGYxOWQzOGVkYzE2NzZmYTNkNjg2OTYyZGM3ODZlYWNiZC4uZDcz
Y2Y0N2I2MTA0ZjM1ZjhkMGFhMWQ3ZjRiZTRiY2VkYzczYTZjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKQEAgLTEyNCw2ICsxMjQsMTEgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAgICAgZm9yIChhdXRvJiBw
b3J0IDogbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMpCiAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCku
bWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRDbG9zZU1lc3NhZ2VQb3J0KHBvcnQpOwog
CisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBpZiAoYXV0byogbmV0
d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5zdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygq
dGhpcywgbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMpOworI2VuZGlmCisKICNpZiBVU0UoTElC
V0VCUlRDKQogICAgIGlmIChtX3J0Y1Byb3ZpZGVyKQogICAgICAgICBtX3J0Y1Byb3ZpZGVyLT5j
bG9zZSgpOwpAQCAtNjMzLDYgKzYzOCw0OCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpkZWxldGVDb29raWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgYwogICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSk7CiB9
CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNvb2tpZXNGb3JIb3N0
KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNh
dGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOworICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9u
KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKworI2lmIEhBVkUoQ09P
S0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgaWYgKHN1YnNjcmliZVRvQ29va2llQ2hhbmdl
Tm90aWZpY2F0aW9ucykgeworICAgICAgICBBU1NFUlQoIW1faG9zdHNXaXRoQ29va2llTGlzdGVu
ZXJzLmNvbnRhaW5zKGhvc3QpKTsKKyAgICAgICAgbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMu
YWRkKGhvc3QpOworICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnN0YXJ0TGlzdGVuaW5n
Rm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygqdGhpcywgaG9zdCk7CisgICAgfQorI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKTsK
KyNlbmRpZgorCisgICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5k
b21Db29raWVzRm9ySG9zdChob3N0KSk7Cit9CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElT
VEVORVJfQVBJKQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnN1YnNj
cmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdHMpCit7CisgICAgYm9vbCByZW1vdmVkID0gbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMu
cmVtb3ZlKGhvc3RzLmJlZ2luKCksIGhvc3RzLmVuZCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
bW92ZWQsIHJlbW92ZWQpOworCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9
IHN0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c3RvcExp
c3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhvc3RzKTsKK30KKwor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0FkZGVkKGNvbnN0IFN0
cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7Cisg
ICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
Q29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tpZXNEZWxldGVkKCks
IDApOworfQorCisjZW5kaWYKKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYg
Y29udGVudFR5cGUpCiB7CiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggODZjYzYwZDFhOTk3NWU5YjU4NTMyYjI2MWJiY2Fj
YTA1YjI5OWE1Zi4uYzQzZTgyZGZiMDk4NWI5ZjgyMGY2YjcwYzNiNDQ2NjI3OTE2ZTIwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3Nh
Z2VQb3J0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1h
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vz
c0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBA
IC04Nyw2ICs4OCw5IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAg
OiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4KICNpZiBF
TkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICAsIHB1YmxpYyBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6Q2xpZW50CisjZW5kaWYKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVO
RVJfQVBJKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9ic2VydmVyCiAjZW5k
aWYKICAgICAsIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTI2Niw2ICsy
NzAsMTYgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG5leHRNZXNzYWdlQmF0Y2hJZGVudGlm
aWVyKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKKyAgICB2b2lkIGRvbUNvb2tpZXNGb3JIb3N0KGNv
bnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
KT4mJik7CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHZvaWQg
dW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGhvc3RzKTsKKworICAgIC8vIFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9ic2VydmVyLgor
ICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKSBmaW5hbDsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCkgZmluYWw7
CisjZW5kaWYKKwogICAgIHN0cnVjdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIgewog
ICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAgICAg
ICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXImKSA9IGRlZmF1bHQ7CkBAIC0zMjksNiArMzQzLDkgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBOZXR3b3JrTUROU1JlZ2lzdGVyIG1fbWRuc1JlZ2lz
dGVyOwogI2VuZGlmCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBI
YXNoU2V0PFN0cmluZz4gbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnM7CisjZW5kaWYKIAogICAg
IGJvb2wgbV9jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkIHsgZmFsc2UgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNDNiNWY2
NzRlNTVlOGQ3NmIxMjgzZGQ3YjcyNDZiNjYwYjE4MTJhYy4uODVhNmVmMTIwYjEwMDVjNDA5ZmM1
ZWEzNmU5ZmY5MmI1ZjNmNGNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCkBAIC0zOSw2ICszOSwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9v
bCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51
bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChTdHJpbmcgY29v
a2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCiAgICAg
R2V0UmF3Q29va2llcyhVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
cj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShVUkwg
dXJsLCBTdHJpbmcgY29va2llTmFtZSkKKyAgICBEb21Db29raWVzRm9ySG9zdChTdHJpbmcgaG9z
dCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cworI2lmIEhBVkUoQ09PS0lFX0NI
QU5HRV9MSVNURU5FUl9BUEkpCisgICAgVW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZp
Y2F0aW9ucyhIYXNoU2V0PFN0cmluZz4gaG9zdHMpCisjZW5kaWYKIAogICAgIFJlZ2lzdGVyRmls
ZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQogICAgIFJlZ2lzdGVy
QmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3Ry
aW5nIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
aW5kZXggODJkYjAxMmRlNjAzNmE2ZGRlMDhkNWViNDc1MGZmZTY2Mjk5MGFlNy4uY2E1MDVlZTVl
ZWI1ZDdiMWM1MjU3ODkyNDY0ODI3OTg5OGQwODQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CkBAIC02MjEsNiArNjIxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5
cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5o
IiddLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyc6IFsn
PFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OklTT1dlYlZUVEN1
ZSc6IFsnPFdlYkNvcmUvSVNPVlRUQ3VlLmg+J10sCisgICAgICAgICdzdHJ1Y3QgV2ViQ29yZTo6
Q29va2llJzogWyc8V2ViQ29yZS9Db29raWUuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCc6IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4nXSwKICAgICAg
ICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2Vy
U3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCIn
XSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGI2NGExZjdk
NTJmNGMwOWZmY2YyMWEzMzkyZWYyZDE0NjgzOTUwOTUuLmU0NGRlYTFhMGNiYjNlYWYyZWM0NmU3
NWU2MjQ1ZmI0YjI5OWZiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbApAQCAtNTUsNiArNTUsMTMgQEAgSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkF1dG9tYXRpYyBIVFRQUyB1cGdyYWRlIGZvciBrbm93biBzdXBw
b3J0ZWQgc2l0ZXMiCiAgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCiAKK0luUHJvY2Vzc0Nvb2tp
ZUNhY2hlRW5hYmxlZDoKKyAgIHR5cGU6IGJvb2wKKyAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQorICAg
aHVtYW5SZWFkYWJsZU5hbWU6ICJJbi1Qcm9jZXNzIENvb2tpZSBDYWNoZSIKKyAgIGh1bWFuUmVh
ZGFibGVEZXNjcmlwdGlvbjogIkluLVByb2Nlc3MgRE9NIENvb2tpZSBDYWNoZSIKKyAgIGNhdGVn
b3J5OiBleHBlcmltZW50YWwKKwogVGhpcmRQYXJ0eUlmcmFtZVJlZGlyZWN0QmxvY2tpbmdFbmFi
bGVkOgogICAgdHlwZTogYm9vbAogICAgZGVmYXVsdFZhbHVlOiB0cnVlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCA3NDg5NGJkMjdiYWY1ODk1MWU2YWYyNDFjODc5OThiYzVjNWViYWU4Li5hNWQwYmUxNDI3MWY2
MzA2ZjgzNmI4ZmRiZDdkNDIwZjI5NTI0NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTYyNCw2ICs2MjQs
NyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZUJhbm5lci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFn
ZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVu
dS5jcHAKK1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAKIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRM
b2FkZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggZTFmYzZmNzM3MmIxNjAzZTVkZDI1ZWIwYTRhNjAxYzZjOWJlMjNlYS4uZDI0
YTgwNDhlMzQ1MDQ2MzQyN2M5MzA0MzJlZjkwMDM5NzUxMWMwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dApAQCAtNjEzLDYgKzYxMyw3IEBAIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlz
cGF0Y2hlci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0SU9TLm1tCiAKIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9s
bGVyUHJveHkubW0KK1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29h
Lm1tCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCiBXZWJQcm9jZXNz
L1dlYlBhZ2UvQ29jb2EvV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0ODg1YjQ2MzJk
ZTljODhjZjAyNjVkNWVlZjlhYjA3NTRiZjU1ODcuLmZlNzc4M2VmNGRjMmMxN2NiMWNiZjQ5ZGU3
MDFlYTQ1MTgxZDZjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtOTQzLDYgKzk0Myw3IEBACiAJCTQ2NkJDMDNDMUZBMjY2REEwMDJG
QTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY2QkMwMzkxRkEyNjZDOTAwMkZBOUMxIC8q
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2NzFGRjFGMjMyMTdF
RkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8q
IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi87IH07CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIx
MzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8q
IFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CisJCTQ2ODA5QTdDMjNEOTIy
NUUwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tp
ZUNhY2hlLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5k
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5k
UHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAw
MjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUyNDQy
MjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29u
dHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFy
ZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVC
NkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtMzQ4NCw2ICsz
NDg1LDggQEAKIAkJNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzFGRjFFMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJS
ZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0U0M0U3MjI0
M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAg
LyogV2ViQ29va2llQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q29va2llQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0IyM0Q5
MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlCMjFFODFDQzcwMDZFMjdB
MyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jl
c3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTY5OTcsOCArNzAwMCw4IEBACiAJCQkJMUE0MjJGOEExOEIyOUI1
NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oICovLAogCQkJCTUxRDEyNDg0
MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5oICovLAogCQkJCTUxRDEyNDg1
MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSAqLywKLQkJCQlERjQ2MkUw
RTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8sCiAJCQkJ
NTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCAq
LywKKwkJCQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2
YXRlLmggKi8sCiAJCQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVu
dGlmaWVycy5tbSAqLywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRl
bUlkZW50aWZpZXJzUHJpdmF0ZS5oICovLAogCQkJCTFBNUIxQzRGMTg5ODYwNkYwMDRGQ0Y5QiAv
KiBXS05hdmlnYXRpb24uaCAqLywKQEAgLTg0MjIsNiArODQyNSw4IEBACiAJCQkJQkM3MkI5Rjkx
MUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggKi8sCiAJCQkJNTE4
NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLywKIAkJCQk1MTg3
MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLywKKwkJCQk0NjgwOUE3
QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICovLAorCQkJCTQ2ODA5QTdB
MjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovLAogCQkJCTVDN0ZCNDZFMjFF
OTdDMEIwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuY3BwICovLAogCQkJCTVDN0ZCNDZGMjFFOTdD
MEMwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuaCAqLywKIAkJCQkxQTVCMUM1MjE4OTg3RURGMDA0
RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuY3BwICovLApAQCAtMTAyNTQsNyArMTAyNTksNiBA
QAogCQkJCTJENTg3NUJGMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRp
bmdSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8q
IEVkaXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYz
NUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRB
ODEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVB
ODUxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUE1NzVGQjE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4g
SGVhZGVycyAqLywKQEAgLTEwNjYyLDYgKzEwNjY2LDcgQEAKIAkJCQk1MUFDQkI4MjEyN0E4QkFE
MDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFB
Q0JCQTAxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDRjRERTI1MTY4RkE0NDgwMEM5NEFGQyAvKiBXZWJDb250ZXh0U3VwcGxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdl
YkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzdGQjQ3MDIxRTk3REM1MDA5RTMy
NDEgLyogV2ViQ29va2llSmFyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1MDEzMTVCOTRE
MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0
NDgxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDcyMSw3ICsxMDcyNiw2IEBACiAJCQkJRkVFNDNGRDMxRTY3QjAxODAwNzdE
NkQxIC8qIFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFREJEQ0Q3MUU2OEQyMDUwMEE1OUY4RiAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNw
YXRjaGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2MTI3Nzg1MjQwMEJD
N0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREY0NjJF
MEYyM0YyMkY1NTAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUM4RTI4MzQxMjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5z
cGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4OTFENjYxOUIxMjRG
RjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLywKQEAgLTEwOTM0LDYg
KzEwOTM4LDcgQEAKIAkJCQkwRjA0MTU5RTIzQzdDQzczMDA2MEEzRTIgLyogV0tDb250ZW50Vmll
d01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMDY1RkMyM0VDOTU3MjAwNTQ0M0Q2IC8qIFdL
Q29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTEwNjVGRDIzRUM5NTdCMDA1NDQz
RDYgLyogV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREY0NjJF
MTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNCOUUyNEIxMTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFFNTJGOTgxOTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAv
KiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTExMDE3LDYg
KzExMDIyLDcgQEAKIAkJCQkxQTQyMkY4QjE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVs
ZWdhdGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNjJFNzMxMjE0MzA0N0IwMDA2OUVD
MzUgLyogV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQxMjQ5OTFFNzYz
QzAxMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCURG
NDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDNjZBNEI1MjMyMDk2MjQwMEVBNEQ0NCAvKiBXS0hUVFBDb29raWVT
dG9yZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMEFFMEQxMzNDMTZDQjAwNzI3MTdBIC8q
IFdLSWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTIzQ0YxQzEzM0QyNjBBMDA1
NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmNwcAppbmRleCAyOGJjMTJjMzQyM2Y5ZjI4MzU2YzNhODRjNjEyMjRjZmE0ZWQ3ZTk5
Li4yYmI0NzllMzlkZTliNmU5NTdmMjljZmI3ZWU4NTA2NGEwMGU1OTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1h
cC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJD
YWNoZVN0b3JhZ2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25U
b1NlcnZlci5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgi
CkBAIC0yMzQsNiArMjM1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29r
aWVBY2NlcHRQb2xpY3lDaGFuZ2VkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kKICAgICBtX2Nvb2tp
ZUFjY2VwdFBvbGljeSA9IG5ld1BvbGljeTsKIH0KIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9M
SVNURU5FUl9BUEkpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0FkZGVk
KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tp
ZXMpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCkuY29va2llc0Fk
ZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
Y29va2llc0RlbGV0ZWQoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tpZUph
cigpLmNvb2tpZXNEZWxldGVkKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVf
UkVTT1VSQ0UpCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJj
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNl
OjpIYW5kbGUmIGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNTFmZGYzNTQ1
MjRkOTE1ZGRmNmVkNTk0YzdkMmMwZmQ4NjMzZDlkMS4uNzZkMjY2NTIwYzI2MGQxNTNiOTQxZDcz
OWJjNDQ5MDE4YzZlNGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQxLDYgKzQxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291
cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3QgQ29va2llOwogc3Ry
dWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
czsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CkBAIC04Myw2
ICs4NCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvb2tpZXNFbmFibGVkKCkgY29uc3Q7CiAK
KyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHZvaWQgY29va2llc0Fk
ZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsK
KyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3Jl
OjpIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCmluZGV4IDJhYTY4ODZlNTdhNTk5Y2JjMTdjMzVmNmI3NGU5OWQyYWIzYTg5
ZTUuLjY5OTNmYTdlZjQ2MGY3NTc2ZDYxY2ZlNGI2NDNkMjkwZjgyZDhkNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDExIEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0
T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSk7CiAgICAgQ29va2llQWNjZXB0UG9saWN5Q2hhbmdl
ZChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpOwog
CisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBDb29raWVzQWRkZWQo
U3RyaW5nIGhvc3QsIFZlY3RvcjxzdHJ1Y3QgV2ViQ29yZTo6Q29va2llPiBjb29raWVzKTsKKyAg
ICBDb29raWVzRGVsZXRlZCgpOworI2VuZGlmCisKICAgICBDaGVja1Byb2Nlc3NMb2NhbFBvcnRG
b3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpIC0+
IChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0
aXZpdHkpIEFzeW5jCiAgICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3Jl
OjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjg2YmM2NmQ5ZDRmYzZkMmY2NzY2NTBlY2M2ZGFhNWExYWEwNjA3MDUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJDb29raWVDYWNoZUNvY29hLm1tCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbXBvcnQgIldl
YlByb2Nlc3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigp
Cit7CisgICAgaWYgKCFtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24pIHsKKyAgICAgICAgU3RyaW5n
IHNlc3Npb25OYW1lID0gbWFrZVN0cmluZygiV2ViS2l0SW5Qcm9jZXNzU3RvcmFnZS0iLCBnZXRD
dXJyZW50UHJvY2Vzc0lEKCkpOworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRD
RihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkpOworICAgICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENG
KF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNz
aW9uID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnNlc3Npb25JRCgpLCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29r
aWVTdG9yYWdlKSwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpJc0luTWVtb3J5Q29va2llU3RvcmU6
Olllcyk7CisgICAgfQorICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2VkMjBjNjQ1MzNhYzc0
YWI1YmZiZDdkYTNiMzg3Nzg1YzljNjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTI0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUNh
Y2hlLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK2Jvb2wgV2ViQ29va2llQ2FjaGU6OmlzU3VwcG9ydGVkKCkKK3sKKyNpZiBIQVZFKENP
T0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBldmVudHVh
bGx5IGJlIHJlbW92ZWQsIHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290aCB0cmFuc2l0
aW9uIHRvIHRoZSBuZXcgQVBJLgorICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCku
c3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKK30KKworU3RyaW5nIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3sKKyAgICBT
dHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBpZiAoIW1faG9zdHNXaXRo
SW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKSB7CisgICAgICAgIFZlY3RvcjxDb29raWU+
IGNvb2tpZXM7CisgICAgICAgIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRp
b25zID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEb21Db29raWVzRm9ySG9zdCh1cmwuaG9z
dCgpLnRvU3RyaW5nKCksIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyksIE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29va2llc0Zvckhvc3Q6
OlJlcGx5KGNvb2tpZXMpLCAwKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHBy
dW5lQ2FjaGVJZk5lY2Vzc2FyeSgpOworICAgICAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFn
ZS5hZGQoaG9zdCk7CisgICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAgICAg
ICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKKyAgICB9
CisgICAgcmV0dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBTaG91bGRBc2tJVFA6Ok5vKS5maXJzdDsKK30KKwordm9pZCBXZWJDb29raWVDYWNo
ZTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQor
eworICAgIFN0cmluZyBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOworICAgIGlmIChtX2hv
c3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyhob3N0KSkKKyAgICAgICAgaW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7
Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhv
c3QsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzKQoreworICAgIGlmICghbV9ob3N0c1dp
dGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vz
c2lvbigpLnNldENvb2tpZShjb29raWUpOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29r
aWVzRGVsZXRlZCgpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6
Y2xlYXIoKQoreworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgaWYg
KCFtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5pc0VtcHR5KCkpCisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5zdWJz
Y3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhtX2hvc3RzV2l0aEluTWVtb3J5U3Rv
cmFnZSksIDApOworI2VuZGlmCisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY2xlYXIo
KTsKKyAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24gPSBudWxscHRyOworfQorCit2b2lkIFdl
YkNvb2tpZUNhY2hlOjpjbGVhckZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIGF1
dG8gaXQgPSBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5maW5kKGhvc3QpOworICAgIGlmIChp
dCA9PSBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UucmVtb3ZlKGl0KTsKKyAgICBpbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhWZWN0b3I8U3RyaW5n
PiB7IGhvc3QgfSk7CisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoSGFzaFNldDxTdHJpbmc+
IHsgaG9zdCB9KSwgMCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6cHJ1bmVD
YWNoZUlmTmVjZXNzYXJ5KCkKK3sKKyAgICAvLyBXZSBtYXkgd2FudCB0byByYWlzZSB0aGlzIGxp
bWl0IGlmIHdlIHN0YXJ0IHVzaW5nIHRoZSBjYWNoZSBmb3IgdGhpcmQtcGFydHkgaWZyYW1lcy4K
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q2FjaGVkSG9zdHMgPSA1OworCisgICAgd2hp
bGUgKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLnNpemUoKSA+PSBtYXhDYWNoZWRIb3N0cykK
KyAgICAgICAgY2xlYXJGb3JIb3N0KCptX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5yYW5kb20o
KSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdl
YkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlRfTk9U
X0lNUExFTUVOVEVEX1lFVCgpOworICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQwYzQx
NmU1MjBjZWRjMjQ2YmUxMmZhNTNmYmNmZTc4NmYzNTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKQEAgLTAsMCAr
MSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVKYXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvb2tpZUNh
Y2hlIHsKK3B1YmxpYzoKKyAgICBXZWJDb29raWVDYWNoZSgpID0gZGVmYXVsdDsKKworICAgIGJv
b2wgaXNTdXBwb3J0ZWQoKTsKKworICAgIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBT
dHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBj
b29raWVzRGVsZXRlZCgpOworCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgY2xlYXJGb3JI
b3N0KGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpOworICAgIHZvaWQgcHJ1bmVDYWNo
ZUlmTmVjZXNzYXJ5KCk7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0c1dpdGhJbk1lbW9y
eVN0b3JhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4gbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmNwcAppbmRleCAzMjU4MzA1Yzc4OWQ3NzVmZTE1YzFjMDgyOGMzNmU5ZTJmMmE4NjA5Li41YWIz
MjQ1Y2NkNWRhYzFjZjUzMWQ0ZGViNGQwZTFhODVkMDY5MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04OCw2ICs4OSwyMyBAQCBzdGF0aWMgYm9v
bCBzaG91bGRCbG9ja0Nvb2tpZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHlGb3JDb29raWVzLAogfQogI2VuZGlmCiAKK2Jvb2wgV2ViQ29va2llSmFyOjppc0VsaWdpYmxl
Rm9yQ2FjaGUoV2ViRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVz
LCBjb25zdCBVUkwmIHJlc291cmNlVVJMKSBjb25zdAoreworICAgIGF1dG8qIHBhZ2UgPSBmcmFt
ZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmNvcmVQYWdlKCkgOiBudWxscHRyOworICAgIGlmICgh
cGFnZSB8fCAhcGFnZS0+c2V0dGluZ3MoKS5pblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2NhY2hlLmlzU3VwcG9ydGVkKCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZvciBub3csIHdlIG9ubHkgY2FjaGUg
Y29va2llcyBmb3IgZmlyc3QtcGFydHkgY29udGVudC4gVGhpcmQtcGFydHkgY29va2llIGNhY2hp
bmcgaXMgYSBiaXQgbW9yZSBjb21wbGljYXRlZCBkdWUgdG8gcGFydGl0aW9uaW5nIGFuZCBzdG9y
YWdlIGFjY2Vzcy4KKyAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiB7IHJlc291
cmNlVVJMIH07CisgICAgaWYgKHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFi
bGVEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9ID09IHJlc291cmNlRG9tYWluOworfQor
CiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVu
dC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDog
bnVsbHB0cjsKQEAgLTEwMCwxMiArMTE4LDE3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tp
ZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCisgICAgYXV0byBzYW1lU2l0ZUluZm8gPSBDb29r
aWVKYXI6OnNhbWVTaXRlSW5mbyhkb2N1bWVudCk7CisgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29v
a2llcyA9IENvb2tpZUphcjo6c2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVy
bCk7CiAgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBhdXRvIHBh
Z2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAorICAgIGlmIChpc0VsaWdp
YmxlRm9yQ2FjaGUoKndlYkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1
cmwpKQorICAgICAgICByZXR1cm4gbV9jYWNoZS5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0
UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKKwogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9v
bCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNG
b3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3Vt
ZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRv
Y3VtZW50LCB1cmwpLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVT
dHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
c0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5O
ZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQp
LCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBjb29raWVTdHJpbmc7CkBA
IC0xMjMsMTAgKzE0NiwzNCBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3Jl
OjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgICAgICByZXR1
cm47CiAjZW5kaWYKIAorICAgIGF1dG8gc2FtZVNpdGVJbmZvID0gQ29va2llSmFyOjpzYW1lU2l0
ZUluZm8oZG9jdW1lbnQpOwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7
CiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNh
bWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJ
bk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICBpZiAoaXNFbGlnaWJsZUZv
ckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkK
KyAgICAgICAgbV9jYWNoZS5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJp
bmcpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29v
a2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJ
bk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVK
YXI6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JiBjb29raWVzKQoreworICAgIG1fY2FjaGUuY29va2llc0FkZGVkKGhvc3QsIGNv
b2tpZXMpOworfQorCit2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0RlbGV0ZWQoKQoreworICAg
IG1fY2FjaGUuY29va2llc0RlbGV0ZWQoKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNsZWFy
Q2FjaGUoKQoreworICAgIG1fY2FjaGUuY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6
OmNsZWFyQ2FjaGVGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBtX2NhY2hlLmNs
ZWFyRm9ySG9zdChob3N0KTsKIH0KIAogYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVk
KGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggNTI5NDhhOTFkZTVmMTQ1MjQ5OTEw
ZGQ0OTgzNDQ1MjAwMDFhOTdmYi4uOGVkYmUzMTRlY2FmYTdkYWI0ZWVmYmUyZTgyNWY4MGRmMjk0
ZDk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
SmFyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjUsOCArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJXZWJDb29r
aWVDYWNoZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK3N0cnVjdCBDb29raWU7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJDb29raWVKYXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q29va2llSmFyIHsKQEAgLTM5
LDggKzQ0LDE4IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1
cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7
CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3Qg
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSkgZmluYWw7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBT
dHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBj
b29raWVzRGVsZXRlZCgpOworCiBwcml2YXRlOgogICAgIFdlYkNvb2tpZUphcigpOworCisgICAg
dm9pZCBjbGVhckNhY2hlKCkgZmluYWw7CisgICAgdm9pZCBjbGVhckNhY2hlRm9ySG9zdChjb25z
dCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRWxpZ2libGVGb3JDYWNoZShXZWJGcmFtZSYs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwp
IGNvbnN0OworCisgICAgbXV0YWJsZSBXZWJDb29raWVDYWNoZSBtX2NhY2hlOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCmluZGV4IDUwOGJjYzEwMmViYTAwNjIwMzZiY2RjNWU4MDY2M2Y2MDM0ZmQwZTMu
LmJkYTFlYWYxZWQ4YTQ2MWE2YWUyYjI3ZDhhYzAxNDZhMzM5YzRiNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAg
V2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYktpdDo6TGli
V2ViUlRDUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hl
U3RvcmFnZVByb3ZpZGVyKCksCiAgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjcmVh
dGUoKnRoaXMpLAotICAgICAgICBXZWJDb29raWVKYXI6OmNyZWF0ZSgpLAorICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5jb29raWVKYXIoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxX
ZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ+KCp0aGlzKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxN
ZWRpYVJlY29yZGVyUHJvdmlkZXI+KCkKICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCmluZGV4IDRiMjQwOWI5OTRkM2FlMGQyYjQzMTRiMzQ1YzI4ZjFhNGQzN2M3
MDkuLjIxYjVhMmJjMTNmZWVlYWQ5NGE2ODQ2Y2M1NTY1MzkzMGJmYjBjMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl
ICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdl
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKKyNpbmNs
dWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaCIKQEAgLTIwNSw2ICsyMDYsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAs
IG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcihXZWJJbnNwZWN0b3JJbnRlcnJ1cHRE
aXNwYXRjaGVyOjpjcmVhdGUoKSkKICAgICAsIG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBXZWJM
b2FkZXJTdHJhdGVneSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoV2ViQ2FjaGVTdG9y
YWdlUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAgICwgbV9jb29raWVKYXIoV2ViQ29va2llSmFyOjpj
cmVhdGUoKSkKICAgICAsIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShQQUw6Okh5c3Rl
cmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0
b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7IH0pCiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODUzYzY2MGVjNjQ2NDU2M2E3NjU2NDM2MTkyOTU2NTRi
MDczNTM0ZS4uMTU5MDkzNjBhZDdjYjA5MTEzN2I3Y2FmMzM1MzVjZGUyYzk3ZGQ1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMjAsNiArMTIwLDcgQEAgY2xhc3Mg
VXNlckRhdGE7CiBjbGFzcyBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk7CiBjbGFzcyBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OwogY2xhc3MgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFz
cyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE7CiBj
bGFzcyBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTI5Myw2
ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSogYXV0b21h
dGlvblNlc3Npb25Qcm94eSgpIHsgcmV0dXJuIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eS5nZXQo
KTsgfQogCiAgICAgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVy
KCkgeyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VQcm92aWRlci5nZXQoKTsgfQorICAgIFdlYkNvb2tp
ZUphciYgY29va2llSmFyKCkgeyByZXR1cm4gbV9jb29raWVKYXIuZ2V0KCk7IH0KICAgICBXZWJT
b2NrZXRDaGFubmVsTWFuYWdlciYgd2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIoKSB7IHJldHVybiBt
X3dlYlNvY2tldENoYW5uZWxNYW5hZ2VyOyB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpA
QCAtNTU0LDYgKzU1Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZjxXZWJDYWNoZVN0
b3JhZ2VQcm92aWRlcj4gbV9jYWNoZVN0b3JhZ2VQcm92aWRlcjsKKyAgICBSZWY8V2ViQ29va2ll
SmFyPiBtX2Nvb2tpZUphcjsKICAgICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciBtX3dlYlNvY2tl
dENoYW5uZWxNYW5hZ2VyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ05ldHdvcms+
IG1fbGliV2ViUlRDTmV0d29yazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MWVkMWQyY2QwZTgxZjM2ZjFjYzY0ZjFjZmFh
ODA0M2Q1MjBlYjVjLi5hZDkwYzhlOGEzMmI2ZDE2YTdmMGU2YWIzZGVhM2FjYzhhODQzMjgwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nlc3Mg
Y29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4gbW9z
dCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJh
Z2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVy
LXNob3dNb2RhbERpYWxvZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5n
LWlmcmFtZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1k
aWFsb2cuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNl
cy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5k
LXNlcnZlLnBocDogQWRkZWQuCisKIDIwMjAtMDItMTEgIEphc29uIExhd3JlbmNlICA8bGF3cmVu
Y2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1Mgd2syIF0gZmFzdC92aWV3cG9ydC9pb3Mv
d2lkdGgtaXMtZGV2aWNlLXdpZHRoLW92ZXJmbG93aW5nLWJvZHktb3ZlcmZsb3ctaGlkZGVuLXRh
bGwuaHRtbCBpcyBmbGFreSBmYWlsaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2ctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1h
ZnRlci1zaG93TW9kYWxEaWFsb2ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YWY5MjRiZmI3
ZTgxZWIzZDBjZjRkM2Q0MmNiMjMwOGE0NDUzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERp
YWxvZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5j
b29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBj
YWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vcm1hbGl6ZUNvb2tp
ZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXpl
Q29va2llKGRvY3VtZW50LmNvb2tpZSkgaXMgImZvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlIgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0
ZXItc2hvd01vZGFsRGlhbG9nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMv
ZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
Yjg0N2IzM2Q1MTk4ZTk2NmRhN2IwOGNlYjg4NjBhMWQ2OTQ3ZWEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNo
b3dNb2RhbERpYWxvZy5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXByZS5qcyc+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpbnB1dCBpZD0idGVzdEJ1dHRvbiIgdHlwZT0i
YnV0dG9uIiB2YWx1ZT0iQ2xpY2sgbWUiPjwvaW5wdXQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24o
J1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVy
IGEgc2hvd01vZGFsRGlhbG9nKCkgY2FsbCcpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7
CisKK3Rlc3RCdXR0b24ub25jbGljayA9ICgpID0+IHsKKyAgICBkb2N1bWVudC5jb29raWUgPSAi
dGVzdEtleT10ZXN0VmFsdWUiOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXpl
Q29va2llKGRvY3VtZW50LmNvb2tpZSknLCAndGVzdEtleT10ZXN0VmFsdWUnKTsKKworICAgIHNo
b3dNb2RhbERpYWxvZygicmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocD9jb29raWUt
bmFtZT1mb28mY29va2llLXZhbHVlPWJhciZkZXN0aW5hdGlvbj1jbG9zZS1tb2RhbC1kaWFsb2cu
aHRtbCIpOworCisgICAgLy8gVGhpcyBpcyBzbyB0aGUgY29va2llIGdldHMgcmVtb3ZlZCBhdCB0
aGUgZW5kIG9mIHRoZSB0ZXN0LgorICAgIHJlZ2lzdGVyQ29va2llRm9yQ2xlYW51cCgnZm9vPWJh
cjsgcGF0aD0vJyk7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxpemVDb29raWUo
ZG9jdW1lbnQuY29va2llKScsICdmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZScpOworCisgICAg
ZmluaXNoSlNUZXN0KCk7Cit9CisKK29ubG9hZCA9ICgpID0+IHsKKyAgICBpbnRlcm5hbHMud2l0
aFVzZXJHZXN0dXJlKCgpID0+IHsKKyAgICAgICAgdGVzdEJ1dHRvbi5jbGljaygpOworICAgIH0p
OworfTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcG9z
dC5qcyc+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2lu
Zy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQt
Y29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Nm
NWFkYThjNDlhZjUyNDcwN2VhZDJmYTE4YjRlNjNkMTkyMjNhNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlm
cmFtZS1wYXJzaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IGRv
Y3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSBhZnRlciBhIHNob3dNb2RhbERp
YWxvZygpIGNhbGwKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm9ybWFs
aXplQ29va2llKGRvY3VtZW50LmNvb2tpZSkgaXMgInRlc3RLZXk9dGVzdFZhbHVlIgorUEFTUyBu
b3JtYWxpemVDb29raWUoY29va2llc0luRnJhbWUpIGlzICJmb289YmFyOyB0ZXN0S2V5PXRlc3RW
YWx1ZSIKK1BBU1Mgbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSkgaXMgImZvbz1iYXI7
IHRlc3RLZXk9dGVzdFZhbHVlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2ll
cy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2lu
Zy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmZmMjllZmI1MzhjYTQ3ZTIyOGI3MzhmYzUzZDk1MDQ0OWRhOWNj
YmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5odG1sCkBAIC0wLDAgKzEsMzQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMv
Y29va2llcy10ZXN0LXByZS5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVz
b3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
CitkZXNjcmlwdGlvbignVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmln
aHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsJyk7Citqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworZnVuY3Rpb24gdmFsaWRhdGVDb29raWVzRHVyaW5nQ2hpbGRGcmFtZVBhcnNp
bmcoX2Nvb2tpZXNJbkZyYW1lKQoreworICAgIGNvb2tpZXNJbkZyYW1lID0gX2Nvb2tpZXNJbkZy
YW1lOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGNvb2tpZXNJ
bkZyYW1lKScsICdmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZScpOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSknLCAnZm9vPWJhcjsg
dGVzdEtleT10ZXN0VmFsdWUnKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsgICAgCit9CisKK29ubG9h
ZCA9ICgpID0+IHsKKyAgICBkb2N1bWVudC5jb29raWUgPSAidGVzdEtleT10ZXN0VmFsdWUiOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tp
ZSknLCAndGVzdEtleT10ZXN0VmFsdWUnKTsKKworICAgIC8vIFRoaXMgaXMgc28gdGhlIGNvb2tp
ZSBnZXRzIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKyAgICByZWdpc3RlckNvb2tp
ZUZvckNsZWFudXAoJ2Zvbz1iYXI7IHBhdGg9LycpOworCisgICAgbGV0IGlmcmFtZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2Vz
L3NldC1jb29raWUtYW5kLXNlcnZlLnBocD9jb29raWUtbmFtZT1mb28mY29va2llLXZhbHVlPWJh
ciZkZXN0aW5hdGlvbj1kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFt
ZS5odG1sIjsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7Cit9OworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wb3N0LmpzJz48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY29va2llcy9yZXNvdXJjZXMvY2xvc2UtbW9kYWwtZGlhbG9nLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Nsb3NlLW1vZGFsLWRpYWxvZy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmVmNTY4ZGZlZGJiMmQzYTk1YTJmMTQzZTZlZjFjODIxZWFjYmRhMmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Ns
b3NlLW1vZGFsLWRpYWxvZy5odG1sCkBAIC0wLDAgKzEsNyBAQAorPHNjcmlwdD4KK29ubG9hZCA9
ICgpID0+IHsKKyAgICBjbG9zZSgpOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICB0ZXN0UnVubmVyLmFib3J0TW9kYWwoKTsKK307Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1
cmluZy1pZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1p
ZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmQ3YWI3YTM5MjJkMTA4YTFmNjAyNzk5ZTY2ODM0MzVh
ODk5MjRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVz
L3Jlc291cmNlcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5o
dG1sCkBAIC0wLDAgKzEsMyBAQAorPHNjcmlwdD4KK3RvcC52YWxpZGF0ZUNvb2tpZXNEdXJpbmdD
aGlsZEZyYW1lUGFyc2luZyhkb2N1bWVudC5jb29raWUpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5k
LXNlcnZlLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0
LWNvb2tpZS1hbmQtc2VydmUucGhwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ZjQzZjI5ZTg1MmRkY2MwOWY5Njlm
ODk5ZThmM2UxMmFiYWE4NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocApAQCAtMCwwICsx
LDEzIEBACis8P3BocAorJGNvb2tpZU5hbWUgPSAkX0dFVFsnY29va2llLW5hbWUnXTsKKyRjb29r
aWVWYWx1ZSA9ICRfR0VUWydjb29raWUtdmFsdWUnXTsKKyRkZXN0aW5hdGlvbiA9ICRfR0VUWydk
ZXN0aW5hdGlvbiddOworaGVhZGVyKCJDb250ZW50LVR5cGU6IHRleHQvaHRtbCIpOworaGVhZGVy
KCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSIpOworaGVhZGVyKCJTZXQtQ29va2llOiAke2Nvb2tp
ZU5hbWV9PSR7Y29va2llVmFsdWV9OyBwYXRoPS8iKTsKKyRmcCA9IGZvcGVuKCRkZXN0aW5hdGlv
biwgJ3JiJyk7CitoZWFkZXIoIkNvbnRlbnQtTGVuZ3RoOiAiIC4gZmlsZXNpemUoJGRlc3RpbmF0
aW9uKSk7CisKK2ZwYXNzdGhydSgkZnApOworZXhpdDsKKz8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390695</attachid>
            <date>2020-02-13 15:26:52 -0800</date>
            <delta_ts>2020-02-17 09:57:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207593-20200213152651.patch</filename>
            <type>text/plain</type>
            <size>91900</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDJkMTIwYWVkNTVjMzVmZmVjODk5YWMz
NTFmNzAwNWI3ZWU4ZjkyZDkuLjNmMGU3YTRjMWVjMDVlOTVkZmMxYWZlMmVmNzNiZjlkOTBiZDM3
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nl
c3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4g
bW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYnVpbGQgdGltZSBmbGFn
cyBmb3IgbmV3IGZlYXR1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAtMDItMTEgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBpbi1iYW5kIFZUVCBj
YXB0aW9ucyB3aGVuIGxvYWRpbmcgbWVkaWEgaW4gdGhlIEdQVSBQcm9jZXNzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggMGI0NWQ3MmUyNjFlNDNiOWMwM2I0OGEwZWFiYTlmYmQ5MmNhZTBmMi4uODg2ZmYzMTI0MGRj
MmY2OWYxZDM0NDAyYzU1NjEzMjkwYmY1OTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBA
CisyMDIwLTAyLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
W1dLMl1bQ29jb2FdIEltcGxlbWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9p
ZCBzeW5jIElQQyBmb3IgZG9jdW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTYwMjcwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlz
dG8uCisKKyAgICAgICAgSW1wbGVtZW50IGluLVdlYlByb2Nlc3MgRE9NIGNvb2tpZSBjYWNoZSBm
b3Igc2VydmluZyBgZG9jdW1lbnQuY29va2llYCByZXF1ZXN0cyBmcm9tIEphdmFTY3JpcHQuCisK
KyAgICAgICAgVGhlIGZpcnN0IHRpbWUgZG9jdW1lbnQuY29va2llIGlzIGNhbGxlZCBmb3IgYSBn
aXZlbiBob3N0LCB0aGUgV2ViUHJvY2VzcyB3aWxsIHB1bGwgaW4gYWxsIHRoZQorICAgICAgICBu
b24tSFRUUE9ubHkgY29va2llcyBmb3IgdGhhdCBob3N0IGZyb20gdGhlIE5ldHdvcmtQcm9jZXNz
IChzdGlsbCB2aWEgc3luYyBJUEMpIGFuZCBzdG9yZSB0aGVtCisgICAgICAgIGluIGFuIGluLW1l
bW9yeSBjb29raWUgc3RvcmUuIExhdGVyIGRvY3VtZW50LmNvb2tpZSBjYWxscyBmb3IgdGhpcyBo
b3N0IGZyb20gdGhpcyBXZWJQcm9jZXNzCisgICAgICAgIHdpbGwgdGhlbiBsZXZlcmFnZSB0aGUg
aW4tbWVtb3J5IGNvb2tpZSBzdG9yZSBhbmQgYXZvaWQgZG9pbmcgYSBzeW5jIElQQyB0byB0aGUg
TmV0d29ya1Byb2Nlc3MKKyAgICAgICAgZW50aXJlbHkuCisKKyAgICAgICAgVG8gbWFpbnRhaW4g
dGhlIGluLXByb2Nlc3MgY29va2llIHN0b3JlIHVwLXRvLWRhdGUsIHRoZSBXZWJQcm9jZXNzIHN1
YnNjcmliZSBmb3IgY29va2llLWNoYW5nZQorICAgICAgICBub3RpZmljYXRpb25zIGZyb20gdGhl
IE5ldHdvcmtQcm9jZXNzLCBvbmx5IGZvciB0aGUgaG9zdHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4K
KworICAgICAgICBJZiB0aGUgcGFnZSdzIEphdmFTY3JpcHQgc2V0cyBhIGNvb2tpZSBieSBzZXR0
aW5nIGRvY3VtZW50LmNvb2tpZSwgd2Ugd2lsbCBub3QgaW52YWxpZGF0ZSB0aGUKKyAgICAgICAg
Y2FjaGUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIEluc3RlYWQsIHdlIHNldCB0aGUgY29va2ll
IGluIG91ciBpbi1tZW1vcnkgY29va2llIGJlZm9yZQorICAgICAgICBzZW5kaW5nIHRoZSBuZXcg
Y29va2llIHRvIHRoZSBOZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBGb3IgY29tcGF0aWJpbGl0
eSByZWFzb25zLCBhbnkgc3luYyBJUEMgdG8gYSBnaXZlbiBob3N0IHdpbGwgY3VycmVudGx5IGlu
dmFsaWRhdGUgdGhlIGNvb2tpZQorICAgICAgICBjYWNoZSBmb3IgdGhpcyBob3N0LiBUaGlzIGlz
IGJlY2F1c2UgdGhpcyBzeW5jaHJvbm91cyBsb2FkIG1heSBjYXVzZSBjb29raWVzIHRvIGdldCBz
ZXQKKyAgICAgICAgc3luY2hyb25vdXNseSBhbmQgdGhlIHBhZ2UgY291bGQgYWNjZXNzIGRvY3Vt
ZW50LmNvb2tpZSByaWdodCBhZnRlciB0aGUgc3luYyBYSFIuIFRoaXMgYmVoYXZpb3IKKyAgICAg
ICAgaXMgY292ZXJlZCBieSB0aGUgZm9sbG93aW5nIGV4aXN0aW5nIHRlc3Q6CisgICAgICAgIC0g
aHR0cC90ZXN0cy9jb29raWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUu
aHRtbAorCisgICAgICAgIEFub3RoZXIgbGltaXRhdGlvbiBvZiB0aGUgY3VycmVudCBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgY29va2llIGNhY2hlIGlzIHRoYXQgaXQgaXMgY3VycmVudGx5CisgICAg
ICAgIG9ubHkgbGV2ZXJhZ2VkIGZvciBmaXJzdCBwYXJ0eSBjb250ZW50LiBUaGlzIGlzIHN1Ym9w
dGltYWwgYW5kIGNvdWxkIGJlIGltcHJvdmVkIGluIGEgbGF0ZXIKKyAgICAgICAgaXRlcmF0aW9u
LiBIb3dldmVyLCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpbiBTYWZhcmkgaXMgdGhhdCB0aGlyZC1w
YXJ0eSBpZnJhbWVzIGRvIG5vdCBoYXZlCisgICAgICAgIGNvb2tpZSBhY2Nlc3MgdW5sZXNzIHRo
ZXkgcmVxdWVzdCBpdCB1c2luZyB0aGUgc3RvcmFnZSBhY2Nlc3MgQVBJLiBXZSBhbHNvIGN1cnJl
bnRseSBoYXZlCisgICAgICAgIGEgbGltaXQgb2YgNSBob3N0cyB3aXRoIGNhY2hlZCBjb29raWVz
IHBlciBXZWJQcm9jZXNzLgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sCisgICAgICAgICAgICAgICBo
dHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5o
dG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAg
ICAgICogbG9hZGVyL0Nvb2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpyZWxlYXNlQ3JpdGljYWxNZW1vcnkpOgorICAgICAgICAqIHBhZ2UvU2V0
dGluZ3MueWFtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXI6On5Db29raWVD
aGFuZ2VPYnNlcnZlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24pOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAg
ICAgKFdlYkNvcmU6Om5zQ29va2llc1RvQ29va2llVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Omh0dHBDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlSFRUUENvb2tpZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29raWVzRm9y
VVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0
cENvb2tpZXNGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyQ29va2llcyk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVz
Rm9yU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZXNGb3JET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpyZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3RlckNvb2tpZUNoYW5n
ZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6c3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcExpc3RlbmluZ0ZvckNv
b2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkb21Db29raWVzRm9ySG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkgY29uc3QpOgor
CiAyMDIwLTAyLTExICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVn
IDIwNzQyNDogQ3Jhc2ggaW4gV2ViQ29yZTo6UGFyc2VkQ29udGVudFR5cGU6OnBhcnNlQ29udGVu
dFR5cGUgd2hlbiBwYXJzaW5nIGludmFsaWQgTUlNRSB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRl
eCBjYTYzNjBhYTM3NTM5Y2Y2NDY5OTUzNWVlZDBmMjNhY2Y4MmFkMTlhLi5lM2FmMzMxMjEyZGNm
MGRiZTIxZGYzNzJlYTBlZGFmZmQxNzQ3ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAyMC0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBjb29raWUgY2FjaGUg
dG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBpbiBtb3N0IGNhc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc1OTMKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRp
IEtvaXZpc3RvLgorCisgICAgICAgIEFkZCBuZXcgQ0ZOZXR3b3JrIFNQSSB0byBDRk5ldHdvcmtT
UEkuaCBmb3Igb3BlbiBzb3VyY2UgYnVpbGRzIGFuZCBmb3IgdXNpbmcgcmVzcG9uZHNUb1NlbGVj
dG9yLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoKKwogMjAyMC0wMi0x
MSAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBX
cm9uZyBpbmNsdWRlcyBmb3IgaW50ZXJuYWwgU0RLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNmMjYxMTE3NDBlOWRk
MmFjYjEyZTY4NTBiZjExY2E3ZTg4ZjJiMWYuLjA5N2Y4M2JjMWU0MWZlY2EzNDIzNzk5ZThiY2E3
Y2Q1ZGI4NzE2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMjAtMDItMTIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVt
ZW50IGluLVdlYlByb2Nlc3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1
bWVudC5jb29raWUgaW4gbW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAy
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBTZWUg
V2ViQ29yZSBDaGFuZ2VMb2cuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZG9tQ29va2llc0Zvckhv
c3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5z
dWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzQWRkZWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0ZWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW46CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAg
ICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjb29raWVzQWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmNvb2tpZXNEZWxldGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVDb2NvYS5tbTogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmguCisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmlzRnVuY3Rpb25hbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29v
a2llQ2FjaGU6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
Q2FjaGU6OmNvb2tpZXNBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpj
b29raWVzRGVsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpjbGVhcik6
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjpjbGVhckZvckhvc3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmguCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvb2tpZUphcjo6aXNFbGlnaWJsZUZvckNhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llSmFyOjpjb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2ll
SmFyOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
QWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXNEZWxldGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjbGVhckNhY2hlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29va2llSmFyOjpjbGVhckNhY2hlRm9ySG9zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9vdmVycmlkZGVuTWVkaWFUeXBlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpXZWJQcm9jZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y29va2llSmFyKToKKwogMjAyMC0wMi0x
MSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJldmVydCByMjU1NjYyIGFzIGl0IHNlZW1zIHRvIGNhdXNlIGJsYW5rIHZpZXdzIGluIFNWQy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hh
c2hTZXQuaAppbmRleCBlMjY4N2U5YjA2MmRkYzg0OTQ1OTQyZTkwMjQ2YWE4MWE3ZjQ0NTU1Li5l
ZTJjMjkxMzc4Mzg4MjViOTlkYTYwNDc5MzI5OWEzYThkYjNlYzAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoU2V0LmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC0x
MTIsNiArMTEyLDggQEAgcHVibGljOgogICAgIC8vIHRoZW0gYXJlIG5ldyB0byB0aGUgc2V0LiBS
ZXR1cm5zIGZhbHNlIGlmIHRoZSBzZXQgaXMgdW5jaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEl0ZXJhdG9yVHlwZT4KICAgICBib29sIGFkZChJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJh
dG9yVHlwZSBlbmQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KKyAgICBi
b29sIHJlbW92ZShJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpOwogCiAgICAg
Ym9vbCByZW1vdmUoY29uc3QgVmFsdWVUeXBlJik7CiAgICAgYm9vbCByZW1vdmUoaXRlcmF0b3Ip
OwpAQCAtMjcwLDYgKzI3MiwxNiBAQCBpbmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjphZGQo
SXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUgZW5kKQogICAgIHJldHVybiBjaGFuZ2Vk
OwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVt
cGxhdGU8dHlwZW5hbWUgSXRlcmF0b3JUeXBlPgoraW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBW
Pjo6cmVtb3ZlKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKK3sKKyAgICBi
b29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICBmb3IgKEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisgICAgICAgIGNoYW5nZWQgfD0gcmVtb3ZlKCppdGVyKTsK
KyAgICByZXR1cm4gY2hhbmdlZDsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
VSwgdHlwZW5hbWUgVj4KIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZShpdGVy
YXRvciBpdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggZDI0Yjg1ZTJkYTI0MTM0NmUwMGI3
MzM3YTU5NjgzYmU2MTAyMGMyOC4uMjlmMGY1NmExMjI3MzE0OTRiYzNlMDM5YTU2MmM3ODFhZDM3
ODQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU1Niw2ICs1NTYsMTAgQEAKICNkZWZpbmUg
SEFWRV9ERVZJQ0VfSURFTlRJVFkgMQogI2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBf
X01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElP
U19GQU1JTFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkK
KyNkZWZpbmUgSEFWRV9DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSAxCisjZW5kaWYKKwogI2lm
IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAx
NTAwKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogI2RlZmluZSBIQVZFX0RBVEFfUFJPVEVDVElP
Tl9LRVlDSEFJTiAxCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZO
ZXR3b3JrU1BJLmgKaW5kZXggNjY1OGU3MjhjOWM5ODJhNmZmODJjMGNhNDE2NDhjMmQ0ZGMxMTQ0
MC4uYTkyMDc2MGIzZDY5YzIzYmU4YjY4OWU1NmY0OGZkZDdkOGM2NDM5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTM5MSw2ICszOTEsMTAg
QEAgV1RGX0VYVEVSTl9DX0VORAogCiBAaW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKCkK
ICsgKHZvaWQpX3NldFNoYXJlZEhUVFBDb29raWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdl
ICopc3RvcmFnZTsKKy0gKHZvaWQpX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
czooTlNTZXQ8TlNTdHJpbmcqPiogX19udWxsYWJsZSlkb21haW5MaXN0OworLSAodm9pZClfc2V0
Q29va2llc0FkZGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBDb29r
aWUqPiogYWRkZWRDb29raWVzLCBOU1VSTCogX19udWxsYWJsZSB1cmxGb3JBZGRlZENvb2tpZXMp
KWNvb2tpZXNBZGRlZEhhbmRsZXIgb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdCBfX251bGxhYmxl
KXF1ZXVlOworLSAodm9pZClfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVyOih2b2lkKF5fX251bGxh
YmxlKShOU0FycmF5PE5TSFRUUENvb2tpZSo+KiBfX251bGxhYmxlIGRlbGV0ZWRDb29raWVzLCBi
b29sIGRlbGV0ZWRBbGxDb29raWVzKSljb29raWVzRGVsZXRlZEhhbmRsZXIgb25RdWV1ZTooZGlz
cGF0Y2hfcXVldWVfdCBfX251bGxhYmxlKXF1ZXVlOworLSAoTlNBcnJheSogX19udWxsYWJsZSlf
Z2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJpbmcqKWRvbWFpbjsKIEBlbmQKIAogQGludGVyZmFj
ZSBOU1VSTFJlc3BvbnNlICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA4NThlODgzMjI0
NGRmMjhhYTQ1MTIwNDcxZGQwZTI5YTgxNDEzZTdmLi41NmU4MzJmNGRiMTBjZWMzYTAyZjA4MWFi
OTliZGQxMGMxZWJkNjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcxOTUsMTEgKzcx
OTUsMTQgQEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKICAgICBt
X2NhY2hlZERPTUNvb2tpZXMgPSBTdHJpbmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSgpCit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KGNvbnN0IFVSTCYgdXJsKQogewogICAgIC8vIFN5bmNocm9ub3VzIHJlc291
cmNlcyBsb2FkaW5nIGNhbiBzZXQgY29va2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVz
IGNhY2hlCiAgICAgLy8gaW4gdGhpcyBjYXNlLCB0byBiZSBzYWZlLgogICAgIGludmFsaWRhdGVE
T01Db29raWVDYWNoZSgpOworCisgICAgaWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisg
ICAgICAgIHBhZ2UtPmNvb2tpZUphcigpLmNsZWFyQ2FjaGVGb3JIb3N0KHVybC5ob3N0KCkudG9T
dHJpbmcoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlw
dChET01XcmFwcGVyV29ybGQmIHdvcmxkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1NjIwMjkx
YWJlYjNlMGM5OWRlOTY1NjVkMzFkYWRjMjk1MzYzYzAwLi4yZmM0ZGM2OWNlMWZhNjE0YWQ5NDM4
YzFmODdkOGE1ZjA0MTRhM2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTY0MCw3ICsxNjQw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENhY2hlZERPTUNvb2tpZXMoY29uc3QgU3RyaW5n
Jik7CiAgICAgYm9vbCBpc0RPTUNvb2tpZUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nv
b2tpZUNhY2hlRXhwaXJ5VGltZXIuaXNBY3RpdmUoKTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZURP
TUNvb2tpZUNhY2hlKCk7Ci0gICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkg
ZmluYWw7CisgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYp
IGZpbmFsOwogCiAgICAgYm9vbCBjYW5OYXZpZ2F0ZUludGVybmFsKEZyYW1lJiB0YXJnZXRGcmFt
ZSk7CiAgICAgYm9vbCBpc05hdmlnYXRpb25CbG9ja2VkQnlUaGlyZFBhcnR5SUZyYW1lUmVkaXJl
Y3RCbG9ja2luZyhGcmFtZSYgdGFyZ2V0RnJhbWUsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4
IDU4ODJlMWFiMWFiOTNiMzczZWEyM2E2YTAyODI0MWRlZWY1MzM4NjQuLjMyYWY3NDQ4MTQxYTc5
MWM4M2M2ZjI5MWVjZWRkYWRhMDFkMTlhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdl
UG9ydCkKICAgICBtX21lc3NhZ2VQb3J0cy5yZW1vdmUoJm1lc3NhZ2VQb3J0KTsKIH0KIAotdm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkK
K3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShjb25zdCBVUkwmKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAppbmRleCAwMDgzMWEyNjBiNTM3YTAwOTNhODgxMmRhNGJhNWZmZDVjMjU1NmE4
Li5iYzA0ZGY0OWQxYWU5Nzg5NjMwNWM4MjMxM2E2ZDVjMmY2MjQ0ZmNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjcmVhdGVkTWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsKICAgICB2
b2lkIGRlc3Ryb3llZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRM
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCByZWYoKSB7
IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVm
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5k
ZXggODRkYmE0MGU5Mjg2Y2QzZmQ4MzgzNGJhYzAyMDE2MDAxYTI3ZjUwNy4uMzAwMjkzYTg2NmRh
YzRiMjA4NTdiN2U3NTI0NDc4MTEwYzVjODlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
aApAQCAtNjAsNiArNjAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAorICAgIC8vIENvb2tpZSBDYWNoZS4KKyAg
ICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNoZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNh
Y2hlRm9ySG9zdChjb25zdCBTdHJpbmcmKSB7IH0KKwogICAgIHZpcnR1YWwgfkNvb2tpZUphcigp
OwogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0
IERvY3VtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggMmI3YmY0MjlkZDYyMmZjNzI3ZTEwMTMwMmVmZmVlZGQ1ZTRjMzg0Ny4uYzdlMGYzMWJl
NzIwNmZlZjhkYWFkMTg0NjFlNGY1YTI0YmJmN2Q2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTEwLDExICsxMTAsMTIgQEAgUmVmUHRyPFRocmVh
ZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXgKIAogdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgYXV0byByZXNvdXJjZVVSTCA9IHJlcXVl
c3QudXJsKCk7CiAgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKICAgICAg
ICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3du
Y2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVu
dCwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBX
VEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwotICAgIGNvbnRleHQuZGlkTG9hZFJl
c291cmNlU3luY2hyb25vdXNseSgpOworICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hy
b25vdXNseShyZXNvdXJjZVVSTCk7CiB9CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJy
b3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIGNvbnN0IFN0cmluZyYgaW5pdGlhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVs
ZWFzZS5jcHAKaW5kZXggMzE2ZDIxNjk3YmRiZWU5MmQxM2FlMzlkNjRhNzQ0ZjM0ZmYxN2E1Yy4u
NDExZjg3MmRhNGIxMmE4MGNkMzk3MzIwODJkNzM5ZThlNDZiZjdjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL01lbW9yeVJlbGVhc2UuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2hyb21l
LmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKKyNp
bmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZv
bnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC05OSw2ICsxMDAsMTAgQEAgc3RhdGlj
IHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9ub3VzIHN5bmNocm9ub3VzLCBNYWlu
dGFpbkJhY2tGb3J3YXJkQ2EKIAogICAgIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4o
KTsKIAorICAgIFBhZ2U6OmZvckVhY2hQYWdlKFtdKGF1dG8mIHBhZ2UpIHsKKyAgICAgICAgcGFn
ZS5jb29raWVKYXIoKS5jbGVhckNhY2hlKCk7CisgICAgfSk7CisKICAgICBmb3IgKGF1dG8mIGRv
Y3VtZW50IDogY29weVRvVmVjdG9yT2Y8UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERv
Y3VtZW50cygpKSkgewogICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlbGVhc2VNZW1v
cnkoKTsKICAgICAgICAgZG9jdW1lbnQtPmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLnlhbWwKaW5kZXggNWQzYTg4YzQ4ZjdhYTY3MGY4NGY4YjNmZTEx
YWJhMzExMDRiNGI0YS4uYTI3MWUxYzkzMzBmNDVlM2Y0MzYyODU1MjA3YzM5OGY5YmUwODRlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbApAQCAtMzYzLDYgKzM2Myw5IEBAIHJlcXVlc3RJ
ZGxlQ2FsbGJhY2tFbmFibGVkOgogSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFs
c2UKIAoraW5Qcm9jZXNzQ29va2llQ2FjaGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0
aGlyZFBhcnR5SWZyYW1lUmVkaXJlY3RCbG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY3BwCmluZGV4IDI5OTQyNzU2MjU4ZTkyNDNjM2IwYTEwMGIxYTNmNmY3
MmE4NDc1OGMuLmE0ZWVkZTE2YWRkNTZkZjVmNmYwN2Q1YTJkNTEzOWI2OGYwZTFhZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgog
I2luY2x1ZGUgIkhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCIKICNpbmNsdWRlICJSdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTU2
LDYgKzU3LDE0IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwZXJtaXRQcm9jZXNzVG9V
c2VDb29raWVBUEkoYm9vbCB2YWx1ZSkKICAgICAgICAgcmVtb3ZlUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKTsKIH0KIAorI2lmICFQTEFURk9S
TShDT0NPQSkKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZG9tQ29va2ll
c0Zvckhvc3QoY29uc3QgU3RyaW5nJikKK3sKKyAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lF
VCgpOworICAgIHJldHVybiB7IH07Cit9CisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKIAogYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggNjUwNmYx
MDc3MDY1YTRkMjFmNzk4MDE5MmYzZDc1MDdlYmMyM2E5ZS4uZjUxOTI2OWQzOTZmMjM3OWJjZTI5
ZjI4NmQ2OWJiZGQ4NjZmMmM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsNiArNjAsOSBAQCB0
eXBlZGVmIHN0cnVjdCBfU291cENvb2tpZUphciBTb3VwQ29va2llSmFyOwogCiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZU9ic2VydmVyLmgiCitPQkpDX0NMQVNT
IE5TQXJyYXk7CitPQkpDX0NMQVNTIE5TSFRUUENvb2tpZTsKK09CSkNfQ0xBU1MgTlNNdXRhYmxl
U2V0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc5LDYgKzgyLDE1IEBAIGVu
dW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3QgeyBBbGwsIEFs
bE9uU2l0ZXNXaXRob3V0VXNlckluCiBlbnVtIGNsYXNzIEZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlIDogdWludDhfdCB7IEFsbEJ1dENvb2tpZXMsIE5vbmUsIEFsbEJ1dENvb2tpZXNM
aXZlT25UZXN0aW5nVGltZW91dCwgQWxsQnV0Q29va2llc1JlcHJvVGVzdGluZ1RpbWVvdXQgfTsK
IGVudW0gY2xhc3MgU2hvdWxkQXNrSVRQIDogYm9vbCB7IE5vLCBZZXMgfTsKIAorI2lmIEhBVkUo
Q09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNlcnZlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNEZWxldGVk
KCkgPSAwOworfTsKKyNlbmRpZgorCiBjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtOTIsOSArMTA0LDE0IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBOU0hUVFBDb29raWVTdG9yYWdlICpuc0Nvb2tpZVN0b3JhZ2UoKSBjb25z
dDsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgV0VCQ09SRV9FWFBPUlQgfk5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpOworI2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkgfHwg
VVNFKENGVVJMQ09OTkVDVElPTikKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRy
PENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IGNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlm
aWVyKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Np
b25SZWY+JiYsIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmKTsKKyAgICBlbnVt
IGNsYXNzIElzSW5NZW1vcnlDb29raWVTdG9yZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VC
Q09SRV9FWFBPUlQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBSZXRhaW5Q
dHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+JiYsIElzSW5NZW1vcnlDb29raWVTdG9yZSA9IElzSW5NZW1vcnlDb29raWVTdG9yZTo6
Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQ
QUw6OlNlc3Npb25JRCk7CiAKICAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZv
dW5kYXRpb24gZGVmYXVsdCBzaG91bGQgYmUgdXNlZC4KQEAgLTE0Niw2ICsxNjMsMTQgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYp
IGNvbnN0OwogCisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZG9tQ29va2llc0Zv
ckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KTsKKworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNU
RU5FUl9BUEkpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdGFydExpc3RlbmluZ0ZvckNvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBTdHJpbmcm
IGhvc3QpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNo
YW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGhvc3RzKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIHN1cHBvcnRzQ29va2llQ2hh
bmdlTGlzdGVuZXJBUEkoKSBjb25zdDsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFi
bGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+KSBjb25zdDsKQEAgLTE3MywxMSArMTk4LDI3IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGVudW0gSW5jbHVkZUhUVFBP
bmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07CisgICAg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90
LCBJbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMp
IGNvbnN0OworICAgIE5TQXJyYXkgKmh0dHBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYp
IGNvbnN0OworICAgIE5TQXJyYXkgKmh0dHBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+Jiwg
TlNVUkwgKikgY29uc3Q7CisgICAgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQKSBjb25z
dDsKKyAgICB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYs
IE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJMICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0
IFNhbWVTaXRlSW5mbyYpIGNvbnN0OworICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBD
b29raWVTdG9yYWdlUmVmLCBOU0hUVFBDb29raWUgKikgY29uc3Q7CisjZW5kaWYKKworI2lmIEhB
VkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgdm9pZCByZWdpc3RlckNvb2tpZUNo
YW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29va2llQ2hh
bmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKTsKKyNlbmRpZgorCiAgICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CiAKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElP
TikKICAgICBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9ybVNlc3Np
b247CiAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IG1fcGxhdGZvcm1Db29r
aWVTdG9yYWdlOworICAgIGJvb2wgbV9pc0luTWVtb3J5Q29va2llU3RvcmUgeyBmYWxzZSB9Owog
I2VsaWYgVVNFKFNPVVApCiAgICAgc3RhdGljIHZvaWQgY29va2llc0RpZENoYW5nZShOZXR3b3Jr
U3RvcmFnZVNlc3Npb24qKTsKIApAQCAtMTkwLDYgKzIzMSwxMiBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OwogI2VuZGlmCiAKKyNpZiBIQVZFKENP
T0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIGJvb2wgbV9kaWRSZWdpc3RlckNvb2tpZUxp
c3RlbmVycyB7IGZhbHNlIH07CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gbV9zdWJzY3Jp
YmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8
Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPj4gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnM7CisjZW5kaWYK
KwogICAgIENyZWRlbnRpYWxTdG9yYWdlIG1fY3JlZGVudGlhbFN0b3JhZ2U7CiAKICNpZiBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0
LmNwcAppbmRleCBiMDFhN2U2NmJmMDkxNDk2MWQ2MzAxMDc0MWUyMjE3NWY5ZWZiOWI4Li5lMGQ4
NGY3YzUxNzk1ZWNlYmYzZTUwNmM5YjBhMjhlOGNiNWFiNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbkNGTmV0LmNwcApAQCAtNzMsMTEgKzczLDEyIEBAIFJldGFpblB0cjxDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZUNGU3RvcmFnZVNlc3Np
b25GCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQogCi1OZXR3b3JrU3RvcmFnZVNlc3Np
b246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldGFp
blB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYgcGxhdGZvcm1Db29raWVTdG9yYWdlKQorTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiBwbGF0Zm9ybVNlc3Np
b24sIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmIHBsYXRmb3JtQ29va2llU3Rv
cmFnZSwgSXNJbk1lbW9yeUNvb2tpZVN0b3JlIGlzSW5NZW1vcnlDb29raWVTdG9yZSkKICAgICA6
IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fcGxhdGZvcm1TZXNzaW9uKFdURk1vdmUo
cGxhdGZvcm1TZXNzaW9uKSkKKyAgICAsIG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKGlzSW5NZW1v
cnlDb29raWVTdG9yZSA9PSBJc0luTWVtb3J5Q29va2llU3RvcmU6OlllcykKIHsKLSAgICBBU1NF
UlQocHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpIHx8ICFwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpOwor
ICAgIEFTU0VSVChwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkgfHwgIXBsYXRmb3JtQ29va2llU3Rv
cmFnZSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgbV9wbGF0Zm9ybUNvb2tpZVN0
b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPyBXVEZNb3ZlKHBsYXRmb3JtQ29va2llU3Rv
cmFnZSkgOiBjb29raWVTdG9yYWdlKCk7CiB9CiAKQEAgLTg4LDEwICs4OSwxMCBAQCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCiAKIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UoKSBjb25zdAogewotICAgIGlmICghcHJvY2Vzc01heVVz
ZUNvb2tpZUFQSSgpKQorICAgIGlmICghcHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpICYmICFtX2lz
SW5NZW1vcnlDb29raWVTdG9yZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAg
aWYgKG1fcGxhdGZvcm1Db29raWVTdG9yYWdlKQogICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUNv
b2tpZVN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA5
ZTlhOTFiNzI1MGYzNjJiODU5NDVmM2Q3MDI3NmU2YWJiMWFkZDQyLi42OGFhMzIzZmI5MDJhNzUz
M2I0MWFlODBjMTk3Yzc3YTg0ZTU2YTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTgg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDIwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ0LDkgKzQ0LDE2IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKQorewor
I2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgdW5yZWdpc3RlckNvb2tp
ZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7CisjZW5kaWYKK30KKwogdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICBB
U1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdD
b29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBz
ZXRDb29raWU6KE5TSFRUUENvb2tpZSAqKWNvb2tpZV07CkBAIC01NSw3ICs2Miw3IEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiAK
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29r
aWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwp
CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2Fu
QWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0
b3JlKTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbnNDb29raWVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OmNvb2tpZXMuc2l6ZSgp
XSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiBjb29raWUgOiBjb29raWVzKQpAQCAtNjgsMTkgKzc1
LDE4IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3Rv
cjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWxldGVDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFj
Y2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBbbnNDb29r
aWVTdG9yYWdlKCkgZGVsZXRlQ29va2llOihOU0hUVFBDb29raWUgKiljb29raWVdOwogfQogCi1z
dGF0aWMgVmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29raWVWZWN0b3IoTlNBcnJheTxOU0hU
VFBDb29raWUgKj4gKm5zQ29va2llcykKK3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNU
b0Nvb2tpZVZlY3RvcihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqbnNDb29raWVzLCBjb25zdCBG
dW5jdGlvbjxib29sKE5TSFRUUENvb2tpZSAqKT4mIGZpbHRlciA9IHsgfSkKIHsKLSAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7Ci0KICAgICBWZWN0b3I8Q29va2llPiBjb29raWVzOwogICAgIGNvb2tpZXMucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShuc0Nvb2tpZXMuY291bnQpOwotICAgIGZvciAoTlNIVFRQQ29va2ll
ICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpCi0gICAgICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5k
KG5zQ29va2llKTsKLQorICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tp
ZXMpIHsKKyAgICAgICAgaWYgKCFmaWx0ZXIgfHwgZmlsdGVyKG5zQ29va2llKSkKKyAgICAgICAg
ICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsKKyAgICB9CiAgICAgcmV0dXJu
IGNvb2tpZXM7CiB9CiAKQEAgLTExOCw3ICsxMjQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAKIE5TSFRUUENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7
CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNj
ZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGF1dG8gY2ZD
b29raWVTdG9yYWdlID0gY29va2llU3RvcmFnZSgpOwogICAgIGlmICghY2ZDb29raWVTdG9yYWdl
IHx8IFtOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5fY29va2ll
U3RvcmFnZSA9PSBjZkNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBbTlNIVFRQQ29va2ll
U3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV07CkBAIC0xNTgsMTEgKzE2NCw2IEBAIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5n
UmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZVUkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQo
KSwgMCk7IC8vIFNldHRpbmcgZGlzayBjYWNoZSBzaXplIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5
IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEyNjU2ODE0PiBpcyBmaXhlZC4KICAgICBDRlVSTENhY2hl
U2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUuZ2V0KCksIFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNo
ZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAotICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpw
cm9jZXNzTWF5VXNlQ29va2llQVBJKCkpCi0gICAgICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbi5s
ZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBh
ZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTczLDIwICsxNzQsMjMgQEAgQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRl
bnRpZmllcikKICAgICByZXR1cm4gc3RvcmFnZVNlc3Npb24ubGVha1JlZigpOwogfQogCi1zdGF0
aWMgTlNBcnJheSAqaHR0cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9y
YWdlKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llcyhDRkhUVFBD
b29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwot
ICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIHJldHVybiBbW05TSFRUUENv
b2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGNvb2tpZXNdOworICAgIH0KICAg
ICAKICAgICBhdXRvIGNvb2tpZXMgPSBhZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29v
a2llcyhjb29raWVTdG9yYWdlKSk7CiAgICAgcmV0dXJuIFtOU0hUVFBDb29raWUgX2NmMm5zQ29v
a2llczpjb29raWVzLmdldCgpXTsKIH0KIAotc3RhdGljIHZvaWQgZGVsZXRlSFRUUENvb2tpZShD
RkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TSFRUUENvb2tpZSAqY29va2ll
KQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29v
a2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0hUVFBDb29raWUgKmNvb2tpZSkgY29uc3QK
IHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5B
Y2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ug
c2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIGRlbGV0ZUNvb2tpZTpjb29raWVdOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMjI2LDkgKzIzMCw5IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKE5TSFRUUENvb2tpZVN0b3JhZ2UgKnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5TVVJMICpt
CiAgICAgcmV0dXJuIGNvb2tpZXNQdHItPmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lk
IHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFn
ZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8pCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dG9yYWdlLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqdXJsLCBOU1VSTCAqbWFpbkRvY3VtZW50
VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbykgY29uc3QKIHsKLSAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlm
ICghY29va2llU3RvcmFnZSkgewogI2lmICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEIDwgMTAxNDAwKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBM
QVRGT1JNKEFQUExFVFYpCiAgICAgICAgIGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5j
ZXNSZXNwb25kVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1
bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVzOildKQpAQCAtMjU1LDIxICsyNTksMjIgQEAgc3RhdGlj
IHZvaWQgc2V0SFRUUENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dG9yYWdlLCBOU0FycmF5ICoKICNlbmRpZgogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tp
ZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmly
c3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VS
TCAqdXJsKQorTlNBcnJheSAqTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llc0ZvclVS
TChDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TVVJMICpmaXJzdFBhcnR5
LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBB
U1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdD
b29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9y
YWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7
CiAgICAgICAgIGNvb2tpZVN0b3JhZ2UgPSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQo
a0NGQWxsb2NhdG9yRGVmYXVsdCk7CisgICAgfQogCiAgICAgLy8gRklYTUU6IFN0b3AgY3JlYXRp
bmcgYSBuZXcgTlNIVFRQQ29va2llU3RvcmFnZSBvYmplY3QgZWFjaCB0aW1lIHdlIHdhbnQgdG8g
cXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAgICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxk
IGluc3RlYWQga2VlcCBhIE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KICAgICBS
ZXRhaW5QdHI8TlNIVFRQQ29va2llU3RvcmFnZT4gbnNDb29raWVTdG9yYWdlID0gYWRvcHROUyhb
W05TSFRUUENvb2tpZVN0b3JhZ2UgYWxsb2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6
Y29va2llU3RvcmFnZV0pOwotICAgIHJldHVybiBjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFn
ZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOworICAgIHJldHVybiBXZWJD
b3JlOjpjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNv
b2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBl
ZExpZmV0aW1lKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2
aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW3Vu
ZmlsdGVyZWRDb29raWVzIGNvdW50XTsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGZp
bHRlcmVkQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhD
YXBhY2l0eTpjb3VudF0pOwogCkBAIC0zMDIsMjcgKzMwNywyNiBAQCBzdGF0aWMgUmV0YWluUHRy
PE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlv
bmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5
ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkKK05TQXJy
YXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91
bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisgICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJ
VFA6OlllcyAmJiBzaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBw
YWdlSUQpKQogICAgICAgICByZXR1cm4gbmlsOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHNob3Vs
ZEFza0lUUCk7CiAjZW5kaWYKLSAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5j
b29raWVTdG9yYWdlKCkuZ2V0KCksIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKKyAg
ICByZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBh
cnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7CiB9CiAKLWVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3Qg
eyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9u
bHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMp
CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNG
b3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90
IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwor
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9y
VVJMKHNlc3Npb24sIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIHNob3VsZEFza0lUUCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwo
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNr
SVRQKTsKICAgICBpZiAoIVtjb29raWVzIGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5n
KCksIGZhbHNlIH07IC8vIFJldHVybiBhIG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRo
YXQgU3RyaW5nQnVpbGRlciB3b3VsZCBjcmVhdGUgYmVsb3cuCiAKQEAgLTM3NCwyMiArMzc4LDIy
IEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWYgY29va2llU3RvcmFnZSkKIAogc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxk
QXNrSVRQKSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRl
SFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNo
b3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFApIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNz
aW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwor
ICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5JiBoZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJl
dHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5
LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhl
YWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVI
VFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgcmV0
dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVy
RmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVs
ZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHks
IGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCiB2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNv
b2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNDU3
LDcgKzQ2MSw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJCiAgICAgcmF3Q29va2llcy5jbGVh
cigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNv
b2tpZXMgPSBjb29raWVzRm9yVVJMKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOworICAgIE5TQXJyYXkgKmNvb2tpZXMg
PSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNv
dW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChO
U1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpAQCAtNTE4LDcgKzUyMiw3IEBAIHZv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBob3N0CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIElu
Y2x1ZGVIdHRwT25seUNvb2tpZXMgaW5jbHVkZUh0dHBPbmx5Q29va2llcykKIHsKLSAgICBBU1NF
UlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29r
aWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6
Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAg
QkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC01NjYsNCArNTcwLDk4IEBAIHZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxs
VGltZSB0aW1lUG9pbnQpCiAgICAgW3N0b3JhZ2UgX3NhdmVDb29raWVzXTsKIH0KIAorVmVjdG9y
PENvb2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkb21Db29raWVzRm9ySG9zdChjb25zdCBT
dHJpbmcmIGhvc3QpCit7CisgICAgTlNBcnJheSAqbnNDb29raWVzID0gW25zQ29va2llU3RvcmFn
ZSgpIF9nZXRDb29raWVzRm9yRG9tYWluOihOU1N0cmluZyAqKWhvc3RdOworICAgIHJldHVybiBu
c0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihuc0Nvb2tpZXMsIFtdKE5TSFRUUENvb2tpZSAqY29va2ll
KSB7IHJldHVybiAhY29va2llLkhUVFBPbmx5OyB9KTsKK30KKworI2lmIEhBVkUoQ09PS0lFX0NI
QU5HRV9MSVNURU5FUl9BUEkpCisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZWdpc3Rl
ckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9kaWRSZWdp
c3RlckNvb2tpZUxpc3RlbmVycykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kaWRSZWdpc3Rl
ckNvb2tpZUxpc3RlbmVycyA9IHRydWU7CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29r
aWVzQWRkZWRIYW5kbGVyOl4oTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKiBuc0Nvb2tpZXMsIE5T
VVJMICp1cmxGb3JBZGRlZENvb2tpZXMpIHsKKyAgICAgICAgVmVjdG9yPENvb2tpZT4gY29va2ll
cyA9IG5zQ29va2llc1RvQ29va2llVmVjdG9yKG5zQ29va2llcyk7CisgICAgICAgIGF1dG8gaG9z
dCA9IFVSTCh1cmxGb3JBZGRlZENvb2tpZXMpLmhvc3QoKS50b1N0cmluZygpOworICAgICAgICBS
RUxFQVNFX0FTU0VSVCghaG9zdC5pc051bGwoKSk7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tp
ZUNoYW5nZU9ic2VydmVycy5maW5kKGhvc3QpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVD
aGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAo
YXV0byogb2JzZXJ2ZXIgOiBpdC0+dmFsdWUpCisgICAgICAgICAgICBvYnNlcnZlci0+Y29va2ll
c0FkZGVkKGhvc3QsIGNvb2tpZXMpOworICAgIH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpXTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxl
cjpeKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICosIGJvb2wgLypkZWxldGVkQWxsQ29va2llcyov
KSB7CisgICAgICAgIGZvciAoYXV0byYgb2JzZXJ2ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZl
cnMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBvYnNlcnZl
cnMpCisgICAgICAgICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNEZWxldGVkKCk7CisgICAgICAg
IH0KKyAgICB9IG9uUXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07Cit9CisKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp1bnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZO
ZWNlc3NhcnkoKQoreworICAgIGlmICghbV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzQWRkZWRI
YW5kbGVyOm5pbCBvblF1ZXVlOm5pbF07CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29r
aWVzRGVsZXRlZEhhbmRsZXI6bmlsIG9uUXVldWU6bmlsXTsKKyAgICBbbnNDb29raWVTdG9yYWdl
KCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczpuaWxdOworICAgIG1fZGlk
UmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgPSBmYWxzZTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29r
aWVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBy
ZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7CisKKyAgICBhdXRvJiBv
YnNlcnZlcnMgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5lbnN1cmUoaG9zdCwgW10geworICAg
ICAgICByZXR1cm4gSGFzaFNldDxDb29raWVDaGFuZ2VPYnNlcnZlcio+IHsgfTsKKyAgICB9KS5p
dGVyYXRvci0+dmFsdWU7CisgICAgQVNTRVJUKCFvYnNlcnZlcnMuY29udGFpbnMoJm9ic2VydmVy
KSk7CisgICAgb2JzZXJ2ZXJzLmFkZCgmb2JzZXJ2ZXIpOworCisgICAgaWYgKCFtX3N1YnNjcmli
ZWREb21haW5zRm9yQ29va2llQ2hhbmdlcykKKyAgICAgICAgbV9zdWJzY3JpYmVkRG9tYWluc0Zv
ckNvb2tpZUNoYW5nZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7Cisg
ICAgZWxzZSBpZiAoW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGNvbnRhaW5z
T2JqZWN0OihOU1N0cmluZyAqKWhvc3RdKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9zdWJz
Y3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKWhvc3Rd
OworICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVD
aGFuZ2VzOm1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzLmdldCgpXTsKK30KKwor
dm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VO
b3RpZmljYXRpb25zKENvb2tpZUNoYW5nZU9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBob3N0cykKK3sKKyAgICBib29sIHN1YnNjcmliZWRVUkxzQ2hhbmdlZCA9IGZh
bHNlOworICAgIGZvciAoYXV0byYgaG9zdCA6IGhvc3RzKSB7CisgICAgICAgIGF1dG8gaXQgPSBt
X2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5kKGhvc3QpOworICAgICAgICBBU1NFUlQoaXQgIT0g
bV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29r
aWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICBhdXRvJiBvYnNlcnZlcnMgPSBpdC0+dmFsdWU7CisgICAgICAgIEFTU0VSVChvYnNlcnZlcnMu
Y29udGFpbnMoJm9ic2VydmVyKSk7CisgICAgICAgIG9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVy
KTsKKyAgICAgICAgaWYgKG9ic2VydmVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY29v
a2llQ2hhbmdlT2JzZXJ2ZXJzLnJlbW92ZShpdCk7CisgICAgICAgICAgICBBU1NFUlQoW21fc3Vi
c2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAq
KWhvc3RdKTsKKyAgICAgICAgICAgIFttX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
cyByZW1vdmVPYmplY3Q6KE5TU3RyaW5nICopaG9zdF07CisgICAgICAgICAgICBzdWJzY3JpYmVk
VVJMc0NoYW5nZWQgPSB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIGlmIChzdWJzY3JpYmVk
VVJMc0NoYW5nZWQpCisgICAgICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBfc2V0U3Vic2NyaWJlZERv
bWFpbnNGb3JDb29raWVDaGFuZ2VzOm1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2Vz
LmdldCgpXTsKK30KKworLy8gRklYTUU6IFRoaXMgY2FuIGV2ZW50dWFsbHkgZ28gYXdheSwgdGhp
cyBpcyBtZXJlbHkgdG8gZW5zdXJlIGEgc21vb3RoIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBBUEku
Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5l
ckFQSSgpIGNvbnN0Cit7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc3VwcG9ydHNBUEkgPSBbbnND
b29raWVTdG9yYWdlKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0U3Vic2NyaWJl
ZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOildOworICAgIHJldHVybiBzdXBwb3J0c0FQSTsKK30K
KworI2VuZGlmIC8vIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggZTgxNzM0NGYx
OWQzOGVkYzE2NzZmYTNkNjg2OTYyZGM3ODZlYWNiZC4uZDczY2Y0N2I2MTA0ZjM1ZjhkMGFhMWQ3
ZjRiZTRiY2VkYzczYTZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNCw2
ICsxMjQsMTEgQEAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcygpCiAgICAgZm9yIChhdXRvJiBwb3J0IDogbV9wcm9jZXNzRW50YW5n
bGVkUG9ydHMpCiAgICAgICAgIG5ldHdvcmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkoKS5kaWRDbG9zZU1lc3NhZ2VQb3J0KHBvcnQpOwogCisjaWYgSEFWRShDT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0g
c3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zdG9wTGlz
dGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygqdGhpcywgbV9ob3N0c1dpdGhDb29r
aWVMaXN0ZW5lcnMpOworI2VuZGlmCisKICNpZiBVU0UoTElCV0VCUlRDKQogICAgIGlmIChtX3J0
Y1Byb3ZpZGVyKQogICAgICAgICBtX3J0Y1Byb3ZpZGVyLT5jbG9zZSgpOwpAQCAtNjMzLDYgKzYz
OCw0OCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgYwogICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+ZGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSk7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwg
Ym9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lv
bigpOworICAgIGlmICghbmV0d29ya1N0b3JhZ2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKKworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9B
UEkpCisgICAgaWYgKHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucykgeworICAg
ICAgICBBU1NFUlQoIW1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzLmNvbnRhaW5zKGhvc3QpKTsK
KyAgICAgICAgbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMuYWRkKGhvc3QpOworICAgICAgICBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24tPnN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZp
Y2F0aW9ucygqdGhpcywgaG9zdCk7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3Vi
c2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKTsKKyNlbmRpZgorCisgICAgY29tcGxl
dGlvbkhhbmRsZXIobmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5kb21Db29raWVzRm9ySG9zdChob3N0
KSk7Cit9CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VO
b3RpZmljYXRpb25zKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaG9zdHMpCit7CisgICAgYm9vbCBy
ZW1vdmVkID0gbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMucmVtb3ZlKGhvc3RzLmJlZ2luKCks
IGhvc3RzLmVuZCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOworCisg
ICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkpCisg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhvc3RzKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Q29va2llc0FkZGVkKGhvc3QsIGNv
b2tpZXMpLCAwKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0RlbGV0ZWQoKQoreworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tpZXNEZWxldGVkKCksIDApOworfQorCisjZW5kaWYKKwog
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiBleHRlbnNpb25IYW5kbGUsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAg
YXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggODZjYzYwZDFhOTk3NWU5YjU4NTMyYjI2MWJiY2FjYTA1YjI5OWE1Zi4uYzQzZTgyZGZi
MDk4NWI5ZjgyMGY2YjcwYzNiNDQ2NjI3OTE2ZTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
aApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CkBAIC04Nyw2ICs4OCw5IEBAIGNsYXNz
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcz4KICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9U
RV9VSSkKICAgICAsIHB1YmxpYyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50Cisj
ZW5kaWYKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgICwgcHVibGlj
IFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9ic2VydmVyCiAjZW5kaWYKICAgICAsIElQQzo6Q29ubmVj
dGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTI2Niw2ICsyNzAsMTYgQEAgcHJpdmF0ZToKIAog
ICAgIHVpbnQ2NF90IG5leHRNZXNzYWdlQmF0Y2hJZGVudGlmaWVyKEZ1bmN0aW9uPHZvaWQoKT4m
Jik7CiAKKyAgICB2b2lkIGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9v
bCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKT4mJik7CisKKyNpZiBIQVZFKENP
T0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tQ29va2ll
Q2hhbmdlTm90aWZpY2F0aW9ucyhjb25zdCBIYXNoU2V0PFN0cmluZz4mIGhvc3RzKTsKKworICAg
IC8vIFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9ic2VydmVyLgorICAgIHZvaWQgY29va2llc0FkZGVk
KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBmaW5h
bDsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCkgZmluYWw7CisjZW5kaWYKKwogICAgIHN0cnVj
dCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIgewogICAgICAgICBSZXNvdXJjZU5ldHdv
cmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0Fj
dGl2aXR5VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImKSA9IGRl
ZmF1bHQ7CkBAIC0zMjksNiArMzQzLDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX1JUQykK
ICAgICBOZXR3b3JrTUROU1JlZ2lzdGVyIG1fbWRuc1JlZ2lzdGVyOwogI2VuZGlmCisjaWYgSEFW
RShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0
c1dpdGhDb29raWVMaXN0ZW5lcnM7CisjZW5kaWYKIAogICAgIGJvb2wgbV9jYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVkIHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNDNiNWY2NzRlNTVlOGQ3NmIxMjgzZGQ3Yjcy
NDZiNjYwYjE4MTJhYy4uODVhNmVmMTIwYjEwMDVjNDA5ZmM1ZWEzNmU5ZmY5MmI1ZjNmNGNjMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOSw2ICsz
OSwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFy
dHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBP
cHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFj
Y2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCiAgICAgR2V0UmF3Q29va2llcyhVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3Vs
ZEFza0lUUCBzaG91bGRBc2tJVFApIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVz
KSBTeW5jaHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFt
ZSkKKyAgICBEb21Db29raWVzRm9ySG9zdChTdHJpbmcgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nv
b2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29r
aWVzKSBTeW5jaHJvbm91cworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisg
ICAgVW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhIYXNoU2V0PFN0cmlu
Zz4gaG9zdHMpCisjZW5kaWYKIAogICAgIFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3Ry
aW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRs
ZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQogICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0
b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggODJkYjAxMmRlNjAzNmE2
ZGRlMDhkNWViNDc1MGZmZTY2Mjk5MGFlNy4uY2E1MDVlZTVlZWI1ZDdiMWM1MjU3ODkyNDY0ODI3
OTg5OGQwODQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNz
YWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBA
IC02MjEsNiArNjIxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdX
ZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBbJyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViQ29y
ZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyc6IFsnPFdlYkNvcmUvTWVkaWFQbGF5ZXIu
aD4nXSwKICAgICAgICAgJ1dlYkNvcmU6OklTT1dlYlZUVEN1ZSc6IFsnPFdlYkNvcmUvSVNPVlRU
Q3VlLmg+J10sCisgICAgICAgICdzdHJ1Y3QgV2ViQ29yZTo6Q29va2llJzogWyc8V2ViQ29yZS9D
b29raWUuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCc6IFsn
PFdlYkNvcmUvRWxlbWVudENvbnRleHQuaD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6Oldl
YlVzZXJTY3JpcHREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgi
J10sCiAgICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGI2NGExZjdkNTJmNGMwOWZmY2YyMWEzMzkyZWYy
ZDE0NjgzOTUwOTUuLmU0NGRlYTFhMGNiYjNlYWYyZWM0NmU3NWU2MjQ1ZmI0YjI5OWZiOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbApAQCAtNTUsNiArNTUsMTMg
QEAgSFRUUFNVcGdyYWRlRW5hYmxlZDoKICAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkF1
dG9tYXRpYyBIVFRQUyB1cGdyYWRlIGZvciBrbm93biBzdXBwb3J0ZWQgc2l0ZXMiCiAgICBjYXRl
Z29yeTogZXhwZXJpbWVudGFsCiAKK0luUHJvY2Vzc0Nvb2tpZUNhY2hlRW5hYmxlZDoKKyAgIHR5
cGU6IGJvb2wKKyAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQorICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJJ
bi1Qcm9jZXNzIENvb2tpZSBDYWNoZSIKKyAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIklu
LVByb2Nlc3MgRE9NIENvb2tpZSBDYWNoZSIKKyAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKKwog
VGhpcmRQYXJ0eUlmcmFtZVJlZGlyZWN0QmxvY2tpbmdFbmFibGVkOgogICAgdHlwZTogYm9vbAog
ICAgZGVmYXVsdFZhbHVlOiB0cnVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMu
dHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3NDg5NGJkMjdiYWY1ODk1MWU2
YWYyNDFjODc5OThiYzVjNWViYWU4Li5hNWQwYmUxNDI3MWY2MzA2ZjgzNmI4ZmRiZDdkNDIwZjI5
NTI0NmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTYyNCw2ICs2MjQsNyBAQCBXZWJQcm9jZXNzL1dlYlBh
Z2UvUGFnZUJhbm5lci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29u
dHJvbGxlci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5j
cHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb250ZXh0TWVudS5jcHAKK1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVDYWNoZS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTFmYzZmNzM3
MmIxNjAzZTVkZDI1ZWIwYTRhNjAxYzZjOWJlMjNlYS4uZDI0YTgwNDhlMzQ1MDQ2MzQyN2M5MzA0
MzJlZjkwMDM5NzUxMWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNjEzLDYgKzYxMyw3
IEBAIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKIFdlYlByb2Nl
c3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLm1tCiAKIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkubW0KK1dlYlByb2Nl
c3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29jb2EvV2ViUGFnZUNvY29hLm1tCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUmVt
b3RlT2JqZWN0UmVnaXN0cnkuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0ODg1YjQ2MzJkZTljODhjZjAyNjVkNWVlZjlhYjA3
NTRiZjU1ODcuLmZlNzc4M2VmNGRjMmMxN2NiMWNiZjQ5ZGU3MDFlYTQ1MTgxZDZjN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTQz
LDYgKzk0Myw3IEBACiAJCTQ2NkJDMDNDMUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY2QkMwMzkxRkEyNjZDOTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmggKi87IH07CiAJCTQ2NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNv
dXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyLmggKi87IH07CiAJCTQ2N0U0M0U4MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0
YVN0b3JlUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQ
YXJhbWV0ZXJzLmggKi87IH07CisJCTQ2ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBXZWJDb29r
aWVDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi87IH07CiAJCTQ2
QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2
QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNz
VGltZXIuaCAqLzsgfTsKIAkJNDZCMDUyNDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdl
YkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9OwogCQk0
NkJFQjZENzIyRkI5QkQ3MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAv
KiBTdG9yYWdlQXJlYS5oICovOyB9OwpAQCAtMzQ4NCw2ICszNDg1LDggQEAKIAkJNDY3MUZGMUQy
MzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2NzFGRjFFMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0NjgwOUE3QTIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29va2llQ2FjaGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNv
b2tpZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNv
b2tpZUNhY2hlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4
MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lvbmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByb3Zpc2lvbmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2ODM1NjlCMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25h
bFBhZ2VQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1
Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NS
ZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5
OTcsOCArNzAwMCw4IEBACiAJCQkJMUE0MjJGOEExOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9y
eURlbGVnYXRlUHJpdmF0ZS5oICovLAogCQkJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBX
S0hUVFBDb29raWVTdG9yZS5oICovLAogCQkJCTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBX
S0hUVFBDb29raWVTdG9yZS5tbSAqLywKLQkJCQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyog
V0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8sCiAJCQkJNTFEMTI0ODYxRTczNEFFMzAwMkIy
ODIwIC8qIFdLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCAqLywKKwkJCQlERjQ2MkUwRTIzRjIy
RjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8sCiAJCQkJMUFCNDBF
RTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdLTWVudUl0ZW1JZGVudGlmaWVycy5tbSAqLywKIAkJCQkx
QUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUgLyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5o
ICovLAogCQkJCTFBNUIxQzRGMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCAqLywK
QEAgLTg0MjIsNiArODQyNSw4IEBACiAJCQkJQkM3MkI5RjkxMUU2NDc2QjAwMUVCNEVBIC8qIFdl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmggKi8sCiAJCQkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMy
IC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLywKIAkJCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIg
LyogV2ViQ29udGV4dE1lbnUuaCAqLywKKwkJCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyog
V2ViQ29va2llQ2FjaGUuY3BwICovLAorCQkJCTQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBX
ZWJDb29raWVDYWNoZS5oICovLAogCQkJCTVDN0ZCNDZFMjFFOTdDMEIwMDlFMzI0MSAvKiBXZWJD
b29raWVKYXIuY3BwICovLAogCQkJCTVDN0ZCNDZGMjFFOTdDMEMwMDlFMzI0MSAvKiBXZWJDb29r
aWVKYXIuaCAqLywKIAkJCQkxQTVCMUM1MjE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRM
b2FkZXIuY3BwICovLApAQCAtMTAyNTQsNyArMTAyNTksNiBAQAogCQkJCTJENTg3NUJGMjE5QjUz
MTUwMDcwQjlBQSAvKiBFZGl0YWJsZUltYWdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmggaW4gSGVh
ZGVycyAqLywKLQkJCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQ
cml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyog
RW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4IC8q
IEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVGQjE0OTZC
NTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNjYy
LDYgKzEwNjY2LDcgQEAKIAkJCQk1MUFDQkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4
dE1lbnVQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIwM0I5
IC8qIFdlYkNvbnRleHRNZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjRERTI1
MTY4RkE0NDgwMEM5NEFGQyAvKiBXZWJDb250ZXh0U3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDY4MDlBN0MyM0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzdGQjQ3MDIxRTk3REM1MDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1MDEzMTVCOTREMDA5N0E3QkMgLyogV2ViQ29va2ll
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMwOTM0NDgxMzE1QjkyMjAwOTdBN0JDIC8q
IFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDcyMSw3ICsx
MDcyNiw2IEBACiAJCQkJRkVFNDNGRDMxRTY3QjAxODAwNzdENkQxIC8qIFdlYkluc3BlY3Rvcklu
dGVycnVwdERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFREJEQ0Q3MUU2OEQyMDUw
MEE1OUY4RiAvKiBXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDOEUyQTM2MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JN
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREY0NjJFMEYyM0YyMkY1NTAwRUZGMzVGIC8q
IFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQx
Mjc1RDczODAwQkM3QkQwIC8qIFdlYkluc3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3Bl
Y3RvclVJLmggaW4gSGVhZGVycyAqLywKQEAgLTEwOTM0LDYgKzEwOTM4LDcgQEAKIAkJCQkwRjA0
MTU5RTIzQzdDQzczMDA2MEEzRTIgLyogV0tDb250ZW50Vmlld01hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTExMDY1RkMyM0VDOTU3MjAwNTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTEwNjVGRDIzRUM5NTdCMDA1NDQzRDYgLyogV0tDb250ZW50V29ybGRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREY0NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8q
IFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUUyNEIxMTIw
RTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJGOTgx
OTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTExMDE3LDYgKzExMDIyLDcgQEAKIAkJCQkxQTQy
MkY4QjE4QjI5QjU0MDBEOENEOTYgLyogV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCNjJFNzMxMjE0MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogV0tIVFRQ
Q29va2llU3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1
RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjZB
NEI1MjMyMDk2MjQwMEVBNEQ0NCAvKiBXS0hUVFBDb29raWVTdG9yZVJlZi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTExMEFFMEQxMzNDMTZDQjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTIzQ0YxQzEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJh
c2VDRy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAyOGJj
MTJjMzQyM2Y5ZjI4MzU2YzNhODRjNjEyMjRjZmE0ZWQ3ZTk5Li4yYmI0NzllMzlkZTliNmU5NTdm
MjljZmI3ZWU4NTA2NGEwMGU1OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5o
IgorI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUg
IldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCkBAIC0yMzQsNiArMjM1LDE4IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2Vk
KEhUVFBDb29raWVBY2NlcHRQb2xpY3kKICAgICBtX2Nvb2tpZUFjY2VwdFBvbGljeSA9IG5ld1Bv
bGljeTsKIH0KIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCit2b2lkIE5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuY29va2llSmFyKCkuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOwor
fQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0RlbGV0ZWQoKQorewor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tpZUphcigpLmNvb2tpZXNEZWxldGVkKCk7
Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lkIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNTFmZGYzNTQ1MjRkOTE1ZGRmNmVkNTk0YzdkMmMw
ZmQ4NjMzZDlkMS4uNzZkMjY2NTIwYzI2MGQxNTNiOTQxZDczOWJjNDQ5MDE4YzZlNGEzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJl
c291cmNlUmVzcG9uc2U7CitzdHJ1Y3QgQ29va2llOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIGVudW0gY2xhc3MgSFRUUENv
b2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CkBAIC04Myw2ICs4NCwxMSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGNvb2tpZXNFbmFibGVkKCkgY29uc3Q7CiAKKyNpZiBIQVZFKENPT0tJRV9DSEFO
R0VfTElTVEVORVJfQVBJKQorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9z
dCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxl
dGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
SVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9s
aWN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDJh
YTY4ODZlNTdhNTk5Y2JjMTdjMzVmNmI3NGU5OWQyYWIzYTg5ZTUuLjY5OTNmYTdlZjQ2MGY3NTc2
ZDYxY2ZlNGI2NDNkMjkwZjgyZDhkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDExIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0T25MaW5lU3RhdGUoYm9vbCBpc09u
TGluZSk7CiAgICAgQ29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpOwogCisjaWYgSEFWRShDT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSkKKyAgICBDb29raWVzQWRkZWQoU3RyaW5nIGhvc3QsIFZlY3Rvcjxz
dHJ1Y3QgV2ViQ29yZTo6Q29va2llPiBjb29raWVzKTsKKyAgICBDb29raWVzRGVsZXRlZCgpOwor
I2VuZGlmCisKICAgICBDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpIC0+IChXZWJDb3JlOjpNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIEFzeW5jCiAgICAgTWVz
c2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXIgcG9ydCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YmM2NmQ5
ZDRmYzZkMmY2NzY2NTBlY2M2ZGFhNWExYWEwNjA3MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1t
CkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJD
b29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2luTWVt
b3J5U3RvcmFnZVNlc3Npb24pIHsKKyAgICAgICAgU3RyaW5nIHNlc3Npb25OYW1lID0gbWFrZVN0
cmluZygiV2ViS2l0SW5Qcm9jZXNzU3RvcmFnZS0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOwor
ICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwor
ICAgICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9u
Q29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0
KCkpKTsKKyAgICAgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxOZXR3
b3JrU3RvcmFnZVNlc3Npb24+KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpLCBX
VEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSwgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpJc0luTWVtb3J5Q29va2llU3RvcmU6Olllcyk7CisgICAgfQorICAgIHJl
dHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNh
Y2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mM2VkMjBjNjQ1MzNhYzc0YWI1YmZiZDdkYTNiMzg3Nzg1Yzlj
Njc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2Jvb2wgV2ViQ29va2ll
Q2FjaGU6OmlzU3VwcG9ydGVkKCkKK3sKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJf
QVBJKQorICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBldmVudHVhbGx5IGJlIHJlbW92ZWQsIHRoaXMg
aXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJLgor
ICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc3VwcG9ydHNDb29raWVDaGFuZ2VM
aXN0ZW5lckFQSSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworU3Ry
aW5nIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0
KCkudG9TdHJpbmcoKTsKKyAgICBpZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRh
aW5zKGhvc3QpKSB7CisgICAgICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgICAgIGJv
b2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpEb21Db29raWVzRm9ySG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIHN1YnNj
cmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6RG9tQ29va2llc0Zvckhvc3Q6OlJlcGx5KGNvb2tpZXMpLCAwKSkK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHBydW5lQ2FjaGVJZk5lY2Vzc2FyeSgp
OworICAgICAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5hZGQoaG9zdCk7CisgICAgICAg
IGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAgICAgICAgICAgIGluTWVtb3J5U3RvcmFn
ZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKKyAgICB9CisgICAgcmV0dXJuIGluTWVtb3J5
U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywg
dXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6
Ok5vKS5maXJzdDsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6c2V0Q29va2llc0Zyb21ET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQoreworICAgIFN0cmluZyBob3N0ID0g
dXJsLmhvc3QoKS50b1N0cmluZygpOworICAgIGlmIChtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFn
ZS5jb250YWlucyhob3N0KSkKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENv
b2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdl
SUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7Cit9CisKK3ZvaWQgV2ViQ29va2ll
Q2FjaGU6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxDb29r
aWU+JiBjb29raWVzKQoreworICAgIGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY29u
dGFpbnMoaG9zdCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgY29va2llIDog
Y29va2llcykKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29r
aWUpOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAg
Y2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y2xlYXIoKQoreworI2lmIEhBVkUo
Q09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgaWYgKCFtX2hvc3RzV2l0aEluTWVtb3J5
U3RvcmFnZS5pc0VtcHR5KCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdl
Tm90aWZpY2F0aW9ucyhtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZSksIDApOworI2VuZGlmCisg
ICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY2xlYXIoKTsKKyAgICBtX2luTWVtb3J5U3Rv
cmFnZVNlc3Npb24gPSBudWxscHRyOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjbGVhckZv
ckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIGF1dG8gaXQgPSBtX2hvc3RzV2l0aElu
TWVtb3J5U3RvcmFnZS5maW5kKGhvc3QpOworICAgIGlmIChpdCA9PSBtX2hvc3RzV2l0aEluTWVt
b3J5U3RvcmFnZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ob3N0c1dpdGhJbk1l
bW9yeVN0b3JhZ2UucmVtb3ZlKGl0KTsKKyAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lcyhWZWN0b3I8U3RyaW5nPiB7IGhvc3QgfSk7CisjaWYgSEFW
RShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVuc3Vic2NyaWJlRnJvbUNvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnMoSGFzaFNldDxTdHJpbmc+IHsgaG9zdCB9KSwgMCk7CisjZW5k
aWYKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCkKK3sK
KyAgICAvLyBXZSBtYXkgd2FudCB0byByYWlzZSB0aGlzIGxpbWl0IGlmIHdlIHN0YXJ0IHVzaW5n
IHRoZSBjYWNoZSBmb3IgdGhpcmQtcGFydHkgaWZyYW1lcy4KKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbWF4Q2FjaGVkSG9zdHMgPSA1OworCisgICAgd2hpbGUgKG1faG9zdHNXaXRoSW5NZW1v
cnlTdG9yYWdlLnNpemUoKSA+PSBtYXhDYWNoZWRIb3N0cykKKyAgICAgICAgY2xlYXJGb3JIb3N0
KCptX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5yYW5kb20oKSk7Cit9CisKKyNpZiAhUExBVEZP
Uk0oQ09DT0EpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkNvb2tpZUNhY2hlOjppbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwor
ICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfQorI2VuZGlmCisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkNvb2tpZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQwYzQxNmU1MjBjZWRjMjQ2YmUxMmZhNTNm
YmNmZTc4NmYzNTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvb2tpZUNhY2hlIHsKK3B1YmxpYzoKKyAgICBX
ZWJDb29raWVDYWNoZSgpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWQoKTsKKwor
ICAgIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMp
OworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
Zyk7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworCisg
ICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgY2xlYXJGb3JIb3N0KGNvbnN0IFN0cmluZyYpOwor
Citwcml2YXRlOgorICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgaW5NZW1vcnlT
dG9yYWdlU2Vzc2lvbigpOworICAgIHZvaWQgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7CisKKyAg
ICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2U7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9pbk1lbW9yeVN0b3Jh
Z2VTZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCAzMjU4MzA1Yzc4
OWQ3NzVmZTE1YzFjMDgyOGMzNmU5ZTJmMmE4NjA5Li41YWIzMjQ1Y2NkNWRhYzFjZjUzMWQ0ZGVi
NGQwZTFhODVkMDY5MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJh
bWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC04OCw2ICs4OSwyMyBAQCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMo
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAogfQogI2Vu
ZGlmCiAKK2Jvb2wgV2ViQ29va2llSmFyOjppc0VsaWdpYmxlRm9yQ2FjaGUoV2ViRnJhbWUmIGZy
YW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNl
VVJMKSBjb25zdAoreworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkgPyBmcmFtZS5wYWdl
KCktPmNvcmVQYWdlKCkgOiBudWxscHRyOworICAgIGlmICghcGFnZSB8fCAhcGFnZS0+c2V0dGlu
Z3MoKS5pblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFtX2NhY2hlLmlzU3VwcG9ydGVkKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIC8vIEZvciBub3csIHdlIG9ubHkgY2FjaGUgY29va2llcyBmb3IgZmlyc3QtcGFy
dHkgY29udGVudC4gVGhpcmQtcGFydHkgY29va2llIGNhY2hpbmcgaXMgYSBiaXQgbW9yZSBjb21w
bGljYXRlZCBkdWUgdG8gcGFydGl0aW9uaW5nIGFuZCBzdG9yYWdlIGFjY2Vzcy4KKyAgICBSZWdp
c3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiB7IHJlc291cmNlVVJMIH07CisgICAgaWYgKHJl
c291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFibGVEb21haW4geyBmaXJzdFBhcnR5
Rm9yQ29va2llcyB9ID09IHJlc291cmNlRG9tYWluOworfQorCiBTdHJpbmcgV2ViQ29va2llSmFy
Ojpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6
OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAgLTEwMCwxMiAr
MTE4LDE3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKICNl
bmRpZgogCisgICAgYXV0byBzYW1lU2l0ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhk
b2N1bWVudCk7CisgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IENvb2tpZUphcjo6c2hv
dWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAgICAgYXV0byBmcmFtZUlE
ID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdl
KCktPmlkZW50aWZpZXIoKTsKIAorICAgIGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndlYkZyYW1l
LCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAgICByZXR1cm4g
bV9jYWNoZS5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsK
KwogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNz
ZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBw
YWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpLCBzaG91bGRB
c2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBp
bmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHko
Y29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKICAgICAgICAgcmV0dXJu
IHsgfTsKIAogICAgIHJldHVybiBjb29raWVTdHJpbmc7CkBAIC0xMjMsMTAgKzE0NiwzNCBAQCB2
b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAorICAgIGF1
dG8gc2FtZVNpdGVJbmZvID0gQ29va2llSmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOwogICAg
IGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgYXV0byBwYWdlSUQgPSB3
ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9N
KGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCks
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29r
aWVTdHJpbmcpLCAwKTsKKyAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9j
dW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgbV9jYWNoZS5zZXRD
b29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworCisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29r
aWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29r
aWVTdHJpbmcpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNvb2tpZXNBZGRlZChjb25z
dCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQor
eworICAgIG1fY2FjaGUuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2b2lkIFdl
YkNvb2tpZUphcjo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIG1fY2FjaGUuY29va2llc0RlbGV0
ZWQoKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGUoKQoreworICAgIG1fY2Fj
aGUuY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGVGb3JIb3N0KGNv
bnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBtX2NhY2hlLmNsZWFyRm9ySG9zdChob3N0KTsKIH0K
IAogYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1
bWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkNvb2tpZUphci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmgKaW5kZXggNTI5NDhhOTFkZTVmMTQ1MjQ5OTEwZGQ0OTgzNDQ1MjAwMDFhOTdmYi4u
OGVkYmUzMTRlY2FmYTdkYWI0ZWVmYmUyZTgyNWY4MGRmMjk0ZDk0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsMTMgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJXZWJDb29raWVDYWNoZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQ29va2llSmFyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDb29r
aWU7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJDb29raWVKYXIgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6Q29va2llSmFyIHsKQEAgLTM5LDggKzQ0LDE4IEBAIHB1YmxpYzoK
ICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CiAgICAgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgZmlu
YWw7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworCiBw
cml2YXRlOgogICAgIFdlYkNvb2tpZUphcigpOworCisgICAgdm9pZCBjbGVhckNhY2hlKCkgZmlu
YWw7CisgICAgdm9pZCBjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAg
ICBib29sIGlzRWxpZ2libGVGb3JDYWNoZShXZWJGcmFtZSYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNvbnN0OworCisgICAgbXV0YWJs
ZSBXZWJDb29raWVDYWNoZSBtX2NhY2hlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDUwOGJj
YzEwMmViYTAwNjIwMzZiY2RjNWU4MDY2M2Y2MDM0ZmQwZTMuLmJkYTFlYWYxZWQ4YTQ2MWE2YWUy
YjI3ZDhhYzAxNDZhMzM5YzRiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI+KCksCiAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksCiAg
ICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBX
ZWJDb29raWVKYXI6OmNyZWF0ZSgpLAorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5j
b29raWVKYXIoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQ+KCp0aGlzKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+
KCkKICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRi
MjQwOWI5OTRkM2FlMGQyYjQzMTRiMzQ1YzI4ZjFhNGQzN2M3MDkuLjIxYjVhMmJjMTNmZWVlYWQ5
NGE2ODQ2Y2M1NTY1MzkzMGJmYjBjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5o
IgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTIwNSw2ICsyMDYs
NyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1fd2ViSW5zcGVjdG9ySW50ZXJy
dXB0RGlzcGF0Y2hlcihXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpjcmVhdGUoKSkK
ICAgICAsIG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAs
IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgp
KQorICAgICwgbV9jb29raWVKYXIoV2ViQ29va2llSmFyOjpjcmVhdGUoKSkKICAgICAsIG1fZG5z
UHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBp
ZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hl
ZEhvc3RzLmNsZWFyKCk7IH0pCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAg
LCBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggODUzYzY2MGVjNjQ2NDU2M2E3NjU2NDM2MTkyOTU2NTRiMDczNTM0ZS4uMTU5MDkzNjBhZDdj
YjA5MTEzN2I3Y2FmMzM1MzVjZGUyYzk3ZGQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0xMjAsNiArMTIwLDcgQEAgY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBXYXls
YW5kQ29tcG9zaXRvckRpc3BsYXk7CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Owog
Y2xhc3MgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFz
cyBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE7CiBjbGFzcyBXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3M7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTI5Myw2ICsyOTQsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSogYXV0b21hdGlvblNlc3Npb25Qcm94eSgpIHsg
cmV0dXJuIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eS5nZXQoKTsgfQogCiAgICAgV2ViQ2FjaGVT
dG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKCkgeyByZXR1cm4gbV9jYWNoZVN0
b3JhZ2VQcm92aWRlci5nZXQoKTsgfQorICAgIFdlYkNvb2tpZUphciYgY29va2llSmFyKCkgeyBy
ZXR1cm4gbV9jb29raWVKYXIuZ2V0KCk7IH0KICAgICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciYg
d2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIoKSB7IHJldHVybiBtX3dlYlNvY2tldENoYW5uZWxNYW5h
Z2VyOyB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTU0LDYgKzU1Niw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZjxXZWJDYWNoZVN0b3JhZ2VQcm92aWRlcj4gbV9jYWNo
ZVN0b3JhZ2VQcm92aWRlcjsKKyAgICBSZWY8V2ViQ29va2llSmFyPiBtX2Nvb2tpZUphcjsKICAg
ICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciBtX3dlYlNvY2tldENoYW5uZWxNYW5hZ2VyOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ05ldHdvcms+IG1fbGliV2ViUlRDTmV0d29yazsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MWVkMWQyY2QwZTgxZjM2ZjFjYzY0ZjFjZmFhODA0M2Q1MjBlYjVjLi5hZDkwYzhl
OGEzMmI2ZDE2YTdmMGU2YWIzZGVhM2FjYzhhODQzMjgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBb
V0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nlc3MgY29va2llIGNhY2hlIHRvIGF2b2lk
IHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4gbW9zdCBjYXNlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTkzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1j
b29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNv
b2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9kb2N1bWVudC1jb29raWUtZHVy
aW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocDogQWRkZWQuCisK
IDIwMjAtMDItMTEgIEphc29uIExhd3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAg
ICAgICAgWyBpT1Mgd2syIF0gZmFzdC92aWV3cG9ydC9pb3Mvd2lkdGgtaXMtZGV2aWNlLXdpZHRo
LW92ZXJmbG93aW5nLWJvZHktb3ZlcmZsb3ctaGlkZGVuLXRhbGwuaHRtbCBpcyBmbGFreSBmYWls
aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50
LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2ct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0YWY5MjRiZmI3ZTgxZWIzZDBjZjRkM2Q0MmNiMjMw
OGE0NDUzNTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tp
ZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMSBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmln
aHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlz
ICJ0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tp
ZSkgaXMgImZvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVy
LXNob3dNb2RhbERpYWxvZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhYjg0N2IzM2Q1MTk4ZTk2NmRhN2Iw
OGNlYjg4NjBhMWQ2OTQ3ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sCkBA
IC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXByZS5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxpbnB1dCBpZD0idGVzdEJ1dHRvbiIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iQ2xpY2sg
bWUiPjwvaW5wdXQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgZG9jdW1lbnQu
Y29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEgc2hvd01vZGFsRGlhbG9nKCkg
Y2FsbCcpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLnNldENhbk9wZW5XaW5kb3dzKCk7CisKK3Rlc3RCdXR0b24ub25jbGlj
ayA9ICgpID0+IHsKKyAgICBkb2N1bWVudC5jb29raWUgPSAidGVzdEtleT10ZXN0VmFsdWUiOwor
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tp
ZSknLCAndGVzdEtleT10ZXN0VmFsdWUnKTsKKworICAgIHNob3dNb2RhbERpYWxvZygicmVzb3Vy
Y2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocD9jb29raWUtbmFtZT1mb28mY29va2llLXZhbHVl
PWJhciZkZXN0aW5hdGlvbj1jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbCIpOworCisgICAgLy8gVGhp
cyBpcyBzbyB0aGUgY29va2llIGdldHMgcmVtb3ZlZCBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0Lgor
ICAgIHJlZ2lzdGVyQ29va2llRm9yQ2xlYW51cCgnZm9vPWJhcjsgcGF0aD0vJyk7CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCdub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKScsICdm
b289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZScpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisK
K29ubG9hZCA9ICgpID0+IHsKKyAgICBpbnRlcm5hbHMud2l0aFVzZXJHZXN0dXJlKCgpID0+IHsK
KyAgICAgICAgdGVzdEJ1dHRvbi5jbGljaygpOworICAgIH0pOworfTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcG9zdC5qcyc+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMv
ZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUt
cGFyc2luZy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NmNWFkYThjNDlhZjUyNDcwN2VhZDJm
YTE4YjRlNjNkMTkyMjNhNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEyIEBACitUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5z
IHRoZSByaWdodCB2YWx1ZSBhZnRlciBhIHNob3dNb2RhbERpYWxvZygpIGNhbGwKKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNv
b2tpZSkgaXMgInRlc3RLZXk9dGVzdFZhbHVlIgorUEFTUyBub3JtYWxpemVDb29raWUoY29va2ll
c0luRnJhbWUpIGlzICJmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXpl
Q29va2llKGRvY3VtZW50LmNvb2tpZSkgaXMgImZvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlIgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVy
aW5nLWlmcmFtZS1wYXJzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMv
ZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZm
MjllZmI1MzhjYTQ3ZTIyOGI3MzhmYzUzZDk1MDQ0OWRhOWNjYmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1p
ZnJhbWUtcGFyc2luZy5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXByZS5qcyc+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdHMg
dGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgYWZ0ZXIgYSBzaG93
TW9kYWxEaWFsb2coKSBjYWxsJyk7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24g
dmFsaWRhdGVDb29raWVzRHVyaW5nQ2hpbGRGcmFtZVBhcnNpbmcoX2Nvb2tpZXNJbkZyYW1lKQor
eworICAgIGNvb2tpZXNJbkZyYW1lID0gX2Nvb2tpZXNJbkZyYW1lOworICAgIHNob3VsZEJlRXF1
YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGNvb2tpZXNJbkZyYW1lKScsICdmb289YmFyOyB0
ZXN0S2V5PXRlc3RWYWx1ZScpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXpl
Q29va2llKGRvY3VtZW50LmNvb2tpZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUnKTsK
KyAgICBmaW5pc2hKU1Rlc3QoKTsgICAgCit9CisKK29ubG9hZCA9ICgpID0+IHsKKyAgICBkb2N1
bWVudC5jb29raWUgPSAidGVzdEtleT10ZXN0VmFsdWUiOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSknLCAndGVzdEtleT10ZXN0VmFs
dWUnKTsKKworICAgIC8vIFRoaXMgaXMgc28gdGhlIGNvb2tpZSBnZXRzIHJlbW92ZWQgYXQgdGhl
IGVuZCBvZiB0aGUgdGVzdC4KKyAgICByZWdpc3RlckNvb2tpZUZvckNsZWFudXAoJ2Zvbz1iYXI7
IHBhdGg9LycpOworCisgICAgbGV0IGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlm
cmFtZSIpOworICAgIGlmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZl
LnBocD9jb29raWUtbmFtZT1mb28mY29va2llLXZhbHVlPWJhciZkZXN0aW5hdGlvbj1kb2N1bWVu
dC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1sIjsKKyAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7Cit9OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0n
cmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wb3N0LmpzJz48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMv
Y2xvc2UtbW9kYWwtZGlhbG9nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMv
cmVzb3VyY2VzL2Nsb3NlLW1vZGFsLWRpYWxvZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmNTY4ZGZlZGJi
MmQzYTk1YTJmMTQzZTZlZjFjODIxZWFjYmRhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Nsb3NlLW1vZGFsLWRpYWxvZy5odG1s
CkBAIC0wLDAgKzEsNyBAQAorPHNjcmlwdD4KK29ubG9hZCA9ICgpID0+IHsKKyAgICBjbG9zZSgp
OworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICB0ZXN0UnVubmVyLmFib3J0TW9k
YWwoKTsKK307Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1p
ZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvZG9j
dW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMmQ3YWI3YTM5MjJkMTA4YTFmNjAyNzk5ZTY2ODM0MzVhODk5MjRmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9kb2N1bWVudC1j
b29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMyBAQAor
PHNjcmlwdD4KK3RvcC52YWxpZGF0ZUNvb2tpZXNEdXJpbmdDaGlsZEZyYW1lUGFyc2luZyhkb2N1
bWVudC5jb29raWUpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvc2V0LWNvb2tpZS1hbmQtc2VydmUucGhw
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU5ZjQzZjI5ZTg1MmRkY2MwOWY5NjlmODk5ZThmM2UxMmFiYWE4NDgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2Vz
L3NldC1jb29raWUtYW5kLXNlcnZlLnBocApAQCAtMCwwICsxLDEzIEBACis8P3BocAorJGNvb2tp
ZU5hbWUgPSAkX0dFVFsnY29va2llLW5hbWUnXTsKKyRjb29raWVWYWx1ZSA9ICRfR0VUWydjb29r
aWUtdmFsdWUnXTsKKyRkZXN0aW5hdGlvbiA9ICRfR0VUWydkZXN0aW5hdGlvbiddOworaGVhZGVy
KCJDb250ZW50LVR5cGU6IHRleHQvaHRtbCIpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1z
dG9yZSIpOworaGVhZGVyKCJTZXQtQ29va2llOiAke2Nvb2tpZU5hbWV9PSR7Y29va2llVmFsdWV9
OyBwYXRoPS8iKTsKKyRmcCA9IGZvcGVuKCRkZXN0aW5hdGlvbiwgJ3JiJyk7CitoZWFkZXIoIkNv
bnRlbnQtTGVuZ3RoOiAiIC4gZmlsZXNpemUoJGRlc3RpbmF0aW9uKSk7CisKK2ZwYXNzdGhydSgk
ZnApOworZXhpdDsKKz8+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390925</attachid>
            <date>2020-02-17 09:57:04 -0800</date>
            <delta_ts>2020-02-17 09:58:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207593-20200217095702.patch</filename>
            <type>text/plain</type>
            <size>95477</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM2MTQ5ZWM3NmRkZmUwYTQzZWNkMzI4
MjY0YTAwMTgxMWM4NTE2ZjEuLmY0ZmY4NTg2MTg3Mzg3YTJiYWQ0NjU4ZDM3OGVjMzhmMDA3ZGZl
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nl
c3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4g
bW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYnVpbGQgdGltZSBmbGFn
cyBmb3IgbmV3IGZlYXR1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAtMDItMTcgIERvbiBPbG1zdGVhZCAg
PGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBidWlsdGluIHRh
cmdldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBhOGJlNDhiNGRjZDg0YzE5NDhjZTdlYmNkZjVkYjhlZTg1MTYx
MTdjLi4xYjFmOGI1OGZmM2JhNWFhOTM5MzMxMjJmMGEzYjhlMjM4ZTVjOTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsODUgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nlc3MgY29v
a2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4gbW9zdCBj
YXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBJbXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBE
T00gY29va2llIGNhY2hlIGZvciBzZXJ2aW5nIGBkb2N1bWVudC5jb29raWVgIHJlcXVlc3RzIGZy
b20gSmF2YVNjcmlwdC4KKworICAgICAgICBUaGUgZmlyc3QgdGltZSBkb2N1bWVudC5jb29raWUg
aXMgY2FsbGVkIGZvciBhIGdpdmVuIGhvc3QsIHRoZSBXZWJQcm9jZXNzIHdpbGwgcHVsbCBpbiBh
bGwgdGhlCisgICAgICAgIG5vbi1IVFRQT25seSBjb29raWVzIGZvciB0aGF0IGhvc3QgZnJvbSB0
aGUgTmV0d29ya1Byb2Nlc3MgKHN0aWxsIHZpYSBzeW5jIElQQykgYW5kIHN0b3JlIHRoZW0KKyAg
ICAgICAgaW4gYW4gaW4tbWVtb3J5IGNvb2tpZSBzdG9yZS4gTGF0ZXIgZG9jdW1lbnQuY29va2ll
IGNhbGxzIGZvciB0aGlzIGhvc3QgZnJvbSB0aGlzIFdlYlByb2Nlc3MKKyAgICAgICAgd2lsbCB0
aGVuIGxldmVyYWdlIHRoZSBpbi1tZW1vcnkgY29va2llIHN0b3JlIGFuZCBhdm9pZCBkb2luZyBh
IHN5bmMgSVBDIHRvIHRoZSBOZXR3b3JrUHJvY2VzcworICAgICAgICBlbnRpcmVseS4KKworICAg
ICAgICBUbyBtYWludGFpbiB0aGUgaW4tcHJvY2VzcyBjb29raWUgc3RvcmUgdXAtdG8tZGF0ZSwg
dGhlIFdlYlByb2Nlc3Mgc3Vic2NyaWJlIGZvciBjb29raWUtY2hhbmdlCisgICAgICAgIG5vdGlm
aWNhdGlvbnMgZnJvbSB0aGUgTmV0d29ya1Byb2Nlc3MsIG9ubHkgZm9yIHRoZSBob3N0cyBpdCBp
cyBpbnRlcmVzdGVkIGluLgorCisgICAgICAgIElmIHRoZSBwYWdlJ3MgSmF2YVNjcmlwdCBzZXRz
IGEgY29va2llIGJ5IHNldHRpbmcgZG9jdW1lbnQuY29va2llLCB3ZSB3aWxsIG5vdCBpbnZhbGlk
YXRlIHRoZQorICAgICAgICBjYWNoZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSW5zdGVhZCwg
d2Ugc2V0IHRoZSBjb29raWUgaW4gb3VyIGluLW1lbW9yeSBjb29raWUgYmVmb3JlCisgICAgICAg
IHNlbmRpbmcgdGhlIG5ldyBjb29raWUgdG8gdGhlIE5ldHdvcmtQcm9jZXNzLgorCisgICAgICAg
IEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGFueSBzeW5jIElQQyB0byBhIGdpdmVuIGhvc3Qg
d2lsbCBjdXJyZW50bHkgaW52YWxpZGF0ZSB0aGUgY29va2llCisgICAgICAgIGNhY2hlIGZvciB0
aGlzIGhvc3QuIFRoaXMgaXMgYmVjYXVzZSB0aGlzIHN5bmNocm9ub3VzIGxvYWQgbWF5IGNhdXNl
IGNvb2tpZXMgdG8gZ2V0IHNldAorICAgICAgICBzeW5jaHJvbm91c2x5IGFuZCB0aGUgcGFnZSBj
b3VsZCBhY2Nlc3MgZG9jdW1lbnQuY29va2llIHJpZ2h0IGFmdGVyIHRoZSBzeW5jIFhIUi4gVGhp
cyBiZWhhdmlvcgorICAgICAgICBpcyBjb3ZlcmVkIGJ5IHRoZSBmb2xsb3dpbmcgZXhpc3Rpbmcg
dGVzdDoKKyAgICAgICAgLSBodHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1p
bnZhbGlkYXRlcy1jYWNoZS5odG1sCisKKyAgICAgICAgQW5vdGhlciBsaW1pdGF0aW9uIG9mIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZSBjb29raWUgY2FjaGUgaXMgdGhhdCBpdCBp
cyBjdXJyZW50bHkKKyAgICAgICAgb25seSBsZXZlcmFnZWQgZm9yIGZpcnN0IHBhcnR5IGNvbnRl
bnQuIFRoaXMgaXMgc3Vib3B0aW1hbCBhbmQgY291bGQgYmUgaW1wcm92ZWQgaW4gYSBsYXRlcgor
ICAgICAgICBpdGVyYXRpb24uIEhvd2V2ZXIsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIFNhZmFy
aSBpcyB0aGF0IHRoaXJkLXBhcnR5IGlmcmFtZXMgZG8gbm90IGhhdmUKKyAgICAgICAgY29va2ll
IGFjY2VzcyB1bmxlc3MgdGhleSByZXF1ZXN0IGl0IHVzaW5nIHRoZSBzdG9yYWdlIGFjY2VzcyBB
UEkuIFdlIGFsc28gY3VycmVudGx5IGhhdmUKKyAgICAgICAgYSBsaW1pdCBvZiA1IGhvc3RzIHdp
dGggY2FjaGVkIGNvb2tpZXMgcGVyIFdlYlByb2Nlc3MuCisKKyAgICAgICAgVGVzdHM6IGh0dHAv
dGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5n
LWlmcmFtZS1wYXJzaW5nLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlk
TG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29va2llSmFyLmg6CisgICAgICAgICogbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogcGFnZS9NZW1vcnlS
ZWxlYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSk6Cisg
ICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVDaGFuZ2VP
YnNlcnZlcjo6fkNvb2tpZUNoYW5nZU9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxl
dGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb29raWVzVG9Db29raWVWZWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpuc0Nvb2tpZVN0b3JhZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVIVFRQ
Q29va2llIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0SFRUUENvb2tpZXNGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llc0ZvclVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpmaWx0ZXJDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llc0ZvclVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpnZXRSYXdDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp1bnJl
Z2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRvbUNvb2tpZXNGb3JIb3N0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0
ZW5lckFQSSBjb25zdCk6CisKIDIwMjAtMDItMTcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTEZDXSBSZW1vdmUgUmVwbGFjZWRCb3g6Om1fbGF5b3V0Qm94CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwppbmRleCBmN2FkMmJkZDgxZTYzZDA4NGY4ZmZjMjkzNWM2N2Y2MmRiYzRi
YmZkLi4yNjI5ODQ5M2VjNzY0NTg5YTM4NjAxYTUyNDIyZWFmYTI5MGU5YjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2ViUHJv
Y2VzcyBjb29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBp
biBtb3N0IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEFkZCBuZXcgQ0ZOZXR3b3Jr
IFNQSSB0byBDRk5ldHdvcmtTUEkuaCBmb3Igb3BlbiBzb3VyY2UgYnVpbGRzIGFuZCBmb3IgdXNp
bmcgcmVzcG9uZHNUb1NlbGVjdG9yLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaDoKKwogMjAyMC0wMi0xNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIFtDTWFrZV0gVXNlIGJ1aWx0aW4gdGFyZ2V0cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjY2U3
ZTdmYzlmNTljOWQ4YjM2YzI2MDVmN2FjYmU0YmU2OTI2NWI1Li5jODBlODcxMjA0MjFiOTI5MGE3
MTA4YzUwMDNjZDYzYTQzNWYwOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTAy
LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1bQ29j
b2FdIEltcGxlbWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9pZCBzeW5jIElQ
QyBmb3IgZG9jdW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTYwMjcwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAg
ICAgICAgU2VlIFdlYkNvcmUgQ2hhbmdlTG9nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNv
b2tpZXNGb3JIb3N0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0FkZGVkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNE
ZWxldGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0FkZGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVzRGVsZXRlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjppc0Z1bmN0aW9uYWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6Y29va2llc0ZvckRPTSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVDYWNoZTo6Y29va2llc0RlbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNo
ZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6Y2xlYXJGb3JIb3N0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OnBydW5lQ2FjaGVJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVKYXI6OmlzRWxpZ2libGVGb3JDYWNoZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZUphcjo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUph
cjo6Y29va2llc0FkZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
RGVsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y2xlYXJDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y2xlYXJDYWNoZUZvckhvc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fb3ZlcnJpZGRlbk1l
ZGlhVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvb2tpZUphcik6CisK
IDIwMjAtMDItMTcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAg
ICAgICBbQ01ha2VdIFVzZSBidWlsdGluIHRhcmdldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAppbmRleCBlMjY4N2U5YjA2
MmRkYzg0OTQ1OTQyZTkwMjQ2YWE4MWE3ZjQ0NTU1Li5lZTJjMjkxMzc4Mzg4MjViOTlkYTYwNDc5
MzI5OWEzYThkYjNlYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKKysr
IGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC0xMTIsNiArMTEyLDggQEAgcHVibGljOgog
ICAgIC8vIHRoZW0gYXJlIG5ldyB0byB0aGUgc2V0LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBzZXQg
aXMgdW5jaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KICAgICBi
b29sIGFkZChJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KKyAgICBib29sIHJlbW92ZShJdGVyYXRvclR5cGUg
YmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpOwogCiAgICAgYm9vbCByZW1vdmUoY29uc3QgVmFsdWVU
eXBlJik7CiAgICAgYm9vbCByZW1vdmUoaXRlcmF0b3IpOwpAQCAtMjcwLDYgKzI3MiwxNiBAQCBp
bmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjphZGQoSXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVy
YXRvclR5cGUgZW5kKQogICAgIHJldHVybiBjaGFuZ2VkOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3JU
eXBlPgoraW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlKEl0ZXJhdG9yVHlwZSBi
ZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKK3sKKyAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAg
ICBmb3IgKEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisg
ICAgICAgIGNoYW5nZWQgfD0gcmVtb3ZlKCppdGVyKTsKKyAgICByZXR1cm4gY2hhbmdlZDsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KIGlubGluZSBi
b29sIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZShpdGVyYXRvciBpdCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKaW5kZXggODY4NmRiOWI3ZTdmZDAwZGZjNGQxOWFlYTY4YmMxYzNiN2IwNmJiZC4uNjA0
MDE4NGI2MDIzZWIwMmNkMTgwNDI0NGM3NTBjNjM1MzcxM2NkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZl
LmgKQEAgLTU1Niw2ICs1NTYsMTAgQEAKICNkZWZpbmUgSEFWRV9ERVZJQ0VfSURFTlRJVFkgMQog
I2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkKKyNkZWZpbmUgSEFWRV9DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSAxCisjZW5kaWYKKwogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQTEFURk9STShJT1NfRkFN
SUxZKQogI2RlZmluZSBIQVZFX0RBVEFfUFJPVEVDVElPTl9LRVlDSEFJTiAxCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKaW5kZXggNjY1OGU3
MjhjOWM5ODJhNmZmODJjMGNhNDE2NDhjMmQ0ZGMxMTQ0MC4uYTkyMDc2MGIzZDY5YzIzYmU4YjY4
OWU1NmY0OGZkZDdkOGM2NDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmgKQEAgLTM5MSw2ICszOTEsMTAgQEAgV1RGX0VYVEVSTl9DX0VORAogCiBA
aW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKCkKICsgKHZvaWQpX3NldFNoYXJlZEhUVFBD
b29raWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdlICopc3RvcmFnZTsKKy0gKHZvaWQpX3Nl
dFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczooTlNTZXQ8TlNTdHJpbmcqPiogX19u
dWxsYWJsZSlkb21haW5MaXN0OworLSAodm9pZClfc2V0Q29va2llc0FkZGVkSGFuZGxlcjoodm9p
ZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBDb29raWUqPiogYWRkZWRDb29raWVzLCBOU1VS
TCogX19udWxsYWJsZSB1cmxGb3JBZGRlZENvb2tpZXMpKWNvb2tpZXNBZGRlZEhhbmRsZXIgb25R
dWV1ZTooZGlzcGF0Y2hfcXVldWVfdCBfX251bGxhYmxlKXF1ZXVlOworLSAodm9pZClfc2V0Q29v
a2llc0RlbGV0ZWRIYW5kbGVyOih2b2lkKF5fX251bGxhYmxlKShOU0FycmF5PE5TSFRUUENvb2tp
ZSo+KiBfX251bGxhYmxlIGRlbGV0ZWRDb29raWVzLCBib29sIGRlbGV0ZWRBbGxDb29raWVzKSlj
b29raWVzRGVsZXRlZEhhbmRsZXIgb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdCBfX251bGxhYmxl
KXF1ZXVlOworLSAoTlNBcnJheSogX19udWxsYWJsZSlfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNT
dHJpbmcqKWRvbWFpbjsKIEBlbmQKIAogQGludGVyZmFjZSBOU1VSTFJlc3BvbnNlICgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAwMmE2NTM0N2FjNDllZjAxMmIxOWIzODY3ZTkzOTUwNzk2
ZWQ4YmZhLi5mZTBhMDQ5NTgxNTJhNWZmZjQxYzRjZmMwZGI2MmM1NDkyMDRhZjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDIsMTEgKzcyMDIsMTQgQEAgdm9pZCBEb2N1bWVudDo6
aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKICAgICBtX2NhY2hlZERPTUNvb2tpZXMgPSBTdHJp
bmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSgp
Cit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYg
dXJsKQogewogICAgIC8vIFN5bmNocm9ub3VzIHJlc291cmNlcyBsb2FkaW5nIGNhbiBzZXQgY29v
a2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVzIGNhY2hlCiAgICAgLy8gaW4gdGhpcyBj
YXNlLCB0byBiZSBzYWZlLgogICAgIGludmFsaWRhdGVET01Db29raWVDYWNoZSgpOworCisgICAg
aWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmNvb2tpZUphcigp
LmNsZWFyQ2FjaGVGb3JIb3N0KHVybC5ob3N0KCkudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgRG9j
dW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA2ZjFmMTQ1MWQ3NzU3NDcyYmEyOWRiYTlkMTdlNTky
ZmY4YTk5NTI5Li5hMTBmMGU4NzI3YTk0NjRjOGM5NDM4MWM0YzI0ZDEyMWQyMjIyZGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMTYzOCw3ICsxNjM4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldENhY2hlZERPTUNvb2tpZXMoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBpc0RPTUNvb2tp
ZUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGltZXIuaXNB
Y3RpdmUoKTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7Ci0gICAgdm9p
ZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkgZmluYWw7CisgICAgdm9pZCBkaWRMb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5O
YXZpZ2F0ZUludGVybmFsKEZyYW1lJiB0YXJnZXRGcmFtZSk7CiAgICAgYm9vbCBpc05hdmlnYXRp
b25CbG9ja2VkQnlUaGlyZFBhcnR5SUZyYW1lUmVkaXJlY3RCbG9ja2luZyhGcmFtZSYgdGFyZ2V0
RnJhbWUsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDU4ODJlMWFiMWFiOTNiMzczZWEyM2E2
YTAyODI0MWRlZWY1MzM4NjQuLjMyYWY3NDQ4MTQxYTc5MWM4M2M2ZjI5MWVjZWRkYWRhMDFkMTlh
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
QEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3ll
ZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKICAgICBtX21lc3NhZ2VQb3J0
cy5yZW1vdmUoJm1lc3NhZ2VQb3J0KTsKIH0KIAotdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkKK3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBVUkwmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAwMDgzMWEy
NjBiNTM3YTAwOTNhODgxMmRhNGJhNWZmZDVjMjU1NmE4Li5iYzA0ZGY0OWQxYWU5Nzg5NjMwNWM4
MjMxM2E2ZDVjMmY2MjQ0ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVk
TWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsKICAgICB2b2lkIGRlc3Ryb3llZE1lc3NhZ2VQb3J0
KE1lc3NhZ2VQb3J0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hy
b25vdXNseSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCByZWYoKSB7IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggODRkYmE0MGU5Mjg2Y2QzZmQ4Mzgz
NGJhYzAyMDE2MDAxYTI3ZjUwNy4uMzAwMjkzYTg2NmRhYzRiMjA4NTdiN2U3NTI0NDc4MTEwYzVj
ODlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29u
c3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKTsKIAorICAgIC8vIENvb2tpZSBDYWNoZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNo
ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJpbmcm
KSB7IH0KKwogICAgIHZpcnR1YWwgfkNvb2tpZUphcigpOwogcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0IERvY3VtZW50Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMmI3YmY0MjlkZDYyMmZjNzI3
ZTEwMTMwMmVmZmVlZGQ1ZTRjMzg0Ny4uYzdlMGYzMWJlNzIwNmZlZjhkYWFkMTg0NjFlNGY1YTI0
YmJmN2Q2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtMTEwLDExICsxMTAsMTIgQEAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXgKIAogdm9pZCBUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
CiB7CisgICAgYXV0byByZXNvdXJjZVVSTCA9IHJlcXVlc3QudXJsKCk7CiAgICAgaWYgKGlzPFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKICAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQog
ICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQs
IG9wdGlvbnMpOwotICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSgpOwor
ICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXNvdXJjZVVSTCk7CiB9
CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFN0cmluZyYgaW5p
dGlhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggMzE2ZDIxNjk3
YmRiZWU5MmQxM2FlMzlkNjRhNzQ0ZjM0ZmYxN2E1Yy4uNDExZjg3MmRhNGIxMmE4MGNkMzk3MzIw
ODJkNzM5ZThlNDZiZjdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlS
ZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCkBAIC05OSw2ICsxMDAsMTAgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVt
b3J5KFN5bmNocm9ub3VzIHN5bmNocm9ub3VzLCBNYWludGFpbkJhY2tGb3J3YXJkQ2EKIAogICAg
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAorICAgIFBhZ2U6OmZvckVhY2hQ
YWdlKFtdKGF1dG8mIHBhZ2UpIHsKKyAgICAgICAgcGFnZS5jb29raWVKYXIoKS5jbGVhckNhY2hl
KCk7CisgICAgfSk7CisKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9yT2Y8
UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSkgewogICAgICAgICBk
b2N1bWVudC0+c3R5bGVTY29wZSgpLnJlbGVhc2VNZW1vcnkoKTsKICAgICAgICAgZG9jdW1lbnQt
PmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwK
aW5kZXggZmQ5MDE2NDcyMGVjNzU5MjlmYzVjZGYyZDEwZmQxODg1Y2FkZGY1ZS4uNjNmNTk5OGU0
ZGYzNTJmMGFjZDk0YmYwYjUyYTlmMmExM2ExOWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
eWFtbApAQCAtMzYxLDYgKzM2MSw5IEBAIHJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkOgogSFRU
UFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIAoraW5Qcm9jZXNzQ29va2llQ2Fj
aGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0aGlyZFBhcnR5SWZyYW1lUmVkaXJlY3RC
bG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4
IDI5OTQyNzU2MjU4ZTkyNDNjM2IwYTEwMGIxYTNmNmY3MmE4NDc1OGMuLmE0ZWVkZTE2YWRkNTZk
ZjVmNmYwN2Q1YTJkNTEzOWI2OGYwZTFhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkhUVFBDb29raWVBY2Nl
cHRQb2xpY3kuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTU2LDYgKzU3LDE0IEBAIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpwZXJtaXRQcm9jZXNzVG9Vc2VDb29raWVBUEkoYm9vbCB2YWx1ZSkK
ICAgICAgICAgcmVtb3ZlUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nl
c3NSYXdDb29raWVzKTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK1ZlY3RvcjxDb29raWU+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJikK
K3sKKyAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOworICAgIHJldHVybiB7IH07Cit9
CisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKIAogYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDY1YTRkMjFmNzk4MDE5MmYzZDc1
MDdlYmMyM2E5ZS4uZjUxOTI2OWQzOTZmMjM3OWJjZTI5ZjI4NmQ2OWJiZGQ4NjZmMmM3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjAsNiArNjAsOSBAQCB0eXBlZGVmIHN0cnVjdCBfU291cENvb2tp
ZUphciBTb3VwQ29va2llSmFyOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29v
a2llU3RvcmFnZU9ic2VydmVyLmgiCitPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5T
SFRUUENvb2tpZTsKK09CSkNfQ0xBU1MgTlNNdXRhYmxlU2V0OwogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTc5LDYgKzgyLDE1IEBAIGVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckluCiBl
bnVtIGNsYXNzIEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIDogdWludDhfdCB7IEFs
bEJ1dENvb2tpZXMsIE5vbmUsIEFsbEJ1dENvb2tpZXNMaXZlT25UZXN0aW5nVGltZW91dCwgQWxs
QnV0Q29va2llc1JlcHJvVGVzdGluZ1RpbWVvdXQgfTsKIGVudW0gY2xhc3MgU2hvdWxkQXNrSVRQ
IDogYm9vbCB7IE5vLCBZZXMgfTsKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9B
UEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVk
KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNEZWxldGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBj
bGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpA
QCAtOTIsOSArMTA0LDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBOU0hUVFBDb29r
aWVTdG9yYWdlICpuc0Nvb2tpZVN0b3JhZ2UoKSBjb25zdDsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgV0VCQ09SRV9FWFBPUlQgfk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwor
I2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+
IGNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKENGU3RyaW5nUmVmIGlkZW50aWZp
ZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiYmKTsKKyAgICBlbnVtIGNsYXNzIElzSW5NZW1vcnlDb29raWVT
dG9yZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJl
Zj4mJiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYsIElzSW5NZW1vcnlDb29r
aWVTdG9yZSA9IElzSW5NZW1vcnlDb29raWVTdG9yZTo6Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAKICAgICAv
LyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQg
YmUgdXNlZC4KQEAgLTE0Niw2ICsxNjMsMTQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRl
U2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPENvb2tpZT4gZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0
KTsKKworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29v
a2llQ2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2ll
Q2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGhvc3RzKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdDsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKQEAg
LTE3MywxMSArMTk4LDI3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVI
VFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Y29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90LCBJbmNsdWRlU2VjdXJlQ29va2llcywg
U2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMpIGNvbnN0OworICAgIE5TQXJyYXkgKmh0
dHBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpIGNvbnN0OworICAgIE5TQXJyYXkgKmh0
dHBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TVVJMICpmaXJzdFBhcnR5
LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiwgTlNVUkwgKikgY29uc3Q7CisgICAgTlNB
cnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQKSBjb25zdDsKKyAgICB2b2lkIHNldEhUVFBDb29r
aWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJM
ICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNvbnN0Owor
ICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0hUVFBD
b29raWUgKikgY29uc3Q7CisjZW5kaWYKKworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5F
Ul9BUEkpCisgICAgdm9pZCByZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5
KCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3Nhcnko
KTsKKyNlbmRpZgorCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9ybVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IG1fcGxhdGZvcm1Db29raWVTdG9yYWdlOworICAgIGJvb2wgbV9p
c0luTWVtb3J5Q29va2llU3RvcmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgc3Rh
dGljIHZvaWQgY29va2llc0RpZENoYW5nZShOZXR3b3JrU3RvcmFnZVNlc3Npb24qKTsKIApAQCAt
MTkwLDYgKzIzMSwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4g
bV9jb250ZXh0OwogI2VuZGlmCiAKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJ
KQorICAgIGJvb2wgbV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycyB7IGZhbHNlIH07CisgICAg
UmV0YWluUHRyPE5TTXV0YWJsZVNldD4gbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5n
ZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPj4g
bV9jb29raWVDaGFuZ2VPYnNlcnZlcnM7CisjZW5kaWYKKwogICAgIENyZWRlbnRpYWxTdG9yYWdl
IG1fY3JlZGVudGlhbFN0b3JhZ2U7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAppbmRleCBiMDFhN2U2NmJmMDkx
NDk2MWQ2MzAxMDc0MWUyMjE3NWY5ZWZiOWI4Li5lMGQ4NGY3YzUxNzk1ZWNlYmYzZTUwNmM5YjBh
MjhlOGNiNWFiNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtNzMs
MTEgKzczLDEyIEBAIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25GCiAgICAgcmV0dXJuIHN0b3JhZ2VT
ZXNzaW9uOwogfQogCi1OZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmPiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
JiYgcGxhdGZvcm1Db29raWVTdG9yYWdlKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4mJiBwbGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiYmIHBsYXRmb3JtQ29va2llU3RvcmFnZSwgSXNJbk1lbW9yeUNvb2tpZVN0
b3JlIGlzSW5NZW1vcnlDb29raWVTdG9yZSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fcGxhdGZvcm1TZXNzaW9uKFdURk1vdmUocGxhdGZvcm1TZXNzaW9uKSkKKyAgICAs
IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKGlzSW5NZW1vcnlDb29raWVTdG9yZSA9PSBJc0luTWVt
b3J5Q29va2llU3RvcmU6OlllcykKIHsKLSAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQ
SSgpIHx8ICFwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpOworICAgIEFTU0VSVChwcm9jZXNzTWF5VXNl
Q29va2llQVBJKCkgfHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CiAgICAgbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0
b3JhZ2UgPyBXVEZNb3ZlKHBsYXRmb3JtQ29va2llU3RvcmFnZSkgOiBjb29raWVTdG9yYWdlKCk7
CiB9CiAKQEAgLTg4LDEwICs4OSwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2Uo
KSBjb25zdAogewotICAgIGlmICghcHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQorICAgIGlmICgh
cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpICYmICFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgaWYgKG1fcGxhdGZvcm1Db29raWVTdG9y
YWdlKQogICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA5ZTlhOTFiNzI1MGYzNjJiODU5NDVmM2Q3
MDI3NmU2YWJiMWFkZDQyLi42OGFhMzIzZmI5MDJhNzUzM2I0MWFlODBjMTk3Yzc3YTg0ZTU2YTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDkgKzQ0
LDE2IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitOZXR3b3JrU3RvcmFnZVNlc3Np
b246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKQoreworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9M
SVNURU5FUl9BUEkpCisgICAgdW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNz
YXJ5KCk7CisjZW5kaWYKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZShjb25zdCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykg
fHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAq
KWNvb2tpZV07CkBAIC01NSw3ICs2Miw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gbnNDb29raWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OmNvb2tpZXMuc2l6ZSgpXSk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBjb29raWUgOiBjb29raWVzKQpAQCAtNjgsMTkgKzc1LDE4IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25z
dCBVUkwmCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUoY29uc3Qg
Q29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJ
bk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBbbnNDb29raWVTdG9yYWdlKCkgZGVsZXRlQ29va2ll
OihOU0hUVFBDb29raWUgKiljb29raWVdOwogfQogCi1zdGF0aWMgVmVjdG9yPENvb2tpZT4gbnND
b29raWVzVG9Db29raWVWZWN0b3IoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykK
K3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqbnNDb29raWVzLCBjb25zdCBGdW5jdGlvbjxib29sKE5TSFRUUENvb2tp
ZSAqKT4mIGZpbHRlciA9IHsgfSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBWZWN0b3I8Q29v
a2llPiBjb29raWVzOwogICAgIGNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0Nvb2tp
ZXMuY291bnQpOwotICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMp
Ci0gICAgICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsKLQorICAgIGZvciAo
TlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpIHsKKyAgICAgICAgaWYgKCFmaWx0
ZXIgfHwgZmlsdGVyKG5zQ29va2llKSkKKyAgICAgICAgICAgIGNvb2tpZXMudW5jaGVja2VkQXBw
ZW5kKG5zQ29va2llKTsKKyAgICB9CiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKQEAgLTExOCw3
ICsxMjQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgp
CiAKIE5TSFRUUENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVT
dG9yYWdlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0lu
TWVtb3J5Q29va2llU3RvcmUpOwogICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3Rv
cmFnZSgpOwogICAgIGlmICghY2ZDb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdl
IHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3Jh
Z2UpCiAgICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2ll
U3RvcmFnZV07CkBAIC0xNTgsMTEgKzE2NCw2IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3Jl
YXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZV
UkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBj
YWNoZSBzaXplIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEy
NjU2ODE0PiBpcyBmaXhlZC4KICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUu
Z2V0KCksIFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAot
ICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkp
Ci0gICAgICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbi5sZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSk7Ci0KICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNz
aW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24u
Z2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTczLDIwICsxNzQsMjMgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllcikKICAgICByZXR1cm4gc3Rv
cmFnZVNlc3Npb24ubGVha1JlZigpOwogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tpZXMo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQorTlNBcnJheSAqTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0
b3JhZ2UpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICghY29va2llU3RvcmFnZSkK
KyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nl
c3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CisgICAgaWYgKCFjb29r
aWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVT
dG9yZSk7CiAgICAgICAgIHJldHVybiBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENv
b2tpZVN0b3JhZ2VdIGNvb2tpZXNdOworICAgIH0KICAgICAKICAgICBhdXRvIGNvb2tpZXMgPSBh
ZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhjb29raWVTdG9yYWdlKSk7CiAg
ICAgcmV0dXJuIFtOU0hUVFBDb29raWUgX2NmMm5zQ29va2llczpjb29raWVzLmdldCgpXTsKIH0K
IAotc3RhdGljIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNv
b2tpZVN0b3JhZ2UsIE5TSFRUUENvb2tpZSAqY29va2llKQordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9y
YWdlLCBOU0hUVFBDb29raWUgKmNvb2tpZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3Rv
cmFnZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5Q29va2llU3RvcmUp
OwogICAgICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2Vd
IGRlbGV0ZUNvb2tpZTpjb29raWVdOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI2LDkg
KzIzMCw5IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3Jh
Z2UgKnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNvb2tpZXNQdHIt
PmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNV
UkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8pCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENvb2tpZXNGb3JV
UkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVz
LCBOU1VSTCAqdXJsLCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbykgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewogI2lm
ICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAx
NDAwKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgICAg
IGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVz
OildKQpAQCAtMjU1LDIxICsyNTksMjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JV
UkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICoKICNlbmRp
ZgogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJheSAqTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVm
IGNvb2tpZVN0b3JhZ2UsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0
ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OwotICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlD
b29raWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tpZVN0b3JhZ2Ug
PSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVsdCk7Cisg
ICAgfQogCiAgICAgLy8gRklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3Rv
cmFnZSBvYmplY3QgZWFjaCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAg
ICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENv
b2tpZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3Rv
cmFnZT4gbnNDb29raWVTdG9yYWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxs
b2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0pOwotICAgIHJl
dHVybiBjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8pOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yVVJMKG5zQ29v
a2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogfQogCiBz
dGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJl
ZENvb2tpZXMsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewotICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpKTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVzIGNvdW50XTsK
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogCkBAIC0z
MDIsMjcgKzMwNywyNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMo
TlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0
ZXJlZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9u
LnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisg
ICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAgICByZXR1cm4g
bmlsOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFN
KHBhZ2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5kaWYKLSAgICBy
ZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JV
UkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7
CiB9CiAKLWVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwg
SW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
c0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRB
c2tJVFApIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1l
bW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAot
ICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAg
TlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAoIVtjb29raWVz
IGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBh
IG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBj
cmVhdGUgYmVsb3cuCiAKQEAgLTM3NCwyMiArMzc4LDIyIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFs
bEhUVFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKIAogc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJl
dHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVI
VFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vz
c2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNs
dWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBo
ZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigq
dGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVT
aXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwg
aGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94
eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhl
YWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8s
IGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZp
ZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3Vs
ZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFj
Y2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNDU3LDcgKzQ2MSw3IEBAIGJvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0
aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91
bGRBc2tJVFApOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAg
ICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJl
c2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewpAQCAtNTE4LDcgKzUyMiw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0CiAK
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5j
bHVkZUh0dHBPbmx5Q29va2llcykKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCkBAIC01NjYsNCArNTcwLDk4IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxsVGltZSB0aW1lUG9pbnQpCiAgICAgW3N0
b3JhZ2UgX3NhdmVDb29raWVzXTsKIH0KIAorVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgTlNB
cnJheSAqbnNDb29raWVzID0gW25zQ29va2llU3RvcmFnZSgpIF9nZXRDb29raWVzRm9yRG9tYWlu
OihOU1N0cmluZyAqKWhvc3RdOworICAgIHJldHVybiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihu
c0Nvb2tpZXMsIFtdKE5TSFRUUENvb2tpZSAqY29va2llKSB7IHJldHVybiAhY29va2llLkhUVFBP
bmx5OyB9KTsKK30KKworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lm
TmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycyA9IHRydWU7
CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzQWRkZWRIYW5kbGVyOl4oTlNBcnJh
eTxOU0hUVFBDb29raWUgKj4gKiBuc0Nvb2tpZXMsIE5TVVJMICp1cmxGb3JBZGRlZENvb2tpZXMp
IHsKKyAgICAgICAgVmVjdG9yPENvb2tpZT4gY29va2llcyA9IG5zQ29va2llc1RvQ29va2llVmVj
dG9yKG5zQ29va2llcyk7CisgICAgICAgIGF1dG8gaG9zdCA9IFVSTCh1cmxGb3JBZGRlZENvb2tp
ZXMpLmhvc3QoKS50b1N0cmluZygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaG9zdC5pc051
bGwoKSk7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5kKGhv
c3QpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBpdC0+dmFs
dWUpCisgICAgICAgICAgICBvYnNlcnZlci0+Y29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOwor
ICAgIH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAgICBbbnNDb29raWVT
dG9yYWdlKCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICosIGJvb2wgLypkZWxldGVkQWxsQ29va2llcyovKSB7CisgICAgICAgIGZvciAoYXV0byYg
b2JzZXJ2ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMudmFsdWVzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCisgICAgICAgICAgICAgICAgb2Jz
ZXJ2ZXItPmNvb2tpZXNEZWxldGVkKCk7CisgICAgICAgIH0KKyAgICB9IG9uUXVldWU6ZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp1
bnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmICgh
bV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycykKKyAgICAgICAgcmV0dXJuOworCisgICAgW25z
Q29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzQWRkZWRIYW5kbGVyOm5pbCBvblF1ZXVlOm5pbF07
CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6bmlsIG9u
UXVldWU6bmlsXTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlczpuaWxdOworICAgIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMg
PSBmYWxzZTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0YXJ0TGlzdGVuaW5n
Rm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2
ZXIsIGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICByZWdpc3RlckNvb2tpZUNoYW5nZUxpc3Rl
bmVyc0lmTmVjZXNzYXJ5KCk7CisKKyAgICBhdXRvJiBvYnNlcnZlcnMgPSBtX2Nvb2tpZUNoYW5n
ZU9ic2VydmVycy5lbnN1cmUoaG9zdCwgW10geworICAgICAgICByZXR1cm4gSGFzaFNldDxDb29r
aWVDaGFuZ2VPYnNlcnZlcio+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgQVNT
RVJUKCFvYnNlcnZlcnMuY29udGFpbnMoJm9ic2VydmVyKSk7CisgICAgb2JzZXJ2ZXJzLmFkZCgm
b2JzZXJ2ZXIpOworCisgICAgaWYgKCFtX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
cykKKyAgICAgICAgbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgZWxzZSBpZiAoW21fc3Vic2NyaWJl
ZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKWhvc3Rd
KQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNo
YW5nZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgIFtuc0Nvb2tpZVN0b3JhZ2Uo
KSBfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOm1fc3Vic2NyaWJlZERvbWFp
bnNGb3JDb29raWVDaGFuZ2VzLmdldCgpXTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5n
ZU9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBob3N0cykKK3sKKyAg
ICBib29sIHN1YnNjcmliZWRVUkxzQ2hhbmdlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaG9z
dCA6IGhvc3RzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5m
aW5kKGhvc3QpOworICAgICAgICBBU1NFUlQoaXQgIT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMu
ZW5kKCkpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBvYnNlcnZlcnMgPSBpdC0+
dmFsdWU7CisgICAgICAgIEFTU0VSVChvYnNlcnZlcnMuY29udGFpbnMoJm9ic2VydmVyKSk7Cisg
ICAgICAgIG9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKKyAgICAgICAgaWYgKG9ic2VydmVy
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnJlbW92
ZShpdCk7CisgICAgICAgICAgICBBU1NFUlQoW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVD
aGFuZ2VzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdKTsKKyAgICAgICAgICAgIFtt
X3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyByZW1vdmVPYmplY3Q6KE5TU3RyaW5n
ICopaG9zdF07CisgICAgICAgICAgICBzdWJzY3JpYmVkVVJMc0NoYW5nZWQgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChzdWJzY3JpYmVkVVJMc0NoYW5nZWQpCisgICAgICAgIFtu
c0Nvb2tpZVN0b3JhZ2UoKSBfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOm1f
c3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzLmdldCgpXTsKK30KKworLy8gRklYTUU6
IFRoaXMgY2FuIGV2ZW50dWFsbHkgZ28gYXdheSwgdGhpcyBpcyBtZXJlbHkgdG8gZW5zdXJlIGEg
c21vb3RoIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBBUEkuCitib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpIGNvbnN0Cit7CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc3VwcG9ydHNBUEkgPSBbbnNDb29raWVTdG9yYWdlKCkgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2Vz
OildOworICAgIHJldHVybiBzdXBwb3J0c0FQSTsKK30KKworI2VuZGlmIC8vIEhBVkUoQ09PS0lF
X0NIQU5HRV9MSVNURU5FUl9BUEkpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNzVlMGI0YTI2NWM5ZWU1OWEwYjQzMDc5NGY3ZWYwZDIx
N2M3MmYxNy4uNzJlMWQyNmRjZDNmOWE4Y2ZiOTVmMDIzYTAyY2E2YTg5MGQwNjFjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNCw2ICsxMjQsMTEgQEAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAgICAg
Zm9yIChhdXRvJiBwb3J0IDogbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMpCiAgICAgICAgIG5ldHdv
cmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRDbG9zZU1lc3NhZ2VQ
b3J0KHBvcnQpOwogCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKSkKKyAgICAg
ICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucygqdGhpcywgbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMpOworI2VuZGlmCisK
ICNpZiBVU0UoTElCV0VCUlRDKQogICAgIGlmIChtX3J0Y1Byb3ZpZGVyKQogICAgICAgICBtX3J0
Y1Byb3ZpZGVyLT5jbG9zZSgpOwpAQCAtNjMzLDYgKzYzOCw0OCBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgYwogICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llKHVybCwgY29v
a2llTmFtZSk7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNv
b2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNo
YW5nZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOworICAgIGlmICghbmV0d29ya1N0
b3JhZ2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKwor
I2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgaWYgKHN1YnNjcmliZVRv
Q29va2llQ2hhbmdlTm90aWZpY2F0aW9ucykgeworICAgICAgICBBU1NFUlQoIW1faG9zdHNXaXRo
Q29va2llTGlzdGVuZXJzLmNvbnRhaW5zKGhvc3QpKTsKKyAgICAgICAgbV9ob3N0c1dpdGhDb29r
aWVMaXN0ZW5lcnMuYWRkKGhvc3QpOworICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnN0
YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygqdGhpcywgaG9zdCk7Cisg
ICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3Rp
ZmljYXRpb25zKTsKKyNlbmRpZgorCisgICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5kb21Db29raWVzRm9ySG9zdChob3N0KSk7Cit9CisKKyNpZiBIQVZFKENPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJKQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp1bnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgaG9zdHMpCit7CisgICAgYm9vbCByZW1vdmVkID0gbV9ob3N0c1dpdGhDb29r
aWVMaXN0ZW5lcnMucmVtb3ZlKGhvc3RzLmJlZ2luKCksIGhvc3RzLmVuZCgpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOworCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi0+c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhv
c3RzKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0Fk
ZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNv
b2tpZXMpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6Q29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpLCAwKTsKK30KKwordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tp
ZXNEZWxldGVkKCksIDApOworfQorCisjZW5kaWYKKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWI2ZjU1YzZmZTllM2I5ZDEy
NGFmMmE3MTVmMzVhYjEzZmUzM2U1ZS4uN2VkYzVjNjA1OTZjNWI0ZTZiZmIyMWFhOTNmNjU1ZTFk
NDk1NzViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxl
RG9tYWluLmg+CkBAIC04Nyw2ICs4OCw5IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcz4KICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICAsIHB1YmxpYyBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50CisjZW5kaWYKKyNpZiBIQVZFKENPT0tJRV9D
SEFOR0VfTElTVEVORVJfQVBJKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9i
c2VydmVyCiAjZW5kaWYKICAgICAsIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoK
QEAgLTI2Nyw2ICsyNzEsMTYgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG5leHRNZXNzYWdl
QmF0Y2hJZGVudGlmaWVyKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKKyAgICB2b2lkIGRvbUNvb2tp
ZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKT4mJik7CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJ
KQorICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGhvc3RzKTsKKworICAgIC8vIFdlYkNvcmU6OkNvb2tpZUNoYW5n
ZU9ic2VydmVyLgorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBmaW5hbDsKKyAgICB2b2lkIGNvb2tpZXNEZWxl
dGVkKCkgZmluYWw7CisjZW5kaWYKKwogICAgIHN0cnVjdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgewogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRl
ZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihjb25zdCBSZXNv
dXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImKSA9IGRlZmF1bHQ7CkBAIC0zMzAsNiArMzQ0LDkg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBOZXR3b3JrTUROU1JlZ2lzdGVy
IG1fbWRuc1JlZ2lzdGVyOwogI2VuZGlmCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnM7Cisj
ZW5kaWYKIAogICAgIGJvb2wgbV9jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVk
IHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggZWM5YjBiOGY4NGE4NGZmZWIwNTg1MWQ0OTNjNTk1ZjI2YTU0NjVjNC4uODI1NTQ2YzIw
N2IzN2E1NjM1YmQyOTgzZDcwZDUxZDdkOGRkMDJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOSw2ICszOSwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+
IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNo
cm9ub3VzCiAgICAgR2V0UmF3Q29va2llcyhVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+
IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERlbGV0
ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKKyAgICBEb21Db29raWVzRm9ySG9z
dChTdHJpbmcgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMp
IC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cworI2lmIEhB
VkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgVW5zdWJzY3JpYmVGcm9tQ29va2ll
Q2hhbmdlTm90aWZpY2F0aW9ucyhIYXNoU2V0PFN0cmluZz4gaG9zdHMpCisjZW5kaWYKIAogICAg
IFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQog
ICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJs
b2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggN2YxY2Y5Yzc1OWUyNjI2ZDE1OTYxNzQ1YWJkNDU3NTFiMjRjNjNm
My4uYmQxNmNmYTJjOGIyNTExODNkOGI3MWVlZDZkNjQwOTc5ZTI5N2JmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02MjUsNiArNjI1LDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBb
JyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyc6IFsnPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OklTT1dlYlZUVEN1ZSc6IFsnPFdlYkNvcmUvSVNPVlRUQ3VlLmg+J10sCisgICAgICAgICdzdHJ1
Y3QgV2ViQ29yZTo6Q29va2llJzogWyc8V2ViQ29yZS9Db29raWUuaD4nXSwKICAgICAgICAgJ3N0
cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCc6IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQu
aD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2Vi
S2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmlu
ZGV4IGYyNzUyYTkxZGJlODg4ZDc5MTQ3NzNlZjQyMjdhYjRjZjU3NjdlNjQuLmUzMzA2MDcwY2Vi
YWY4ZTRjNzE4MDU1OGVmMmIyNDE3Zjc3MGQ4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXMueWFtbApAQCAtNTUsNiArNTUsMTMgQEAgSFRUUFNVcGdyYWRlRW5hYmxlZDoK
ICAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkF1dG9tYXRpYyBIVFRQUyB1cGdyYWRlIGZv
ciBrbm93biBzdXBwb3J0ZWQgc2l0ZXMiCiAgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCiAKK0lu
UHJvY2Vzc0Nvb2tpZUNhY2hlRW5hYmxlZDoKKyAgIHR5cGU6IGJvb2wKKyAgIGRlZmF1bHRWYWx1
ZTogdHJ1ZQorICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJJbi1Qcm9jZXNzIENvb2tpZSBDYWNoZSIK
KyAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkluLVByb2Nlc3MgRE9NIENvb2tpZSBDYWNo
ZSIKKyAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKKwogVGhpcmRQYXJ0eUlmcmFtZVJlZGlyZWN0
QmxvY2tpbmdFbmFibGVkOgogICAgdHlwZTogYm9vbAogICAgZGVmYXVsdFZhbHVlOiB0cnVlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCA3NDg5NGJkMjdiYWY1ODk1MWU2YWYyNDFjODc5OThiYzVjNWViYWU4Li5h
NWQwYmUxNDI3MWY2MzA2ZjgzNmI4ZmRiZDdkNDIwZjI5NTI0NmVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTYyNCw2ICs2MjQsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZUJhbm5lci5jcHAKIFdlYlBy
b2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb250ZXh0TWVudS5jcHAKK1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAK
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRG9jdW1lbnRMb2FkZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTFmYzZmNzM3MmIxNjAzZTVkZDI1ZWIwYTRhNjAxYzZj
OWJlMjNlYS4uZDI0YTgwNDhlMzQ1MDQ2MzQyN2M5MzA0MzJlZjkwMDM5NzUxMWMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNjEzLDYgKzYxMyw3IEBAIFdlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0SU9TLm1tCiAKIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHkubW0KK1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29r
aWVDYWNoZUNvY29hLm1tCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
CiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQ0ODg1YjQ2MzJkZTljODhjZjAyNjVkNWVlZjlhYjA3NTRiZjU1ODcuLmZlNzc4M2VmNGRjMmMx
N2NiMWNiZjQ5ZGU3MDFlYTQ1MTgxZDZjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTQzLDYgKzk0Myw3IEBACiAJCTQ2NkJDMDND
MUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY2QkMwMzkxRkEyNjZD
OTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2
NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MUZGMUQyMzIxN0VG
RjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi87IH07CiAJCTQ2N0U0M0U4
MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2
RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CisJCTQ2
ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0Qw
IC8qIFdlYkNvb2tpZUNhY2hlLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAv
KiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAv
KiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUy
NDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4Njcg
LyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpA
QCAtMzQ4NCw2ICszNDg1LDggQEAKIAkJNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzFGRjFFMjMyMTdFRkYwMDFC
NjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgwOUE3QTIzRDky
MjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29va2llQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lv
bmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Zpc2lv
bmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlCMjFF
ODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3Jv
dW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5OTcsOCArNzAwMCw4IEBACiAJCQkJMUE0
MjJGOEExOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oICovLAog
CQkJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5oICovLAog
CQkJCTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSAqLywK
LQkJCQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRl
LmggKi8sCiAJCQkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3Jl
SW50ZXJuYWwuaCAqLywKKwkJCQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29v
a2llU3RvcmVQcml2YXRlLmggKi8sCiAJCQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdL
TWVudUl0ZW1JZGVudGlmaWVycy5tbSAqLywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUg
LyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovLAogCQkJCTFBNUIxQzRGMTg5ODYw
NkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCAqLywKQEAgLTg0MjIsNiArODQyNSw4IEBACiAJ
CQkJQkM3MkI5RjkxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Lmgg
Ki8sCiAJCQkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAq
LywKIAkJCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLywK
KwkJCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICovLAor
CQkJCTQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovLAogCQkJ
CTVDN0ZCNDZFMjFFOTdDMEIwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuY3BwICovLAogCQkJCTVD
N0ZCNDZGMjFFOTdDMEMwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuaCAqLywKIAkJCQkxQTVCMUM1
MjE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuY3BwICovLApAQCAtMTAyNTQs
NyArMTAyNTksNiBAQAogCQkJCTJENTg3NUJGMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1
N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVD
NDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlERjQ2MkUxMjIz
RjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVGQjE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNw
YXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNjYyLDYgKzEwNjY2LDcgQEAKIAkJCQk1MUFD
QkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlN
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjRERTI1MTY4RkE0NDgwMEM5NEFGQyAvKiBXZWJD
b250ZXh0U3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4MDlBN0MyM0Q5MjI1RTAw
QzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzdGQjQ3MDIx
RTk3REM1MDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5
MzQ1MDEzMTVCOTREMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzMwOTM0NDgxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDcyMSw3ICsxMDcyNiw2IEBACiAJCQkJRkVFNDNGRDMx
RTY3QjAxODAwNzdENkQxIC8qIFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZFREJEQ0Q3MUU2OEQyMDUwMEE1OUY4RiAvKiBXZWJJbnNwZWN0b3JJ
bnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2
MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJREY0NjJFMEYyM0YyMkY1NTAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQxMjc1RDczODAwQkM3QkQwIC8qIFdlYklu
c3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZD
MkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4
OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwOTM0LDYgKzEwOTM4LDcgQEAKIAkJCQkwRjA0MTU5RTIzQzdDQzczMDA2MEEzRTIgLyog
V0tDb250ZW50Vmlld01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMDY1RkMyM0VDOTU3MjAw
NTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTEwNjVGRDIz
RUM5NTdCMDA1NDQzRDYgLyogV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJREY0NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUUyNEIxMTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJGOTgxOTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QkE1MTg0RDVG
REEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTExMDE3LDYgKzExMDIyLDcgQEAKIAkJCQkxQTQyMkY4QjE4QjI5QjU0MDBEOENEOTYgLyog
V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNjJFNzMxMjE0
MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjZBNEI1MjMyMDk2MjQwMEVBNEQ0NCAvKiBX
S0hUVFBDb29raWVTdG9yZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMEFFMEQxMzNDMTZD
QjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTIzQ0Yx
QzEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAyOGJjMTJjMzQyM2Y5ZjI4MzU2YzNhODRjNjEy
MjRjZmE0ZWQ3ZTk5Li4yYmI0NzllMzlkZTliNmU5NTdmMjljZmI3ZWU4NTA2NGEwMGU1OTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJT
dG9yYWdlQXJlYU1hcC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUph
ci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ck1lc3NhZ2VzLmgiCkBAIC0yMzQsNiArMjM1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kK
ICAgICBtX2Nvb2tpZUFjY2VwdFBvbGljeSA9IG5ld1BvbGljeTsKIH0KIAorI2lmIEhBVkUoQ09P
S0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mIGNvb2tpZXMpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFy
KCkuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmNvb2tpZUphcigpLmNvb2tpZXNEZWxldGVkKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5k
ZXggNTFmZGYzNTQ1MjRkOTE1ZGRmNmVkNTk0YzdkMmMwZmQ4NjMzZDlkMS4uNzZkMjY2NTIwYzI2
MGQxNTNiOTQxZDczOWJjNDQ5MDE4YzZlNGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAg
LTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3Qg
Q29va2llOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0czsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4
X3Q7CkBAIC04Myw2ICs4NCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvb2tpZXNFbmFibGVk
KCkgY29uc3Q7CiAKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHZv
aWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDJhYTY4ODZlNTdhNTk5Y2JjMTdjMzVmNmI3
NGU5OWQyYWIzYTg5ZTUuLjY5OTNmYTdlZjQ2MGY3NTc2ZDYxY2ZlNGI2NDNkMjkwZjgyZDhkNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMx
LDExIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSk7CiAgICAgQ29va2llQWNjZXB0
UG9saWN5Q2hhbmdlZChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3kpOwogCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBD
b29raWVzQWRkZWQoU3RyaW5nIGhvc3QsIFZlY3RvcjxzdHJ1Y3QgV2ViQ29yZTo6Q29va2llPiBj
b29raWVzKTsKKyAgICBDb29raWVzRGVsZXRlZCgpOworI2VuZGlmCisKICAgICBDaGVja1Byb2Nl
c3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyIHBvcnQpIC0+IChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0
aXZpdHkgaGFzQWN0aXZpdHkpIEFzeW5jCiAgICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVD
YWNoZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YmM2NmQ5ZDRmYzZkMmY2NzY2NTBlY2M2ZGFhNWEx
YWEwNjA3MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYkNvb2tpZUNhY2hlLmgiCisK
KyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9y
YWdlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24pIHsKKyAg
ICAgICAgU3RyaW5nIHNlc3Npb25OYW1lID0gbWFrZVN0cmluZygiV2ViS2l0SW5Qcm9jZXNzU3Rv
cmFnZS0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNz
aW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lv
bk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgICAgICBhdXRvIGNvb2tpZVN0b3Jh
Z2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgbV9pbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpLCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwg
V1RGTW92ZShjb29raWVTdG9yYWdlKSwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpJc0luTWVtb3J5
Q29va2llU3RvcmU6Olllcyk7CisgICAgfQorICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VT
ZXNzaW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2Vk
MjBjNjQ1MzNhYzc0YWI1YmZiZDdkYTNiMzg3Nzg1YzljNjc2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCkBAIC0w
LDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK2Jvb2wgV2ViQ29va2llQ2FjaGU6OmlzU3VwcG9ydGVkKCkKK3sK
KyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIC8vIEZJWE1FOiBUaGlz
IGNhbiBldmVudHVhbGx5IGJlIHJlbW92ZWQsIHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNt
b290aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJLgorICAgIHJldHVybiBpbk1lbW9yeVN0b3Jh
Z2VTZXNzaW9uKCkuc3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpOworI2Vsc2UKKyAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworU3RyaW5nIFdlYkNvb2tpZUNhY2hlOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBpZiAo
IW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKSB7CisgICAgICAgIFZl
Y3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgICAgIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFu
Z2VOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEb21Db29raWVzRm9y
SG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZp
Y2F0aW9ucyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29v
a2llc0Zvckhvc3Q6OlJlcGx5KGNvb2tpZXMpLCAwKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIHBydW5lQ2FjaGVJZk5lY2Vzc2FyeSgpOworICAgICAgICBtX2hvc3RzV2l0aElu
TWVtb3J5U3RvcmFnZS5hZGQoaG9zdCk7CisgICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29v
a2llcykKKyAgICAgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29v
a2llKTsKKyAgICB9CisgICAgcmV0dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVz
Rm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Ok5vKS5maXJzdDsKK30KKwordm9pZCBX
ZWJDb29raWVDYWNoZTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKQoreworICAgIFN0cmluZyBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOwor
ICAgIGlmIChtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyhob3N0KSkKKyAgICAg
ICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNv
b2tpZVN0cmluZyk7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25z
dCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzKQoreworICAgIGlm
ICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAgICAgICAgaW5NZW1v
cnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29raWUpOworfQorCit2b2lkIFdlYkNvb2tp
ZUNhY2hlOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJD
b29raWVDYWNoZTo6Y2xlYXIoKQoreworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9B
UEkpCisgICAgaWYgKCFtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5pc0VtcHR5KCkpCisgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6VW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhtX2hvc3RzV2l0
aEluTWVtb3J5U3RvcmFnZSksIDApOworI2VuZGlmCisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0
b3JhZ2UuY2xlYXIoKTsKKyAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24gPSBudWxscHRyOwor
fQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjbGVhckZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0
KQoreworICAgIGF1dG8gaXQgPSBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5maW5kKGhvc3Qp
OworICAgIGlmIChpdCA9PSBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UucmVtb3ZlKGl0KTsK
KyAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhW
ZWN0b3I8U3RyaW5nPiB7IGhvc3QgfSk7CisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoSGFz
aFNldDxTdHJpbmc+IHsgaG9zdCB9KSwgMCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJDb29raWVD
YWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCkKK3sKKyAgICAvLyBXZSBtYXkgd2FudCB0byBy
YWlzZSB0aGlzIGxpbWl0IGlmIHdlIHN0YXJ0IHVzaW5nIHRoZSBjYWNoZSBmb3IgdGhpcmQtcGFy
dHkgaWZyYW1lcy4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q2FjaGVkSG9zdHMgPSA1
OworCisgICAgd2hpbGUgKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLnNpemUoKSA+PSBtYXhD
YWNoZWRIb3N0cykKKyAgICAgICAgY2xlYXJGb3JIb3N0KCptX2hvc3RzV2l0aEluTWVtb3J5U3Rv
cmFnZS5yYW5kb20oKSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIFdlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAg
ICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOworICAgIHJldHVybiAqbV9pbk1lbW9yeVN0
b3JhZ2VTZXNzaW9uOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmQwYzQxNmU1MjBjZWRjMjQ2YmUxMmZhNTNmYmNmZTc4NmYzNTU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hl
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkNvb2tpZUNhY2hlIHsKK3B1YmxpYzoKKyAgICBXZWJDb29raWVDYWNoZSgpID0gZGVmYXVs
dDsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWQoKTsKKworICAgIFN0cmluZyBjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CisKKyAgICB2b2lkIGNvb2tpZXNB
ZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworCisgICAgdm9pZCBjbGVhcigpOworICAgIHZv
aWQgY2xlYXJGb3JIb3N0KGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpOworICAgIHZv
aWQgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0
c1dpdGhJbk1lbW9yeVN0b3JhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4gbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcAppbmRleCAzMjU4MzA1Yzc4OWQ3NzVmZTE1YzFjMDgyOGMzNmU5ZTJm
MmE4NjA5Li41YWIzMjQ1Y2NkNWRhYzFjZjUzMWQ0ZGViNGQwZTFhODVkMDY5MWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04OCw2ICs4OSwyMyBA
QCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAogfQogI2VuZGlmCiAKK2Jvb2wgV2ViQ29va2llSmFy
Ojppc0VsaWdpYmxlRm9yQ2FjaGUoV2ViRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKSBjb25zdAoreworICAgIGF1dG8q
IHBhZ2UgPSBmcmFtZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmNvcmVQYWdlKCkgOiBudWxscHRy
OworICAgIGlmICghcGFnZSB8fCAhcGFnZS0+c2V0dGluZ3MoKS5pblByb2Nlc3NDb29raWVDYWNo
ZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2NhY2hlLmlz
U3VwcG9ydGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZvciBub3csIHdl
IG9ubHkgY2FjaGUgY29va2llcyBmb3IgZmlyc3QtcGFydHkgY29udGVudC4gVGhpcmQtcGFydHkg
Y29va2llIGNhY2hpbmcgaXMgYSBiaXQgbW9yZSBjb21wbGljYXRlZCBkdWUgdG8gcGFydGl0aW9u
aW5nIGFuZCBzdG9yYWdlIGFjY2Vzcy4KKyAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURv
bWFpbiB7IHJlc291cmNlVVJMIH07CisgICAgaWYgKHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkg
fHwgUmVnaXN0cmFibGVEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9ID09IHJlc291cmNl
RG9tYWluOworfQorCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgYXV0byogd2ViRnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50
LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAgLTEwMCwxMiArMTE4LDE3IEBAIFN0cmluZyBXZWJDb29r
aWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCisgICAgYXV0byBzYW1lU2l0
ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhkb2N1bWVudCk7CisgICAgYXV0byBpbmNs
dWRlU2VjdXJlQ29va2llcyA9IENvb2tpZUphcjo6c2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMo
ZG9jdW1lbnQsIHVybCk7CiAgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsK
ICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAorICAg
IGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndlYkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCB1cmwpKQorICAgICAgICByZXR1cm4gbV9jYWNoZS5jb29raWVzRm9yRE9NKGRv
Y3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKwogICAgIFN0cmluZyBjb29raWVTdHJp
bmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNp
dGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1
cmVDb29raWVzKGRvY3VtZW50LCB1cmwpLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpS
ZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hv
dWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29r
aWVzQWNjZXNzZWQpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBjb29r
aWVTdHJpbmc7CkBAIC0xMjMsMTAgKzE0NiwzNCBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29v
a2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAog
ICAgICAgICByZXR1cm47CiAjZW5kaWYKIAorICAgIGF1dG8gc2FtZVNpdGVJbmZvID0gQ29va2ll
SmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1l
LT5mcmFtZUlEKCk7CiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlm
aWVyKCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JD
b29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICBpZiAo
aXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgdXJsKSkKKyAgICAgICAgbV9jYWNoZS5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBjb29raWVTdHJpbmcpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKK30KKwordm9p
ZCBXZWJDb29raWVKYXI6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQoreworICAgIG1fY2FjaGUuY29va2llc0Fk
ZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0RlbGV0
ZWQoKQoreworICAgIG1fY2FjaGUuY29va2llc0RlbGV0ZWQoKTsKK30KKwordm9pZCBXZWJDb29r
aWVKYXI6OmNsZWFyQ2FjaGUoKQoreworICAgIG1fY2FjaGUuY2xlYXIoKTsKK30KKwordm9pZCBX
ZWJDb29raWVKYXI6OmNsZWFyQ2FjaGVGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAg
ICBtX2NhY2hlLmNsZWFyRm9ySG9zdChob3N0KTsKIH0KIAogYm9vbCBXZWJDb29raWVKYXI6OmNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggNTI5NDhhOTFk
ZTVmMTQ1MjQ5OTEwZGQ0OTgzNDQ1MjAwMDFhOTdmYi4uOGVkYmUzMTRlY2FmYTdkYWI0ZWVmYmUy
ZTgyNWY4MGRmMjk0ZDk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llSmFyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsOCArMjUsMTMgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJXZWJDb29raWVDYWNoZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBDb29raWU7Cit9CisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBXZWJDb29raWVKYXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6Q29va2ll
SmFyIHsKQEAgLTM5LDggKzQ0LDE4IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBX
ZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykg
Y29uc3QgZmluYWw7CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgZmluYWw7CisKKyAgICB2b2lkIGNvb2tpZXNB
ZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworCiBwcml2YXRlOgogICAgIFdlYkNvb2tpZUph
cigpOworCisgICAgdm9pZCBjbGVhckNhY2hlKCkgZmluYWw7CisgICAgdm9pZCBjbGVhckNhY2hl
Rm9ySG9zdChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRWxpZ2libGVGb3JDYWNo
ZShXZWJGcmFtZSYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYg
cmVzb3VyY2VVUkwpIGNvbnN0OworCisgICAgbXV0YWJsZSBXZWJDb29raWVDYWNoZSBtX2NhY2hl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg2ODNjMTA0ZGJmYTJjMDVmNWU4NGI1OTYwZmQ2
ODJhZTI0NTFkYWYuLjhhYmY2NDVlYWIzYmUyYjNiMjk3MTE0MDcyZjFlNGU4ODQ5YzcxOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00NjYs
NyArNDY2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBtYWtlVW5pcXVlUmVm
PFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksCiAgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5OjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBXZWJDb29raWVKYXI6OmNyZWF0ZSgpLAor
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jb29raWVKYXIoKSwKICAgICAgICAgbWFr
ZVVuaXF1ZVJlZjxXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ+KCp0aGlzKSwKICAgICAgICAgbWFr
ZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCkKICAgICApOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRiMjQwOWI5OTRkM2FlMGQyYjQzMTRiMzQ1
YzI4ZjFhNGQzN2M3MDkuLjIxYjVhMmJjMTNmZWVlYWQ5NGE2ODQ2Y2M1NTY1MzkzMGJmYjBjMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
Q2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9VSVByb2Nl
c3MuaCIKKyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaCIKQEAgLTIwNSw2ICsyMDYsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9j
ZXNzKCkKICAgICAsIG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcihXZWJJbnNwZWN0
b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpjcmVhdGUoKSkKICAgICAsIG1fd2ViTG9hZGVyU3RyYXRl
Z3koKm5ldyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIo
V2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAgICwgbV9jb29raWVKYXIoV2Vi
Q29va2llSmFyOjpjcmVhdGUoKSkKICAgICAsIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlz
XShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJl
c2lzU3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7IH0pCiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0ZSgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODUzYzY2MGVjNjQ2NDU2M2E3NjU2
NDM2MTkyOTU2NTRiMDczNTM0ZS4uMTU5MDkzNjBhZDdjYjA5MTEzN2I3Y2FmMzM1MzVjZGUyYzk3
ZGQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMjAsNiArMTIw
LDcgQEAgY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk7CiBj
bGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OwogY2xhc3MgV2ViQ2FjaGVTdG9yYWdlUHJv
dmlkZXI7CitjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJDb21waWxlZENvbnRlbnRSdWxl
TGlzdERhdGE7CiBjbGFzcyBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M7CiBjbGFzcyBXZWJGcmFt
ZTsKQEAgLTI5Myw2ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eSogYXV0b21hdGlvblNlc3Npb25Qcm94eSgpIHsgcmV0dXJuIG1fYXV0b21hdGlvblNlc3Np
b25Qcm94eS5nZXQoKTsgfQogCiAgICAgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3Rv
cmFnZVByb3ZpZGVyKCkgeyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VQcm92aWRlci5nZXQoKTsgfQor
ICAgIFdlYkNvb2tpZUphciYgY29va2llSmFyKCkgeyByZXR1cm4gbV9jb29raWVKYXIuZ2V0KCk7
IH0KICAgICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciYgd2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIo
KSB7IHJldHVybiBtX3dlYlNvY2tldENoYW5uZWxNYW5hZ2VyOyB9CiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQpAQCAtNTU0LDYgKzU1Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJl
ZjxXZWJDYWNoZVN0b3JhZ2VQcm92aWRlcj4gbV9jYWNoZVN0b3JhZ2VQcm92aWRlcjsKKyAgICBS
ZWY8V2ViQ29va2llSmFyPiBtX2Nvb2tpZUphcjsKICAgICBXZWJTb2NrZXRDaGFubmVsTWFuYWdl
ciBtX3dlYlNvY2tldENoYW5uZWxNYW5hZ2VyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExpYldl
YlJUQ05ldHdvcms+IG1fbGliV2ViUlRDTmV0d29yazsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29va2llUHJpdmF0ZUJyb3dzaW5nLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVQcml2YXRlQnJvd3Npbmcu
bW0KaW5kZXggZjUwMGYzZmViYWJmODE2NWM0YWQ1OTkwOTFjMmQyOGQzYThhNjNjZi4uMTg4OWE5
ZjE0ZDZhODIyY2VhZDA3N2NiYmY0MjMzZDkwNDQ1Nzk4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVQcml2YXRlQnJvd3NpbmcubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVQcml2YXRlQnJv
d3NpbmcubW0KQEAgLTI2LDExICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2wuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
dy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0
aWMgYm9vbCByZWNlaXZlZEFsZXJ0OwogCkBAIC02OCwzICs3MSw2MCBAQCBURVNUKFdlYktpdCwg
Q29va2llUHJpdmF0ZUJyb3dzaW5nKQogICAgIFt2aWV3MiBsb2FkSFRNTFN0cmluZzphbGVydE9s
ZENvb2tpZSBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29t
LyJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkQWxlcnQpOwogfQor
CitURVNUKFdlYktpdCwgQ29va2llQ2FjaGVTeW5jQWNyb3NzUHJvY2VzcykKK3sKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0
ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CisgICAgYXV0byB2aWV3MSA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1
dG8gdmlldzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBbdmlldzEgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiZm9vIiBiYXNl
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKyAgICBb
dmlldzIgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiYmFyIiBiYXNlVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKworICAgIC8vIENhY2hlIERP
TSBjb29raWVzIGluIGZpcnN0IFdlYlZpZXcuCisgICAgX19ibG9jayBib29sIGRvbmVFdmFsdWF0
aW5nSmF2YVNjcmlwdCA9IGZhbHNlOworICAgIFt2aWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6QCJk
b2N1bWVudC5jb29raWU7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSBjb29raWUs
IE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBFWFBFQ1RfVFJVRShbY29va2llIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIChOU1N0cmluZyAqKWNvb2tpZSk7
CisgICAgICAgIGRvbmVFdmFsdWF0aW5nSmF2YVNjcmlwdCA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQpOworCisg
ICAgLy8gQ2FjaGUgRE9NIGNvb2tpZXMgaW4gc2Vjb25kIFdlYlZpZXcuCisgICAgZG9uZUV2YWx1
YXRpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgW3ZpZXcyIGV2YWx1YXRlSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmNvb2tpZTsiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIGNvb2tp
ZSwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJv
cik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtjb29raWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgKE5TU3RyaW5nICopY29va2ll
KTsKKyAgICAgICAgZG9uZUV2YWx1YXRpbmdKYXZhU2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVFdmFsdWF0aW5nSmF2YVNjcmlwdCk7CisK
KyAgICAvLyBTZXR0aW5nIGNvb2tpZSBpbiBmaXJzdCBXZWJ2aWV3IC8gcHJvY2Vzcy4KKyAgICBk
b25lRXZhbHVhdGluZ0phdmFTY3JpcHQgPSBmYWxzZTsKKyAgICBbdmlldzEgZXZhbHVhdGVKYXZh
U2NyaXB0OkAiZG9jdW1lbnQuY29va2llID0gJ2Zvbz1iYXInOyBkb2N1bWVudC5jb29raWU7IiBj
b21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSBjb29raWUsIE5TRXJyb3IgKiBfTnVsbGFi
bGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1Rf
VFJVRShbY29va2llIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoImZvbz1iYXIiLCAoTlNTdHJpbmcgKiljb29raWUpOworICAgICAgICBk
b25lRXZhbHVhdGluZ0phdmFTY3JpcHQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZUV2YWx1YXRpbmdKYXZhU2NyaXB0KTsKKworICAgIC8vIE1ha2lu
ZyBzdXJlIG5ldyBjb29raWUgZ2V0cyBzeW5jJ2QgdG8gc2Vjb25kIFdlYlZpZXcgcHJvY2Vzcy4K
KyAgICBpbnQgdGltZW91dCA9IDA7CisgICAgX19ibG9jayBTdHJpbmcgY29va2llU3RyaW5nOwor
ICAgIGRvIHsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICAg
ICAgZG9uZUV2YWx1YXRpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgICAgIFt2aWV3MiBldmFs
dWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5jb29raWU7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlk
IF9OdWxsYWJsZSBjb29raWUsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtjb29raWUg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgICAgICBjb29raWVTdHJp
bmcgPSAoTlNTdHJpbmcgKiljb29raWU7CisgICAgICAgICAgICBkb25lRXZhbHVhdGluZ0phdmFT
Y3JpcHQgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQpOworICAgICAgICArK3RpbWVvdXQ7CisgICAg
fSB3aGlsZSAoY29va2llU3RyaW5nICE9ICIiICYmIHRpbWVvdXQgPCA1MCk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJmb289YmFyIiwgY29va2llU3RyaW5nKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZjM5OTViMzgx
MzM0M2E1MTcyZGJmNDJiZGY0MDA4NzhmZWZiNTE2Li44YmZjMTgwMTQyZjYwMmNjYjQ3NDMxMjM1
MDEyZDU0NDE0YzkxOTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDItMTIgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVt
ZW50IGluLVdlYlByb2Nlc3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1
bWVudC5jb29raWUgaW4gbW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAy
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQg
bGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01v
ZGFsRGlhbG9nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1
bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1l
LXBhcnNpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291
cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9jb29raWVzL3Jlc291cmNlcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5n
LWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3Vy
Y2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocDogQWRkZWQuCisKIDIwMjAtMDItMTcgIEphc29u
IExhd3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2syIF0g
d2ViZ3B1L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXIt
c2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29v
a2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNGFmOTI0YmZiN2U4MWViM2QwY2Y0ZDNkNDJjYjIzMDhhNDQ1MzUxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNv
b2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAK
K1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVy
IGEgc2hvd01vZGFsRGlhbG9nKCkgY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0
VmFsdWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJmb289YmFy
OyB0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tp
ZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFs
b2cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45YWI4NDdiMzNkNTE5OGU5NjZkYTdiMDhjZWI4ODYwYTFkNjk0
N2VhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2Rv
Y3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cuaHRtbApAQCAtMCwwICsxLDM3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2Vz
L2Nvb2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJl
c291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQg
aWQ9InRlc3RCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkNsaWNrIG1lIj48L2lucHV0Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5z
IHRoZSByaWdodCB2YWx1ZSBhZnRlciBhIHNob3dNb2RhbERpYWxvZygpIGNhbGwnKTsKK2pzVGVz
dElzQXN5bmMgPSB0cnVlOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5l
ci5zZXRDYW5PcGVuV2luZG93cygpOworCit0ZXN0QnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7Cisg
ICAgZG9jdW1lbnQuY29va2llID0gInRlc3RLZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9
dGVzdFZhbHVlJyk7CisKKyAgICBzaG93TW9kYWxEaWFsb2coInJlc291cmNlcy9zZXQtY29va2ll
LWFuZC1zZXJ2ZS5waHA/Y29va2llLW5hbWU9Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRp
b249Y2xvc2UtbW9kYWwtZGlhbG9nLmh0bWwiKTsKKworICAgIC8vIFRoaXMgaXMgc28gdGhlIGNv
b2tpZSBnZXRzIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKyAgICByZWdpc3RlckNv
b2tpZUZvckNsZWFudXAoJ2Zvbz1iYXI7IHBhdGg9LycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygnbm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSknLCAnZm9vPWJhcjsgdGVzdEtl
eT10ZXN0VmFsdWUnKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitvbmxvYWQgPSAoKSA9
PiB7CisgICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7CisgICAgICAgIHRlc3RC
dXR0b24uY2xpY2soKTsKKyAgICB9KTsKK307Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNv
dXJjZXMvY29va2llcy10ZXN0LXBvc3QuanMnPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tp
ZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNjZjVhZGE4YzQ5YWY1MjQ3MDdlYWQyZmExOGI0ZTYzZDE5MjIz
YTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMiBAQAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFs
dWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0
S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXplQ29va2llKGNvb2tpZXNJbkZyYW1lKSBpcyAi
Zm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVu
dC5jb29raWUpIGlzICJmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFy
c2luZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tp
ZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjI5ZWZiNTM4Y2E0N2Uy
MjhiNzM4ZmM1M2Q5NTA0NDlkYTljY2JiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcu
aHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgZG9jdW1lbnQu
Y29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEgc2hvd01vZGFsRGlhbG9nKCkg
Y2FsbCcpOworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHZhbGlkYXRlQ29va2ll
c0R1cmluZ0NoaWxkRnJhbWVQYXJzaW5nKF9jb29raWVzSW5GcmFtZSkKK3sKKyAgICBjb29raWVz
SW5GcmFtZSA9IF9jb29raWVzSW5GcmFtZTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25v
cm1hbGl6ZUNvb2tpZShjb29raWVzSW5GcmFtZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFs
dWUnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVu
dC5jb29raWUpJywgJ2Zvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlJyk7CisgICAgZmluaXNoSlNU
ZXN0KCk7ICAgIAorfQorCitvbmxvYWQgPSAoKSA9PiB7CisgICAgZG9jdW1lbnQuY29va2llID0g
InRlc3RLZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6
ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICAv
LyBUaGlzIGlzIHNvIHRoZSBjb29raWUgZ2V0cyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRl
c3QuCisgICAgcmVnaXN0ZXJDb29raWVGb3JDbGVhbnVwKCdmb289YmFyOyBwYXRoPS8nKTsKKwor
ICAgIGxldCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBp
ZnJhbWUuc3JjID0gInJlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHA/Y29va2llLW5h
bWU9Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRpb249ZG9jdW1lbnQtY29va2llLWR1cmlu
Zy1pZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRtbCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChpZnJhbWUpOworfTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29r
aWVzLXRlc3QtcG9zdC5qcyc+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Nsb3NlLW1vZGFsLWRp
YWxvZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9z
ZS1tb2RhbC1kaWFsb2cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjU2OGRmZWRiYjJkM2E5NWEyZjE0M2U2
ZWYxYzgyMWVhY2JkYTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbApAQCAtMCwwICsxLDcg
QEAKKzxzY3JpcHQ+CitvbmxvYWQgPSAoKSA9PiB7CisgICAgY2xvc2UoKTsKKyAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgICAgdGVzdFJ1bm5lci5hYm9ydE1vZGFsKCk7Cit9OworPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3Vy
Y2VzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1k
dXJpbmctaWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkN2FiN2EzOTIy
ZDEwOGExZjYwMjc5OWU2NjgzNDM1YTg5OTI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1p
ZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+Cit0b3Au
dmFsaWRhdGVDb29raWVzRHVyaW5nQ2hpbGRGcmFtZVBhcnNpbmcoZG9jdW1lbnQuY29va2llKTsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jl
c291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocApuZXcgZmlsZSBtb2Rl
IDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OWY0M2YyOWU4NTJkZGNjMDlmOTY5Zjg5OWU4ZjNlMTJhYmFhODQ4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXQtY29va2llLWFu
ZC1zZXJ2ZS5waHAKQEAgLTAsMCArMSwxMyBAQAorPD9waHAKKyRjb29raWVOYW1lID0gJF9HRVRb
J2Nvb2tpZS1uYW1lJ107CiskY29va2llVmFsdWUgPSAkX0dFVFsnY29va2llLXZhbHVlJ107Cisk
ZGVzdGluYXRpb24gPSAkX0dFVFsnZGVzdGluYXRpb24nXTsKK2hlYWRlcigiQ29udGVudC1UeXBl
OiB0ZXh0L2h0bWwiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUiKTsKK2hlYWRl
cigiU2V0LUNvb2tpZTogJHtjb29raWVOYW1lfT0ke2Nvb2tpZVZhbHVlfTsgcGF0aD0vIik7Cisk
ZnAgPSBmb3BlbigkZGVzdGluYXRpb24sICdyYicpOworaGVhZGVyKCJDb250ZW50LUxlbmd0aDog
IiAuIGZpbGVzaXplKCRkZXN0aW5hdGlvbikpOworCitmcGFzc3RocnUoJGZwKTsKK2V4aXQ7Cis/
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390926</attachid>
            <date>2020-02-17 09:58:13 -0800</date>
            <delta_ts>2020-02-17 14:53:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207593-20200217095812.patch</filename>
            <type>text/plain</type>
            <size>95585</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM2MTQ5ZWM3NmRkZmUwYTQzZWNkMzI4
MjY0YTAwMTgxMWM4NTE2ZjEuLmY0ZmY4NTg2MTg3Mzg3YTJiYWQ0NjU4ZDM3OGVjMzhmMDA3ZGZl
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nl
c3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4g
bW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYnVpbGQgdGltZSBmbGFn
cyBmb3IgbmV3IGZlYXR1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAtMDItMTcgIERvbiBPbG1zdGVhZCAg
PGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIFVzZSBidWlsdGluIHRh
cmdldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBhOGJlNDhiNGRjZDg0YzE5NDhjZTdlYmNkZjVkYjhlZTg1MTYx
MTdjLi4xYjFmOGI1OGZmM2JhNWFhOTM5MzMxMjJmMGEzYjhlMjM4ZTVjOTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsODUgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nlc3MgY29v
a2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4gbW9zdCBj
YXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3
NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBJbXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBE
T00gY29va2llIGNhY2hlIGZvciBzZXJ2aW5nIGBkb2N1bWVudC5jb29raWVgIHJlcXVlc3RzIGZy
b20gSmF2YVNjcmlwdC4KKworICAgICAgICBUaGUgZmlyc3QgdGltZSBkb2N1bWVudC5jb29raWUg
aXMgY2FsbGVkIGZvciBhIGdpdmVuIGhvc3QsIHRoZSBXZWJQcm9jZXNzIHdpbGwgcHVsbCBpbiBh
bGwgdGhlCisgICAgICAgIG5vbi1IVFRQT25seSBjb29raWVzIGZvciB0aGF0IGhvc3QgZnJvbSB0
aGUgTmV0d29ya1Byb2Nlc3MgKHN0aWxsIHZpYSBzeW5jIElQQykgYW5kIHN0b3JlIHRoZW0KKyAg
ICAgICAgaW4gYW4gaW4tbWVtb3J5IGNvb2tpZSBzdG9yZS4gTGF0ZXIgZG9jdW1lbnQuY29va2ll
IGNhbGxzIGZvciB0aGlzIGhvc3QgZnJvbSB0aGlzIFdlYlByb2Nlc3MKKyAgICAgICAgd2lsbCB0
aGVuIGxldmVyYWdlIHRoZSBpbi1tZW1vcnkgY29va2llIHN0b3JlIGFuZCBhdm9pZCBkb2luZyBh
IHN5bmMgSVBDIHRvIHRoZSBOZXR3b3JrUHJvY2VzcworICAgICAgICBlbnRpcmVseS4KKworICAg
ICAgICBUbyBtYWludGFpbiB0aGUgaW4tcHJvY2VzcyBjb29raWUgc3RvcmUgdXAtdG8tZGF0ZSwg
dGhlIFdlYlByb2Nlc3Mgc3Vic2NyaWJlIGZvciBjb29raWUtY2hhbmdlCisgICAgICAgIG5vdGlm
aWNhdGlvbnMgZnJvbSB0aGUgTmV0d29ya1Byb2Nlc3MsIG9ubHkgZm9yIHRoZSBob3N0cyBpdCBp
cyBpbnRlcmVzdGVkIGluLgorCisgICAgICAgIElmIHRoZSBwYWdlJ3MgSmF2YVNjcmlwdCBzZXRz
IGEgY29va2llIGJ5IHNldHRpbmcgZG9jdW1lbnQuY29va2llLCB3ZSB3aWxsIG5vdCBpbnZhbGlk
YXRlIHRoZQorICAgICAgICBjYWNoZSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gSW5zdGVhZCwg
d2Ugc2V0IHRoZSBjb29raWUgaW4gb3VyIGluLW1lbW9yeSBjb29raWUgYmVmb3JlCisgICAgICAg
IHNlbmRpbmcgdGhlIG5ldyBjb29raWUgdG8gdGhlIE5ldHdvcmtQcm9jZXNzLgorCisgICAgICAg
IEZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGFueSBzeW5jIElQQyB0byBhIGdpdmVuIGhvc3Qg
d2lsbCBjdXJyZW50bHkgaW52YWxpZGF0ZSB0aGUgY29va2llCisgICAgICAgIGNhY2hlIGZvciB0
aGlzIGhvc3QuIFRoaXMgaXMgYmVjYXVzZSB0aGlzIHN5bmNocm9ub3VzIGxvYWQgbWF5IGNhdXNl
IGNvb2tpZXMgdG8gZ2V0IHNldAorICAgICAgICBzeW5jaHJvbm91c2x5IGFuZCB0aGUgcGFnZSBj
b3VsZCBhY2Nlc3MgZG9jdW1lbnQuY29va2llIHJpZ2h0IGFmdGVyIHRoZSBzeW5jIFhIUi4gVGhp
cyBiZWhhdmlvcgorICAgICAgICBpcyBjb3ZlcmVkIGJ5IHRoZSBmb2xsb3dpbmcgZXhpc3Rpbmcg
dGVzdDoKKyAgICAgICAgLSBodHRwL3Rlc3RzL2Nvb2tpZXMvc3luYy14aHItc2V0LWNvb2tpZS1p
bnZhbGlkYXRlcy1jYWNoZS5odG1sCisKKyAgICAgICAgQW5vdGhlciBsaW1pdGF0aW9uIG9mIHRo
ZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoZSBjb29raWUgY2FjaGUgaXMgdGhhdCBpdCBp
cyBjdXJyZW50bHkKKyAgICAgICAgb25seSBsZXZlcmFnZWQgZm9yIGZpcnN0IHBhcnR5IGNvbnRl
bnQuIFRoaXMgaXMgc3Vib3B0aW1hbCBhbmQgY291bGQgYmUgaW1wcm92ZWQgaW4gYSBsYXRlcgor
ICAgICAgICBpdGVyYXRpb24uIEhvd2V2ZXIsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIFNhZmFy
aSBpcyB0aGF0IHRoaXJkLXBhcnR5IGlmcmFtZXMgZG8gbm90IGhhdmUKKyAgICAgICAgY29va2ll
IGFjY2VzcyB1bmxlc3MgdGhleSByZXF1ZXN0IGl0IHVzaW5nIHRoZSBzdG9yYWdlIGFjY2VzcyBB
UEkuIFdlIGFsc28gY3VycmVudGx5IGhhdmUKKyAgICAgICAgYSBsaW1pdCBvZiA1IGhvc3RzIHdp
dGggY2FjaGVkIGNvb2tpZXMgcGVyIFdlYlByb2Nlc3MuCisKKyAgICAgICAgVGVzdHM6IGh0dHAv
dGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5n
LWlmcmFtZS1wYXJzaW5nLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlk
TG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaDoKKyAgICAgICAgKiBsb2FkZXIvQ29va2llSmFyLmg6CisgICAgICAgICogbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogcGFnZS9NZW1vcnlS
ZWxlYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSk6Cisg
ICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVDaGFuZ2VP
YnNlcnZlcjo6fkNvb2tpZUNoYW5nZU9ic2VydmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZSBjb25zdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2Nv
YS5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6fk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxl
dGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6bnNDb29raWVzVG9Db29raWVWZWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpuc0Nvb2tpZVN0b3JhZ2Ug
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXMgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVIVFRQ
Q29va2llIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
c2V0SFRUUENvb2tpZXNGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llc0ZvclVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpmaWx0ZXJDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llc0ZvclVSTCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpnZXRSYXdDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp1bnJl
Z2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
dG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRvbUNvb2tpZXNGb3JIb3N0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0
ZW5lckFQSSBjb25zdCk6CisKIDIwMjAtMDItMTcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTEZDXSBSZW1vdmUgUmVwbGFjZWRCb3g6Om1fbGF5b3V0Qm94CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwppbmRleCBmN2FkMmJkZDgxZTYzZDA4NGY4ZmZjMjkzNWM2N2Y2MmRiYzRi
YmZkLi4yNjI5ODQ5M2VjNzY0NTg5YTM4NjAxYTUyNDIyZWFmYTI5MGU5YjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2ViUHJv
Y2VzcyBjb29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBp
biBtb3N0IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAg
IFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEFkZCBuZXcgQ0ZOZXR3b3Jr
IFNQSSB0byBDRk5ldHdvcmtTUEkuaCBmb3Igb3BlbiBzb3VyY2UgYnVpbGRzIGFuZCBmb3IgdXNp
bmcgcmVzcG9uZHNUb1NlbGVjdG9yLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaDoKKwogMjAyMC0wMi0xNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIFtDTWFrZV0gVXNlIGJ1aWx0aW4gdGFyZ2V0cwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjY2U3
ZTdmYzlmNTljOWQ4YjM2YzI2MDVmN2FjYmU0YmU2OTI2NWI1Li5jODBlODcxMjA0MjFiOTI5MGE3
MTA4YzUwMDNjZDYzYTQzNWYwOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDIwLTAy
LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1bQ29j
b2FdIEltcGxlbWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9pZCBzeW5jIElQ
QyBmb3IgZG9jdW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTYwMjcwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAg
ICAgICAgU2VlIFdlYkNvcmUgQ2hhbmdlTG9nLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6fk5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNv
b2tpZXNGb3JIb3N0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0FkZGVkKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNE
ZWxldGVkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5OgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0FkZGVkKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVzRGVsZXRlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW06IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUNhY2hlOjppc0Z1bmN0aW9uYWwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6Y29va2llc0ZvckRPTSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZUNhY2hlOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZUNhY2hlOjpjb29raWVzQWRkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29r
aWVDYWNoZTo6Y29va2llc0RlbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNo
ZTo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6Y2xlYXJGb3JIb3N0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OnBydW5lQ2FjaGVJZk5lY2Vzc2Fy
eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb29raWVKYXI6OmlzRWxpZ2libGVGb3JDYWNoZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llcyBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvb2tpZUphcjo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUph
cjo6Y29va2llc0FkZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjpjb29raWVz
RGVsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y2xlYXJDYWNoZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZUphcjo6Y2xlYXJDYWNoZUZvckhvc3QpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fb3ZlcnJpZGRlbk1l
ZGlhVHlwZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6V2ViUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmNvb2tpZUphcik6CisK
IDIwMjAtMDItMTcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KIAogICAg
ICAgICBbQ01ha2VdIFVzZSBidWlsdGluIHRhcmdldHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL0hhc2hTZXQuaCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAppbmRleCBlMjY4N2U5YjA2
MmRkYzg0OTQ1OTQyZTkwMjQ2YWE4MWE3ZjQ0NTU1Li5lZTJjMjkxMzc4Mzg4MjViOTlkYTYwNDc5
MzI5OWEzYThkYjNlYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKKysr
IGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCkBAIC0xMTIsNiArMTEyLDggQEAgcHVibGljOgog
ICAgIC8vIHRoZW0gYXJlIG5ldyB0byB0aGUgc2V0LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBzZXQg
aXMgdW5jaGFuZ2VkLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KICAgICBi
b29sIGFkZChJdGVyYXRvclR5cGUgYmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpOworICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KKyAgICBib29sIHJlbW92ZShJdGVyYXRvclR5cGUg
YmVnaW4sIEl0ZXJhdG9yVHlwZSBlbmQpOwogCiAgICAgYm9vbCByZW1vdmUoY29uc3QgVmFsdWVU
eXBlJik7CiAgICAgYm9vbCByZW1vdmUoaXRlcmF0b3IpOwpAQCAtMjcwLDYgKzI3MiwxNiBAQCBp
bmxpbmUgYm9vbCBIYXNoU2V0PFQsIFUsIFY+OjphZGQoSXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVy
YXRvclR5cGUgZW5kKQogICAgIHJldHVybiBjaGFuZ2VkOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWPgordGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3JU
eXBlPgoraW5saW5lIGJvb2wgSGFzaFNldDxULCBVLCBWPjo6cmVtb3ZlKEl0ZXJhdG9yVHlwZSBi
ZWdpbiwgSXRlcmF0b3JUeXBlIGVuZCkKK3sKKyAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAg
ICBmb3IgKEl0ZXJhdG9yVHlwZSBpdGVyID0gYmVnaW47IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCisg
ICAgICAgIGNoYW5nZWQgfD0gcmVtb3ZlKCppdGVyKTsKKyAgICByZXR1cm4gY2hhbmdlZDsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KIGlubGluZSBi
b29sIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZShpdGVyYXRvciBpdCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1I
YXZlLmgKaW5kZXggODY4NmRiOWI3ZTdmZDAwZGZjNGQxOWFlYTY4YmMxYzNiN2IwNmJiZC4uNjA0
MDE4NGI2MDIzZWIwMmNkMTgwNDI0NGM3NTBjNjM1MzcxM2NkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZl
LmgKQEAgLTU1Niw2ICs1NTYsMTAgQEAKICNkZWZpbmUgSEFWRV9ERVZJQ0VfSURFTlRJVFkgMQog
I2VuZGlmCiAKKyNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1JTFkpICYmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkKKyNkZWZpbmUgSEFWRV9DT09LSUVfQ0hB
TkdFX0xJU1RFTkVSX0FQSSAxCisjZW5kaWYKKwogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKSB8fCBQTEFURk9STShJT1NfRkFN
SUxZKQogI2RlZmluZSBIQVZFX0RBVEFfUFJPVEVDVElPTl9LRVlDSEFJTiAxCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKaW5kZXggNjY1OGU3
MjhjOWM5ODJhNmZmODJjMGNhNDE2NDhjMmQ0ZGMxMTQ0MC4uYTkyMDc2MGIzZDY5YzIzYmU4YjY4
OWU1NmY0OGZkZDdkOGM2NDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9z
cGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2Yv
Q0ZOZXR3b3JrU1BJLmgKQEAgLTM5MSw2ICszOTEsMTAgQEAgV1RGX0VYVEVSTl9DX0VORAogCiBA
aW50ZXJmYWNlIE5TSFRUUENvb2tpZVN0b3JhZ2UgKCkKICsgKHZvaWQpX3NldFNoYXJlZEhUVFBD
b29raWVTdG9yYWdlOihOU0hUVFBDb29raWVTdG9yYWdlICopc3RvcmFnZTsKKy0gKHZvaWQpX3Nl
dFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczooTlNTZXQ8TlNTdHJpbmcqPiogX19u
dWxsYWJsZSlkb21haW5MaXN0OworLSAodm9pZClfc2V0Q29va2llc0FkZGVkSGFuZGxlcjoodm9p
ZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBDb29raWUqPiogYWRkZWRDb29raWVzLCBOU1VS
TCogX19udWxsYWJsZSB1cmxGb3JBZGRlZENvb2tpZXMpKWNvb2tpZXNBZGRlZEhhbmRsZXIgb25R
dWV1ZTooZGlzcGF0Y2hfcXVldWVfdCBfX251bGxhYmxlKXF1ZXVlOworLSAodm9pZClfc2V0Q29v
a2llc0RlbGV0ZWRIYW5kbGVyOih2b2lkKF5fX251bGxhYmxlKShOU0FycmF5PE5TSFRUUENvb2tp
ZSo+KiBfX251bGxhYmxlIGRlbGV0ZWRDb29raWVzLCBib29sIGRlbGV0ZWRBbGxDb29raWVzKSlj
b29raWVzRGVsZXRlZEhhbmRsZXIgb25RdWV1ZTooZGlzcGF0Y2hfcXVldWVfdCBfX251bGxhYmxl
KXF1ZXVlOworLSAoTlNBcnJheSogX19udWxsYWJsZSlfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNT
dHJpbmcqKWRvbWFpbjsKIEBlbmQKIAogQGludGVyZmFjZSBOU1VSTFJlc3BvbnNlICgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCAwMmE2NTM0N2FjNDllZjAxMmIxOWIzODY3ZTkzOTUwNzk2
ZWQ4YmZhLi5mZTBhMDQ5NTgxNTJhNWZmZjQxYzRjZmMwZGI2MmM1NDkyMDRhZjM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTcyMDIsMTEgKzcyMDIsMTQgQEAgdm9pZCBEb2N1bWVudDo6
aW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCkKICAgICBtX2NhY2hlZERPTUNvb2tpZXMgPSBTdHJp
bmcoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSgp
Cit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYg
dXJsKQogewogICAgIC8vIFN5bmNocm9ub3VzIHJlc291cmNlcyBsb2FkaW5nIGNhbiBzZXQgY29v
a2llcyBzbyB3ZSBpbnZhbGlkYXRlIHRoZSBjb29raWVzIGNhY2hlCiAgICAgLy8gaW4gdGhpcyBj
YXNlLCB0byBiZSBzYWZlLgogICAgIGludmFsaWRhdGVET01Db29raWVDYWNoZSgpOworCisgICAg
aWYgKGF1dG8qIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCisgICAgICAgIHBhZ2UtPmNvb2tpZUphcigp
LmNsZWFyQ2FjaGVGb3JIb3N0KHVybC5ob3N0KCkudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgRG9j
dW1lbnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQmIHdvcmxk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA2ZjFmMTQ1MWQ3NzU3NDcyYmEyOWRiYTlkMTdlNTky
ZmY4YTk5NTI5Li5hMTBmMGU4NzI3YTk0NjRjOGM5NDM4MWM0YzI0ZDEyMWQyMjIyZGVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMTYzOCw3ICsxNjM4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHNldENhY2hlZERPTUNvb2tpZXMoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCBpc0RPTUNvb2tp
ZUNhY2hlVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tpZUNhY2hlRXhwaXJ5VGltZXIuaXNB
Y3RpdmUoKTsgfQogICAgIHZvaWQgaW52YWxpZGF0ZURPTUNvb2tpZUNhY2hlKCk7Ci0gICAgdm9p
ZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkgZmluYWw7CisgICAgdm9pZCBkaWRMb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFVSTCYpIGZpbmFsOwogCiAgICAgYm9vbCBjYW5O
YXZpZ2F0ZUludGVybmFsKEZyYW1lJiB0YXJnZXRGcmFtZSk7CiAgICAgYm9vbCBpc05hdmlnYXRp
b25CbG9ja2VkQnlUaGlyZFBhcnR5SUZyYW1lUmVkaXJlY3RCbG9ja2luZyhGcmFtZSYgdGFyZ2V0
RnJhbWUsIGNvbnN0IFVSTCYgZGVzdGluYXRpb25VUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4IDU4ODJlMWFiMWFiOTNiMzczZWEyM2E2
YTAyODI0MWRlZWY1MzM4NjQuLjMyYWY3NDQ4MTQxYTc5MWM4M2M2ZjI5MWVjZWRkYWRhMDFkMTlh
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
QEAgLTIxOCw3ICsyMTgsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRlc3Ryb3ll
ZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0JiBtZXNzYWdlUG9ydCkKICAgICBtX21lc3NhZ2VQb3J0
cy5yZW1vdmUoJm1lc3NhZ2VQb3J0KTsKIH0KIAotdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkKK3ZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBVUkwmKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCAwMDgzMWEy
NjBiNTM3YTAwOTNhODgxMmRhNGJhNWZmZDVjMjU1NmE4Li5iYzA0ZGY0OWQxYWU5Nzg5NjMwNWM4
MjMxM2E2ZDVjMmY2MjQ0ZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKQEAgLTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjcmVhdGVk
TWVzc2FnZVBvcnQoTWVzc2FnZVBvcnQmKTsKICAgICB2b2lkIGRlc3Ryb3llZE1lc3NhZ2VQb3J0
KE1lc3NhZ2VQb3J0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hy
b25vdXNseSgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFVSTCYpOwogCiAgICAgdm9pZCByZWYoKSB7IHJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQogICAgIHZvaWQgZGVyZWYoKSB7IGRlcmVmU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggODRkYmE0MGU5Mjg2Y2QzZmQ4Mzgz
NGJhYzAyMDE2MDAxYTI3ZjUwNy4uMzAwMjkzYTg2NmRhYzRiMjA4NTdiN2U3NTI0NDc4MTEwYzVj
ODlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaApAQCAtNjAsNiArNjAsMTAgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29u
c3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKTsKIAorICAgIC8vIENvb2tpZSBDYWNoZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNo
ZSgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJpbmcm
KSB7IH0KKwogICAgIHZpcnR1YWwgfkNvb2tpZUphcigpOwogcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvKGNvbnN0IERvY3VtZW50Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggMmI3YmY0MjlkZDYyMmZjNzI3
ZTEwMTMwMmVmZmVlZGQ1ZTRjMzg0Ny4uYzdlMGYzMWJlNzIwNmZlZjhkYWFkMTg0NjFlNGY1YTI0
YmJmN2Q2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcApA
QCAtMTEwLDExICsxMTAsMTIgQEAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXgKIAogdm9pZCBUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQmIGNsaWVudCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMp
CiB7CisgICAgYXV0byByZXNvdXJjZVVSTCA9IHJlcXVlc3QudXJsKCk7CiAgICAgaWYgKGlzPFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSkKICAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4o
Y29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQog
ICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQs
IG9wdGlvbnMpOwotICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseSgpOwor
ICAgIGNvbnRleHQuZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXNvdXJjZVVSTCk7CiB9
CiAKIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9nRXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFN0cmluZyYgaW5p
dGlhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKaW5kZXggMzE2ZDIxNjk3
YmRiZWU5MmQxM2FlMzlkNjRhNzQ0ZjM0ZmYxN2E1Yy4uNDExZjg3MmRhNGIxMmE4MGNkMzk3MzIw
ODJkNzM5ZThlNDZiZjdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlS
ZWxlYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ29tbW9uVk0uaCIKKyNpbmNsdWRlICJDb29raWVKYXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCkBAIC05OSw2ICsxMDAsMTAgQEAgc3RhdGljIHZvaWQgcmVsZWFzZUNyaXRpY2FsTWVt
b3J5KFN5bmNocm9ub3VzIHN5bmNocm9ub3VzLCBNYWludGFpbkJhY2tGb3J3YXJkQ2EKIAogICAg
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKIAorICAgIFBhZ2U6OmZvckVhY2hQ
YWdlKFtdKGF1dG8mIHBhZ2UpIHsKKyAgICAgICAgcGFnZS5jb29raWVKYXIoKS5jbGVhckNhY2hl
KCk7CisgICAgfSk7CisKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogY29weVRvVmVjdG9yT2Y8
UmVmUHRyPERvY3VtZW50Pj4oRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKSkgewogICAgICAgICBk
b2N1bWVudC0+c3R5bGVTY29wZSgpLnJlbGVhc2VNZW1vcnkoKTsKICAgICAgICAgZG9jdW1lbnQt
PmZvbnRTZWxlY3RvcigpLmVtcHR5Q2FjaGVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwK
aW5kZXggZmQ5MDE2NDcyMGVjNzU5MjlmYzVjZGYyZDEwZmQxODg1Y2FkZGY1ZS4uNjNmNTk5OGU0
ZGYzNTJmMGFjZDk0YmYwYjUyYTlmMmExM2ExOWRiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
eWFtbApAQCAtMzYxLDYgKzM2MSw5IEBAIHJlcXVlc3RJZGxlQ2FsbGJhY2tFbmFibGVkOgogSFRU
UFNVcGdyYWRlRW5hYmxlZDoKICAgaW5pdGlhbDogZmFsc2UKIAoraW5Qcm9jZXNzQ29va2llQ2Fj
aGVFbmFibGVkOgorICBpbml0aWFsOiBmYWxzZQorCiB0aGlyZFBhcnR5SWZyYW1lUmVkaXJlY3RC
bG9ja2luZ0VuYWJsZWQ6CiAgIGluaXRpYWw6IHRydWUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCmluZGV4
IDI5OTQyNzU2MjU4ZTkyNDNjM2IwYTEwMGIxYTNmNmY3MmE4NDc1OGMuLmE0ZWVkZTE2YWRkNTZk
ZjVmNmYwN2Q1YTJkNTEzOWI2OGYwZTFhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCIKIAorI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkhUVFBDb29raWVBY2Nl
cHRQb2xpY3kuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTU2LDYgKzU3LDE0IEBAIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpwZXJtaXRQcm9jZXNzVG9Vc2VDb29raWVBUEkoYm9vbCB2YWx1ZSkK
ICAgICAgICAgcmVtb3ZlUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nl
c3NSYXdDb29raWVzKTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK1ZlY3RvcjxDb29raWU+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJikK
K3sKKyAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOworICAgIHJldHVybiB7IH07Cit9
CisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKIAogYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXggNjUwNmYxMDc3MDY1YTRkMjFmNzk4MDE5MmYzZDc1
MDdlYmMyM2E5ZS4uZjUxOTI2OWQzOTZmMjM3OWJjZTI5ZjI4NmQ2OWJiZGQ4NjZmMmM3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0y
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjAsNiArNjAsOSBAQCB0eXBlZGVmIHN0cnVjdCBfU291cENvb2tp
ZUphciBTb3VwQ29va2llSmFyOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSAiQ29v
a2llU3RvcmFnZU9ic2VydmVyLmgiCitPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5T
SFRUUENvb2tpZTsKK09CSkNfQ0xBU1MgTlNNdXRhYmxlU2V0OwogI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTc5LDYgKzgyLDE1IEBAIGVudW0gY2xhc3MgVGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZSA6IHVpbnQ4X3QgeyBBbGwsIEFsbE9uU2l0ZXNXaXRob3V0VXNlckluCiBl
bnVtIGNsYXNzIEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIDogdWludDhfdCB7IEFs
bEJ1dENvb2tpZXMsIE5vbmUsIEFsbEJ1dENvb2tpZXNMaXZlT25UZXN0aW5nVGltZW91dCwgQWxs
QnV0Q29va2llc1JlcHJvVGVzdGluZ1RpbWVvdXQgfTsKIGVudW0gY2xhc3MgU2hvdWxkQXNrSVRQ
IDogYm9vbCB7IE5vLCBZZXMgfTsKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9B
UEkpCitjbGFzcyBDb29raWVDaGFuZ2VPYnNlcnZlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
Q29va2llQ2hhbmdlT2JzZXJ2ZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29va2llc0FkZGVk
KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNEZWxldGVkKCkgPSAwOworfTsKKyNlbmRpZgorCiBj
bGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpA
QCAtOTIsOSArMTA0LDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBOU0hUVFBDb29r
aWVTdG9yYWdlICpuc0Nvb2tpZVN0b3JhZ2UoKSBjb25zdDsKICNlbmRpZgogCisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgV0VCQ09SRV9FWFBPUlQgfk5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOwor
I2VuZGlmCisKICNpZiBQTEFURk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+
IGNyZWF0ZUNGU3RvcmFnZVNlc3Npb25Gb3JJZGVudGlmaWVyKENGU3RyaW5nUmVmIGlkZW50aWZp
ZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiYmKTsKKyAgICBlbnVtIGNsYXNzIElzSW5NZW1vcnlDb29raWVT
dG9yZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJl
Zj4mJiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiYsIElzSW5NZW1vcnlDb29r
aWVTdG9yZSA9IElzSW5NZW1vcnlDb29raWVTdG9yZTo6Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JU
IGV4cGxpY2l0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCk7CiAKICAgICAv
LyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQg
YmUgdXNlZC4KQEAgLTE0Niw2ICsxNjMsMTQgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRl
U2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCisgICAgV0VCQ09SRV9F
WFBPUlQgVmVjdG9yPENvb2tpZT4gZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0
KTsKKworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzdGFydExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29v
a2llQ2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBTdHJpbmcmIGhvc3QpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2ll
Q2hhbmdlT2JzZXJ2ZXImLCBjb25zdCBIYXNoU2V0PFN0cmluZz4mIGhvc3RzKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBib29sIHN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdDsK
KyNlbmRpZgorCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQgPSBlbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+KSBjb25zdDsKQEAg
LTE3MywxMSArMTk4LDI3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVI
VFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07CisgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
Y29va2llc0ZvclNlc3Npb24oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4sIEluY2x1ZGVIVFRQT25seU9yTm90LCBJbmNsdWRlU2VjdXJlQ29va2llcywg
U2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMpIGNvbnN0OworICAgIE5TQXJyYXkgKmh0
dHBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpIGNvbnN0OworICAgIE5TQXJyYXkgKmh0
dHBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TVVJMICpmaXJzdFBhcnR5
LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0ZUluZm8+JiwgTlNVUkwgKikgY29uc3Q7CisgICAgTlNB
cnJheSAqY29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiwgU2hvdWxkQXNrSVRQKSBjb25zdDsKKyAgICB2b2lkIHNldEhUVFBDb29r
aWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYsIE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJM
ICosIE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYpIGNvbnN0Owor
ICAgIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0hUVFBD
b29raWUgKikgY29uc3Q7CisjZW5kaWYKKworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5F
Ul9BUEkpCisgICAgdm9pZCByZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5
KCk7CisgICAgdm9pZCB1bnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3Nhcnko
KTsKKyNlbmRpZgorCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAKICNpZiBQTEFU
Rk9STShDT0NPQSkgfHwgVVNFKENGVVJMQ09OTkVDVElPTikKICAgICBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4gbV9wbGF0Zm9ybVNlc3Npb247CiAgICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IG1fcGxhdGZvcm1Db29raWVTdG9yYWdlOworICAgIGJvb2wgbV9p
c0luTWVtb3J5Q29va2llU3RvcmUgeyBmYWxzZSB9OwogI2VsaWYgVVNFKFNPVVApCiAgICAgc3Rh
dGljIHZvaWQgY29va2llc0RpZENoYW5nZShOZXR3b3JrU3RvcmFnZVNlc3Npb24qKTsKIApAQCAt
MTkwLDYgKzIzMSwxMiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4g
bV9jb250ZXh0OwogI2VuZGlmCiAKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJ
KQorICAgIGJvb2wgbV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycyB7IGZhbHNlIH07CisgICAg
UmV0YWluUHRyPE5TTXV0YWJsZVNldD4gbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5n
ZXM7CisgICAgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8Q29va2llQ2hhbmdlT2JzZXJ2ZXIqPj4g
bV9jb29raWVDaGFuZ2VPYnNlcnZlcnM7CisjZW5kaWYKKwogICAgIENyZWRlbnRpYWxTdG9yYWdl
IG1fY3JlZGVudGlhbFN0b3JhZ2U7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAppbmRleCBiMDFhN2U2NmJmMDkx
NDk2MWQ2MzAxMDc0MWUyMjE3NWY5ZWZiOWI4Li5lMGQ4NGY3YzUxNzk1ZWNlYmYzZTUwNmM5YjBh
MjhlOGNiNWFiNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcApAQCAtNzMs
MTEgKzczLDEyIEBAIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZUNGU3RvcmFnZVNlc3Npb25GCiAgICAgcmV0dXJuIHN0b3JhZ2VT
ZXNzaW9uOwogfQogCi1OZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmPiYmIHBsYXRmb3JtU2Vzc2lvbiwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
JiYgcGxhdGZvcm1Db29raWVTdG9yYWdlKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZj4mJiBwbGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiYmIHBsYXRmb3JtQ29va2llU3RvcmFnZSwgSXNJbk1lbW9yeUNvb2tpZVN0
b3JlIGlzSW5NZW1vcnlDb29raWVTdG9yZSkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkK
ICAgICAsIG1fcGxhdGZvcm1TZXNzaW9uKFdURk1vdmUocGxhdGZvcm1TZXNzaW9uKSkKKyAgICAs
IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKGlzSW5NZW1vcnlDb29raWVTdG9yZSA9PSBJc0luTWVt
b3J5Q29va2llU3RvcmU6OlllcykKIHsKLSAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQ
SSgpIHx8ICFwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpOworICAgIEFTU0VSVChwcm9jZXNzTWF5VXNl
Q29va2llQVBJKCkgfHwgIXBsYXRmb3JtQ29va2llU3RvcmFnZSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CiAgICAgbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgPSBwbGF0Zm9ybUNvb2tpZVN0
b3JhZ2UgPyBXVEZNb3ZlKHBsYXRmb3JtQ29va2llU3RvcmFnZSkgOiBjb29raWVTdG9yYWdlKCk7
CiB9CiAKQEAgLTg4LDEwICs4OSwxMCBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2Uo
KSBjb25zdAogewotICAgIGlmICghcHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQorICAgIGlmICgh
cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpICYmICFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgaWYgKG1fcGxhdGZvcm1Db29raWVTdG9y
YWdlKQogICAgICAgICByZXR1cm4gbV9wbGF0Zm9ybUNvb2tpZVN0b3JhZ2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA5ZTlhOTFiNzI1MGYzNjJiODU5NDVmM2Q3
MDI3NmU2YWJiMWFkZDQyLi42OGFhMzIzZmI5MDJhNzUzM2I0MWFlODBjMTk3Yzc3YTg0ZTU2YTQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ0LDkgKzQ0
LDE2IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitOZXR3b3JrU3RvcmFnZVNlc3Np
b246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKQoreworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9M
SVNURU5FUl9BUEkpCisgICAgdW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNz
YXJ5KCk7CisjZW5kaWYKK30KKwogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZShjb25zdCBDb29raWUmIGNvb2tpZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykg
fHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogICAgIFtuc0Nvb2tpZVN0b3JhZ2UoKSBzZXRDb29raWU6KE5TSFRUUENvb2tpZSAq
KWNvb2tpZV07CkBAIC01NSw3ICs2Miw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpz
ZXRDb29raWUoY29uc3QgQ29va2llJiBjb29raWUpCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gbnNDb29raWVzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aENhcGFjaXR5OmNvb2tpZXMuc2l6ZSgpXSk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiBjb29raWUgOiBjb29raWVzKQpAQCAtNjgsMTkgKzc1LDE4IEBAIHZvaWQgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpzZXRDb29raWVzKGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25z
dCBVUkwmCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWUoY29uc3Qg
Q29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJ
bk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBbbnNDb29raWVTdG9yYWdlKCkgZGVsZXRlQ29va2ll
OihOU0hUVFBDb29raWUgKiljb29raWVdOwogfQogCi1zdGF0aWMgVmVjdG9yPENvb2tpZT4gbnND
b29raWVzVG9Db29raWVWZWN0b3IoTlNBcnJheTxOU0hUVFBDb29raWUgKj4gKm5zQ29va2llcykK
K3N0YXRpYyBWZWN0b3I8Q29va2llPiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3RvcihOU0FycmF5PE5T
SFRUUENvb2tpZSAqPiAqbnNDb29raWVzLCBjb25zdCBGdW5jdGlvbjxib29sKE5TSFRUUENvb2tp
ZSAqKT4mIGZpbHRlciA9IHsgfSkKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7Ci0KICAgICBWZWN0b3I8Q29v
a2llPiBjb29raWVzOwogICAgIGNvb2tpZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0Nvb2tp
ZXMuY291bnQpOwotICAgIGZvciAoTlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMp
Ci0gICAgICAgIGNvb2tpZXMudW5jaGVja2VkQXBwZW5kKG5zQ29va2llKTsKLQorICAgIGZvciAo
TlNIVFRQQ29va2llICpuc0Nvb2tpZSBpbiBuc0Nvb2tpZXMpIHsKKyAgICAgICAgaWYgKCFmaWx0
ZXIgfHwgZmlsdGVyKG5zQ29va2llKSkKKyAgICAgICAgICAgIGNvb2tpZXMudW5jaGVja2VkQXBw
ZW5kKG5zQ29va2llKTsKKyAgICB9CiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKQEAgLTExOCw3
ICsxMjQsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgp
CiAKIE5TSFRUUENvb2tpZVN0b3JhZ2UgKk5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6bnNDb29raWVT
dG9yYWdlKCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNz
UHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQ
cml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0lu
TWVtb3J5Q29va2llU3RvcmUpOwogICAgIGF1dG8gY2ZDb29raWVTdG9yYWdlID0gY29va2llU3Rv
cmFnZSgpOwogICAgIGlmICghY2ZDb29raWVTdG9yYWdlIHx8IFtOU0hUVFBDb29raWVTdG9yYWdl
IHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXS5fY29va2llU3RvcmFnZSA9PSBjZkNvb2tpZVN0b3Jh
Z2UpCiAgICAgICAgIHJldHVybiBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2ll
U3RvcmFnZV07CkBAIC0xNTgsMTEgKzE2NCw2IEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3Jl
YXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgQ0ZV
UkxDYWNoZVNldERpc2tDYXBhY2l0eShjYWNoZS5nZXQoKSwgMCk7IC8vIFNldHRpbmcgZGlzayBj
YWNoZSBzaXplIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzEy
NjU2ODE0PiBpcyBmaXhlZC4KICAgICBDRlVSTENhY2hlU2V0TWVtb3J5Q2FwYWNpdHkoY2FjaGUu
Z2V0KCksIFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gbWVtb3J5Q2FwYWNpdHldKTsKIAot
ICAgIGlmICghTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpwcm9jZXNzTWF5VXNlQ29va2llQVBJKCkp
Ci0gICAgICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbi5sZWFrUmVmKCk7Ci0KLSAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSk7Ci0KICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNz
aW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24u
Z2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTczLDIwICsxNzQsMjMgQEAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBjcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oQ0ZTdHJpbmdSZWYgaWRlbnRpZmllcikKICAgICByZXR1cm4gc3Rv
cmFnZVNlc3Npb24ubGVha1JlZigpOwogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tpZXMo
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQorTlNBcnJheSAqTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0
b3JhZ2UpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotICAgIGlmICghY29va2llU3RvcmFnZSkK
KyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nl
c3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CisgICAgaWYgKCFjb29r
aWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVT
dG9yZSk7CiAgICAgICAgIHJldHVybiBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENv
b2tpZVN0b3JhZ2VdIGNvb2tpZXNdOworICAgIH0KICAgICAKICAgICBhdXRvIGNvb2tpZXMgPSBh
ZG9wdENGKENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhjb29raWVTdG9yYWdlKSk7CiAg
ICAgcmV0dXJuIFtOU0hUVFBDb29raWUgX2NmMm5zQ29va2llczpjb29raWVzLmdldCgpXTsKIH0K
IAotc3RhdGljIHZvaWQgZGVsZXRlSFRUUENvb2tpZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNv
b2tpZVN0b3JhZ2UsIE5TSFRUUENvb2tpZSAqY29va2llKQordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9y
YWdlLCBOU0hUVFBDb29raWUgKmNvb2tpZSkgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vz
c1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3Rv
cmFnZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5Q29va2llU3RvcmUp
OwogICAgICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2Vd
IGRlbGV0ZUNvb2tpZTpjb29raWVdOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI2LDkg
KzIzMCw5IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKE5TSFRUUENvb2tpZVN0b3Jh
Z2UgKnN0b3JhZ2UsIE5TVVJMICp1cmwsIE5TVVJMICptCiAgICAgcmV0dXJuIGNvb2tpZXNQdHIt
PmF1dG9yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNV
UkwgKnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8pCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0SFRUUENvb2tpZXNGb3JV
UkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICpjb29raWVz
LCBOU1VSTCAqdXJsLCBOU1VSTCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbykgY29uc3QKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgIGlmICghY29va2llU3RvcmFnZSkgewogI2lm
ICEoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgMTAx
NDAwKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykgJiYgIVBMQVRGT1JNKEFQUExFVFYpCiAgICAgICAg
IGlmIChbTlNIVFRQQ29va2llU3RvcmFnZSBpbnN0YW5jZXNSZXNwb25kVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3NldENvb2tpZXM6Zm9yVVJMOm1haW5Eb2N1bWVudFVSTDpwb2xpY3lQcm9wZXJ0aWVz
OildKQpAQCAtMjU1LDIxICsyNTksMjIgQEAgc3RhdGljIHZvaWQgc2V0SFRUUENvb2tpZXNGb3JV
UkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU0FycmF5ICoKICNlbmRp
ZgogfQogCi1zdGF0aWMgTlNBcnJheSAqaHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZiBjb29raWVTdG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8
U2FtZVNpdGVJbmZvPiYgc2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKQorTlNBcnJheSAqTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpodHRwQ29va2llc0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVm
IGNvb2tpZVN0b3JhZ2UsIE5TVVJMICpmaXJzdFBhcnR5LCBjb25zdCBPcHRpb25hbDxTYW1lU2l0
ZUluZm8+JiBzYW1lU2l0ZUluZm8sIE5TVVJMICp1cmwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OwotICAgIGlmICghY29va2llU3RvcmFnZSkKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlD
b29raWVTdG9yZSk7CisgICAgaWYgKCFjb29raWVTdG9yYWdlKSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAgICAgICAgIGNvb2tpZVN0b3JhZ2Ug
PSBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1bHQoa0NGQWxsb2NhdG9yRGVmYXVsdCk7Cisg
ICAgfQogCiAgICAgLy8gRklYTUU6IFN0b3AgY3JlYXRpbmcgYSBuZXcgTlNIVFRQQ29va2llU3Rv
cmFnZSBvYmplY3QgZWFjaCB0aW1lIHdlIHdhbnQgdG8gcXVlcnkgdGhlIGNvb2tpZSBqYXIuCiAg
ICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uIGNvdWxkIGluc3RlYWQga2VlcCBhIE5TSFRUUENv
b2tpZVN0b3JhZ2Ugb2JqZWN0IGZvciB1cy4KICAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llU3Rv
cmFnZT4gbnNDb29raWVTdG9yYWdlID0gYWRvcHROUyhbW05TSFRUUENvb2tpZVN0b3JhZ2UgYWxs
b2NdIF9pbml0V2l0aENGSFRUUENvb2tpZVN0b3JhZ2U6Y29va2llU3RvcmFnZV0pOwotICAgIHJl
dHVybiBjb29raWVzRm9yVVJMKG5zQ29va2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8pOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yVVJMKG5zQ29v
a2llU3RvcmFnZS5nZXQoKSwgdXJsLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8pOwogfQogCiBz
dGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJl
ZENvb2tpZXMsIE9wdGlvbmFsPFNlY29uZHM+IGNhcHBlZExpZmV0aW1lKQogewotICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpKTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW3VuZmlsdGVyZWRDb29raWVzIGNvdW50XTsK
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpjb3VudF0pOwogCkBAIC0z
MDIsMjcgKzMwNywyNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMo
TlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0
ZXJlZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
U2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llc0ZvclVSTChjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQKSBjb25zdAogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzZXNzaW9u
LnNob3VsZEJsb2NrQ29va2llcyhmaXJzdFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCisg
ICAgaWYgKHNob3VsZEFza0lUUCA9PSBTaG91bGRBc2tJVFA6OlllcyAmJiBzaG91bGRCbG9ja0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQogICAgICAgICByZXR1cm4g
bmlsOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFN
KHBhZ2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHNob3VsZEFza0lUUCk7CiAjZW5kaWYKLSAgICBy
ZXR1cm4gaHR0cENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsKTsKKyAgICByZXR1cm4gaHR0cENvb2tpZXNGb3JV
UkwoY29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCk7
CiB9CiAKLWVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwg
SW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
c0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAg
c2hvdWxkQXNrSVRQID0gU2hvdWxkQXNrSVRQOjpZZXMpCitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRB
c2tJVFApIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1l
bW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAot
ICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKHNlc3Npb24sIGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CisgICAg
TlNBcnJheSAqY29va2llcyA9IGNvb2tpZXNGb3JVUkwoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQKTsKICAgICBpZiAoIVtjb29raWVz
IGNvdW50XSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07IC8vIFJldHVybiBh
IG51bGwgc3RyaW5nLCBub3QgYW4gZW1wdHkgb25lIHRoYXQgU3RyaW5nQnVpbGRlciB3b3VsZCBj
cmVhdGUgYmVsb3cuCiAKQEAgLTM3NCwyMiArMzc4LDIyIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZUFs
bEhUVFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKIAogc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewotICAgIHJl
dHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVD
b29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihmaXJz
dFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVI
VFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIHNob3VsZEFza0lUUCk7CiB9CiAKIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBz
YW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOworICAgIHJldHVybiBjb29raWVzRm9yU2Vz
c2lvbihmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNs
dWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5JiBo
ZWFkZXJGaWVsZFByb3h5KSBjb25zdAogewotICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigq
dGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVT
aXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwg
aGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94
eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKGhl
YWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8s
IGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZp
ZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogfQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3Vs
ZEFza0lUUCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhh
c1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykp
OworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFj
Y2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtNDU3LDcgKzQ2MSw3IEBAIGJvb2wgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIAotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKCp0
aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91
bGRBc2tJVFApOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAg
ICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJl
c2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewpAQCAtNTE4LDcgKzUyMiw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0CiAK
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMsIEluY2x1ZGVIdHRwT25seUNvb2tpZXMgaW5j
bHVkZUh0dHBPbmx5Q29va2llcykKIHsKLSAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CisgICAgQVNTRVJUKGhhc1By
b2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwg
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogCiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCkBAIC01NjYsNCArNTcwLDk4IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShXYWxsVGltZSB0aW1lUG9pbnQpCiAgICAgW3N0
b3JhZ2UgX3NhdmVDb29raWVzXTsKIH0KIAorVmVjdG9yPENvb2tpZT4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkb21Db29raWVzRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpCit7CisgICAgTlNB
cnJheSAqbnNDb29raWVzID0gW25zQ29va2llU3RvcmFnZSgpIF9nZXRDb29raWVzRm9yRG9tYWlu
OihOU1N0cmluZyAqKWhvc3RdOworICAgIHJldHVybiBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihu
c0Nvb2tpZXMsIFtdKE5TSFRUUENvb2tpZSAqY29va2llKSB7IHJldHVybiAhY29va2llLkhUVFBP
bmx5OyB9KTsKK30KKworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lm
TmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAobV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycyA9IHRydWU7
CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzQWRkZWRIYW5kbGVyOl4oTlNBcnJh
eTxOU0hUVFBDb29raWUgKj4gKiBuc0Nvb2tpZXMsIE5TVVJMICp1cmxGb3JBZGRlZENvb2tpZXMp
IHsKKyAgICAgICAgVmVjdG9yPENvb2tpZT4gY29va2llcyA9IG5zQ29va2llc1RvQ29va2llVmVj
dG9yKG5zQ29va2llcyk7CisgICAgICAgIGF1dG8gaG9zdCA9IFVSTCh1cmxGb3JBZGRlZENvb2tp
ZXMpLmhvc3QoKS50b1N0cmluZygpOworICAgICAgICBSRUxFQVNFX0FTU0VSVCghaG9zdC5pc051
bGwoKSk7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5maW5kKGhv
c3QpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBpdC0+dmFs
dWUpCisgICAgICAgICAgICBvYnNlcnZlci0+Y29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOwor
ICAgIH0gb25RdWV1ZTpkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpXTsKKyAgICBbbnNDb29raWVT
dG9yYWdlKCkgX3NldENvb2tpZXNEZWxldGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQQ29va2ll
ICo+ICosIGJvb2wgLypkZWxldGVkQWxsQ29va2llcyovKSB7CisgICAgICAgIGZvciAoYXV0byYg
b2JzZXJ2ZXJzIDogbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMudmFsdWVzKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBvYnNlcnZlcnMpCisgICAgICAgICAgICAgICAgb2Jz
ZXJ2ZXItPmNvb2tpZXNEZWxldGVkKCk7CisgICAgICAgIH0KKyAgICB9IG9uUXVldWU6ZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp1
bnJlZ2lzdGVyQ29va2llQ2hhbmdlTGlzdGVuZXJzSWZOZWNlc3NhcnkoKQoreworICAgIGlmICgh
bV9kaWRSZWdpc3RlckNvb2tpZUxpc3RlbmVycykKKyAgICAgICAgcmV0dXJuOworCisgICAgW25z
Q29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzQWRkZWRIYW5kbGVyOm5pbCBvblF1ZXVlOm5pbF07
CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6bmlsIG9u
UXVldWU6bmlsXTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlczpuaWxdOworICAgIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMg
PSBmYWxzZTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0YXJ0TGlzdGVuaW5n
Rm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZlciYgb2JzZXJ2
ZXIsIGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICByZWdpc3RlckNvb2tpZUNoYW5nZUxpc3Rl
bmVyc0lmTmVjZXNzYXJ5KCk7CisKKyAgICBhdXRvJiBvYnNlcnZlcnMgPSBtX2Nvb2tpZUNoYW5n
ZU9ic2VydmVycy5lbnN1cmUoaG9zdCwgW10geworICAgICAgICByZXR1cm4gSGFzaFNldDxDb29r
aWVDaGFuZ2VPYnNlcnZlcio+IHsgfTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisgICAgQVNT
RVJUKCFvYnNlcnZlcnMuY29udGFpbnMoJm9ic2VydmVyKSk7CisgICAgb2JzZXJ2ZXJzLmFkZCgm
b2JzZXJ2ZXIpOworCisgICAgaWYgKCFtX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdl
cykKKyAgICAgICAgbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0XSk7CisgICAgZWxzZSBpZiAoW21fc3Vic2NyaWJl
ZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKWhvc3Rd
KQorICAgICAgICByZXR1cm47CisKKyAgICBbbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNo
YW5nZXMgYWRkT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdOworICAgIFtuc0Nvb2tpZVN0b3JhZ2Uo
KSBfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOm1fc3Vic2NyaWJlZERvbWFp
bnNGb3JDb29raWVDaGFuZ2VzLmdldCgpXTsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5n
ZU9ic2VydmVyJiBvYnNlcnZlciwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBob3N0cykKK3sKKyAg
ICBib29sIHN1YnNjcmliZWRVUkxzQ2hhbmdlZCA9IGZhbHNlOworICAgIGZvciAoYXV0byYgaG9z
dCA6IGhvc3RzKSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5m
aW5kKGhvc3QpOworICAgICAgICBBU1NFUlQoaXQgIT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMu
ZW5kKCkpOworICAgICAgICBpZiAoaXQgPT0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZW5kKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBvYnNlcnZlcnMgPSBpdC0+
dmFsdWU7CisgICAgICAgIEFTU0VSVChvYnNlcnZlcnMuY29udGFpbnMoJm9ic2VydmVyKSk7Cisg
ICAgICAgIG9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKKyAgICAgICAgaWYgKG9ic2VydmVy
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnJlbW92
ZShpdCk7CisgICAgICAgICAgICBBU1NFUlQoW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVD
aGFuZ2VzIGNvbnRhaW5zT2JqZWN0OihOU1N0cmluZyAqKWhvc3RdKTsKKyAgICAgICAgICAgIFtt
X3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyByZW1vdmVPYmplY3Q6KE5TU3RyaW5n
ICopaG9zdF07CisgICAgICAgICAgICBzdWJzY3JpYmVkVVJMc0NoYW5nZWQgPSB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChzdWJzY3JpYmVkVVJMc0NoYW5nZWQpCisgICAgICAgIFtu
c0Nvb2tpZVN0b3JhZ2UoKSBfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOm1f
c3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzLmdldCgpXTsKK30KKworLy8gRklYTUU6
IFRoaXMgY2FuIGV2ZW50dWFsbHkgZ28gYXdheSwgdGhpcyBpcyBtZXJlbHkgdG8gZW5zdXJlIGEg
c21vb3RoIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBBUEkuCitib29sIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpIGNvbnN0Cit7CisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgc3VwcG9ydHNBUEkgPSBbbnNDb29raWVTdG9yYWdlKCkgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfc2V0U3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2Vz
OildOworICAgIHJldHVybiBzdXBwb3J0c0FQSTsKK30KKworI2VuZGlmIC8vIEhBVkUoQ09PS0lF
X0NIQU5HRV9MSVNURU5FUl9BUEkpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNzVlMGI0YTI2NWM5ZWU1OWEwYjQzMDc5NGY3ZWYwZDIx
N2M3MmYxNy4uNzJlMWQyNmRjZDNmOWE4Y2ZiOTVmMDIzYTAyY2E2YTg5MGQwNjFjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNCw2ICsxMjQsMTEgQEAgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6On5OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcygpCiAgICAg
Zm9yIChhdXRvJiBwb3J0IDogbV9wcm9jZXNzRW50YW5nbGVkUG9ydHMpCiAgICAgICAgIG5ldHdv
cmtQcm9jZXNzKCkubWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKS5kaWRDbG9zZU1lc3NhZ2VQ
b3J0KHBvcnQpOwogCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBp
ZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKSkKKyAgICAg
ICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zdG9wTGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9ucygqdGhpcywgbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnMpOworI2VuZGlmCisK
ICNpZiBVU0UoTElCV0VCUlRDKQogICAgIGlmIChtX3J0Y1Byb3ZpZGVyKQogICAgICAgICBtX3J0
Y1Byb3ZpZGVyLT5jbG9zZSgpOwpAQCAtNjMzLDYgKzYzOCw0OCBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgYwogICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+ZGVsZXRlQ29va2llKHVybCwgY29v
a2llTmFtZSk7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRvbUNv
b2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNo
YW5nZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbigpOworICAgIGlmICghbmV0d29ya1N0
b3JhZ2VTZXNzaW9uKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKwor
I2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgaWYgKHN1YnNjcmliZVRv
Q29va2llQ2hhbmdlTm90aWZpY2F0aW9ucykgeworICAgICAgICBBU1NFUlQoIW1faG9zdHNXaXRo
Q29va2llTGlzdGVuZXJzLmNvbnRhaW5zKGhvc3QpKTsKKyAgICAgICAgbV9ob3N0c1dpdGhDb29r
aWVMaXN0ZW5lcnMuYWRkKGhvc3QpOworICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnN0
YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucygqdGhpcywgaG9zdCk7Cisg
ICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3Rp
ZmljYXRpb25zKTsKKyNlbmRpZgorCisgICAgY29tcGxldGlvbkhhbmRsZXIobmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLT5kb21Db29raWVzRm9ySG9zdChob3N0KSk7Cit9CisKKyNpZiBIQVZFKENPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJKQorCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp1bnN1YnNjcmliZUZyb21Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKGNvbnN0IEhhc2hT
ZXQ8U3RyaW5nPiYgaG9zdHMpCit7CisgICAgYm9vbCByZW1vdmVkID0gbV9ob3N0c1dpdGhDb29r
aWVMaXN0ZW5lcnMucmVtb3ZlKGhvc3RzLmJlZ2luKCksIGhvc3RzLmVuZCgpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOworCisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi0+c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhv
c3RzKTsKK30KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0Fk
ZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNv
b2tpZXMpCit7CisgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6Q29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpLCAwKTsKK30KKwordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OkNvb2tp
ZXNEZWxldGVkKCksIDApOworfQorCisjZW5kaWYKKwogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBleHRlbnNpb25IYW5kbGUsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtT
ZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKaW5kZXggZWI2ZjU1YzZmZTllM2I5ZDEy
NGFmMmE3MTVmMzVhYjEzZmUzM2U1ZS4uN2VkYzVjNjA1OTZjNWI0ZTZiZmIyMWFhOTNmNjU1ZTFk
NDk1NzViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxl
RG9tYWluLmg+CkBAIC04Nyw2ICs4OCw5IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzCiAgICAgOiBwdWJsaWMgUmVmQ291bnRlZDxOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcz4KICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICAsIHB1YmxpYyBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6Q2xpZW50CisjZW5kaWYKKyNpZiBIQVZFKENPT0tJRV9D
SEFOR0VfTElTVEVORVJfQVBJKQorICAgICwgcHVibGljIFdlYkNvcmU6OkNvb2tpZUNoYW5nZU9i
c2VydmVyCiAjZW5kaWYKICAgICAsIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoK
QEAgLTI2Nyw2ICsyNzEsMTYgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG5leHRNZXNzYWdl
QmF0Y2hJZGVudGlmaWVyKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKKyAgICB2b2lkIGRvbUNvb2tp
ZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5n
ZU5vdGlmaWNhdGlvbnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKT4mJik7CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJ
KQorICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25z
dCBIYXNoU2V0PFN0cmluZz4mIGhvc3RzKTsKKworICAgIC8vIFdlYkNvcmU6OkNvb2tpZUNoYW5n
ZU9ic2VydmVyLgorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBmaW5hbDsKKyAgICB2b2lkIGNvb2tpZXNEZWxl
dGVkKCkgZmluYWw7CisjZW5kaWYKKwogICAgIHN0cnVjdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0
eVRyYWNrZXIgewogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRl
ZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihjb25zdCBSZXNv
dXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImKSA9IGRlZmF1bHQ7CkBAIC0zMzAsNiArMzQ0LDkg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICBOZXR3b3JrTUROU1JlZ2lzdGVy
IG1fbWRuc1JlZ2lzdGVyOwogI2VuZGlmCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0c1dpdGhDb29raWVMaXN0ZW5lcnM7Cisj
ZW5kaWYKIAogICAgIGJvb2wgbV9jYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFibGVk
IHsgZmFsc2UgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggZWM5YjBiOGY4NGE4NGZmZWIwNTg1MWQ0OTNjNTk1ZjI2YTU0NjVjNC4uODI1NTQ2YzIw
N2IzN2E1NjM1YmQyOTgzZDcwZDUxZDdkOGRkMDJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0zOSw2ICszOSwxMCBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+
IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNo
cm9ub3VzCiAgICAgR2V0UmF3Q29va2llcyhVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFApIC0+
IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERlbGV0
ZUNvb2tpZShVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKKyAgICBEb21Db29raWVzRm9ySG9z
dChTdHJpbmcgaG9zdCwgYm9vbCBzdWJzY3JpYmVUb0Nvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMp
IC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cworI2lmIEhB
VkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgVW5zdWJzY3JpYmVGcm9tQ29va2ll
Q2hhbmdlTm90aWZpY2F0aW9ucyhIYXNoU2V0PFN0cmluZz4gaG9zdHMpCisjZW5kaWYKIAogICAg
IFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQog
ICAgIFJlZ2lzdGVyQmxvYlVSTChVUkwgdXJsLCBWZWN0b3I8V2ViQ29yZTo6QmxvYlBhcnQ+IGJs
b2JQYXJ0cywgU3RyaW5nIGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKaW5kZXggN2YxY2Y5Yzc1OWUyNjI2ZDE1OTYxNzQ1YWJkNDU3NTFiMjRjNjNm
My4uYmQxNmNmYTJjOGIyNTExODNkOGI3MWVlZDZkNjQwOTc5ZTI5N2JmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02MjUsNiArNjI1LDcgQEAgZGVmIGhl
YWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OldlYldoZWVsRXZlbnQnOiBb
JyJXZWJFdmVudC5oIiddLAogICAgICAgICAnV2ViQ29yZTo6TWVkaWFFbmdpbmVTdXBwb3J0UGFy
YW1ldGVycyc6IFsnPFdlYkNvcmUvTWVkaWFQbGF5ZXIuaD4nXSwKICAgICAgICAgJ1dlYkNvcmU6
OklTT1dlYlZUVEN1ZSc6IFsnPFdlYkNvcmUvSVNPVlRUQ3VlLmg+J10sCisgICAgICAgICdzdHJ1
Y3QgV2ViQ29yZTo6Q29va2llJzogWyc8V2ViQ29yZS9Db29raWUuaD4nXSwKICAgICAgICAgJ3N0
cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCc6IFsnPFdlYkNvcmUvRWxlbWVudENvbnRleHQu
aD4nXSwKICAgICAgICAgJ3N0cnVjdCBXZWJLaXQ6OldlYlVzZXJTY3JpcHREYXRhJzogWyciV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmgiJ10sCiAgICAgICAgICdzdHJ1Y3QgV2Vi
S2l0OjpXZWJVc2VyU3R5bGVTaGVldERhdGEnOiBbJyJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJE
YXRhVHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmlu
ZGV4IGYyNzUyYTkxZGJlODg4ZDc5MTQ3NzNlZjQyMjdhYjRjZjU3NjdlNjQuLmUzMzA2MDcwY2Vi
YWY4ZTRjNzE4MDU1OGVmMmIyNDE3Zjc3MGQ4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHJlZmVyZW5jZXMueWFtbApAQCAtNTUsNiArNTUsMTMgQEAgSFRUUFNVcGdyYWRlRW5hYmxlZDoK
ICAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkF1dG9tYXRpYyBIVFRQUyB1cGdyYWRlIGZv
ciBrbm93biBzdXBwb3J0ZWQgc2l0ZXMiCiAgICBjYXRlZ29yeTogZXhwZXJpbWVudGFsCiAKK0lu
UHJvY2Vzc0Nvb2tpZUNhY2hlRW5hYmxlZDoKKyAgIHR5cGU6IGJvb2wKKyAgIGRlZmF1bHRWYWx1
ZTogdHJ1ZQorICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJJbi1Qcm9jZXNzIENvb2tpZSBDYWNoZSIK
KyAgIGh1bWFuUmVhZGFibGVEZXNjcmlwdGlvbjogIkluLVByb2Nlc3MgRE9NIENvb2tpZSBDYWNo
ZSIKKyAgIGNhdGVnb3J5OiBleHBlcmltZW50YWwKKwogVGhpcmRQYXJ0eUlmcmFtZVJlZGlyZWN0
QmxvY2tpbmdFbmFibGVkOgogICAgdHlwZTogYm9vbAogICAgZGVmYXVsdFZhbHVlOiB0cnVlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dAppbmRleCA3NDg5NGJkMjdiYWY1ODk1MWU2YWYyNDFjODc5OThiYzVjNWViYWU4Li5h
NWQwYmUxNDI3MWY2MzA2ZjgzNmI4ZmRiZDdkNDIwZjI5NTI0NmVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAg
LTYyNCw2ICs2MjQsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvUGFnZUJhbm5lci5jcHAKIFdlYlBy
b2Nlc3MvV2ViUGFnZS9WaXNpdGVkTGlua1RhYmxlQ29udHJvbGxlci5jcHAKIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb250ZXh0TWVudS5jcHAKK1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVDYWNoZS5jcHAK
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRG9jdW1lbnRMb2FkZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZTFmYzZmNzM3MmIxNjAzZTVkZDI1ZWIwYTRhNjAxYzZj
OWJlMjNlYS4uZDI0YTgwNDhlMzQ1MDQ2MzQyN2M5MzA0MzJlZjkwMDM5NzUxMWMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtNjEzLDYgKzYxMyw3IEBAIFdlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKIFdlYlByb2Nlc3MvV2ViUGFnZS9XS0FjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0SU9TLm1tCiAKIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9UZXh0Q2hl
Y2tpbmdDb250cm9sbGVyUHJveHkubW0KK1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29r
aWVDYWNoZUNvY29hLm1tCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUGFnZUNvY29hLm1t
CiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViUmVtb3RlT2JqZWN0UmVnaXN0cnkuY3BwCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQ0ODg1YjQ2MzJkZTljODhjZjAyNjVkNWVlZjlhYjA3NTRiZjU1ODcuLmZlNzc4M2VmNGRjMmMx
N2NiMWNiZjQ5ZGU3MDFlYTQ1MTgxZDZjN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTQzLDYgKzk0Myw3IEBACiAJCTQ2NkJDMDND
MUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY2QkMwMzkxRkEyNjZD
OTAwMkZBOUMxIC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggKi87IH07CiAJCTQ2
NzFGRjFGMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3MUZGMUQyMzIxN0VG
RjAwMUI2NEM3IC8qIFdlYlJlc291cmNlTG9hZE9ic2VydmVyLmggKi87IH07CiAJCTQ2N0U0M0U4
MjI0M0ZGN0QwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY3RTQzRTcyMjQzRkY2
RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzLmggKi87IH07CisJCTQ2
ODA5QTdDMjNEOTIyNUUwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MDlBN0EyM0Q5MjI1MzAwQzI5N0Qw
IC8qIFdlYkNvb2tpZUNhY2hlLmggKi87IH07CiAJCTQ2QTJCNjA5MUU1Njc2QTYwMEMzREVEQSAv
KiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QTJCNjA3MUU1Njc1QTIwMEMzREVEQSAv
KiBCYWNrZ3JvdW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKIAkJNDZCMDUy
NDcyMjY2OEQ4NTAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNz
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCMDUyNDQyMjY2OEQyMzAwMjY1Qjk3IC8qIFdlYkRldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzQ29udHJvbGxlci5oICovOyB9OwogCQk0NkJFQjZENzIyRkI5QkQ3MDAyNjk4Njcg
LyogU3RvcmFnZUFyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2QkVCNkQ1MjJGQjlCRDYwMDI2OTg2NyAvKiBTdG9yYWdlQXJlYS5oICovOyB9OwpA
QCAtMzQ4NCw2ICszNDg1LDggQEAKIAkJNDY3MUZGMUQyMzIxN0VGRjAwMUI2NEM3IC8qIFdlYlJl
c291cmNlTG9hZE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlJlc291cmNlTG9hZE9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzFGRjFFMjMyMTdFRkYwMDFC
NjRDNyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQcm9jZXNzRGF0YVN0b3Jl
UGFyYW1ldGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NjgwOUE3QTIzRDky
MjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQ29va2llQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NDY4MDlBN0IyM0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvb2tpZUNhY2hlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzU2OUEyMUU4MUNDNzAwNkUyN0EzIC8qIFByb3Zpc2lv
bmFsUGFnZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb3Zpc2lv
bmFsUGFnZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM1NjlCMjFF
ODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQcm94eS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QTJCNjA2MUU1Njc1QTIwMEMzREVEQSAvKiBCYWNrZ3Jv
dW5kUHJvY2Vzc1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQmFja2dyb3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY5OTcsOCArNzAwMCw4IEBACiAJCQkJMUE0
MjJGOEExOEIyOUI1NDAwRDhDRDk2IC8qIFdLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oICovLAog
CQkJCTUxRDEyNDg0MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5oICovLAog
CQkJCTUxRDEyNDg1MUU3MzRBRTMwMDJCMjgyMCAvKiBXS0hUVFBDb29raWVTdG9yZS5tbSAqLywK
LQkJCQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRl
LmggKi8sCiAJCQkJNTFEMTI0ODYxRTczNEFFMzAwMkIyODIwIC8qIFdLSFRUUENvb2tpZVN0b3Jl
SW50ZXJuYWwuaCAqLywKKwkJCQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29v
a2llU3RvcmVQcml2YXRlLmggKi8sCiAJCQkJMUFCNDBFRTMxQkY2NzdFMzAwQkE4MUJFIC8qIFdL
TWVudUl0ZW1JZGVudGlmaWVycy5tbSAqLywKIAkJCQkxQUI0MEVFNDFCRjY3N0UzMDBCQTgxQkUg
LyogV0tNZW51SXRlbUlkZW50aWZpZXJzUHJpdmF0ZS5oICovLAogCQkJCTFBNUIxQzRGMTg5ODYw
NkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCAqLywKQEAgLTg0MjIsNiArODQyNSw4IEBACiAJ
CQkJQkM3MkI5RjkxMUU2NDc2QjAwMUVCNEVBIC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Lmgg
Ki8sCiAJCQkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAq
LywKIAkJCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLywK
KwkJCQk0NjgwOUE3QjIzRDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuY3BwICovLAor
CQkJCTQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5oICovLAogCQkJ
CTVDN0ZCNDZFMjFFOTdDMEIwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuY3BwICovLAogCQkJCTVD
N0ZCNDZGMjFFOTdDMEMwMDlFMzI0MSAvKiBXZWJDb29raWVKYXIuaCAqLywKIAkJCQkxQTVCMUM1
MjE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuY3BwICovLApAQCAtMTAyNTQs
NyArMTAyNTksNiBAQAogCQkJCTJENTg3NUJGMjE5QjUzMTUwMDcwQjlBQSAvKiBFZGl0YWJsZUlt
YWdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1
N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVD
NDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQlERjQ2MkUxMjIz
RjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVGQjE0OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNw
YXRjaGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTEwNjYyLDYgKzEwNjY2LDcgQEAKIAkJCQk1MUFD
QkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHlN
YWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjRERTI1MTY4RkE0NDgwMEM5NEFGQyAvKiBXZWJD
b250ZXh0U3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4MDlBN0MyM0Q5MjI1RTAw
QzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzdGQjQ3MDIx
RTk3REM1MDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzA5
MzQ1MDEzMTVCOTREMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMzMwOTM0NDgxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDcyMSw3ICsxMDcyNiw2IEBACiAJCQkJRkVFNDNGRDMx
RTY3QjAxODAwNzdENkQxIC8qIFdlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUZFREJEQ0Q3MUU2OEQyMDUwMEE1OUY4RiAvKiBXZWJJbnNwZWN0b3JJ
bnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDOEUyQTM2
MTI3Nzg1MjQwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJREY0NjJFMEYyM0YyMkY1NTAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4RTI4MzQxMjc1RDczODAwQkM3QkQwIC8qIFdlYklu
c3BlY3RvclByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZD
MkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4
OTFENjYxOUIxMjRGRjAwQkE3OUREIC8qIFdlYkluc3BlY3RvclVJLmggaW4gSGVhZGVycyAqLywK
QEAgLTEwOTM0LDYgKzEwOTM4LDcgQEAKIAkJCQkwRjA0MTU5RTIzQzdDQzczMDA2MEEzRTIgLyog
V0tDb250ZW50Vmlld01hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMDY1RkMyM0VDOTU3MjAw
NTQ0M0Q2IC8qIFdLQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTEwNjVGRDIz
RUM5NTdCMDA1NDQzRDYgLyogV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJREY0NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCOUUyNEIxMTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJGOTgxOTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QkE1MTg0RDVG
REEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTExMDE3LDYgKzExMDIyLDcgQEAKIAkJCQkxQTQyMkY4QjE4QjI5QjU0MDBEOENEOTYgLyog
V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCNjJFNzMxMjE0
MzA0N0IwMDA2OUVDMzUgLyogV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUQxMjQ5OTFFNzYzQzAxMDAyQjI4MjAgLyogV0tIVFRQQ29va2llU3RvcmUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNjZBNEI1MjMyMDk2MjQwMEVBNEQ0NCAvKiBX
S0hUVFBDb29raWVTdG9yZVJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMEFFMEQxMzNDMTZD
QjAwNzI3MTdBIC8qIFdLSWNvbkRhdGFiYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTIzQ0Yx
QzEzM0QyNjBBMDA1NkY4MDAgLyogV0tJY29uRGF0YWJhc2VDRy5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCAyOGJjMTJjMzQyM2Y5ZjI4MzU2YzNhODRjNjEy
MjRjZmE0ZWQ3ZTk5Li4yYmI0NzllMzlkZTliNmU5NTdmMjljZmI3ZWU4NTA2NGEwMGU1OTA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJT
dG9yYWdlQXJlYU1hcC5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92aWRlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUph
ci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZl
ck1lc3NhZ2VzLmgiCkBAIC0yMzQsNiArMjM1LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uOjpjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kK
ICAgICBtX2Nvb2tpZUFjY2VwdFBvbGljeSA9IG5ld1BvbGljeTsKIH0KIAorI2lmIEhBVkUoQ09P
S0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mIGNvb2tpZXMpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFy
KCkuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmNvb2tpZUphcigpLmNvb2tpZXNEZWxldGVkKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJM
RShTSEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
Q2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5k
ZXggNTFmZGYzNTQ1MjRkOTE1ZGRmNmVkNTk0YzdkMmMwZmQ4NjMzZDlkMS4uNzZkMjY2NTIwYzI2
MGQxNTNiOTQxZDczOWJjNDQ5MDE4YzZlNGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAg
LTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsK
IGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3Qg
Q29va2llOwogc3RydWN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0czsKIGVudW0gY2xhc3MgSFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4
X3Q7CkBAIC04Myw2ICs4NCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvb2tpZXNFbmFibGVk
KCkgY29uc3Q7CiAKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHZv
aWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tpZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlm
aWVyLCBXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDJhYTY4ODZlNTdhNTk5Y2JjMTdjMzVmNmI3
NGU5OWQyYWIzYTg5ZTUuLjY5OTNmYTdlZjQ2MGY3NTc2ZDYxY2ZlNGI2NDNkMjkwZjgyZDhkNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMx
LDExIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0T25MaW5lU3RhdGUoYm9vbCBpc09uTGluZSk7CiAgICAgQ29va2llQWNjZXB0
UG9saWN5Q2hhbmdlZChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSBwb2xpY3kpOwogCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBD
b29raWVzQWRkZWQoU3RyaW5nIGhvc3QsIFZlY3RvcjxzdHJ1Y3QgV2ViQ29yZTo6Q29va2llPiBj
b29raWVzKTsKKyAgICBDb29raWVzRGVsZXRlZCgpOworI2VuZGlmCisKICAgICBDaGVja1Byb2Nl
c3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyIHBvcnQpIC0+IChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0
aXZpdHkgaGFzQWN0aXZpdHkpIEFzeW5jCiAgICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIgcG9ydCkKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVD
YWNoZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2YmM2NmQ5ZDRmYzZkMmY2NzY2NTBlY2M2ZGFhNWEx
YWEwNjA3MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYkNvb2tpZUNhY2hlLmgiCisK
KyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9y
YWdlU2Vzc2lvbigpCit7CisgICAgaWYgKCFtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24pIHsKKyAg
ICAgICAgU3RyaW5nIHNlc3Npb25OYW1lID0gbWFrZVN0cmluZygiV2ViS2l0SW5Qcm9jZXNzU3Rv
cmFnZS0iLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCkpOworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNz
aW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lv
bk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgICAgICBhdXRvIGNvb2tpZVN0b3Jh
Z2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Npb24uZ2V0KCkpKTsKKyAgICAgICAgbV9pbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgpLCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwg
V1RGTW92ZShjb29raWVTdG9yYWdlKSwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpJc0luTWVtb3J5
Q29va2llU3RvcmU6Olllcyk7CisgICAgfQorICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VT
ZXNzaW9uOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2Vk
MjBjNjQ1MzNhYzc0YWI1YmZiZDdkYTNiMzg3Nzg1YzljNjc2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCkBAIC0w
LDAgKzEsMTI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK2Jvb2wgV2ViQ29va2llQ2FjaGU6OmlzU3VwcG9ydGVkKCkKK3sK
KyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIC8vIEZJWE1FOiBUaGlz
IGNhbiBldmVudHVhbGx5IGJlIHJlbW92ZWQsIHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNt
b290aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJLgorICAgIHJldHVybiBpbk1lbW9yeVN0b3Jh
Z2VTZXNzaW9uKCkuc3VwcG9ydHNDb29raWVDaGFuZ2VMaXN0ZW5lckFQSSgpOworI2Vsc2UKKyAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworU3RyaW5nIFdlYkNvb2tpZUNhY2hlOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2ll
cykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBpZiAo
IW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLmNvbnRhaW5zKGhvc3QpKSB7CisgICAgICAgIFZl
Y3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAgICAgIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFu
Z2VOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEb21Db29raWVzRm9y
SG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCksIHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZp
Y2F0aW9ucyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29v
a2llc0Zvckhvc3Q6OlJlcGx5KGNvb2tpZXMpLCAwKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07
CisgICAgICAgIHBydW5lQ2FjaGVJZk5lY2Vzc2FyeSgpOworICAgICAgICBtX2hvc3RzV2l0aElu
TWVtb3J5U3RvcmFnZS5hZGQoaG9zdCk7CisgICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29v
a2llcykKKyAgICAgICAgICAgIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29v
a2llKTsKKyAgICB9CisgICAgcmV0dXJuIGluTWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVz
Rm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFA6Ok5vKS5maXJzdDsKK30KKwordm9pZCBX
ZWJDb29raWVDYWNoZTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKQoreworICAgIFN0cmluZyBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOwor
ICAgIGlmIChtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5jb250YWlucyhob3N0KSkKKyAgICAg
ICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNv
b2tpZVN0cmluZyk7Cit9CisKK3ZvaWQgV2ViQ29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25z
dCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzKQoreworICAgIGlm
ICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAgICAgICAgaW5NZW1v
cnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tpZShjb29raWUpOworfQorCit2b2lkIFdlYkNvb2tp
ZUNhY2hlOjpjb29raWVzRGVsZXRlZCgpCit7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJD
b29raWVDYWNoZTo6Y2xlYXIoKQoreworI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9B
UEkpCisgICAgaWYgKCFtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5pc0VtcHR5KCkpCisgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6VW5zdWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhtX2hvc3RzV2l0
aEluTWVtb3J5U3RvcmFnZSksIDApOworI2VuZGlmCisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0
b3JhZ2UuY2xlYXIoKTsKKyAgICBtX2luTWVtb3J5U3RvcmFnZVNlc3Npb24gPSBudWxscHRyOwor
fQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjbGVhckZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0
KQoreworICAgIGF1dG8gaXQgPSBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5maW5kKGhvc3Qp
OworICAgIGlmIChpdCA9PSBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UucmVtb3ZlKGl0KTsK
KyAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhW
ZWN0b3I8U3RyaW5nPiB7IGhvc3QgfSk7CisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVS
X0FQSSkKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoSGFz
aFNldDxTdHJpbmc+IHsgaG9zdCB9KSwgMCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJDb29raWVD
YWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCkKK3sKKyAgICAvLyBXZSBtYXkgd2FudCB0byBy
YWlzZSB0aGlzIGxpbWl0IGlmIHdlIHN0YXJ0IHVzaW5nIHRoZSBjYWNoZSBmb3IgdGhpcmQtcGFy
dHkgaWZyYW1lcy4KKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbWF4Q2FjaGVkSG9zdHMgPSA1
OworCisgICAgd2hpbGUgKG1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdlLnNpemUoKSA+PSBtYXhD
YWNoZWRIb3N0cykKKyAgICAgICAgY2xlYXJGb3JIb3N0KCptX2hvc3RzV2l0aEluTWVtb3J5U3Rv
cmFnZS5yYW5kb20oKSk7Cit9CisKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIFdlYkNvb2tpZUNhY2hlOjppbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAg
ICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOworICAgIHJldHVybiAqbV9pbk1lbW9yeVN0
b3JhZ2VTZXNzaW9uOworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmQwYzQxNmU1MjBjZWRjMjQ2YmUxMmZhNTNmYmNmZTc4NmYzNTU1ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hl
LmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNz
IFdlYkNvb2tpZUNhY2hlIHsKK3B1YmxpYzoKKyAgICBXZWJDb29raWVDYWNoZSgpID0gZGVmYXVs
dDsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWQoKTsKKworICAgIFN0cmluZyBjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpOworICAgIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZyk7CisKKyAgICB2b2lkIGNvb2tpZXNB
ZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworCisgICAgdm9pZCBjbGVhcigpOworICAgIHZv
aWQgY2xlYXJGb3JIb3N0KGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpOworICAgIHZv
aWQgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0
c1dpdGhJbk1lbW9yeVN0b3JhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4gbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcAppbmRleCAzMjU4MzA1Yzc4OWQ3NzVmZTE1YzFjMDgyOGMzNmU5ZTJm
MmE4NjA5Li41YWIzMjQ1Y2NkNWRhYzFjZjUzMWQ0ZGViNGQwZTFhODVkMDY5MWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcs
NiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04OCw2ICs4OSwyMyBA
QCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAogfQogI2VuZGlmCiAKK2Jvb2wgV2ViQ29va2llSmFy
Ojppc0VsaWdpYmxlRm9yQ2FjaGUoV2ViRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlVVJMKSBjb25zdAoreworICAgIGF1dG8q
IHBhZ2UgPSBmcmFtZS5wYWdlKCkgPyBmcmFtZS5wYWdlKCktPmNvcmVQYWdlKCkgOiBudWxscHRy
OworICAgIGlmICghcGFnZSB8fCAhcGFnZS0+c2V0dGluZ3MoKS5pblByb2Nlc3NDb29raWVDYWNo
ZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2NhY2hlLmlz
U3VwcG9ydGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZvciBub3csIHdl
IG9ubHkgY2FjaGUgY29va2llcyBmb3IgZmlyc3QtcGFydHkgY29udGVudC4gVGhpcmQtcGFydHkg
Y29va2llIGNhY2hpbmcgaXMgYSBiaXQgbW9yZSBjb21wbGljYXRlZCBkdWUgdG8gcGFydGl0aW9u
aW5nIGFuZCBzdG9yYWdlIGFjY2Vzcy4KKyAgICBSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURv
bWFpbiB7IHJlc291cmNlVVJMIH07CisgICAgaWYgKHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkg
fHwgUmVnaXN0cmFibGVEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9ID09IHJlc291cmNl
RG9tYWluOworfQorCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3Vt
ZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgYXV0byogd2ViRnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50
LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAgLTEwMCwxMiArMTE4LDE3IEBAIFN0cmluZyBXZWJDb29r
aWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogCisgICAgYXV0byBzYW1lU2l0
ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRlSW5mbyhkb2N1bWVudCk7CisgICAgYXV0byBpbmNs
dWRlU2VjdXJlQ29va2llcyA9IENvb2tpZUphcjo6c2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMo
ZG9jdW1lbnQsIHVybCk7CiAgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsK
ICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1lLT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAorICAg
IGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndlYkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9y
Q29va2llcygpLCB1cmwpKQorICAgICAgICByZXR1cm4gbV9jYWNoZS5jb29raWVzRm9yRE9NKGRv
Y3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKKwogICAgIFN0cmluZyBjb29raWVTdHJp
bmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNp
dGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1
cmVDb29raWVzKGRvY3VtZW50LCB1cmwpLCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwg
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpS
ZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hv
dWxkQXNrSVRQSW5OZXR3b3JrUHJvY2VzcyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29r
aWVzQWNjZXNzZWQpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBjb29r
aWVTdHJpbmc7CkBAIC0xMjMsMTAgKzE0NiwzNCBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29v
a2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAog
ICAgICAgICByZXR1cm47CiAjZW5kaWYKIAorICAgIGF1dG8gc2FtZVNpdGVJbmZvID0gQ29va2ll
SmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQpOwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1l
LT5mcmFtZUlEKCk7CiAgICAgYXV0byBwYWdlSUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlm
aWVyKCk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JD
b29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICBpZiAo
aXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFtZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgdXJsKSkKKyAgICAgICAgbV9jYWNoZS5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBjb29raWVTdHJpbmcpOworCisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBz
aG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzLCBjb29raWVTdHJpbmcpLCAwKTsKK30KKwordm9p
ZCBXZWJDb29raWVKYXI6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQoreworICAgIG1fY2FjaGUuY29va2llc0Fk
ZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0RlbGV0
ZWQoKQoreworICAgIG1fY2FjaGUuY29va2llc0RlbGV0ZWQoKTsKK30KKwordm9pZCBXZWJDb29r
aWVKYXI6OmNsZWFyQ2FjaGUoKQoreworICAgIG1fY2FjaGUuY2xlYXIoKTsKK30KKwordm9pZCBX
ZWJDb29raWVKYXI6OmNsZWFyQ2FjaGVGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAg
ICBtX2NhY2hlLmNsZWFyRm9ySG9zdChob3N0KTsKIH0KIAogYm9vbCBXZWJDb29raWVKYXI6OmNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggNTI5NDhhOTFk
ZTVmMTQ1MjQ5OTEwZGQ0OTgzNDQ1MjAwMDFhOTdmYi4uZDJkOTQ0NmM2YTk3NzI1MjgxMWNlM2Nl
YTg5ZjBkZjA3ZWY3YWVjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29va2llSmFyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjUsMTAgKzI1LDE3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSAiV2ViQ29va2llQ2FjaGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgog
CituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgQ29va2llOworfQorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorY2xhc3MgV2ViRnJhbWU7CisKIGNsYXNzIFdlYkNvb2tpZUphciBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpDb29raWVKYXIgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViQ29v
a2llSmFyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkNvb2tpZUphcik7IH0K
QEAgLTM5LDggKzQ2LDE4IEBAIHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3Jl
OjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Qg
ZmluYWw7CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50Jiwg
Y29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkgZmluYWw7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChj
b25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAg
dm9pZCBjb29raWVzRGVsZXRlZCgpOworCiBwcml2YXRlOgogICAgIFdlYkNvb2tpZUphcigpOwor
CisgICAgdm9pZCBjbGVhckNhY2hlKCkgZmluYWw7CisgICAgdm9pZCBjbGVhckNhY2hlRm9ySG9z
dChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICBib29sIGlzRWxpZ2libGVGb3JDYWNoZShXZWJG
cmFtZSYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3Vy
Y2VVUkwpIGNvbnN0OworCisgICAgbXV0YWJsZSBXZWJDb29raWVDYWNoZSBtX2NhY2hlOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg2ODNjMTA0ZGJmYTJjMDVmNWU4NGI1OTYwZmQ2ODJhZTI0
NTFkYWYuLjhhYmY2NDVlYWIzYmUyYjNiMjk3MTE0MDcyZjFlNGU4ODQ5YzcxOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00NjYsNyArNDY2
LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYktp
dDo6TGliV2ViUlRDUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksCiAgICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5
OjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBXZWJDb29raWVKYXI6OmNyZWF0ZSgpLAorICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5jb29raWVKYXIoKSwKICAgICAgICAgbWFrZVVuaXF1
ZVJlZjxXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQ+KCp0aGlzKSwKICAgICAgICAgbWFrZVVuaXF1
ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCkKICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDRiMjQwOWI5OTRkM2FlMGQyYjQzMTRiMzQ1YzI4ZjFh
NGQzN2M3MDkuLjIxYjVhMmJjMTNmZWVlYWQ5NGE2ODQ2Y2M1NTY1MzkzMGJmYjBjMDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNp
bmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVT
dG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCIK
KyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaCIKQEAgLTIwNSw2ICsyMDYsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkK
ICAgICAsIG1fd2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlcihXZWJJbnNwZWN0b3JJbnRl
cnJ1cHREaXNwYXRjaGVyOjpjcmVhdGUoKSkKICAgICAsIG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5l
dyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoV2ViQ2Fj
aGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpKQorICAgICwgbV9jb29raWVKYXIoV2ViQ29va2ll
SmFyOjpjcmVhdGUoKSkKICAgICAsIG1fZG5zUHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShQQUw6
Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBpZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3Rh
dGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hlZEhvc3RzLmNsZWFyKCk7IH0pCiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODUzYzY2MGVjNjQ2NDU2M2E3NjU2NDM2MTky
OTU2NTRiMDczNTM0ZS4uMTU5MDkzNjBhZDdjYjA5MTEzN2I3Y2FmMzM1MzVjZGUyYzk3ZGQ1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0xMjAsNiArMTIwLDcgQEAg
Y2xhc3MgVXNlckRhdGE7CiBjbGFzcyBXYXlsYW5kQ29tcG9zaXRvckRpc3BsYXk7CiBjbGFzcyBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OwogY2xhc3MgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI7
CitjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERh
dGE7CiBjbGFzcyBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M7CiBjbGFzcyBXZWJGcmFtZTsKQEAg
LTI5Myw2ICsyOTQsNyBAQCBwdWJsaWM6CiAgICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSog
YXV0b21hdGlvblNlc3Npb25Qcm94eSgpIHsgcmV0dXJuIG1fYXV0b21hdGlvblNlc3Npb25Qcm94
eS5nZXQoKTsgfQogCiAgICAgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVBy
b3ZpZGVyKCkgeyByZXR1cm4gbV9jYWNoZVN0b3JhZ2VQcm92aWRlci5nZXQoKTsgfQorICAgIFdl
YkNvb2tpZUphciYgY29va2llSmFyKCkgeyByZXR1cm4gbV9jb29raWVKYXIuZ2V0KCk7IH0KICAg
ICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciYgd2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIoKSB7IHJl
dHVybiBtX3dlYlNvY2tldENoYW5uZWxNYW5hZ2VyOyB9CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpAQCAtNTU0LDYgKzU1Niw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZjxXZWJD
YWNoZVN0b3JhZ2VQcm92aWRlcj4gbV9jYWNoZVN0b3JhZ2VQcm92aWRlcjsKKyAgICBSZWY8V2Vi
Q29va2llSmFyPiBtX2Nvb2tpZUphcjsKICAgICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciBtX3dl
YlNvY2tldENoYW5uZWxNYW5hZ2VyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ05l
dHdvcms+IG1fbGliV2ViUlRDTmV0d29yazsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29va2llUHJpdmF0ZUJyb3dzaW5nLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVQcml2YXRlQnJvd3NpbmcubW0KaW5k
ZXggZjUwMGYzZmViYWJmODE2NWM0YWQ1OTkwOTFjMmQyOGQzYThhNjNjZi4uMTg4OWE5ZjE0ZDZh
ODIyY2VhZDA3N2NiYmY0MjMzZDkwNDQ1Nzk4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVQcml2YXRlQnJvd3NpbmcubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVQcml2YXRlQnJvd3Npbmcu
bW0KQEAgLTI2LDExICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2wuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9v
bCByZWNlaXZlZEFsZXJ0OwogCkBAIC02OCwzICs3MSw2MCBAQCBURVNUKFdlYktpdCwgQ29va2ll
UHJpdmF0ZUJyb3dzaW5nKQogICAgIFt2aWV3MiBsb2FkSFRNTFN0cmluZzphbGVydE9sZENvb2tp
ZSBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkQWxlcnQpOwogfQorCitURVNU
KFdlYktpdCwgQ29va2llQ2FjaGVTeW5jQWNyb3NzUHJvY2VzcykKK3sKKyAgICBhdXRvIGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0ZURhdGFT
dG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CisgICAgYXV0byB2aWV3MSA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdmll
dzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBbdmlldzEgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiZm9vIiBiYXNlVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKyAgICBbdmlldzIg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiYmFyIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKworICAgIC8vIENhY2hlIERPTSBjb29r
aWVzIGluIGZpcnN0IFdlYlZpZXcuCisgICAgX19ibG9jayBib29sIGRvbmVFdmFsdWF0aW5nSmF2
YVNjcmlwdCA9IGZhbHNlOworICAgIFt2aWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVu
dC5jb29raWU7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSBjb29raWUsIE5TRXJy
b3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAg
ICAgICBFWFBFQ1RfVFJVRShbY29va2llIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
OworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIChOU1N0cmluZyAqKWNvb2tpZSk7CisgICAg
ICAgIGRvbmVFdmFsdWF0aW5nSmF2YVNjcmlwdCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQpOworCisgICAgLy8g
Q2FjaGUgRE9NIGNvb2tpZXMgaW4gc2Vjb25kIFdlYlZpZXcuCisgICAgZG9uZUV2YWx1YXRpbmdK
YXZhU2NyaXB0ID0gZmFsc2U7CisgICAgW3ZpZXcyIGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LmNvb2tpZTsiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIGNvb2tpZSwgTlNF
cnJvciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKFtjb29raWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgKE5TU3RyaW5nICopY29va2llKTsKKyAg
ICAgICAgZG9uZUV2YWx1YXRpbmdKYXZhU2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVFdmFsdWF0aW5nSmF2YVNjcmlwdCk7CisKKyAgICAv
LyBTZXR0aW5nIGNvb2tpZSBpbiBmaXJzdCBXZWJ2aWV3IC8gcHJvY2Vzcy4KKyAgICBkb25lRXZh
bHVhdGluZ0phdmFTY3JpcHQgPSBmYWxzZTsKKyAgICBbdmlldzEgZXZhbHVhdGVKYXZhU2NyaXB0
OkAiZG9jdW1lbnQuY29va2llID0gJ2Zvbz1iYXInOyBkb2N1bWVudC5jb29raWU7IiBjb21wbGV0
aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSBjb29raWUsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJy
b3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShb
Y29va2llIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoImZvbz1iYXIiLCAoTlNTdHJpbmcgKiljb29raWUpOworICAgICAgICBkb25lRXZh
bHVhdGluZ0phdmFTY3JpcHQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZUV2YWx1YXRpbmdKYXZhU2NyaXB0KTsKKworICAgIC8vIE1ha2luZyBzdXJl
IG5ldyBjb29raWUgZ2V0cyBzeW5jJ2QgdG8gc2Vjb25kIFdlYlZpZXcgcHJvY2Vzcy4KKyAgICBp
bnQgdGltZW91dCA9IDA7CisgICAgX19ibG9jayBTdHJpbmcgY29va2llU3RyaW5nOworICAgIGRv
IHsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICAgICAgZG9u
ZUV2YWx1YXRpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgICAgIFt2aWV3MiBldmFsdWF0ZUph
dmFTY3JpcHQ6QCJkb2N1bWVudC5jb29raWU7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxs
YWJsZSBjb29raWUsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtjb29raWUgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgICAgICBjb29raWVTdHJpbmcgPSAo
TlNTdHJpbmcgKiljb29raWU7CisgICAgICAgICAgICBkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQg
PSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lRXZhbHVhdGluZ0phdmFTY3JpcHQpOworICAgICAgICArK3RpbWVvdXQ7CisgICAgfSB3aGls
ZSAoY29va2llU3RyaW5nICE9ICIiICYmIHRpbWVvdXQgPCA1MCk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJmb289YmFyIiwgY29va2llU3RyaW5nKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZjM5OTViMzgxMzM0M2E1
MTcyZGJmNDJiZGY0MDA4NzhmZWZiNTE2Li44YmZjMTgwMTQyZjYwMmNjYjQ3NDMxMjM1MDEyZDU0
NDE0YzkxOTE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGlu
LVdlYlByb2Nlc3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5j
b29raWUgaW4gbW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgbGF5b3V0
IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQt
Y29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlh
bG9nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1j
b29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNp
bmcuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9j
bG9zZS1tb2RhbC1kaWFsb2cuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29r
aWVzL3Jlc291cmNlcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFt
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3Nl
dC1jb29raWUtYW5kLXNlcnZlLnBocDogQWRkZWQuCisKIDIwMjAtMDItMTcgIEphc29uIExhd3Jl
bmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2syIF0gd2ViZ3B1
L3dobHNsL2xvb3BzLWJyZWFrLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01v
ZGFsRGlhbG9nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9k
b2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNGFmOTI0YmZiN2U4MWViM2QwY2Y0ZDNkNDJjYjIzMDhhNDQ1MzUxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1h
ZnRlci1zaG93TW9kYWxEaWFsb2ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3Rz
IHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEgc2hv
d01vZGFsRGlhbG9nKCkgY2FsbAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBub3JtYWxpemVDb29raWUoZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0VmFsdWUi
CitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJmb289YmFyOyB0ZXN0
S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YWI4NDdiMzNkNTE5OGU5NjZkYTdiMDhjZWI4ODYwYTFkNjk0N2VhCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50
LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nvb2tp
ZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9InRl
c3RCdXR0b24iIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IkNsaWNrIG1lIj48L2lucHV0PgorPHNjcmlw
dD4KK2Rlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSBy
aWdodCB2YWx1ZSBhZnRlciBhIHNob3dNb2RhbERpYWxvZygpIGNhbGwnKTsKK2pzVGVzdElzQXN5
bmMgPSB0cnVlOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5zZXRD
YW5PcGVuV2luZG93cygpOworCit0ZXN0QnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7CisgICAgZG9j
dW1lbnQuY29va2llID0gInRlc3RLZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZh
bHVlJyk7CisKKyAgICBzaG93TW9kYWxEaWFsb2coInJlc291cmNlcy9zZXQtY29va2llLWFuZC1z
ZXJ2ZS5waHA/Y29va2llLW5hbWU9Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRpb249Y2xv
c2UtbW9kYWwtZGlhbG9nLmh0bWwiKTsKKworICAgIC8vIFRoaXMgaXMgc28gdGhlIGNvb2tpZSBn
ZXRzIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4KKyAgICByZWdpc3RlckNvb2tpZUZv
ckNsZWFudXAoJ2Zvbz1iYXI7IHBhdGg9LycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
bm9ybWFsaXplQ29va2llKGRvY3VtZW50LmNvb2tpZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0
VmFsdWUnKTsKKworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitvbmxvYWQgPSAoKSA9PiB7Cisg
ICAgaW50ZXJuYWxzLndpdGhVc2VyR2VzdHVyZSgoKSA9PiB7CisgICAgICAgIHRlc3RCdXR0b24u
Y2xpY2soKTsKKyAgICB9KTsKK307Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMv
Y29va2llcy10ZXN0LXBvc3QuanMnPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJp
bmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
b29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNjZjVhZGE4YzQ5YWY1MjQ3MDdlYWQyZmExOGI0ZTYzZDE5MjIzYTQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQt
Y29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorVGVzdHMgdGhhdCBkb2N1bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgYWZ0
ZXIgYSBzaG93TW9kYWxEaWFsb2coKSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0S2V5PXRl
c3RWYWx1ZSIKK1BBU1Mgbm9ybWFsaXplQ29va2llKGNvb2tpZXNJbkZyYW1lKSBpcyAiZm9vPWJh
cjsgdGVzdEtleT10ZXN0VmFsdWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29r
aWUpIGlzICJmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJp
bmctaWZyYW1lLXBhcnNpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZjI5ZWZiNTM4Y2E0N2UyMjhiNzM4
ZmM1M2Q5NTA0NDlkYTljY2JiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbApA
QCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2ll
IHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEgc2hvd01vZGFsRGlhbG9nKCkgY2FsbCcp
OworanNUZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIHZhbGlkYXRlQ29va2llc0R1cmlu
Z0NoaWxkRnJhbWVQYXJzaW5nKF9jb29raWVzSW5GcmFtZSkKK3sKKyAgICBjb29raWVzSW5GcmFt
ZSA9IF9jb29raWVzSW5GcmFtZTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6
ZUNvb2tpZShjb29raWVzSW5GcmFtZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUnKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29r
aWUpJywgJ2Zvbz1iYXI7IHRlc3RLZXk9dGVzdFZhbHVlJyk7CisgICAgZmluaXNoSlNUZXN0KCk7
ICAgIAorfQorCitvbmxvYWQgPSAoKSA9PiB7CisgICAgZG9jdW1lbnQuY29va2llID0gInRlc3RL
ZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tp
ZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICAvLyBUaGlz
IGlzIHNvIHRoZSBjb29raWUgZ2V0cyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisg
ICAgcmVnaXN0ZXJDb29raWVGb3JDbGVhbnVwKCdmb289YmFyOyBwYXRoPS8nKTsKKworICAgIGxl
dCBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUu
c3JjID0gInJlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHA/Y29va2llLW5hbWU9Zm9v
JmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRpb249ZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJh
bWUtcGFyc2luZy1pZnJhbWUuaHRtbCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChp
ZnJhbWUpOworfTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRl
c3QtcG9zdC5qcyc+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Nsb3NlLW1vZGFsLWRpYWxvZy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2Rh
bC1kaWFsb2cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZjU2OGRmZWRiYjJkM2E5NWEyZjE0M2U2ZWYxYzgy
MWVhY2JkYTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29r
aWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxz
Y3JpcHQ+CitvbmxvYWQgPSAoKSA9PiB7CisgICAgY2xvc2UoKTsKKyAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgdGVzdFJ1bm5lci5hYm9ydE1vZGFsKCk7Cit9OworPC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2Rv
Y3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmct
aWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkN2FiN2EzOTIyZDEwOGEx
ZjYwMjc5OWU2NjgzNDM1YTg5OTI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvY29va2llcy9yZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUt
cGFyc2luZy1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+Cit0b3AudmFsaWRh
dGVDb29raWVzRHVyaW5nQ2hpbGRGcmFtZVBhcnNpbmcoZG9jdW1lbnQuY29va2llKTsKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNl
cy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tp
ZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocApuZXcgZmlsZSBtb2RlIDEwMDc1
NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWY0M2Yy
OWU4NTJkZGNjMDlmOTY5Zjg5OWU4ZjNlMTJhYmFhODQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2
ZS5waHAKQEAgLTAsMCArMSwxMyBAQAorPD9waHAKKyRjb29raWVOYW1lID0gJF9HRVRbJ2Nvb2tp
ZS1uYW1lJ107CiskY29va2llVmFsdWUgPSAkX0dFVFsnY29va2llLXZhbHVlJ107CiskZGVzdGlu
YXRpb24gPSAkX0dFVFsnZGVzdGluYXRpb24nXTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0
L2h0bWwiKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUiKTsKK2hlYWRlcigiU2V0
LUNvb2tpZTogJHtjb29raWVOYW1lfT0ke2Nvb2tpZVZhbHVlfTsgcGF0aD0vIik7CiskZnAgPSBm
b3BlbigkZGVzdGluYXRpb24sICdyYicpOworaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZp
bGVzaXplKCRkZXN0aW5hdGlvbikpOworCitmcGFzc3RocnUoJGZwKTsKK2V4aXQ7Cis/Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390988</attachid>
            <date>2020-02-17 14:53:38 -0800</date>
            <delta_ts>2020-02-17 16:58:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207593-20200217145337.patch</filename>
            <type>text/plain</type>
            <size>93056</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc4MTBhMjk3YmViNTgzNmMxYmM0ODMz
ZDA2YjBiNzRmMGZhZWQ4OTAuLjUxZDIyNTMwNjJlZjMzYmUzOTdlYjIwOTFlYTRmNWJhMjY5MzMz
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nl
c3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4g
bW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYnVpbGQgdGltZSBmbGFn
cyBmb3IgbmV3IGZlYXR1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAtMDItMTcgIFBlbmcgTGl1ICA8cGVu
Zy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY2hlY2std2Via2l0LXN0eWxlIGVycm9y
cyByZWxhdGVkIHRvIEFWRm91bmRhdGlvblNQSS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkwZTQ1NDU4OTBl
MWQyYzUzYTk4ZjEyYTEyMGI5MWY1OWQ1ZTIxOC4uMjUzYmUzZWNkN2E3MmE0NDU3YjYxZDdhMzRj
ZjUyMTQ2NGU2NDAwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIwLTAyLTEyICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1bQ29jb2FdIElt
cGxlbWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9pZCBzeW5jIElQQyBmb3Ig
ZG9jdW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYw
MjcwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAg
SW1wbGVtZW50IGluLVdlYlByb2Nlc3MgRE9NIGNvb2tpZSBjYWNoZSBmb3Igc2VydmluZyBgZG9j
dW1lbnQuY29va2llYCByZXF1ZXN0cyBmcm9tIEphdmFTY3JpcHQuCisKKyAgICAgICAgVGhlIGZp
cnN0IHRpbWUgZG9jdW1lbnQuY29va2llIGlzIGNhbGxlZCBmb3IgYSBnaXZlbiBob3N0LCB0aGUg
V2ViUHJvY2VzcyB3aWxsIHB1bGwgaW4gYWxsIHRoZQorICAgICAgICBub24tSFRUUE9ubHkgY29v
a2llcyBmb3IgdGhhdCBob3N0IGZyb20gdGhlIE5ldHdvcmtQcm9jZXNzIChzdGlsbCB2aWEgc3lu
YyBJUEMpIGFuZCBzdG9yZSB0aGVtCisgICAgICAgIGluIGFuIGluLW1lbW9yeSBjb29raWUgc3Rv
cmUuIExhdGVyIGRvY3VtZW50LmNvb2tpZSBjYWxscyBmb3IgdGhpcyBob3N0IGZyb20gdGhpcyBX
ZWJQcm9jZXNzCisgICAgICAgIHdpbGwgdGhlbiBsZXZlcmFnZSB0aGUgaW4tbWVtb3J5IGNvb2tp
ZSBzdG9yZSBhbmQgYXZvaWQgZG9pbmcgYSBzeW5jIElQQyB0byB0aGUgTmV0d29ya1Byb2Nlc3MK
KyAgICAgICAgZW50aXJlbHkuCisKKyAgICAgICAgVG8gbWFpbnRhaW4gdGhlIGluLXByb2Nlc3Mg
Y29va2llIHN0b3JlIHVwLXRvLWRhdGUsIHRoZSBXZWJQcm9jZXNzIHN1YnNjcmliZSBmb3IgY29v
a2llLWNoYW5nZQorICAgICAgICBub3RpZmljYXRpb25zIGZyb20gdGhlIE5ldHdvcmtQcm9jZXNz
LCBvbmx5IGZvciB0aGUgaG9zdHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KKworICAgICAgICBJZiB0
aGUgcGFnZSdzIEphdmFTY3JpcHQgc2V0cyBhIGNvb2tpZSBieSBzZXR0aW5nIGRvY3VtZW50LmNv
b2tpZSwgd2Ugd2lsbCBub3QgaW52YWxpZGF0ZSB0aGUKKyAgICAgICAgY2FjaGUgZm9yIHBlcmZv
cm1hbmNlIHJlYXNvbnMuIEluc3RlYWQsIHdlIHNldCB0aGUgY29va2llIGluIG91ciBpbi1tZW1v
cnkgY29va2llIGJlZm9yZQorICAgICAgICBzZW5kaW5nIHRoZSBuZXcgY29va2llIHRvIHRoZSBO
ZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbnkg
c3luYyBJUEMgdG8gYSBnaXZlbiBob3N0IHdpbGwgY3VycmVudGx5IGludmFsaWRhdGUgdGhlIGNv
b2tpZQorICAgICAgICBjYWNoZSBmb3IgdGhpcyBob3N0LiBUaGlzIGlzIGJlY2F1c2UgdGhpcyBz
eW5jaHJvbm91cyBsb2FkIG1heSBjYXVzZSBjb29raWVzIHRvIGdldCBzZXQKKyAgICAgICAgc3lu
Y2hyb25vdXNseSBhbmQgdGhlIHBhZ2UgY291bGQgYWNjZXNzIGRvY3VtZW50LmNvb2tpZSByaWdo
dCBhZnRlciB0aGUgc3luYyBYSFIuIFRoaXMgYmVoYXZpb3IKKyAgICAgICAgaXMgY292ZXJlZCBi
eSB0aGUgZm9sbG93aW5nIGV4aXN0aW5nIHRlc3Q6CisgICAgICAgIC0gaHR0cC90ZXN0cy9jb29r
aWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUuaHRtbAorCisgICAgICAg
IEFub3RoZXIgbGltaXRhdGlvbiBvZiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
Y29va2llIGNhY2hlIGlzIHRoYXQgaXQgaXMgY3VycmVudGx5CisgICAgICAgIG9ubHkgbGV2ZXJh
Z2VkIGZvciBmaXJzdCBwYXJ0eSBjb250ZW50LiBUaGlzIGlzIHN1Ym9wdGltYWwgYW5kIGNvdWxk
IGJlIGltcHJvdmVkIGluIGEgbGF0ZXIKKyAgICAgICAgaXRlcmF0aW9uLiBIb3dldmVyLCB0aGUg
ZGVmYXVsdCBiZWhhdmlvciBpbiBTYWZhcmkgaXMgdGhhdCB0aGlyZC1wYXJ0eSBpZnJhbWVzIGRv
IG5vdCBoYXZlCisgICAgICAgIGNvb2tpZSBhY2Nlc3MgdW5sZXNzIHRoZXkgcmVxdWVzdCBpdCB1
c2luZyB0aGUgc3RvcmFnZSBhY2Nlc3MgQVBJLiBXZSBhbHNvIGN1cnJlbnRseSBoYXZlCisgICAg
ICAgIGEgbGltaXQgb2YgNSBob3N0cyB3aXRoIGNhY2hlZCBjb29raWVzIHBlciBXZWJQcm9jZXNz
LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFm
dGVyLXNob3dNb2RhbERpYWxvZy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2Nvb2tp
ZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5odG1sCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZExvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogbG9hZGVyL0Nv
b2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWxlYXNlQ3JpdGljYWxNZW1vcnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXI6On5Db29raWVDaGFuZ2VPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVN0b3JhZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Om5z
Q29va2llc1RvQ29va2llVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246Omh0dHBDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlSFRUUENvb2tpZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29raWVzRm9yVVJMIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyQ29va2llcyk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JE
T00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZWdpc3Rl
ckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RhcnRM
aXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkb21D
b29raWVzRm9ySG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkgY29uc3QpOgorCiAyMDIwLTAyLTE3ICBa
YWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5saW5lIGJveGVzIGZv
ciBpbWFnZXMgdGhhdCByZXByZXNlbnQgbm90aGluZyBzaG91bGQgY29sbGFwc2UgdG8gZW1wdHku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCA5MTNmMzE5MWI1NWU0MmNiZjFmZGQ4Zjg2YTY5Yjk3MTQ1
NDQyYTVhLi42OWM4NWNmOWU5Nzk1NGRiM2I2NTI0YzY0NDQzZjBjZGU3Y2U3M2UwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0xMiAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2Vi
UHJvY2VzcyBjb29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tp
ZSBpbiBtb3N0IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEFkZCBuZXcgQ0ZOZXR3
b3JrIFNQSSB0byBDRk5ldHdvcmtTUEkuaCBmb3Igb3BlbiBzb3VyY2UgYnVpbGRzIGFuZCBmb3Ig
dXNpbmcgcmVzcG9uZHNUb1NlbGVjdG9yLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaDoKKwogMjAyMC0wMi0xNyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBjaGVjay13ZWJraXQtc3R5bGUgZXJyb3JzIHJlbGF0ZWQgdG8gQVZGb3Vu
ZGF0aW9uU1BJLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTljZDE1M2UwOTIxNWE4MWVlNWQyY2E5NjgwYTRiOWRi
M2VkN2JkNC4uMGIyNzI5NjM3MWE2MTJlYzc3NTY5MDdkMmZkYzRlYTVlMzU5NzlkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1OSBAQAorMjAyMC0wMi0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBj
b29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBpbiBtb3N0
IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFNlZSBXZWJDb3JlIENoYW5nZUxvZy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkb21Db29raWVzRm9ySG9zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnN1YnNjcmliZUZyb21Db29raWVD
aGFuZ2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRGVsZXRlZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNvb2tpZXNBZGRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0Rl
bGV0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJDb29raWVDYWNoZUNvY29hLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2Fj
aGU6OmluTWVtb3J5U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb29raWVDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVD
YWNoZTo6aXNGdW5jdGlvbmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmNv
b2tpZXNGb3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6c2V0Q29va2ll
c0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6Y29va2llc0FkZGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmNvb2tpZXNEZWxldGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llQ2FjaGU6OmNsZWFyRm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZUNhY2hlOjpwcnVuZUNhY2hlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVDYWNoZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjppc0VsaWdp
YmxlRm9yQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tp
ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OnNldENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXNBZGRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llc0RlbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVKYXI6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6
OmNsZWFyQ2FjaGVGb3JIb3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX292ZXJyaWRkZW5NZWRpYVR5cGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OldlYlByb2Nl
c3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpjb29raWVKYXIpOgorCiAyMDIwLTAyLTE3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2ViSW5zcGVjdG9yIHN1cHBvcnQgdG8g
V2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNo
U2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKaW5kZXggZTI2ODdlOWIwNjJkZGM4NDk0
NTk0MmU5MDI0NmFhODFhN2Y0NDU1NS4uZWUyYzI5MTM3ODM4ODI1Yjk5ZGE2MDQ3OTMyOTlhM2E4
ZGIzZWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFNldC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hTZXQuaApAQCAtMTEyLDYgKzExMiw4IEBAIHB1YmxpYzoKICAgICAvLyB0
aGVtIGFyZSBuZXcgdG8gdGhlIHNldC4gUmV0dXJucyBmYWxzZSBpZiB0aGUgc2V0IGlzIHVuY2hh
bmdlZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+CiAgICAgYm9vbCBhZGQo
SXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUgZW5kKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVyYXRvclR5cGU+CisgICAgYm9vbCByZW1vdmUoSXRlcmF0b3JUeXBlIGJlZ2luLCBJ
dGVyYXRvclR5cGUgZW5kKTsKIAogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYpOwog
ICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTI3MCw2ICsyNzIsMTYgQEAgaW5saW5lIGJv
b2wgSGFzaFNldDxULCBVLCBWPjo6YWRkKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBl
IGVuZCkKICAgICByZXR1cm4gY2hhbmdlZDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KK2lu
bGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZShJdGVyYXRvclR5cGUgYmVnaW4sIEl0
ZXJhdG9yVHlwZSBlbmQpCit7CisgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgZm9yIChJ
dGVyYXRvclR5cGUgaXRlciA9IGJlZ2luOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBj
aGFuZ2VkIHw9IHJlbW92ZSgqaXRlcik7CisgICAgcmV0dXJuIGNoYW5nZWQ7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiBpbmxpbmUgYm9vbCBIYXNo
U2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmlu
ZGV4IGU2MWE2ZGM3Yjc0MjgxZTI5NWVjOGI3YWNmODhkY2JlNzBjMjVkNjIuLjE2ZDE1NDI1MjU1
ZjA4YWZlYWNhY2UwZWU4NTU4NDY2NTllYzA2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC01
NjAsNiArNTYwLDEwIEBACiAjZGVmaW5lIEhBVkVfREVWSUNFX0lERU5USVRZIDEKICNlbmRpZgog
CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ09PS0lFX0NIQU5HRV9MSVNU
RU5FUl9BUEkgMQorI2VuZGlmCisKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgSEFWRV9EQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4gMQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCmluZGV4IDY2NThlNzI4YzljOTgy
YTZmZjgyYzBjYTQxNjQ4YzJkNGRjMTE0NDAuLmE5MjA3NjBiM2Q2OWMyM2JlOGI2ODllNTZmNDhm
ZGQ3ZDhjNjQzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdURl9FWFRFUk5fQ19FTkQKIAogQGludGVyZmFj
ZSBOU0hUVFBDb29raWVTdG9yYWdlICgpCiArICh2b2lkKV9zZXRTaGFyZWRIVFRQQ29va2llU3Rv
cmFnZTooTlNIVFRQQ29va2llU3RvcmFnZSAqKXN0b3JhZ2U7CistICh2b2lkKV9zZXRTdWJzY3Jp
YmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6KE5TU2V0PE5TU3RyaW5nKj4qIF9fbnVsbGFibGUp
ZG9tYWluTGlzdDsKKy0gKHZvaWQpX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6KHZvaWQoXl9fbnVs
bGFibGUpKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGFkZGVkQ29va2llcywgTlNVUkwqIF9fbnVs
bGFibGUgdXJsRm9yQWRkZWRDb29raWVzKSljb29raWVzQWRkZWRIYW5kbGVyIG9uUXVldWU6KGRp
c3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsKKy0gKHZvaWQpX3NldENvb2tpZXNEZWxl
dGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBDb29raWUqPiogX19u
dWxsYWJsZSBkZWxldGVkQ29va2llcywgYm9vbCBkZWxldGVkQWxsQ29va2llcykpY29va2llc0Rl
bGV0ZWRIYW5kbGVyIG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsK
Ky0gKE5TQXJyYXkqIF9fbnVsbGFibGUpX2dldENvb2tpZXNGb3JEb21haW46KE5TU3RyaW5nKilk
b21haW47CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggMDJhNjUzNDdhYzQ5ZWYwMTJiMTliMzg2N2U5Mzk1MDc5NmVkOGJmYS4u
ZmUwYTA0OTU4MTUyYTVmZmY0MWM0Y2ZjMGRiNjJjNTQ5MjA0YWYzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC03MjAyLDExICs3MjAyLDE0IEBAIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRh
dGVET01Db29raWVDYWNoZSgpCiAgICAgbV9jYWNoZWRET01Db29raWVzID0gU3RyaW5nKCk7CiB9
CiAKLXZvaWQgRG9jdW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKQordm9pZCBE
b2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBVUkwmIHVybCkKIHsK
ICAgICAvLyBTeW5jaHJvbm91cyByZXNvdXJjZXMgbG9hZGluZyBjYW4gc2V0IGNvb2tpZXMgc28g
d2UgaW52YWxpZGF0ZSB0aGUgY29va2llcyBjYWNoZQogICAgIC8vIGluIHRoaXMgY2FzZSwgdG8g
YmUgc2FmZS4KICAgICBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsKKworICAgIGlmIChhdXRv
KiBwYWdlID0gdGhpcy0+cGFnZSgpKQorICAgICAgICBwYWdlLT5jb29raWVKYXIoKS5jbGVhckNh
Y2hlRm9ySG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIERvY3VtZW50Ojpl
bnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggNmYxZjE0NTFkNzc1NzQ3MmJhMjlkYmE5ZDE3ZTU5MmZmOGE5OTUy
OS4uYTEwZjBlODcyN2E5NDY0YzhjOTQzODFjNGMyNGQxMjFkMjIyMmRlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTE2MzgsNyArMTYzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDYWNo
ZWRET01Db29raWVzKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgaXNET01Db29raWVDYWNoZVZh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVDYWNoZUV4cGlyeVRpbWVyLmlzQWN0aXZlKCk7
IH0KICAgICB2b2lkIGludmFsaWRhdGVET01Db29raWVDYWNoZSgpOwotICAgIHZvaWQgZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSgpIGZpbmFsOworICAgIHZvaWQgZGlkTG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBVUkwmKSBmaW5hbDsKIAogICAgIGJvb2wgY2FuTmF2aWdhdGVJ
bnRlcm5hbChGcmFtZSYgdGFyZ2V0RnJhbWUpOwogICAgIGJvb2wgaXNOYXZpZ2F0aW9uQmxvY2tl
ZEJ5VGhpcmRQYXJ0eUlGcmFtZVJlZGlyZWN0QmxvY2tpbmcoRnJhbWUmIHRhcmdldEZyYW1lLCBj
b25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA1ODgyZTFhYjFhYjkzYjM3M2VhMjNhNmEwMjgyNDFk
ZWVmNTMzODY0Li4zMmFmNzQ0ODE0MWE3OTFjODNjNmYyOTFlY2VkZGFkYTAxZDE5YTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0yMTgs
NyArMjE4LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNzYWdl
UG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiAgICAgbV9tZXNzYWdlUG9ydHMucmVtb3Zl
KCZtZXNzYWdlUG9ydCk7CiB9CiAKLXZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSgpCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRp
ZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgVVJMJikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMDA4MzFhMjYwYjUzN2Ew
MDkzYTg4MTJkYTRiYTVmZmQ1YzI1NTZhOC4uYmMwNGRmNDlkMWFlOTc4OTYzMDVjODIzMTNhNmQ1
YzJmNjI0NGZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlZE1lc3NhZ2VQ
b3J0KE1lc3NhZ2VQb3J0Jik7CiAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdl
UG9ydCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBV
UkwmKTsKIAogICAgIHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
ICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDg0ZGJhNDBlOTI4NmNkM2ZkODM4MzRiYWMwMjAx
NjAwMWEyN2Y1MDcuLjMwMDI5M2E4NjZkYWM0YjIwODU3YjdlNzUyNDQ3ODExMGM1Yzg5ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYs
IFZlY3RvcjxDb29raWU+JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAK
KyAgICAvLyBDb29raWUgQ2FjaGUuCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2FjaGUoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNoZUZvckhvc3QoY29uc3QgU3RyaW5nJikgeyB9CisK
ICAgICB2aXJ0dWFsIH5Db29raWVKYXIoKTsKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbyhjb25zdCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDJiN2JmNDI5ZGQ2MjJmYzcyN2UxMDEzMDJl
ZmZlZWRkNWU0YzM4NDcuLmM3ZTBmMzFiZTcyMDZmZWY4ZGFhZDE4NDYxZTRmNWEyNGJiZjdkNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTExMCwx
MSArMTEwLDEyIEBAIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4CiAKIHZvaWQgVGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogeworICAg
IGF1dG8gcmVzb3VyY2VVUkwgPSByZXF1ZXN0LnVybCgpOwogICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpCiAgICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25j
YXN0PERvY3VtZW50Pihjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25z
KTsKLSAgICBjb250ZXh0LmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKTsKKyAgICBjb250
ZXh0LmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVzb3VyY2VVUkwpOwogfQogCiB2b2lk
IFRocmVhZGFibGVMb2FkZXI6OmxvZ0Vycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDMxNmQyMTY5N2JkYmVlOTJk
MTNhZTM5ZDY0YTc0NGYzNGZmMTdhNWMuLjQxMWY4NzJkYTRiMTJhODBjZDM5NzMyMDgyZDczOWU4
ZTQ2YmY3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgog
I2luY2x1ZGUgIkNvbW1vblZNLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtOTksNiArMTAwLDEwIEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5j
aHJvbm91cyBzeW5jaHJvbm91cywgTWFpbnRhaW5CYWNrRm9yd2FyZENhCiAKICAgICBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmRyYWluKCk7CiAKKyAgICBQYWdlOjpmb3JFYWNoUGFnZShbXShh
dXRvJiBwYWdlKSB7CisgICAgICAgIHBhZ2UuY29va2llSmFyKCkuY2xlYXJDYWNoZSgpOworICAg
IH0pOworCiAgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxE
b2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkpIHsKICAgICAgICAgZG9jdW1lbnQt
PnN0eWxlU2NvcGUoKS5yZWxlYXNlTWVtb3J5KCk7CiAgICAgICAgIGRvY3VtZW50LT5mb250U2Vs
ZWN0b3IoKS5lbXB0eUNhY2hlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IGZk
OTAxNjQ3MjBlYzc1OTI5ZmM1Y2RmMmQxMGZkMTg4NWNhZGRmNWUuLjYzZjU5OThlNGRmMzUyZjBh
Y2Q5NGJmMGI1MmE5ZjJhMTNhMTlkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAg
LTM2MSw2ICszNjEsOSBAQCByZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZDoKIEhUVFBTVXBncmFk
ZUVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiAKK2luUHJvY2Vzc0Nvb2tpZUNhY2hlRW5hYmxl
ZDoKKyAgaW5pdGlhbDogZmFsc2UKKwogdGhpcmRQYXJ0eUlmcmFtZVJlZGlyZWN0QmxvY2tpbmdF
bmFibGVkOgogICBpbml0aWFsOiB0cnVlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCAyOTk0Mjc1
NjI1OGU5MjQzYzNiMGExMDBiMWEzZjZmNzJhODQ3NThjLi5hNGVlZGUxNmFkZDU2ZGY1ZjZmMDdk
NWEyZDUxMzliNjhmMGUxYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgi
CiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5
LmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC01Niw2ICs1NywxNCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6cGVybWl0UHJvY2Vzc1RvVXNlQ29va2llQVBJKGJvb2wgdmFsdWUpCiAgICAgICAg
IHJlbW92ZVByb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29v
a2llcyk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitWZWN0b3I8Q29va2llPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYpCit7CisgICAg
QVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICByZXR1cm4geyB9OworfQorI2VuZGlm
IC8vICFQTEFURk9STShDT0NPQSkKKwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDY1MDZmMTA3NzA2NWE0ZDIxZjc5ODAxOTJmM2Q3NTA3ZWJjMjNh
OWUuLmY1MTkyNjlkMzk2ZjIzNzliY2UyOWYyODZkNjliYmRkODY2ZjJjN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTYwLDYgKzYwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291
cENvb2tpZUphcjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5oIgorT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU0hUVFBDb29r
aWU7CitPQkpDX0NMQVNTIE5TTXV0YWJsZVNldDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC03OSw2ICs4MiwxNSBAQCBlbnVtIGNsYXNzIFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgOiB1aW50OF90IHsgQWxsLCBBbGxPblNpdGVzV2l0aG91dFVzZXJJbgogZW51bSBjbGFz
cyBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29r
aWVzLCBOb25lLCBBbGxCdXRDb29raWVzTGl2ZU9uVGVzdGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tp
ZXNSZXByb1Rlc3RpbmdUaW1lb3V0IH07CiBlbnVtIGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2wg
eyBObywgWWVzIH07CiAKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorY2xh
c3MgQ29va2llQ2hhbmdlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvb2tpZUNo
YW5nZU9ic2VydmVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBT
dHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjb29raWVzRGVsZXRlZCgpID0gMDsKK307CisjZW5kaWYKKwogY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTkyLDkg
KzEwNCwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNIVFRQQ29va2llU3RvcmFn
ZSAqbnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIFdFQkNPUkVfRVhQT1JUIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVD
RlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4mJik7CisgICAgZW51bSBjbGFzcyBJc0luTWVtb3J5Q29va2llU3RvcmUgOiBi
b29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmLCBJc0luTWVtb3J5Q29va2llU3RvcmUg
PSBJc0luTWVtb3J5Q29va2llU3RvcmU6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgLy8gTWF5IGJl
IG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQu
CkBAIC0xNDYsNiArMTYzLDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3RvcjxDb29raWU+IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CisKKyNp
ZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5n
ZU9ic2VydmVyJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5nZU9i
c2VydmVyJiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBob3N0cyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzdXBwb3J0c0Nvb2tpZUNoYW5nZUxpc3RlbmVyQVBJKCkgY29uc3Q7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9pc1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkID0gZW5hYmxlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CkBAIC0xNzMsMTEg
KzE5OCwyNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBlbnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVIVFRQT25seSB9OworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNG
b3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBJbmNsdWRlSFRUUE9ubHlPck5vdCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUCA9IFNob3VsZEFza0lUUDo6WWVzKSBjb25zdDsKKyAgICBOU0FycmF5ICpodHRwQ29va2ll
cyhDRkhUVFBDb29raWVTdG9yYWdlUmVmKSBjb25zdDsKKyAgICBOU0FycmF5ICpodHRwQ29va2ll
c0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3Qg
T3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNvbnN0OworICAgIE5TQXJyYXkgKmNv
b2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIFNob3VsZEFza0lUUCkgY29uc3Q7CisgICAgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVS
TChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqLCBOU1VS
TCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mKSBjb25zdDsKKyAgICB2b2lk
IGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNIVFRQQ29va2llICop
IGNvbnN0OworI2VuZGlmCisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQor
ICAgIHZvaWQgcmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpOworICAg
IHZvaWQgdW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7CisjZW5k
aWYKKwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNl
c3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBtX3BsYXRmb3JtQ29va2llU3RvcmFnZTsKKyAgICBib29sIG1faXNJbk1lbW9y
eUNvb2tpZVN0b3JlIHsgZmFsc2UgfTsKICNlbGlmIFVTRShTT1VQKQogICAgIHN0YXRpYyB2b2lk
IGNvb2tpZXNEaWRDaGFuZ2UoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKik7CiAKQEAgLTE5MCw2ICsy
MzEsMTIgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4
dDsKICNlbmRpZgogCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBi
b29sIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAgIFJldGFpblB0
cjxOU011dGFibGVTZXQ+IG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOworICAg
IEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4+IG1fY29va2ll
Q2hhbmdlT2JzZXJ2ZXJzOworI2VuZGlmCisKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRl
bnRpYWxTdG9yYWdlOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKaW5kZXggYjAxYTdlNjZiZjA5MTQ5NjFkNjMw
MTA3NDFlMjIxNzVmOWVmYjliOC4uZTBkODRmN2M1MTc5NWVjZWJmM2U1MDZjOWIwYTI4ZThjYjVh
YjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKQEAgLTczLDExICs3Mywx
MiBAQCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRgogICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbjsK
IH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiBw
bGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmIHBsYXRm
b3JtQ29va2llU3RvcmFnZSkKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNl
c3Npb25SZWY+JiYgcGxhdGZvcm1TZXNzaW9uLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4mJiBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UsIElzSW5NZW1vcnlDb29raWVTdG9yZSBpc0lu
TWVtb3J5Q29va2llU3RvcmUpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBt
X3BsYXRmb3JtU2Vzc2lvbihXVEZNb3ZlKHBsYXRmb3JtU2Vzc2lvbikpCisgICAgLCBtX2lzSW5N
ZW1vcnlDb29raWVTdG9yZShpc0luTWVtb3J5Q29va2llU3RvcmUgPT0gSXNJbk1lbW9yeUNvb2tp
ZVN0b3JlOjpZZXMpCiB7Ci0gICAgQVNTRVJUKHByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSB8fCAh
cGxhdGZvcm1Db29raWVTdG9yYWdlKTsKKyAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQ
SSgpIHx8ICFwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUp
OwogICAgIG1fcGxhdGZvcm1Db29raWVTdG9yYWdlID0gcGxhdGZvcm1Db29raWVTdG9yYWdlID8g
V1RGTW92ZShwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpIDogY29va2llU3RvcmFnZSgpOwogfQogCkBA
IC04OCwxMCArODksMTAgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlKCkgY29uc3QK
IHsKLSAgICBpZiAoIXByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkKKyAgICBpZiAoIXByb2Nlc3NN
YXlVc2VDb29raWVBUEkoKSAmJiAhbV9pc0luTWVtb3J5Q29va2llU3RvcmUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1l
bW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIGlmIChtX3BsYXRmb3JtQ29va2llU3RvcmFnZSkKICAg
ICAgICAgcmV0dXJuIG1fcGxhdGZvcm1Db29raWVTdG9yYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0KaW5kZXggOWU5YTkxYjcyNTBmMzYyYjg1OTQ1ZjNkNzAyNzZlNmFi
YjFhZGQ0Mi4uNjhhYTMyM2ZiOTAyYTc1MzNiNDFhZTgwYzE5N2M3N2E4NGU1NmE0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw5ICs0NCwxNiBAQCBA
ZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+TmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJf
QVBJKQorICAgIHVucmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpOwor
I2VuZGlmCit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3Qg
Q29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJ
bk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
ICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWVd
OwpAQCAtNTUsNyArNjIsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2ll
KGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmls
ZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZvciAoY29uc3QgYXV0byYgY29va2ll
IDogY29va2llcykKQEAgLTY4LDE5ICs3NSwxOCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgog
CiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYg
Y29va2llKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxl
Z2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlD
b29raWVTdG9yZSk7CiAgICAgW25zQ29va2llU3RvcmFnZSgpIGRlbGV0ZUNvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llXTsKIH0KIAotc3RhdGljIFZlY3RvcjxDb29raWU+IG5zQ29va2llc1Rv
Q29va2llVmVjdG9yKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpCitzdGF0aWMg
VmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29raWVWZWN0b3IoTlNBcnJheTxOU0hUVFBDb29r
aWUgKj4gKm5zQ29va2llcywgY29uc3QgRnVuY3Rpb248Ym9vbChOU0hUVFBDb29raWUgKik+JiBm
aWx0ZXIgPSB7IH0pCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotCiAgICAgVmVjdG9yPENvb2tpZT4gY29v
a2llczsKICAgICBjb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNDb29raWVzLmNvdW50
KTsKLSAgICBmb3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUgaW4gbnNDb29raWVzKQotICAgICAg
ICBjb29raWVzLnVuY2hlY2tlZEFwcGVuZChuc0Nvb2tpZSk7Ci0KKyAgICBmb3IgKE5TSFRUUENv
b2tpZSAqbnNDb29raWUgaW4gbnNDb29raWVzKSB7CisgICAgICAgIGlmICghZmlsdGVyIHx8IGZp
bHRlcihuc0Nvb2tpZSkpCisgICAgICAgICAgICBjb29raWVzLnVuY2hlY2tlZEFwcGVuZChuc0Nv
b2tpZSk7CisgICAgfQogICAgIHJldHVybiBjb29raWVzOwogfQogCkBAIC0xMTgsNyArMTI0LDcg
QEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2llU3RvcmUoKQogCiBOU0hU
VFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNv
b2tpZVN0b3JlKTsKICAgICBhdXRvIGNmQ29va2llU3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2UoKTsK
ICAgICBpZiAoIWNmQ29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRI
VFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY2ZDb29raWVTdG9yYWdlKQogICAg
ICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2Vd
OwpAQCAtMTU4LDExICsxNjQsNiBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKQogICAgIENGVVJMQ2FjaGVT
ZXREaXNrQ2FwYWNpdHkoY2FjaGUuZ2V0KCksIDApOyAvLyBTZXR0aW5nIGRpc2sgY2FjaGUgc2l6
ZSBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8xMjY1NjgxND4g
aXMgZml4ZWQuCiAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLmdldCgpLCBb
W05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIG1lbW9yeUNhcGFjaXR5XSk7CiAKLSAgICBpZiAo
IU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQotICAgICAg
ICByZXR1cm4gc3RvcmFnZVNlc3Npb24ubGVha1JlZigpOwotCi0gICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotCiAg
ICAgYXV0byBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlD
b29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7
CiAgICAgaWYgKCFjb29raWVTdG9yYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3
MywyMCArMTc0LDIzIEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNz
aW9uLmxlYWtSZWYoKTsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmh0dHBDb29raWVzKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6aHR0cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKSBj
b25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6
OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpCisgICAgQVNT
RVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29v
a2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOworICAgIGlmICghY29va2llU3RvcmFn
ZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwog
ICAgICAgICByZXR1cm4gW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9y
YWdlXSBjb29raWVzXTsKKyAgICB9CiAgICAgCiAgICAgYXV0byBjb29raWVzID0gYWRvcHRDRihD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFnZSkpOwogICAgIHJldHVy
biBbTlNIVFRQQ29va2llIF9jZjJuc0Nvb2tpZXM6Y29va2llcy5nZXQoKV07CiB9CiAKLXN0YXRp
YyB2b2lkIGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9y
YWdlLCBOU0hUVFBDb29raWUgKmNvb2tpZSkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNI
VFRQQ29va2llICpjb29raWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
IHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICAg
ICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBkZWxldGVD
b29raWU6Y29va2llXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyNiw5ICsyMzAsOSBA
QCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChOU0hUVFBDb29raWVTdG9yYWdlICpzdG9y
YWdlLCBOU1VSTCAqdXJsLCBOU1VSTCAqbQogICAgIHJldHVybiBjb29raWVzUHRyLT5hdXRvcmVs
ZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDb29r
aWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJMICp1cmws
IE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
KQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29raWVzRm9yVVJMKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwg
KnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1l
bW9yeUNvb2tpZVN0b3JlKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKICNpZiAhKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTQwMCkgJiYg
IVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogICAgICAgICBpZiAoW05T
SFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKF9z
ZXRDb29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6cG9saWN5UHJvcGVydGllczopXSkKQEAg
LTI1NSwyMSArMjU5LDIyIEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqCiAjZW5kaWYKIH0KIAot
c3RhdGljIE5TQXJyYXkgKmh0dHBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYg
Y29va2llU3RvcmFnZSwgTlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IE9wdGlvbmFsPFNhbWVTaXRl
SW5mbz4mIHNhbWVTaXRlSW5mbywgTlNVUkwgKnVybCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYg
c2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBp
ZiAoIWNvb2tpZVN0b3JhZ2UpCisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpOworICAgIGlmICghY29va2llU3RvcmFnZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgICAgICBjb29raWVTdG9yYWdlID0gX0NGSFRU
UENvb2tpZVN0b3JhZ2VHZXREZWZhdWx0KGtDRkFsbG9jYXRvckRlZmF1bHQpOworICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBTdG9wIGNyZWF0aW5nIGEgbmV3IE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2Jq
ZWN0IGVhY2ggdGltZSB3ZSB3YW50IHRvIHF1ZXJ5IHRoZSBjb29raWUgamFyLgogICAgIC8vIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiBjb3VsZCBpbnN0ZWFkIGtlZXAgYSBOU0hUVFBDb29raWVTdG9y
YWdlIG9iamVjdCBmb3IgdXMuCiAgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZVN0b3JhZ2U+IG5z
Q29va2llU3RvcmFnZSA9IGFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5p
dFdpdGhDRkhUVFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2VdKTsKLSAgICByZXR1cm4gY29v
a2llc0ZvclVSTChuc0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCwgZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvclVSTChuc0Nvb2tpZVN0b3Jh
Z2UuZ2V0KCksIHVybCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsKIH0KIAogc3RhdGljIFJl
dGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkgKnVuZmlsdGVyZWRDb29raWVz
LCBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJv
Y2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAg
ICAgTlNVSW50ZWdlciBjb3VudCA9IFt1bmZpbHRlcmVkQ29va2llcyBjb3VudF07CiAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBmaWx0ZXJlZENvb2tpZXMgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsKIApAQCAtMzAyLDI3ICsz
MDcsMjYgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkg
KnVuZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29r
aWVzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFz
a0lUUCBzaG91bGRBc2tJVFApCitOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCkgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2Vzc2lvbi5zaG91bGRC
bG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChz
aG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZp
cnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQp
OwogICAgIFVOVVNFRF9QQVJBTShzaG91bGRBc2tJVFApOwogI2VuZGlmCi0gICAgcmV0dXJuIGh0
dHBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8sIHVybCk7CisgICAgcmV0dXJuIGh0dHBDb29raWVzRm9yVVJMKGNvb2tp
ZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwpOwogfQogCi1l
bnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVI
VFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCA9IFNob3VsZEFza0lUUDo6WWVzKQorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBj
b25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6
OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBOU0Fy
cmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChzZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOworICAgIE5TQXJyYXkg
KmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgaWYgKCFbY29va2llcyBjb3VudF0p
CiAgICAgICAgIHJldHVybiB7IFN0cmluZygpLCBmYWxzZSB9OyAvLyBSZXR1cm4gYSBudWxsIHN0
cmluZywgbm90IGFuIGVtcHR5IG9uZSB0aGF0IFN0cmluZ0J1aWxkZXIgd291bGQgY3JlYXRlIGJl
bG93LgogCkBAIC0zNzQsMjIgKzM3OCwyMiBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxIVFRQQ29v
a2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiAKIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywg
c2hvdWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHks
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewot
ICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJl
Q29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBP
bmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKIH0KIAogc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmll
bGRQcm94eSkgY29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhl
YWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8s
IGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZp
ZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihoZWFkZXJGaWVs
ZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJG
aWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5
LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVD
b29raWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBB
U1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdD
b29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiAKQEAgLTQ1Nyw3ICs0NjEsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSQogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKLSAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTCgqdGhpcywgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQ
KTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOwogICAgIE5TVUlu
dGVnZXIgY291bnQgPSBbY29va2llcyBjb3VudF07CiAgICAgcmF3Q29va2llcy5yZXNlcnZlQ2Fw
YWNpdHkoY291bnQpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKQEAgLTUxOCw3ICs1MjIsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdAogCiB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGluY2x1ZGVIdHRw
T25seUNvb2tpZXMpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1l
bW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApA
QCAtNTY2LDQgKzU3MCw5OCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQogICAgIFtzdG9yYWdlIF9z
YXZlQ29va2llc107CiB9CiAKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5TQXJyYXkgKm5z
Q29va2llcyA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJp
bmcgKilob3N0XTsKKyAgICByZXR1cm4gbnNDb29raWVzVG9Db29raWVWZWN0b3IobnNDb29raWVz
LCBbXShOU0hUVFBDb29raWUgKmNvb2tpZSkgeyByZXR1cm4gIWNvb2tpZS5IVFRQT25seTsgfSk7
Cit9CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6cmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2Fy
eSgpCit7CisgICAgaWYgKG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgPSB0cnVlOworICAgIFtu
c0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0FkZGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQ
Q29va2llICo+ICogbnNDb29raWVzLCBOU1VSTCAqdXJsRm9yQWRkZWRDb29raWVzKSB7CisgICAg
ICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXMgPSBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihuc0Nv
b2tpZXMpOworICAgICAgICBhdXRvIGhvc3QgPSBVUkwodXJsRm9yQWRkZWRDb29raWVzKS5ob3N0
KCkudG9TdHJpbmcoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWhvc3QuaXNOdWxsKCkpOwor
ICAgICAgICBhdXRvIGl0ID0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZmluZChob3N0KTsKKyAg
ICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogaXQtPnZhbHVlKQorICAg
ICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKKyAgICB9IG9u
UXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07CisgICAgW25zQ29va2llU3RvcmFnZSgp
IF9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqLCBi
b29sIC8qZGVsZXRlZEFsbENvb2tpZXMqLykgeworICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVy
cyA6IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAgICAgICAgICAgIG9ic2VydmVyLT5j
b29raWVzRGVsZXRlZCgpOworICAgICAgICB9CisgICAgfSBvblF1ZXVlOmRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3Rl
ckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoIW1fZGlkUmVn
aXN0ZXJDb29raWVMaXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKKworICAgIFtuc0Nvb2tpZVN0
b3JhZ2UoKSBfc2V0Q29va2llc0FkZGVkSGFuZGxlcjpuaWwgb25RdWV1ZTpuaWxdOworICAgIFtu
c0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVyOm5pbCBvblF1ZXVlOm5p
bF07CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tp
ZUNoYW5nZXM6bmlsXTsKKyAgICBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzID0gZmFsc2U7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdGFydExpc3RlbmluZ0ZvckNvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hhbmdlT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25z
dCBTdHJpbmcmIGhvc3QpCit7CisgICAgcmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5l
Y2Vzc2FyeSgpOworCisgICAgYXV0byYgb2JzZXJ2ZXJzID0gbV9jb29raWVDaGFuZ2VPYnNlcnZl
cnMuZW5zdXJlKGhvc3QsIFtdIHsKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8Q29va2llQ2hhbmdl
T2JzZXJ2ZXIqPiB7IH07CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIEFTU0VSVCghb2Jz
ZXJ2ZXJzLmNvbnRhaW5zKCZvYnNlcnZlcikpOworICAgIG9ic2VydmVycy5hZGQoJm9ic2VydmVy
KTsKKworICAgIGlmICghbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMpCisgICAg
ICAgIG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzID0gYWRvcHROUyhbW05TTXV0
YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAgIGVsc2UgaWYgKFttX3N1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0XSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGFk
ZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1
YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9w
TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZl
ciYgb2JzZXJ2ZXIsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaG9zdHMpCit7CisgICAgYm9vbCBz
dWJzY3JpYmVkVVJMc0NoYW5nZWQgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0
cykgeworICAgICAgICBhdXRvIGl0ID0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZmluZChob3N0
KTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKTsK
KyAgICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYgb2JzZXJ2ZXJzID0gaXQtPnZhbHVlOwor
ICAgICAgICBBU1NFUlQob2JzZXJ2ZXJzLmNvbnRhaW5zKCZvYnNlcnZlcikpOworICAgICAgICBv
YnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CisgICAgICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5yZW1vdmUoaXQpOwor
ICAgICAgICAgICAgQVNTRVJUKFttX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBj
b250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0XSk7CisgICAgICAgICAgICBbbV9zdWJzY3Jp
YmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgcmVtb3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3Rd
OworICAgICAgICAgICAgc3Vic2NyaWJlZFVSTHNDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAoc3Vic2NyaWJlZFVSTHNDaGFuZ2VkKQorICAgICAgICBbbnNDb29raWVT
dG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmli
ZWREb21haW5zRm9yQ29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKKy8vIEZJWE1FOiBUaGlzIGNh
biBldmVudHVhbGx5IGdvIGF3YXksIHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290aCB0
cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJLgorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1
cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdAoreworICAgIHN0YXRpYyBjb25z
dCBib29sIHN1cHBvcnRzQVBJID0gW25zQ29va2llU3RvcmFnZSgpIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczopXTsKKyAg
ICByZXR1cm4gc3VwcG9ydHNBUEk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKENPT0tJRV9DSEFOR0Vf
TElTVEVORVJfQVBJKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDc1ZTBiNGEyNjVjOWVlNTlhMGI0MzA3OTRmN2VmMGQyMTdjNzJmMTcu
LjcyZTFkMjZkY2QzZjlhOGNmYjk1ZjAyM2EwMmNhNmE4OTBkMDYxY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0xMjQsNiArMTI0LDExIEBAIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIGZvciAoYXV0
byYgcG9ydCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzKQogICAgICAgICBuZXR3b3JrUHJvY2Vz
cygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0
KTsKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgaWYgKGF1dG8q
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnMoKnRoaXMsIG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzKTsKKyNlbmRpZgorCiAjaWYgVVNF
KExJQldFQlJUQykKICAgICBpZiAobV9ydGNQcm92aWRlcikKICAgICAgICAgbV9ydGNQcm92aWRl
ci0+Y2xvc2UoKTsKQEAgLTYzMyw2ICs2MzgsNDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGMK
ICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUp
OwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkb21Db29raWVzRm9y
SG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3Rp
ZmljYXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKKyAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vz
c2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisKKyNpZiBIQVZF
KENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIGlmIChzdWJzY3JpYmVUb0Nvb2tpZUNo
YW5nZU5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgQVNTRVJUKCFtX2hvc3RzV2l0aENvb2tpZUxp
c3RlbmVycy5jb250YWlucyhob3N0KSk7CisgICAgICAgIG1faG9zdHNXaXRoQ29va2llTGlzdGVu
ZXJzLmFkZChob3N0KTsKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zdGFydExpc3Rl
bmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhvc3QpOworICAgIH0KKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9u
cyk7CisjZW5kaWYKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+ZG9tQ29va2llc0Zvckhvc3QoaG9zdCkpOworfQorCisjaWYgSEFWRShDT09LSUVfQ0hBTkdF
X0xJU1RFTkVSX0FQSSkKKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5z
dWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGhvc3RzKQoreworICAgIGJvb2wgcmVtb3ZlZCA9IG1faG9zdHNXaXRoQ29va2llTGlzdGVu
ZXJzLnJlbW92ZShob3N0cy5iZWdpbigpLCBob3N0cy5lbmQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChyZW1vdmVkLCByZW1vdmVkKTsKKworICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBzdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnN0
b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKCp0aGlzLCBob3N0cyk7Cit9
CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNBZGRlZChjb25z
dCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQor
eworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OkNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBjb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpDb29raWVzRGVsZXRl
ZCgpLCAwKTsKK30KKworI2VuZGlmCisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQogewogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGViNmY1NWM2ZmU5ZTNiOWQxMjRhZjJhNzE1
ZjM1YWIxM2ZlMzNlNWUuLjdlZGM1YzYwNTk2YzViNGU2YmZiMjFhYTkzZjY1NWUxZDQ5NTc1YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5m
b3JtYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgpAQCAtODcsNiArODgsOSBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcwog
ICAgIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CiAj
aWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgLCBwdWJsaWMgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OkNsaWVudAorI2VuZGlmCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJ
U1RFTkVSX0FQSSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb29raWVDaGFuZ2VPYnNlcnZlcgog
I2VuZGlmCiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6CkBAIC0yNjcs
NiArMjcxLDE2IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBuZXh0TWVzc2FnZUJhdGNoSWRl
bnRpZmllcihGdW5jdGlvbjx2b2lkKCk+JiYpOwogCisgICAgdm9pZCBkb21Db29raWVzRm9ySG9z
dChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmlj
YXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik+JiYpOworCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICB2
b2lkIHVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBob3N0cyk7CisKKyAgICAvLyBXZWJDb3JlOjpDb29raWVDaGFuZ2VPYnNlcnZl
ci4KKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JikgZmluYWw7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpIGZp
bmFsOworI2VuZGlmCisKICAgICBzdHJ1Y3QgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
IHsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKCkgPSBkZWZhdWx0Owog
ICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoY29uc3QgUmVzb3VyY2VOZXR3
b3JrQWN0aXZpdHlUcmFja2VyJikgPSBkZWZhdWx0OwpAQCAtMzMwLDYgKzM0NCw5IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgTmV0d29ya01ETlNSZWdpc3RlciBtX21kbnNS
ZWdpc3RlcjsKICNlbmRpZgorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisg
ICAgSGFzaFNldDxTdHJpbmc+IG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzOworI2VuZGlmCiAK
ICAgICBib29sIG1fY2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCB7IGZhbHNl
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVj
OWIwYjhmODRhODRmZmViMDU4NTFkNDkzYzU5NWYyNmE1NDY1YzQuLjgyNTU0NmMyMDdiMzdhNTYz
NWJkMjk4M2Q3MGQ1MWQ3ZDhkZDAyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMzksNiArMzksMTAgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVt
OmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5n
IGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwog
ICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAgICBEZWxldGVDb29raWUo
VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgRG9tQ29va2llc0Zvckhvc3QoU3RyaW5n
IGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKSAtPiAoVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyNpZiBIQVZFKENPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMoSGFzaFNldDxTdHJpbmc+IGhvc3RzKQorI2VuZGlmCiAKICAgICBSZWdpc3Rl
ckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKICAgICBSZWdp
c3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IDdmMWNmOWM3NTllMjYyNmQxNTk2MTc0NWFiZDQ1NzUxYjI0YzYzZjMuLmJkMTZj
ZmEyYzhiMjUxMTgzZDhiNzFlZWQ2ZDY0MDk3OWUyOTdiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjI1LDYgKzYyNSw3IEBAIGRlZiBoZWFkZXJzX2Zv
cl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2ZW50JzogWyciV2ViRXZl
bnQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMn
OiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpJU09XZWJW
VFRDdWUnOiBbJzxXZWJDb3JlL0lTT1ZUVEN1ZS5oPiddLAorICAgICAgICAnc3RydWN0IFdlYkNv
cmU6OkNvb2tpZSc6IFsnPFdlYkNvcmUvQ29va2llLmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2Vi
Q29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3JlL0VsZW1lbnRDb250ZXh0Lmg+J10sCiAg
ICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsnIldlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2Vi
VXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55
YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBmMjc1
MmE5MWRiZTg4OGQ3OTE0NzczZWY0MjI3YWI0Y2Y1NzY3ZTY0Li5lMzMwNjA3MGNlYmFmOGU0Yzcx
ODA1NThlZjJiMjQxN2Y3NzBkODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwKQEAgLTU1LDYgKzU1LDEzIEBAIEhUVFBTVXBncmFkZUVuYWJsZWQ6CiAgICBodW1h
blJlYWRhYmxlRGVzY3JpcHRpb246ICJBdXRvbWF0aWMgSFRUUFMgdXBncmFkZSBmb3Iga25vd24g
c3VwcG9ydGVkIHNpdGVzIgogICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAogCitJblByb2Nlc3ND
b29raWVDYWNoZUVuYWJsZWQ6CisgICB0eXBlOiBib29sCisgICBkZWZhdWx0VmFsdWU6IHRydWUK
KyAgIGh1bWFuUmVhZGFibGVOYW1lOiAiSW4tUHJvY2VzcyBDb29raWUgQ2FjaGUiCisgICBodW1h
blJlYWRhYmxlRGVzY3JpcHRpb246ICJJbi1Qcm9jZXNzIERPTSBDb29raWUgQ2FjaGUiCisgICBj
YXRlZ29yeTogZXhwZXJpbWVudGFsCisKIFRoaXJkUGFydHlJZnJhbWVSZWRpcmVjdEJsb2NraW5n
RW5hYmxlZDoKICAgIHR5cGU6IGJvb2wKICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
aW5kZXggNzQ4OTRiZDI3YmFmNTg5NTFlNmFmMjQxYzg3OTk4YmM1YzVlYmFlOC4uYTVkMGJlMTQy
NzFmNjMwNmY4MzZiOGZkYmQ3ZDQyMGYyOTUyNDZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC02MjQsNiAr
NjI0LDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3BwCiBXZWJQcm9jZXNzL1dl
YlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4
dE1lbnUuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3Vt
ZW50TG9hZGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IGUxZmM2ZjczNzJiMTYwM2U1ZGQyNWViMGE0YTYwMWM2YzliZTIzZWEu
LmQyNGE4MDQ4ZTM0NTA0NjM0MjdjOTMwNDMyZWY5MDAzOTc1MTFjMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTYxMyw2ICs2MTMsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0
ZURpc3BhdGNoZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdElPUy5tbQogCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5Lm1tCitXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVD
b2NvYS5tbQogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YTQ1M2Zl
M2Y3OTA0YzRlMTJjOWRiMTliYjkyNWFmYmNlNjNmODdjLi4yMDFlNmM3YTExYmI3NTAzYzc4YzQ5
OWE3MTY0MTRiZWMxYjlmMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTk0Myw2ICs5NDMsNyBAQAogCQk0NjZCQzAzQzFGQTI2NkRB
MDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkJDMDM5MUZBMjY2QzkwMDJGQTlD
MSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjcxRkYxRjIz
MjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRD
NyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0NjdFNDNFODIyNDNGRjdE
MDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzky
NCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovOyB9OworCQk0NjgwOUE3QzIz
RDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJD
b29raWVDYWNoZS5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1MjQ3MjI2NjhE
ODUwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjA1
MjQ0MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vz
c0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0b3Jh
Z2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkJFQjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKQEAgLTM0ODYs
NiArMzQ4Nyw4IEBACiAJCTQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcxRkYxRTIzMjE3RUZGMDAxQjY0QzcgLyog
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdFNDNF
NzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0EyM0Q5MjI1MzAwQzI5
N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvb2tpZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODA5QTdC
MjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QjIxRTgxQ0M3MDA2
RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDI4LDYgKzg0MzEsOCBAQAogCQkJCUJDNzJCOUY5MTFF
NjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oICovLAogCQkJCTUxODcx
QjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8sCiAJCQkJNTE4NzFC
NUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi8sCisJCQkJNDY4MDlBN0Iy
M0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLywKKwkJCQk0NjgwOUE3QTIz
RDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLywKIAkJCQk1QzdGQjQ2RTIxRTk3
QzBCMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmNwcCAqLywKIAkJCQk1QzdGQjQ2RjIxRTk3QzBD
MDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggKi8sCiAJCQkJMUE1QjFDNTIxODk4N0VERjAwNEZD
RjlCIC8qIFdlYkRvY3VtZW50TG9hZGVyLmNwcCAqLywKQEAgLTEwNjY4LDYgKzEwNjczLDcgQEAK
IAkJCQk1MUFDQkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRN
ZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjRERTI1MTY4RkE0NDgwMEM5NEFG
QyAvKiBXZWJDb250ZXh0U3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4MDlBN0My
M0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
QzdGQjQ3MDIxRTk3REM1MDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMzA5MzQ1MDEzMTVCOTREMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzMwOTM0NDgxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRl
eCAyOGJjMTJjMzQyM2Y5ZjI4MzU2YzNhODRjNjEyMjRjZmE0ZWQ3ZTk5Li4yYmI0NzllMzlkZTli
NmU5NTdmMjljZmI3ZWU4NTA2NGEwMGU1OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2lu
Y2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCkBAIC0yMzQsNiArMjM1
LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVBY2NlcHRQb2xpY3lD
aGFuZ2VkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kKICAgICBtX2Nvb2tpZUFjY2VwdFBvbGljeSA9
IG5ld1BvbGljeTsKIH0KIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCit2
b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYg
aG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCkuY29va2llc0FkZGVkKGhvc3QsIGNvb2tp
ZXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0RlbGV0ZWQo
KQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tpZUphcigpLmNvb2tpZXNEZWxl
dGVkKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRs
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNTFmZGYzNTQ1MjRkOTE1ZGRmNmVkNTk0
YzdkMmMwZmQ4NjMzZDlkMS4uNzZkMjY2NTIwYzI2MGQxNTNiOTQxZDczOWJjNDQ5MDE4YzZlNGEz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3QgQ29va2llOwogc3RydWN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIGVudW0gY2xhc3Mg
SFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CkBAIC04Myw2ICs4NCwxMSBAQCBwdWJs
aWM6CiAKICAgICBib29sIGNvb2tpZXNFbmFibGVkKCkgY29uc3Q7CiAKKyNpZiBIQVZFKENPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmlu
ZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tp
ZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpIVFRQQ29va2llQWNj
ZXB0UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IDJhYTY4ODZlNTdhNTk5Y2JjMTdjMzVmNmI3NGU5OWQyYWIzYTg5ZTUuLjY5OTNmYTdlZjQ2
MGY3NTc2ZDYxY2ZlNGI2NDNkMjkwZjgyZDhkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDExIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0T25MaW5lU3RhdGUoYm9v
bCBpc09uTGluZSk7CiAgICAgQ29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpOwogCisjaWYgSEFWRShDT09L
SUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBDb29raWVzQWRkZWQoU3RyaW5nIGhvc3QsIFZl
Y3RvcjxzdHJ1Y3QgV2ViQ29yZTo6Q29va2llPiBjb29raWVzKTsKKyAgICBDb29raWVzRGVsZXRl
ZCgpOworI2VuZGlmCisKICAgICBDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1
Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpIC0+IChXZWJDb3JlOjpNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIEFzeW5jCiAg
ICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXIgcG9ydCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
YmM2NmQ5ZDRmYzZkMmY2NzY2NTBlY2M2ZGFhNWExYWEwNjA3MDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNv
Y29hLm1tCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgaWYgKCFt
X2luTWVtb3J5U3RvcmFnZVNlc3Npb24pIHsKKyAgICAgICAgU3RyaW5nIHNlc3Npb25OYW1lID0g
bWFrZVN0cmluZygiV2ViS2l0SW5Qcm9jZXNzU3RvcmFnZS0iLCBnZXRDdXJyZW50UHJvY2Vzc0lE
KCkpOworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVh
dGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSkpOworICAgICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Np
b24uZ2V0KCkpKTsKKyAgICAgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1
ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25J
RCgpLCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSwgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpJc0luTWVtb3J5Q29va2llU3RvcmU6Olllcyk7CisgICAgfQor
ICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2VkMjBjNjQ1MzNhYzc0YWI1YmZiZDdkYTNiMzg3
Nzg1YzljNjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2Jvb2wgV2Vi
Q29va2llQ2FjaGU6OmlzU3VwcG9ydGVkKCkKK3sKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElT
VEVORVJfQVBJKQorICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBldmVudHVhbGx5IGJlIHJlbW92ZWQs
IHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcg
QVBJLgorICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc3VwcG9ydHNDb29raWVD
aGFuZ2VMaXN0ZW5lckFQSSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KworU3RyaW5nIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVy
bC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBpZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdl
LmNvbnRhaW5zKGhvc3QpKSB7CisgICAgICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAg
ICAgIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAg
ICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpEb21Db29raWVzRm9ySG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCks
IHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29va2llc0Zvckhvc3Q6OlJlcGx5KGNvb2tpZXMp
LCAwKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHBydW5lQ2FjaGVJZk5lY2Vz
c2FyeSgpOworICAgICAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5hZGQoaG9zdCk7Cisg
ICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAgICAgICAgICAgIGluTWVtb3J5
U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKKyAgICB9CisgICAgcmV0dXJuIGlu
TWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRB
c2tJVFA6Ok5vKS5maXJzdDsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQoreworICAgIFN0cmluZyBo
b3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOworICAgIGlmIChtX2hvc3RzV2l0aEluTWVtb3J5
U3RvcmFnZS5jb250YWlucyhob3N0KSkKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigp
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3Rv
cjxDb29raWU+JiBjb29raWVzKQoreworICAgIGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3Jh
Z2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgY29v
a2llIDogY29va2llcykKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tp
ZShjb29raWUpOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRGVsZXRlZCgpCit7
CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y2xlYXIoKQoreworI2lm
IEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgaWYgKCFtX2hvc3RzV2l0aElu
TWVtb3J5U3RvcmFnZS5pc0VtcHR5KCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5zdWJzY3JpYmVGcm9tQ29va2ll
Q2hhbmdlTm90aWZpY2F0aW9ucyhtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZSksIDApOworI2Vu
ZGlmCisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY2xlYXIoKTsKKyAgICBtX2luTWVt
b3J5U3RvcmFnZVNlc3Npb24gPSBudWxscHRyOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpj
bGVhckZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIGF1dG8gaXQgPSBtX2hvc3Rz
V2l0aEluTWVtb3J5U3RvcmFnZS5maW5kKGhvc3QpOworICAgIGlmIChpdCA9PSBtX2hvc3RzV2l0
aEluTWVtb3J5U3RvcmFnZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ob3N0c1dp
dGhJbk1lbW9yeVN0b3JhZ2UucmVtb3ZlKGl0KTsKKyAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
KCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhWZWN0b3I8U3RyaW5nPiB7IGhvc3QgfSk7Cisj
aWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVuc3Vic2NyaWJlRnJv
bUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoSGFzaFNldDxTdHJpbmc+IHsgaG9zdCB9KSwgMCk7
CisjZW5kaWYKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5
KCkKK3sKKyAgICAvLyBXZSBtYXkgd2FudCB0byByYWlzZSB0aGlzIGxpbWl0IGlmIHdlIHN0YXJ0
IHVzaW5nIHRoZSBjYWNoZSBmb3IgdGhpcmQtcGFydHkgaWZyYW1lcy4KKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4Q2FjaGVkSG9zdHMgPSA1OworCisgICAgd2hpbGUgKG1faG9zdHNXaXRo
SW5NZW1vcnlTdG9yYWdlLnNpemUoKSA+PSBtYXhDYWNoZWRIb3N0cykKKyAgICAgICAgY2xlYXJG
b3JIb3N0KCptX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5yYW5kb20oKSk7Cit9CisKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkNvb2tpZUNhY2hlOjpp
bk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lF
VCgpOworICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfQorI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQwYzQxNmU1MjBjZWRjMjQ2YmUx
MmZhNTNmYmNmZTc4NmYzNTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvb2tpZUNhY2hlIHsKK3B1YmxpYzoK
KyAgICBXZWJDb29raWVDYWNoZSgpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWQo
KTsKKworICAgIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZyk7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgp
OworCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgY2xlYXJGb3JIb3N0KGNvbnN0IFN0cmlu
ZyYpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgaW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbigpOworICAgIHZvaWQgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7
CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2U7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9pbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCAzMjU4
MzA1Yzc4OWQ3NzVmZTE1YzFjMDgyOGMzNmU5ZTJmMmE4NjA5Li41YWIzMjQ1Y2NkNWRhYzFjZjUz
MWQ0ZGViNGQwZTFhODVkMDY5MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC04OCw2ICs4OSwyMyBAQCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0Nv
b2tpZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAog
fQogI2VuZGlmCiAKK2Jvb2wgV2ViQ29va2llSmFyOjppc0VsaWdpYmxlRm9yQ2FjaGUoV2ViRnJh
bWUmIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJl
c291cmNlVVJMKSBjb25zdAoreworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkgPyBmcmFt
ZS5wYWdlKCktPmNvcmVQYWdlKCkgOiBudWxscHRyOworICAgIGlmICghcGFnZSB8fCAhcGFnZS0+
c2V0dGluZ3MoKS5pblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFtX2NhY2hlLmlzU3VwcG9ydGVkKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIEZvciBub3csIHdlIG9ubHkgY2FjaGUgY29va2llcyBmb3IgZmly
c3QtcGFydHkgY29udGVudC4gVGhpcmQtcGFydHkgY29va2llIGNhY2hpbmcgaXMgYSBiaXQgbW9y
ZSBjb21wbGljYXRlZCBkdWUgdG8gcGFydGl0aW9uaW5nIGFuZCBzdG9yYWdlIGFjY2Vzcy4KKyAg
ICBSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiB7IHJlc291cmNlVVJMIH07CisgICAg
aWYgKHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFibGVEb21haW4geyBmaXJz
dFBhcnR5Rm9yQ29va2llcyB9ID09IHJlc291cmNlRG9tYWluOworfQorCiBTdHJpbmcgV2ViQ29v
a2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2Vi
RnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAgLTEw
MCwxMiArMTE4LDE3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsg
fTsKICNlbmRpZgogCisgICAgYXV0byBzYW1lU2l0ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRl
SW5mbyhkb2N1bWVudCk7CisgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IENvb2tpZUph
cjo6c2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAgICAgYXV0byBm
cmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1l
LT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAorICAgIGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndl
YkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAgICBy
ZXR1cm4gbV9jYWNoZS5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzKTsKKwogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpLCBz
aG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVu
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcyks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6
UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBjb29raWVTdHJpbmc7CkBAIC0xMjMsMTAgKzE0Niwz
NCBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAor
ICAgIGF1dG8gc2FtZVNpdGVJbmZvID0gQ29va2llSmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQp
OwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgYXV0byBwYWdl
SUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNG
cm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1
bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNz
LCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFt
ZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgbV9jYWNo
ZS5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworCisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpT
ZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNz
LCBjb29raWVTdHJpbmcpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNvb2tpZXNBZGRl
ZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29r
aWVzKQoreworICAgIG1fY2FjaGUuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2
b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIG1fY2FjaGUuY29va2ll
c0RlbGV0ZWQoKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGUoKQoreworICAg
IG1fY2FjaGUuY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGVGb3JI
b3N0KGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBtX2NhY2hlLmNsZWFyRm9ySG9zdChob3N0
KTsKIH0KIAogYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmgKaW5kZXggNTI5NDhhOTFkZTVmMTQ1MjQ5OTEwZGQ0OTgzNDQ1MjAwMDFh
OTdmYi4uZDJkOTQ0NmM2YTk3NzI1MjgxMWNlM2NlYTg5ZjBkZjA3ZWY3YWVjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTAgKzI1
LDE3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViQ29va2llQ2FjaGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1
Y3QgQ29va2llOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRnJhbWU7CisK
IGNsYXNzIFdlYkNvb2tpZUphciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDb29raWVKYXIgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViQ29va2llSmFyPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkNvb2tpZUphcik7IH0KQEAgLTM5LDggKzQ2LDE4IEBAIHB1YmxpYzoK
ICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CiAgICAgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgZmlu
YWw7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworCiBw
cml2YXRlOgogICAgIFdlYkNvb2tpZUphcigpOworCisgICAgdm9pZCBjbGVhckNhY2hlKCkgZmlu
YWw7CisgICAgdm9pZCBjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAg
ICBib29sIGlzRWxpZ2libGVGb3JDYWNoZShXZWJGcmFtZSYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNvbnN0OworCisgICAgbXV0YWJs
ZSBXZWJDb29raWVDYWNoZSBtX2NhY2hlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg2ODNj
MTA0ZGJmYTJjMDVmNWU4NGI1OTYwZmQ2ODJhZTI0NTFkYWYuLjhhYmY2NDVlYWIzYmUyYjNiMjk3
MTE0MDcyZjFlNGU4ODQ5YzcxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI+KCksCiAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksCiAg
ICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBX
ZWJDb29raWVKYXI6OmNyZWF0ZSgpLAorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5j
b29raWVKYXIoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQ+KCp0aGlzKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+
KCkKICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDY4
MTM3NmNlN2NhMTEyMTQ0YmM5M2Q5Mjc3OWRiM2E4YmVmN2ZiMGYuLjQ3YzljMDhhZGVlNDU4NWQ5
MTMzNDZiMWFiZGVlODY3YzVmMWNiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5o
IgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTIwNSw2ICsyMDYs
NyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1fd2ViSW5zcGVjdG9ySW50ZXJy
dXB0RGlzcGF0Y2hlcihXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpjcmVhdGUoKSkK
ICAgICAsIG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAs
IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgp
KQorICAgICwgbV9jb29raWVKYXIoV2ViQ29va2llSmFyOjpjcmVhdGUoKSkKICAgICAsIG1fZG5z
UHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBp
ZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hl
ZEhvc3RzLmNsZWFyKCk7IH0pCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAg
LCBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggNjFlMDYyZTU1N2E5ZmUxMzlkMWU5NzU4OWNhY2U2NmRkZTM0NTkyMC4uNjhlM2MzYzU3NzI4
OGU4YjdiOGFmMTA3OTU5MWM2MmVhNTk4ZjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0xMjAsNiArMTIwLDcgQEAgY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBXYXls
YW5kQ29tcG9zaXRvckRpc3BsYXk7CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Owog
Y2xhc3MgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFz
cyBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE7CiBjbGFzcyBXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3M7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTI5Myw2ICsyOTQsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSogYXV0b21hdGlvblNlc3Npb25Qcm94eSgpIHsg
cmV0dXJuIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eS5nZXQoKTsgfQogCiAgICAgV2ViQ2FjaGVT
dG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKCkgeyByZXR1cm4gbV9jYWNoZVN0
b3JhZ2VQcm92aWRlci5nZXQoKTsgfQorICAgIFdlYkNvb2tpZUphciYgY29va2llSmFyKCkgeyBy
ZXR1cm4gbV9jb29raWVKYXIuZ2V0KCk7IH0KICAgICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciYg
d2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIoKSB7IHJldHVybiBtX3dlYlNvY2tldENoYW5uZWxNYW5h
Z2VyOyB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTU4LDYgKzU2MCw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZjxXZWJDYWNoZVN0b3JhZ2VQcm92aWRlcj4gbV9jYWNo
ZVN0b3JhZ2VQcm92aWRlcjsKKyAgICBSZWY8V2ViQ29va2llSmFyPiBtX2Nvb2tpZUphcjsKICAg
ICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciBtX3dlYlNvY2tldENoYW5uZWxNYW5hZ2VyOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ05ldHdvcms+IG1fbGliV2ViUlRDTmV0d29yazsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29va2ll
UHJpdmF0ZUJyb3dzaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Db29raWVQcml2YXRlQnJvd3NpbmcubW0KaW5kZXggZjUwMGYzZmViYWJmODE2NWM0YWQ1OTkw
OTFjMmQyOGQzYThhNjNjZi4uMTg4OWE5ZjE0ZDZhODIyY2VhZDA3N2NiYmY0MjMzZDkwNDQ1Nzk4
YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29r
aWVQcml2YXRlQnJvd3NpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db29raWVQcml2YXRlQnJvd3NpbmcubW0KQEAgLTI2LDExICsyNiwxNCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9y
dCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJvY2Vzc1Bvb2wuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCByZWNlaXZlZEFsZXJ0OwogCkBAIC02OCwz
ICs3MSw2MCBAQCBURVNUKFdlYktpdCwgQ29va2llUHJpdmF0ZUJyb3dzaW5nKQogICAgIFt2aWV3
MiBsb2FkSFRNTFN0cmluZzphbGVydE9sZENvb2tpZSBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnJlY2VpdmVkQWxlcnQpOwogfQorCitURVNUKFdlYktpdCwgQ29va2llQ2FjaGVTeW5jQWNy
b3NzUHJvY2VzcykKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdl
YnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3Jl
XV07CisgICAgYXV0byB2aWV3MSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdmlldzIgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbdmlldzEgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiZm9vIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L2V4YW1wbGUuY29tLyJdXTsKKyAgICBbdmlldzIgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiYmFyIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29t
LyJdXTsKKworICAgIC8vIENhY2hlIERPTSBjb29raWVzIGluIGZpcnN0IFdlYlZpZXcuCisgICAg
X19ibG9jayBib29sIGRvbmVFdmFsdWF0aW5nSmF2YVNjcmlwdCA9IGZhbHNlOworICAgIFt2aWV3
MSBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5jb29raWU7IiBjb21wbGV0aW9uSGFuZGxl
cjpeKGlkIF9OdWxsYWJsZSBjb29raWUsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAg
ICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbY29va2llIGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
IiIsIChOU1N0cmluZyAqKWNvb2tpZSk7CisgICAgICAgIGRvbmVFdmFsdWF0aW5nSmF2YVNjcmlw
dCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRXZh
bHVhdGluZ0phdmFTY3JpcHQpOworCisgICAgLy8gQ2FjaGUgRE9NIGNvb2tpZXMgaW4gc2Vjb25k
IFdlYlZpZXcuCisgICAgZG9uZUV2YWx1YXRpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgW3Zp
ZXcyIGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50LmNvb2tpZTsiIGNvbXBsZXRpb25IYW5k
bGVyOl4oaWQgX051bGxhYmxlIGNvb2tpZSwgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtjb29raWUg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
USgiIiwgKE5TU3RyaW5nICopY29va2llKTsKKyAgICAgICAgZG9uZUV2YWx1YXRpbmdKYXZhU2Ny
aXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVF
dmFsdWF0aW5nSmF2YVNjcmlwdCk7CisKKyAgICAvLyBTZXR0aW5nIGNvb2tpZSBpbiBmaXJzdCBX
ZWJ2aWV3IC8gcHJvY2Vzcy4KKyAgICBkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQgPSBmYWxzZTsK
KyAgICBbdmlldzEgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZG9jdW1lbnQuY29va2llID0gJ2Zvbz1i
YXInOyBkb2N1bWVudC5jb29raWU7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSBj
b29raWUsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbY29va2llIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImZvbz1iYXIiLCAoTlNTdHJp
bmcgKiljb29raWUpOworICAgICAgICBkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUV2YWx1YXRpbmdKYXZh
U2NyaXB0KTsKKworICAgIC8vIE1ha2luZyBzdXJlIG5ldyBjb29raWUgZ2V0cyBzeW5jJ2QgdG8g
c2Vjb25kIFdlYlZpZXcgcHJvY2Vzcy4KKyAgICBpbnQgdGltZW91dCA9IDA7CisgICAgX19ibG9j
ayBTdHJpbmcgY29va2llU3RyaW5nOworICAgIGRvIHsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6c2xlZXAoMC4xKTsKKyAgICAgICAgZG9uZUV2YWx1YXRpbmdKYXZhU2NyaXB0ID0gZmFs
c2U7CisgICAgICAgIFt2aWV3MiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5jb29raWU7
IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSBjb29raWUsIE5TRXJyb3IgKiBfTnVs
bGFibGUgZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKFtjb29raWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7
CisgICAgICAgICAgICBjb29raWVTdHJpbmcgPSAoTlNTdHJpbmcgKiljb29raWU7CisgICAgICAg
ICAgICBkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQpOwor
ICAgICAgICArK3RpbWVvdXQ7CisgICAgfSB3aGlsZSAoY29va2llU3RyaW5nICE9ICIiICYmIHRp
bWVvdXQgPCA1MCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJmb289YmFyIiwgY29va2llU3RyaW5n
KTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCAyYzc3YjUxNzZmODA2NDNjMTg5ZjllNGVmMjkzMGVmZWI2ZjhlZDExLi5l
NWY0MTUyMTA1NTE1MDY5NjdjYjlkMDgwMTVhMGJhMzE0ZmYxMWUxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMjAtMDItMTIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nlc3MgY29va2llIGNhY2hlIHRv
IGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4gbW9zdCBjYXNlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTkzCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBL
b2l2aXN0by4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAg
KiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNob3dNb2RhbERpYWxv
Zy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1
bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5n
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL2RvY3Vt
ZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9kb2N1bWVudC1jb29r
aWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29raWUtYW5kLXNlcnZlLnBocDogQWRk
ZWQuCisKIDIwMjAtMDItMTcgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbmxpbmUgYm94ZXMgZm9yIGltYWdlcyB0aGF0IHJlcHJlc2VudCBub3RoaW5nIHNob3Vs
ZCBjb2xsYXBzZSB0byBlbXB0eS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
Y29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXIt
c2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGFmOTI0YmZiN2U4MWVi
M2QwY2Y0ZDNkNDJjYjIzMDhhNDQ1MzUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2ct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2ll
IHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEgc2hvd01vZGFsRGlhbG9nKCkgY2FsbAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBub3JtYWxpemVDb29raWUoZG9j
dW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0VmFsdWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tp
ZShkb2N1bWVudC5jb29raWUpIGlzICJmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVyLXNo
b3dNb2RhbERpYWxvZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3Vt
ZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWI4NDdi
MzNkNTE5OGU5NjZkYTdiMDhjZWI4ODYwYTFkNjk0N2VhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9k
YWxEaWFsb2cuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMnPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9InRlc3RCdXR0b24iIHR5cGU9ImJ1dHRv
biIgdmFsdWU9IkNsaWNrIG1lIj48L2lucHV0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0
cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSBhZnRlciBhIHNo
b3dNb2RhbERpYWxvZygpIGNhbGwnKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOworCit0
ZXN0QnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7CisgICAgZG9jdW1lbnQuY29va2llID0gInRlc3RL
ZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tp
ZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICBzaG93TW9k
YWxEaWFsb2coInJlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHA/Y29va2llLW5hbWU9
Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRpb249Y2xvc2UtbW9kYWwtZGlhbG9nLmh0bWwi
KTsKKworICAgIC8vIFRoaXMgaXMgc28gdGhlIGNvb2tpZSBnZXRzIHJlbW92ZWQgYXQgdGhlIGVu
ZCBvZiB0aGUgdGVzdC4KKyAgICByZWdpc3RlckNvb2tpZUZvckNsZWFudXAoJ2Zvbz1iYXI7IHBh
dGg9LycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRvY3Vt
ZW50LmNvb2tpZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUnKTsKKworICAgIGZpbmlz
aEpTVGVzdCgpOworfQorCitvbmxvYWQgPSAoKSA9PiB7CisgICAgaW50ZXJuYWxzLndpdGhVc2Vy
R2VzdHVyZSgoKSA9PiB7CisgICAgICAgIHRlc3RCdXR0b24uY2xpY2soKTsKKyAgICB9KTsKK307
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXBvc3QuanMn
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tp
ZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZjVhZGE4
YzQ5YWY1MjQ3MDdlYWQyZmExOGI0ZTYzZDE5MjIzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUt
cGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhhdCBkb2N1bWVu
dC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFsb2co
KSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vcm1hbGl6ZUNv
b2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgbm9ybWFs
aXplQ29va2llKGNvb2tpZXNJbkZyYW1lKSBpcyAiZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUi
CitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJmb289YmFyOyB0ZXN0
S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9j
dW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZjI5ZWZiNTM4Y2E0N2UyMjhiNzM4ZmM1M2Q5NTA0NDlkYTljY2JiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50
LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nvb2tp
ZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oJ1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0IHZh
bHVlIGFmdGVyIGEgc2hvd01vZGFsRGlhbG9nKCkgY2FsbCcpOworanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKK2Z1bmN0aW9uIHZhbGlkYXRlQ29va2llc0R1cmluZ0NoaWxkRnJhbWVQYXJzaW5nKF9j
b29raWVzSW5GcmFtZSkKK3sKKyAgICBjb29raWVzSW5GcmFtZSA9IF9jb29raWVzSW5GcmFtZTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShjb29raWVzSW5GcmFt
ZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUnKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ2Zvbz1iYXI7IHRlc3RL
ZXk9dGVzdFZhbHVlJyk7CisgICAgZmluaXNoSlNUZXN0KCk7ICAgIAorfQorCitvbmxvYWQgPSAo
KSA9PiB7CisgICAgZG9jdW1lbnQuY29va2llID0gInRlc3RLZXk9dGVzdFZhbHVlIjsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywg
J3Rlc3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICAvLyBUaGlzIGlzIHNvIHRoZSBjb29raWUgZ2V0
cyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisgICAgcmVnaXN0ZXJDb29raWVGb3JD
bGVhbnVwKCdmb289YmFyOyBwYXRoPS8nKTsKKworICAgIGxldCBpZnJhbWUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9zZXQt
Y29va2llLWFuZC1zZXJ2ZS5waHA/Y29va2llLW5hbWU9Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVz
dGluYXRpb249ZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRt
bCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworfTsKKzwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcG9zdC5qcyc+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nv
b2tpZXMvcmVzb3VyY2VzL2Nsb3NlLW1vZGFsLWRpYWxvZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lZjU2OGRmZWRiYjJkM2E5NWEyZjE0M2U2ZWYxYzgyMWVhY2JkYTJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1t
b2RhbC1kaWFsb2cuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxzY3JpcHQ+CitvbmxvYWQgPSAoKSA9
PiB7CisgICAgY2xvc2UoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgdGVz
dFJ1bm5lci5hYm9ydE1vZGFsKCk7Cit9OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmct
aWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tp
ZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctaWZyYW1l
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjJkN2FiN2EzOTIyZDEwOGExZjYwMjc5OWU2NjgzNDM1YTg5OTI0
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9yZXNv
dXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRtbApA
QCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+Cit0b3AudmFsaWRhdGVDb29raWVzRHVyaW5nQ2hpbGRG
cmFtZVBhcnNpbmcoZG9jdW1lbnQuY29va2llKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2
ZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1jb29r
aWUtYW5kLXNlcnZlLnBocApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWY0M2YyOWU4NTJkZGNjMDlmOTY5Zjg5OWU4
ZjNlMTJhYmFhODQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
b29raWVzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHAKQEAgLTAsMCArMSwxMyBA
QAorPD9waHAKKyRjb29raWVOYW1lID0gJF9HRVRbJ2Nvb2tpZS1uYW1lJ107CiskY29va2llVmFs
dWUgPSAkX0dFVFsnY29va2llLXZhbHVlJ107CiskZGVzdGluYXRpb24gPSAkX0dFVFsnZGVzdGlu
YXRpb24nXTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwiKTsKK2hlYWRlcigiQ2Fj
aGUtQ29udHJvbDogbm8tc3RvcmUiKTsKK2hlYWRlcigiU2V0LUNvb2tpZTogJHtjb29raWVOYW1l
fT0ke2Nvb2tpZVZhbHVlfTsgcGF0aD0vIik7CiskZnAgPSBmb3BlbigkZGVzdGluYXRpb24sICdy
YicpOworaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZpbGVzaXplKCRkZXN0aW5hdGlvbikp
OworCitmcGFzc3RocnUoJGZwKTsKK2V4aXQ7Cis/Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391004</attachid>
            <date>2020-02-17 16:59:00 -0800</date>
            <delta_ts>2020-02-17 22:32:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207593-20200217165704.patch</filename>
            <type>text/plain</type>
            <size>94085</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2Nzc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDc4MTBhMjk3YmViNTgzNmMxYmM0ODMz
ZDA2YjBiNzRmMGZhZWQ4OTAuLjlhMjk1NTAyNGVlZTQ3OGUxMDUwMTUzZGU4YTRhOWNhZmUxOTIw
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDItMTcgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdlYlByb2Nl
c3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29raWUgaW4g
bW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgYnVpbGQgdGltZSBmbGFn
cyBmb3IgbmV3IGZlYXR1cmUuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1FbmFibGUuaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisKIDIwMjAtMDItMTcgIFBlbmcgTGl1ICA8cGVu
Zy5saXU2QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY2hlY2std2Via2l0LXN0eWxlIGVycm9y
cyByZWxhdGVkIHRvIEFWRm91bmRhdGlvblNQSS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjkwZTQ1NDU4OTBl
MWQyYzUzYTk4ZjEyYTEyMGI5MWY1OWQ1ZTIxOC4uY2IzZDliYTllOTlkZjNjODBhYzI2NTgyOGM0
NDZmNTQ4Y2M0NjZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIwLTAyLTE3ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1dLMl1bQ29jb2FdIElt
cGxlbWVudCBpbi1XZWJQcm9jZXNzIGNvb2tpZSBjYWNoZSB0byBhdm9pZCBzeW5jIElQQyBmb3Ig
ZG9jdW1lbnQuY29va2llIGluIG1vc3QgY2FzZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzU5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTYw
MjcwMjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAg
SW1wbGVtZW50IGluLVdlYlByb2Nlc3MgRE9NIGNvb2tpZSBjYWNoZSBmb3Igc2VydmluZyBgZG9j
dW1lbnQuY29va2llYCByZXF1ZXN0cyBmcm9tIEphdmFTY3JpcHQuCisKKyAgICAgICAgVGhlIGZp
cnN0IHRpbWUgZG9jdW1lbnQuY29va2llIGlzIGNhbGxlZCBmb3IgYSBnaXZlbiBob3N0LCB0aGUg
V2ViUHJvY2VzcyB3aWxsIHB1bGwgaW4gYWxsIHRoZQorICAgICAgICBub24tSFRUUE9ubHkgY29v
a2llcyBmb3IgdGhhdCBob3N0IGZyb20gdGhlIE5ldHdvcmtQcm9jZXNzIChzdGlsbCB2aWEgc3lu
YyBJUEMpIGFuZCBzdG9yZSB0aGVtCisgICAgICAgIGluIGFuIGluLW1lbW9yeSBjb29raWUgc3Rv
cmUuIExhdGVyIGRvY3VtZW50LmNvb2tpZSBjYWxscyBmb3IgdGhpcyBob3N0IGZyb20gdGhpcyBX
ZWJQcm9jZXNzCisgICAgICAgIHdpbGwgdGhlbiBsZXZlcmFnZSB0aGUgaW4tbWVtb3J5IGNvb2tp
ZSBzdG9yZSBhbmQgYXZvaWQgZG9pbmcgYSBzeW5jIElQQyB0byB0aGUgTmV0d29ya1Byb2Nlc3MK
KyAgICAgICAgZW50aXJlbHkuCisKKyAgICAgICAgVG8gbWFpbnRhaW4gdGhlIGluLXByb2Nlc3Mg
Y29va2llIHN0b3JlIHVwLXRvLWRhdGUsIHRoZSBXZWJQcm9jZXNzIHN1YnNjcmliZSBmb3IgY29v
a2llLWNoYW5nZQorICAgICAgICBub3RpZmljYXRpb25zIGZyb20gdGhlIE5ldHdvcmtQcm9jZXNz
LCBvbmx5IGZvciB0aGUgaG9zdHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KKworICAgICAgICBJZiB0
aGUgcGFnZSdzIEphdmFTY3JpcHQgc2V0cyBhIGNvb2tpZSBieSBzZXR0aW5nIGRvY3VtZW50LmNv
b2tpZSwgd2Ugd2lsbCBub3QgaW52YWxpZGF0ZSB0aGUKKyAgICAgICAgY2FjaGUgZm9yIHBlcmZv
cm1hbmNlIHJlYXNvbnMuIEluc3RlYWQsIHdlIHNldCB0aGUgY29va2llIGluIG91ciBpbi1tZW1v
cnkgY29va2llIGJlZm9yZQorICAgICAgICBzZW5kaW5nIHRoZSBuZXcgY29va2llIHRvIHRoZSBO
ZXR3b3JrUHJvY2Vzcy4KKworICAgICAgICBGb3IgY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbnkg
c3luYyBJUEMgdG8gYSBnaXZlbiBob3N0IHdpbGwgY3VycmVudGx5IGludmFsaWRhdGUgdGhlIGNv
b2tpZQorICAgICAgICBjYWNoZSBmb3IgdGhpcyBob3N0LiBUaGlzIGlzIGJlY2F1c2UgdGhpcyBz
eW5jaHJvbm91cyBsb2FkIG1heSBjYXVzZSBjb29raWVzIHRvIGdldCBzZXQKKyAgICAgICAgc3lu
Y2hyb25vdXNseSBhbmQgdGhlIHBhZ2UgY291bGQgYWNjZXNzIGRvY3VtZW50LmNvb2tpZSByaWdo
dCBhZnRlciB0aGUgc3luYyBYSFIuIFRoaXMgYmVoYXZpb3IKKyAgICAgICAgaXMgY292ZXJlZCBi
eSB0aGUgZm9sbG93aW5nIGV4aXN0aW5nIHRlc3Q6CisgICAgICAgIC0gaHR0cC90ZXN0cy9jb29r
aWVzL3N5bmMteGhyLXNldC1jb29raWUtaW52YWxpZGF0ZXMtY2FjaGUuaHRtbAorCisgICAgICAg
IEFub3RoZXIgbGltaXRhdGlvbiBvZiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
Y29va2llIGNhY2hlIGlzIHRoYXQgaXQgaXMgY3VycmVudGx5CisgICAgICAgIG9ubHkgbGV2ZXJh
Z2VkIGZvciBmaXJzdCBwYXJ0eSBjb250ZW50LiBUaGlzIGlzIHN1Ym9wdGltYWwgYW5kIGNvdWxk
IGJlIGltcHJvdmVkIGluIGEgbGF0ZXIKKyAgICAgICAgaXRlcmF0aW9uLiBIb3dldmVyLCB0aGUg
ZGVmYXVsdCBiZWhhdmlvciBpbiBTYWZhcmkgaXMgdGhhdCB0aGlyZC1wYXJ0eSBpZnJhbWVzIGRv
IG5vdCBoYXZlCisgICAgICAgIGNvb2tpZSBhY2Nlc3MgdW5sZXNzIHRoZXkgcmVxdWVzdCBpdCB1
c2luZyB0aGUgc3RvcmFnZSBhY2Nlc3MgQVBJLiBXZSBhbHNvIGN1cnJlbnRseSBoYXZlCisgICAg
ICAgIGEgbGltaXQgb2YgNSBob3N0cyB3aXRoIGNhY2hlZCBjb29raWVzIHBlciBXZWJQcm9jZXNz
LgorCisgICAgICAgIFRlc3RzOiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFm
dGVyLXNob3dNb2RhbERpYWxvZy5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL2Nvb2tp
ZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5odG1sCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZExvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogbG9hZGVyL0Nv
b2tpZUphci5oOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkp
OgorICAgICAgICAqIHBhZ2UvTWVtb3J5UmVsZWFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpy
ZWxlYXNlQ3JpdGljYWxNZW1vcnkpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MueWFtbDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29va2llQ2hhbmdlT2JzZXJ2ZXI6On5Db29raWVDaGFuZ2VPYnNlcnZlcik6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5l
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVN0b3JhZ2UgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY29jb2Ev
TmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNlc3Npb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6Om5z
Q29va2llc1RvQ29va2llVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6bnNDb29raWVTdG9yYWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb246Omh0dHBDb29raWVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVsZXRlSFRUUENvb2tpZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29raWVzRm9yVVJMIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVyQ29va2llcyk6CisgICAgICAgIChXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JVUkwgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JE
T00gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZWdpc3Rl
ckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RhcnRM
aXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlm
aWNhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkb21D
b29raWVzRm9ySG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnN1cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkgY29uc3QpOgorCiAyMDIwLTAyLTE3ICBa
YWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5saW5lIGJveGVzIGZv
ciBpbWFnZXMgdGhhdCByZXByZXNlbnQgbm90aGluZyBzaG91bGQgY29sbGFwc2UgdG8gZW1wdHku
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwppbmRleCA5MTNmMzE5MWI1NWU0MmNiZjFmZGQ4Zjg2YTY5Yjk3MTQ1
NDQyYTVhLi41OWM3Zjc2MWFlYmNmYmRjNTczMTcwYjM1ZWE5ZDNmNmYzYTkyZWU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wMi0xNyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2Vi
UHJvY2VzcyBjb29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tp
ZSBpbiBtb3N0IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEFkZCBuZXcgQ0ZOZXR3
b3JrIFNQSSB0byBDRk5ldHdvcmtTUEkuaCBmb3Igb3BlbiBzb3VyY2UgYnVpbGRzIGFuZCBmb3Ig
dXNpbmcgcmVzcG9uZHNUb1NlbGVjdG9yLgorCisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdv
cmtTUEkuaDoKKwogMjAyMC0wMi0xNyAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgog
CiAgICAgICAgIEZpeCBjaGVjay13ZWJraXQtc3R5bGUgZXJyb3JzIHJlbGF0ZWQgdG8gQVZGb3Vu
ZGF0aW9uU1BJLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYTljZDE1M2UwOTIxNWE4MWVlNWQyY2E5NjgwYTRiOWRi
M2VkN2JkNC4uODAyMTBkNjliMmU0YTFlMjlmOTZkZTMwMjI0YWE1ZjIyYWVjOWZjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1OSBAQAorMjAyMC0wMi0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFtXSzJdW0NvY29hXSBJbXBsZW1lbnQgaW4tV2ViUHJvY2VzcyBj
b29raWUgY2FjaGUgdG8gYXZvaWQgc3luYyBJUEMgZm9yIGRvY3VtZW50LmNvb2tpZSBpbiBtb3N0
IGNhc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDc1OTMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2MDI3MDI3PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFNlZSBXZWJDb3JlIENoYW5nZUxvZy4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6On5O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkb21Db29raWVzRm9ySG9zdCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp1bnN1YnNjcmliZUZyb21Db29raWVD
aGFuZ2VOb3RpZmljYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNBZGRlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRGVsZXRlZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJl
ZmVyZW5jZXMueWFtbDoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmNvb2tpZXNBZGRl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0Rl
bGV0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9X
ZWJDb29raWVDYWNoZUNvY29hLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2Fj
aGU6OmluTWVtb3J5U3RvcmFnZVNlc3Npb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJDb29raWVDYWNoZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVD
YWNoZTo6aXNGdW5jdGlvbmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmNv
b2tpZXNGb3JET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6c2V0Q29va2ll
c0Zyb21ET00pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVDYWNoZTo6Y29va2llc0FkZGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmNvb2tpZXNEZWxldGVkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29va2llQ2FjaGU6OmNsZWFyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llQ2FjaGU6OmNsZWFyRm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZUNhY2hlOjpwcnVuZUNhY2hlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVDYWNoZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llSmFyOjppc0VsaWdp
YmxlRm9yQ2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tp
ZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OnNldENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXNBZGRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZUphcjo6Y29va2llc0RlbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb29raWVKYXI6OmNsZWFyQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVKYXI6
OmNsZWFyQ2FjaGVGb3JIb3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX292ZXJyaWRkZW5NZWRpYVR5cGUpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OldlYlByb2Nl
c3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpjb29raWVKYXIpOgorCiAyMDIwLTAyLTE3ICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV2ViSW5zcGVjdG9yIHN1cHBvcnQgdG8g
V2ViS2l0OjpXZWJTb2NrZXRDaGFubmVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNo
U2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKaW5kZXggZTI2ODdlOWIwNjJkZGM4NDk0
NTk0MmU5MDI0NmFhODFhN2Y0NDU1NS4uZWUyYzI5MTM3ODM4ODI1Yjk5ZGE2MDQ3OTMyOTlhM2E4
ZGIzZWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFNldC5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hTZXQuaApAQCAtMTEyLDYgKzExMiw4IEBAIHB1YmxpYzoKICAgICAvLyB0
aGVtIGFyZSBuZXcgdG8gdGhlIHNldC4gUmV0dXJucyBmYWxzZSBpZiB0aGUgc2V0IGlzIHVuY2hh
bmdlZC4KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvclR5cGU+CiAgICAgYm9vbCBhZGQo
SXRlcmF0b3JUeXBlIGJlZ2luLCBJdGVyYXRvclR5cGUgZW5kKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBJdGVyYXRvclR5cGU+CisgICAgYm9vbCByZW1vdmUoSXRlcmF0b3JUeXBlIGJlZ2luLCBJ
dGVyYXRvclR5cGUgZW5kKTsKIAogICAgIGJvb2wgcmVtb3ZlKGNvbnN0IFZhbHVlVHlwZSYpOwog
ICAgIGJvb2wgcmVtb3ZlKGl0ZXJhdG9yKTsKQEAgLTI3MCw2ICsyNzIsMTYgQEAgaW5saW5lIGJv
b2wgSGFzaFNldDxULCBVLCBWPjo6YWRkKEl0ZXJhdG9yVHlwZSBiZWdpbiwgSXRlcmF0b3JUeXBl
IGVuZCkKICAgICByZXR1cm4gY2hhbmdlZDsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4KK3RlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yVHlwZT4KK2lu
bGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46OnJlbW92ZShJdGVyYXRvclR5cGUgYmVnaW4sIEl0
ZXJhdG9yVHlwZSBlbmQpCit7CisgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisgICAgZm9yIChJ
dGVyYXRvclR5cGUgaXRlciA9IGJlZ2luOyBpdGVyICE9IGVuZDsgKytpdGVyKQorICAgICAgICBj
aGFuZ2VkIHw9IHJlbW92ZSgqaXRlcik7CisgICAgcmV0dXJuIGNoYW5nZWQ7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CiBpbmxpbmUgYm9vbCBIYXNo
U2V0PFQsIFUsIFY+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCmlu
ZGV4IGU2MWE2ZGM3Yjc0MjgxZTI5NWVjOGI3YWNmODhkY2JlNzBjMjVkNjIuLjE2ZDE1NDI1MjU1
ZjA4YWZlYWNhY2UwZWU4NTU4NDY2NTllYzA2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtSGF2ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5oCkBAIC01
NjAsNiArNTYwLDEwIEBACiAjZGVmaW5lIEhBVkVfREVWSUNFX0lERU5USVRZIDEKICNlbmRpZgog
CisjaWYgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+
PSAxMDE2MDApIHx8IChQTEFURk9STShJT1NfRkFNSUxZKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxNDAwMDApCisjZGVmaW5lIEhBVkVfQ09PS0lFX0NIQU5HRV9MSVNU
RU5FUl9BUEkgMQorI2VuZGlmCisKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTUwMCkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICNk
ZWZpbmUgSEFWRV9EQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4gMQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCmluZGV4IDY2NThlNzI4YzljOTgy
YTZmZjgyYzBjYTQxNjQ4YzJkNGRjMTE0NDAuLmE5MjA3NjBiM2Q2OWMyM2JlOGI2ODllNTZmNDhm
ZGQ3ZDhjNjQzOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oCkBAIC0zOTEsNiArMzkxLDEwIEBAIFdURl9FWFRFUk5fQ19FTkQKIAogQGludGVyZmFj
ZSBOU0hUVFBDb29raWVTdG9yYWdlICgpCiArICh2b2lkKV9zZXRTaGFyZWRIVFRQQ29va2llU3Rv
cmFnZTooTlNIVFRQQ29va2llU3RvcmFnZSAqKXN0b3JhZ2U7CistICh2b2lkKV9zZXRTdWJzY3Jp
YmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXM6KE5TU2V0PE5TU3RyaW5nKj4qIF9fbnVsbGFibGUp
ZG9tYWluTGlzdDsKKy0gKHZvaWQpX3NldENvb2tpZXNBZGRlZEhhbmRsZXI6KHZvaWQoXl9fbnVs
bGFibGUpKE5TQXJyYXk8TlNIVFRQQ29va2llKj4qIGFkZGVkQ29va2llcywgTlNVUkwqIF9fbnVs
bGFibGUgdXJsRm9yQWRkZWRDb29raWVzKSljb29raWVzQWRkZWRIYW5kbGVyIG9uUXVldWU6KGRp
c3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsKKy0gKHZvaWQpX3NldENvb2tpZXNEZWxl
dGVkSGFuZGxlcjoodm9pZCheX19udWxsYWJsZSkoTlNBcnJheTxOU0hUVFBDb29raWUqPiogX19u
dWxsYWJsZSBkZWxldGVkQ29va2llcywgYm9vbCBkZWxldGVkQWxsQ29va2llcykpY29va2llc0Rl
bGV0ZWRIYW5kbGVyIG9uUXVldWU6KGRpc3BhdGNoX3F1ZXVlX3QgX19udWxsYWJsZSlxdWV1ZTsK
Ky0gKE5TQXJyYXkqIF9fbnVsbGFibGUpX2dldENvb2tpZXNGb3JEb21haW46KE5TU3RyaW5nKilk
b21haW47CiBAZW5kCiAKIEBpbnRlcmZhY2UgTlNVUkxSZXNwb25zZSAoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggMDJhNjUzNDdhYzQ5ZWYwMTJiMTliMzg2N2U5Mzk1MDc5NmVkOGJmYS4u
ZmUwYTA0OTU4MTUyYTVmZmY0MWM0Y2ZjMGRiNjJjNTQ5MjA0YWYzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCkBAIC03MjAyLDExICs3MjAyLDE0IEBAIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRh
dGVET01Db29raWVDYWNoZSgpCiAgICAgbV9jYWNoZWRET01Db29raWVzID0gU3RyaW5nKCk7CiB9
CiAKLXZvaWQgRG9jdW1lbnQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKQordm9pZCBE
b2N1bWVudDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBVUkwmIHVybCkKIHsK
ICAgICAvLyBTeW5jaHJvbm91cyByZXNvdXJjZXMgbG9hZGluZyBjYW4gc2V0IGNvb2tpZXMgc28g
d2UgaW52YWxpZGF0ZSB0aGUgY29va2llcyBjYWNoZQogICAgIC8vIGluIHRoaXMgY2FzZSwgdG8g
YmUgc2FmZS4KICAgICBpbnZhbGlkYXRlRE9NQ29va2llQ2FjaGUoKTsKKworICAgIGlmIChhdXRv
KiBwYWdlID0gdGhpcy0+cGFnZSgpKQorICAgICAgICBwYWdlLT5jb29raWVKYXIoKS5jbGVhckNh
Y2hlRm9ySG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCkpOwogfQogCiB2b2lkIERvY3VtZW50Ojpl
bnN1cmVQbHVnSW5zSW5qZWN0ZWRTY3JpcHQoRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggNmYxZjE0NTFkNzc1NzQ3MmJhMjlkYmE5ZDE3ZTU5MmZmOGE5OTUy
OS4uYTEwZjBlODcyN2E5NDY0YzhjOTQzODFjNGMyNGQxMjFkMjIyMmRlYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTE2MzgsNyArMTYzOCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDYWNo
ZWRET01Db29raWVzKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgaXNET01Db29raWVDYWNoZVZh
bGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVDYWNoZUV4cGlyeVRpbWVyLmlzQWN0aXZlKCk7
IH0KICAgICB2b2lkIGludmFsaWRhdGVET01Db29raWVDYWNoZSgpOwotICAgIHZvaWQgZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSgpIGZpbmFsOworICAgIHZvaWQgZGlkTG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBVUkwmKSBmaW5hbDsKIAogICAgIGJvb2wgY2FuTmF2aWdhdGVJ
bnRlcm5hbChGcmFtZSYgdGFyZ2V0RnJhbWUpOwogICAgIGJvb2wgaXNOYXZpZ2F0aW9uQmxvY2tl
ZEJ5VGhpcmRQYXJ0eUlGcmFtZVJlZGlyZWN0QmxvY2tpbmcoRnJhbWUmIHRhcmdldEZyYW1lLCBj
b25zdCBVUkwmIGRlc3RpbmF0aW9uVVJMKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA1ODgyZTFhYjFhYjkzYjM3M2VhMjNhNmEwMjgyNDFk
ZWVmNTMzODY0Li4zMmFmNzQ0ODE0MWE3OTFjODNjNmYyOTFlY2VkZGFkYTAxZDE5YTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0yMTgs
NyArMjE4LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNzYWdl
UG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiAgICAgbV9tZXNzYWdlUG9ydHMucmVtb3Zl
KCZtZXNzYWdlUG9ydCk7CiB9CiAKLXZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9h
ZFJlc291cmNlU3luY2hyb25vdXNseSgpCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRp
ZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgVVJMJikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggMDA4MzFhMjYwYjUzN2Ew
MDkzYTg4MTJkYTRiYTVmZmQ1YzI1NTZhOC4uYmMwNGRmNDlkMWFlOTc4OTYzMDVjODIzMTNhNmQ1
YzJmNjI0NGZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlZE1lc3NhZ2VQ
b3J0KE1lc3NhZ2VQb3J0Jik7CiAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdl
UG9ydCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBV
UkwmKTsKIAogICAgIHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
ICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDg0ZGJhNDBlOTI4NmNkM2ZkODM4MzRiYWMwMjAx
NjAwMWEyN2Y1MDcuLjMwMDI5M2E4NjZkYWM0YjIwODU3YjdlNzUyNDQ3ODExMGM1Yzg5ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTYwLDYgKzYwLDEwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYs
IFZlY3RvcjxDb29raWU+JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAK
KyAgICAvLyBDb29raWUgQ2FjaGUuCisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2FjaGUoKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDYWNoZUZvckhvc3QoY29uc3QgU3RyaW5nJikgeyB9CisK
ICAgICB2aXJ0dWFsIH5Db29raWVKYXIoKTsKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbyhjb25zdCBEb2N1bWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDJiN2JmNDI5ZGQ2MjJmYzcyN2UxMDEzMDJl
ZmZlZWRkNWU0YzM4NDcuLmM3ZTBmMzFiZTcyMDZmZWY4ZGFhZDE4NDYxZTRmNWEyNGJiZjdkNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTExMCwx
MSArMTEwLDEyIEBAIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4CiAKIHZvaWQgVGhyZWFkYWJsZUxv
YWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogeworICAg
IGF1dG8gcmVzb3VyY2VVUkwgPSByZXF1ZXN0LnVybCgpOwogICAgIGlmIChpczxXb3JrZXJHbG9i
YWxTY29wZT4oY29udGV4dCkpCiAgICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LCBXVEZNb3ZlKHJlcXVlc3QpLCBjbGllbnQsIG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25j
YXN0PERvY3VtZW50Pihjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25z
KTsKLSAgICBjb250ZXh0LmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKTsKKyAgICBjb250
ZXh0LmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVzb3VyY2VVUkwpOwogfQogCiB2b2lk
IFRocmVhZGFibGVMb2FkZXI6OmxvZ0Vycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBTdHJpbmcmIGluaXRpYXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IDMxNmQyMTY5N2JkYmVlOTJk
MTNhZTM5ZDY0YTc0NGYzNGZmMTdhNWMuLjQxMWY4NzJkYTRiMTJhODBjZDM5NzMyMDgyZDczOWU4
ZTQ2YmY3YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgog
I2luY2x1ZGUgIkNvbW1vblZNLmgiCisjaW5jbHVkZSAiQ29va2llSmFyLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtOTksNiArMTAwLDEwIEBAIHN0YXRpYyB2b2lkIHJlbGVhc2VDcml0aWNhbE1lbW9yeShTeW5j
aHJvbm91cyBzeW5jaHJvbm91cywgTWFpbnRhaW5CYWNrRm9yd2FyZENhCiAKICAgICBDU1NWYWx1
ZVBvb2w6OnNpbmdsZXRvbigpLmRyYWluKCk7CiAKKyAgICBQYWdlOjpmb3JFYWNoUGFnZShbXShh
dXRvJiBwYWdlKSB7CisgICAgICAgIHBhZ2UuY29va2llSmFyKCkuY2xlYXJDYWNoZSgpOworICAg
IH0pOworCiAgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGNvcHlUb1ZlY3Rvck9mPFJlZlB0cjxE
b2N1bWVudD4+KERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkpIHsKICAgICAgICAgZG9jdW1lbnQt
PnN0eWxlU2NvcGUoKS5yZWxlYXNlTWVtb3J5KCk7CiAgICAgICAgIGRvY3VtZW50LT5mb250U2Vs
ZWN0b3IoKS5lbXB0eUNhY2hlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IGZk
OTAxNjQ3MjBlYzc1OTI5ZmM1Y2RmMmQxMGZkMTg4NWNhZGRmNWUuLjYzZjU5OThlNGRmMzUyZjBh
Y2Q5NGJmMGI1MmE5ZjJhMTNhMTlkYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAg
LTM2MSw2ICszNjEsOSBAQCByZXF1ZXN0SWRsZUNhbGxiYWNrRW5hYmxlZDoKIEhUVFBTVXBncmFk
ZUVuYWJsZWQ6CiAgIGluaXRpYWw6IGZhbHNlCiAKK2luUHJvY2Vzc0Nvb2tpZUNhY2hlRW5hYmxl
ZDoKKyAgaW5pdGlhbDogZmFsc2UKKwogdGhpcmRQYXJ0eUlmcmFtZVJlZGlyZWN0QmxvY2tpbmdF
bmFibGVkOgogICBpbml0aWFsOiB0cnVlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcAppbmRleCAyOTk0Mjc1
NjI1OGU5MjQzYzNiMGExMDBiMWEzZjZmNzJhODQ3NThjLi5hNGVlZGUxNmFkZDU2ZGY1ZjZmMDdk
NWEyZDUxMzliNjhmMGUxYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgi
CiAKKyNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJIVFRQQ29va2llQWNjZXB0UG9saWN5
LmgiCiAjaW5jbHVkZSAiUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmgiCiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CkBAIC01Niw2ICs1NywxNCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6cGVybWl0UHJvY2Vzc1RvVXNlQ29va2llQVBJKGJvb2wgdmFsdWUpCiAgICAgICAg
IHJlbW92ZVByb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29v
a2llcyk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0EpCitWZWN0b3I8Q29va2llPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYpCit7CisgICAg
QVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICByZXR1cm4geyB9OworfQorI2VuZGlm
IC8vICFQTEFURk9STShDT0NPQSkKKwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAKIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlD
b29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDY1MDZmMTA3NzA2NWE0ZDIxZjc5ODAxOTJmM2Q3NTA3ZWJjMjNh
OWUuLmY1MTkyNjlkMzk2ZjIzNzliY2UyOWYyODZkNjliYmRkODY2ZjJjN2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTYwLDYgKzYwLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgX1NvdXBDb29raWVKYXIgU291
cENvb2tpZUphcjsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3Jh
Z2VPYnNlcnZlci5oIgorT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU0hUVFBDb29r
aWU7CitPQkpDX0NMQVNTIE5TTXV0YWJsZVNldDsKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC03OSw2ICs4MiwxNSBAQCBlbnVtIGNsYXNzIFRoaXJkUGFydHlDb29raWVCbG9ja2lu
Z01vZGUgOiB1aW50OF90IHsgQWxsLCBBbGxPblNpdGVzV2l0aG91dFVzZXJJbgogZW51bSBjbGFz
cyBGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA6IHVpbnQ4X3QgeyBBbGxCdXRDb29r
aWVzLCBOb25lLCBBbGxCdXRDb29raWVzTGl2ZU9uVGVzdGluZ1RpbWVvdXQsIEFsbEJ1dENvb2tp
ZXNSZXByb1Rlc3RpbmdUaW1lb3V0IH07CiBlbnVtIGNsYXNzIFNob3VsZEFza0lUUCA6IGJvb2wg
eyBObywgWWVzIH07CiAKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorY2xh
c3MgQ29va2llQ2hhbmdlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgfkNvb2tpZUNo
YW5nZU9ic2VydmVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBT
dHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjb29raWVzRGVsZXRlZCgpID0gMDsKK307CisjZW5kaWYKKwogY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTkyLDkg
KzEwNCwxNCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgTlNIVFRQQ29va2llU3RvcmFn
ZSAqbnNDb29raWVTdG9yYWdlKCkgY29uc3Q7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIFdFQkNPUkVfRVhQT1JUIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKKyNlbmRpZgor
CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBjcmVhdGVD
RlN0b3JhZ2VTZXNzaW9uRm9ySWRlbnRpZmllcihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIFJl
dGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiYmLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4mJik7CisgICAgZW51bSBjbGFzcyBJc0luTWVtb3J5Q29va2llU3RvcmUgOiBi
b29sIHsgTm8sIFllcyB9OworICAgIFdFQkNPUkVfRVhQT1JUIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+JiYsIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmLCBJc0luTWVtb3J5Q29va2llU3RvcmUg
PSBJc0luTWVtb3J5Q29va2llU3RvcmU6Ok5vKTsKICAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNp
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgLy8gTWF5IGJl
IG51bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQu
CkBAIC0xNDYsNiArMTYzLDE0IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPEZy
YW1lSWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMsIFNob3VsZEFza0lUUCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgQ29va2ll
UmVxdWVzdEhlYWRlckZpZWxkUHJveHkmKSBjb25zdDsKIAorICAgIFdFQkNPUkVfRVhQT1JUIFZl
Y3RvcjxDb29raWU+IGRvbUNvb2tpZXNGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCk7CisKKyNp
ZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5n
ZU9ic2VydmVyJiwgY29uc3QgU3RyaW5nJiBob3N0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHN0b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKENvb2tpZUNoYW5nZU9i
c2VydmVyJiwgY29uc3QgSGFzaFNldDxTdHJpbmc+JiBob3N0cyk7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzdXBwb3J0c0Nvb2tpZUNoYW5nZUxpc3RlbmVyQVBJKCkgY29uc3Q7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBzZXRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9pc1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NFbmFibGVkID0gZW5hYmxlZDsgfQogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPEZyYW1l
SWRlbnRpZmllcj4sIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPikgY29uc3Q7CkBAIC0xNzMsMTEg
KzE5OCwyNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBlbnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVIVFRQT25seSB9OworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNG
b3JTZXNzaW9uKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBJbmNsdWRlSFRUUE9ubHlPck5vdCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMsIFNob3VsZEFz
a0lUUCA9IFNob3VsZEFza0lUUDo6WWVzKSBjb25zdDsKKyAgICBOU0FycmF5ICpodHRwQ29va2ll
cyhDRkhUVFBDb29raWVTdG9yYWdlUmVmKSBjb25zdDsKKyAgICBOU0FycmF5ICpodHRwQ29va2ll
c0ZvclVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3Qg
T3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYsIE5TVVJMICopIGNvbnN0OworICAgIE5TQXJyYXkgKmNv
b2tpZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+LCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIFNob3VsZEFza0lUUCkgY29uc3Q7CisgICAgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVS
TChDRkhUVFBDb29raWVTdG9yYWdlUmVmLCBOU0FycmF5ICpjb29raWVzLCBOU1VSTCAqLCBOU1VS
TCAqbWFpbkRvY3VtZW50VVJMLCBjb25zdCBTYW1lU2l0ZUluZm8mKSBjb25zdDsKKyAgICB2b2lk
IGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiwgTlNIVFRQQ29va2llICop
IGNvbnN0OworI2VuZGlmCisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQor
ICAgIHZvaWQgcmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpOworICAg
IHZvaWQgdW5yZWdpc3RlckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCk7CisjZW5k
aWYKKwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpIHx8IFVTRShDRlVSTENPTk5FQ1RJT04pCiAgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNl
c3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOwogICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBtX3BsYXRmb3JtQ29va2llU3RvcmFnZTsKKyAgICBib29sIG1faXNJbk1lbW9y
eUNvb2tpZVN0b3JlIHsgZmFsc2UgfTsKICNlbGlmIFVTRShTT1VQKQogICAgIHN0YXRpYyB2b2lk
IGNvb2tpZXNEaWRDaGFuZ2UoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKik7CiAKQEAgLTE5MCw2ICsy
MzEsMTIgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4
dDsKICNlbmRpZgogCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBi
b29sIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgeyBmYWxzZSB9OworICAgIFJldGFpblB0
cjxOU011dGFibGVTZXQ+IG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzOworICAg
IEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PENvb2tpZUNoYW5nZU9ic2VydmVyKj4+IG1fY29va2ll
Q2hhbmdlT2JzZXJ2ZXJzOworI2VuZGlmCisKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRl
bnRpYWxTdG9yYWdlOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKaW5kZXggYjAxYTdlNjZiZjA5MTQ5NjFkNjMw
MTA3NDFlMjIxNzVmOWVmYjliOC4uZTBkODRmN2M1MTc5NWVjZWJmM2U1MDZjOWIwYTI4ZThjYjVh
YjZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKQEAgLTczLDExICs3Mywx
MiBAQCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjcmVhdGVDRlN0b3JhZ2VTZXNzaW9uRgogICAgIHJldHVybiBzdG9yYWdlU2Vzc2lvbjsK
IH0KIAotTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24oUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBSZXRhaW5QdHI8Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZj4mJiBw
bGF0Zm9ybVNlc3Npb24sIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYmIHBsYXRm
b3JtQ29va2llU3RvcmFnZSkKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNl
c3Npb25SZWY+JiYgcGxhdGZvcm1TZXNzaW9uLCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4mJiBwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UsIElzSW5NZW1vcnlDb29raWVTdG9yZSBpc0lu
TWVtb3J5Q29va2llU3RvcmUpCiAgICAgOiBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBt
X3BsYXRmb3JtU2Vzc2lvbihXVEZNb3ZlKHBsYXRmb3JtU2Vzc2lvbikpCisgICAgLCBtX2lzSW5N
ZW1vcnlDb29raWVTdG9yZShpc0luTWVtb3J5Q29va2llU3RvcmUgPT0gSXNJbk1lbW9yeUNvb2tp
ZVN0b3JlOjpZZXMpCiB7Ci0gICAgQVNTRVJUKHByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSB8fCAh
cGxhdGZvcm1Db29raWVTdG9yYWdlKTsKKyAgICBBU1NFUlQocHJvY2Vzc01heVVzZUNvb2tpZUFQ
SSgpIHx8ICFwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUp
OwogICAgIG1fcGxhdGZvcm1Db29raWVTdG9yYWdlID0gcGxhdGZvcm1Db29raWVTdG9yYWdlID8g
V1RGTW92ZShwbGF0Zm9ybUNvb2tpZVN0b3JhZ2UpIDogY29va2llU3RvcmFnZSgpOwogfQogCkBA
IC04OCwxMCArODksMTAgQEAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogCiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yYWdlKCkgY29uc3QK
IHsKLSAgICBpZiAoIXByb2Nlc3NNYXlVc2VDb29raWVBUEkoKSkKKyAgICBpZiAoIXByb2Nlc3NN
YXlVc2VDb29raWVBUEkoKSAmJiAhbV9pc0luTWVtb3J5Q29va2llU3RvcmUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1l
bW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIGlmIChtX3BsYXRmb3JtQ29va2llU3RvcmFnZSkKICAg
ICAgICAgcmV0dXJuIG1fcGxhdGZvcm1Db29raWVTdG9yYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0KaW5kZXggOWU5YTkxYjcyNTBmMzYyYjg1OTQ1ZjNkNzAyNzZlNmFi
YjFhZGQ0Mi4uNjhhYTMyM2ZiOTAyYTc1MzNiNDFhZTgwYzE5N2M3N2E4NGU1NmE0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw5ICs0NCwxNiBAQCBA
ZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+TmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJf
QVBJKQorICAgIHVucmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2FyeSgpOwor
I2VuZGlmCit9CisKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWUoY29uc3Qg
Q29va2llJiBjb29raWUpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJ
bk1lbW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
ICAgICBbbnNDb29raWVTdG9yYWdlKCkgc2V0Q29va2llOihOU0hUVFBDb29raWUgKiljb29raWVd
OwpAQCAtNTUsNyArNjIsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2ll
KGNvbnN0IENvb2tpZSYgY29va2llKQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmls
ZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQo
aGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVz
KSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IG5zQ29va2llcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb29raWVzLnNpemUoKV0pOwogICAgIGZvciAoY29uc3QgYXV0byYgY29va2ll
IDogY29va2llcykKQEAgLTY4LDE5ICs3NSwxOCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJgog
CiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYg
Y29va2llKQogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxl
Z2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVn
ZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlD
b29raWVTdG9yZSk7CiAgICAgW25zQ29va2llU3RvcmFnZSgpIGRlbGV0ZUNvb2tpZTooTlNIVFRQ
Q29va2llICopY29va2llXTsKIH0KIAotc3RhdGljIFZlY3RvcjxDb29raWU+IG5zQ29va2llc1Rv
Q29va2llVmVjdG9yKE5TQXJyYXk8TlNIVFRQQ29va2llICo+ICpuc0Nvb2tpZXMpCitzdGF0aWMg
VmVjdG9yPENvb2tpZT4gbnNDb29raWVzVG9Db29raWVWZWN0b3IoTlNBcnJheTxOU0hUVFBDb29r
aWUgKj4gKm5zQ29va2llcywgY29uc3QgRnVuY3Rpb248Ym9vbChOU0hUVFBDb29raWUgKik+JiBm
aWx0ZXIgPSB7IH0pCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotCiAgICAgVmVjdG9yPENvb2tpZT4gY29v
a2llczsKICAgICBjb29raWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNDb29raWVzLmNvdW50
KTsKLSAgICBmb3IgKE5TSFRUUENvb2tpZSAqbnNDb29raWUgaW4gbnNDb29raWVzKQotICAgICAg
ICBjb29raWVzLnVuY2hlY2tlZEFwcGVuZChuc0Nvb2tpZSk7Ci0KKyAgICBmb3IgKE5TSFRUUENv
b2tpZSAqbnNDb29raWUgaW4gbnNDb29raWVzKSB7CisgICAgICAgIGlmICghZmlsdGVyIHx8IGZp
bHRlcihuc0Nvb2tpZSkpCisgICAgICAgICAgICBjb29raWVzLnVuY2hlY2tlZEFwcGVuZChuc0Nv
b2tpZSk7CisgICAgfQogICAgIHJldHVybiBjb29raWVzOwogfQogCkBAIC0xMTgsNyArMTI0LDcg
QEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2llU3RvcmUoKQogCiBOU0hU
VFBDb29raWVTdG9yYWdlICpOZXR3b3JrU3RvcmFnZVNlc3Npb246Om5zQ29va2llU3RvcmFnZSgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVn
ZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1lbW9yeUNv
b2tpZVN0b3JlKTsKICAgICBhdXRvIGNmQ29va2llU3RvcmFnZSA9IGNvb2tpZVN0b3JhZ2UoKTsK
ICAgICBpZiAoIWNmQ29va2llU3RvcmFnZSB8fCBbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRI
VFRQQ29va2llU3RvcmFnZV0uX2Nvb2tpZVN0b3JhZ2UgPT0gY2ZDb29raWVTdG9yYWdlKQogICAg
ICAgICByZXR1cm4gW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2Vd
OwpAQCAtMTU4LDExICsxNjQsNiBAQCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGNyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihDRlN0cmluZ1JlZiBpZGVudGlmaWVyKQogICAgIENGVVJMQ2FjaGVT
ZXREaXNrQ2FwYWNpdHkoY2FjaGUuZ2V0KCksIDApOyAvLyBTZXR0aW5nIGRpc2sgY2FjaGUgc2l6
ZSBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSBvbmNlIDxyZGFyOi8vcHJvYmxlbS8xMjY1NjgxND4g
aXMgZml4ZWQuCiAgICAgQ0ZVUkxDYWNoZVNldE1lbW9yeUNhcGFjaXR5KGNhY2hlLmdldCgpLCBb
W05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIG1lbW9yeUNhcGFjaXR5XSk7CiAKLSAgICBpZiAo
IU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cHJvY2Vzc01heVVzZUNvb2tpZUFQSSgpKQotICAgICAg
ICByZXR1cm4gc3RvcmFnZVNlc3Npb24ubGVha1JlZigpOwotCi0gICAgQVNTRVJUKGhhc1Byb2Nl
c3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwotCiAg
ICAgYXV0byBjb29raWVTdG9yYWdlID0gYWRvcHRDRihfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlD
b29raWVTdG9yYWdlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHN0b3JhZ2VTZXNzaW9uLmdldCgpKSk7
CiAgICAgaWYgKCFjb29raWVTdG9yYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE3
MywyMCArMTc0LDIzIEBAIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgY3JlYXRlUHJpdmF0ZVN0b3Jh
Z2VTZXNzaW9uKENGU3RyaW5nUmVmIGlkZW50aWZpZXIpCiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNz
aW9uLmxlYWtSZWYoKTsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmh0dHBDb29raWVzKENGSFRUUENv
b2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6aHR0cENvb2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKSBj
b25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6
OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpCisgICAgQVNT
RVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29v
a2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOworICAgIGlmICghY29va2llU3RvcmFn
ZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwog
ICAgICAgICByZXR1cm4gW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9y
YWdlXSBjb29raWVzXTsKKyAgICB9CiAgICAgCiAgICAgYXV0byBjb29raWVzID0gYWRvcHRDRihD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFnZSkpOwogICAgIHJldHVy
biBbTlNIVFRQQ29va2llIF9jZjJuc0Nvb2tpZXM6Y29va2llcy5nZXQoKV07CiB9CiAKLXN0YXRp
YyB2b2lkIGRlbGV0ZUhUVFBDb29raWUoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9y
YWdlLCBOU0hUVFBDb29raWUgKmNvb2tpZSkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWxldGVIVFRQQ29va2llKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNI
VFRQQ29va2llICpjb29raWUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxl
Z2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
IHx8IG1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsK
KyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1faXNJbk1lbW9yeUNvb2tpZVN0b3JlKTsKICAgICAg
ICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBkZWxldGVD
b29raWU6Y29va2llXTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyNiw5ICsyMzAsOSBA
QCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChOU0hUVFBDb29raWVTdG9yYWdlICpzdG9y
YWdlLCBOU1VSTCAqdXJsLCBOU1VSTCAqbQogICAgIHJldHVybiBjb29raWVzUHRyLT5hdXRvcmVs
ZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRIVFRQQ29va2llc0ZvclVSTChDRkhUVFBDb29r
aWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UsIE5TQXJyYXkgKmNvb2tpZXMsIE5TVVJMICp1cmws
IE5TVVJMICptYWluRG9jdW1lbnRVUkwsIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
KQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldEhUVFBDb29raWVzRm9yVVJMKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqY29va2llcywgTlNVUkwg
KnVybCwgTlNVUkwgKm1haW5Eb2N1bWVudFVSTCwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8pIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1l
bW9yeUNvb2tpZVN0b3JlKTsKICAgICBpZiAoIWNvb2tpZVN0b3JhZ2UpIHsKICNpZiAhKFBMQVRG
T1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwMTQwMCkgJiYg
IVBMQVRGT1JNKFdBVENIT1MpICYmICFQTEFURk9STShBUFBMRVRWKQogICAgICAgICBpZiAoW05T
SFRUUENvb2tpZVN0b3JhZ2UgaW5zdGFuY2VzUmVzcG9uZFRvU2VsZWN0b3I6QHNlbGVjdG9yKF9z
ZXRDb29raWVzOmZvclVSTDptYWluRG9jdW1lbnRVUkw6cG9saWN5UHJvcGVydGllczopXSkKQEAg
LTI1NSwyMSArMjU5LDIyIEBAIHN0YXRpYyB2b2lkIHNldEhUVFBDb29raWVzRm9yVVJMKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSwgTlNBcnJheSAqCiAjZW5kaWYKIH0KIAot
c3RhdGljIE5TQXJyYXkgKmh0dHBDb29raWVzRm9yVVJMKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYg
Y29va2llU3RvcmFnZSwgTlNVUkwgKmZpcnN0UGFydHksIGNvbnN0IE9wdGlvbmFsPFNhbWVTaXRl
SW5mbz4mIHNhbWVTaXRlSW5mbywgTlNVUkwgKnVybCkKK05TQXJyYXkgKk5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6aHR0cENvb2tpZXNGb3JVUkwoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVT
dG9yYWdlLCBOU1VSTCAqZmlyc3RQYXJ0eSwgY29uc3QgT3B0aW9uYWw8U2FtZVNpdGVJbmZvPiYg
c2FtZVNpdGVJbmZvLCBOU1VSTCAqdXJsKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKLSAgICBp
ZiAoIWNvb2tpZVN0b3JhZ2UpCisgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vz
c1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykgfHwgbV9pc0luTWVtb3J5Q29va2llU3Rv
cmUpOworICAgIGlmICghY29va2llU3RvcmFnZSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9pc0luTWVtb3J5Q29va2llU3RvcmUpOwogICAgICAgICBjb29raWVTdG9yYWdlID0gX0NGSFRU
UENvb2tpZVN0b3JhZ2VHZXREZWZhdWx0KGtDRkFsbG9jYXRvckRlZmF1bHQpOworICAgIH0KIAog
ICAgIC8vIEZJWE1FOiBTdG9wIGNyZWF0aW5nIGEgbmV3IE5TSFRUUENvb2tpZVN0b3JhZ2Ugb2Jq
ZWN0IGVhY2ggdGltZSB3ZSB3YW50IHRvIHF1ZXJ5IHRoZSBjb29raWUgamFyLgogICAgIC8vIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiBjb3VsZCBpbnN0ZWFkIGtlZXAgYSBOU0hUVFBDb29raWVTdG9y
YWdlIG9iamVjdCBmb3IgdXMuCiAgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZVN0b3JhZ2U+IG5z
Q29va2llU3RvcmFnZSA9IGFkb3B0TlMoW1tOU0hUVFBDb29raWVTdG9yYWdlIGFsbG9jXSBfaW5p
dFdpdGhDRkhUVFBDb29raWVTdG9yYWdlOmNvb2tpZVN0b3JhZ2VdKTsKLSAgICByZXR1cm4gY29v
a2llc0ZvclVSTChuc0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCwgZmlyc3RQYXJ0eSwgc2FtZVNp
dGVJbmZvKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvclVSTChuc0Nvb2tpZVN0b3Jh
Z2UuZ2V0KCksIHVybCwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvKTsKIH0KIAogc3RhdGljIFJl
dGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkgKnVuZmlsdGVyZWRDb29raWVz
LCBPcHRpb25hbDxTZWNvbmRzPiBjYXBwZWRMaWZldGltZSkKIHsKLSAgICBBU1NFUlQoaGFzUHJv
Y2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAg
ICAgTlNVSW50ZWdlciBjb3VudCA9IFt1bmZpbHRlcmVkQ29va2llcyBjb3VudF07CiAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZUFycmF5PiBmaWx0ZXJlZENvb2tpZXMgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Y291bnRdKTsKIApAQCAtMzAyLDI3ICsz
MDcsMjYgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkg
KnVuZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29r
aWVzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFz
a0lUUCBzaG91bGRBc2tJVFApCitOU0FycmF5ICpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNGb3JVUkwoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCkgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IGlmIChzaG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2Vzc2lvbi5zaG91bGRC
bG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQorICAgIGlmIChz
aG91bGRBc2tJVFAgPT0gU2hvdWxkQXNrSVRQOjpZZXMgJiYgc2hvdWxkQmxvY2tDb29raWVzKGZp
cnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFnZUlEKSkKICAgICAgICAgcmV0dXJuIG5pbDsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQp
OwogICAgIFVOVVNFRF9QQVJBTShzaG91bGRBc2tJVFApOwogI2VuZGlmCi0gICAgcmV0dXJuIGh0
dHBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCBmaXJzdFBhcnR5
LCBzYW1lU2l0ZUluZm8sIHVybCk7CisgICAgcmV0dXJuIGh0dHBDb29raWVzRm9yVVJMKGNvb2tp
ZVN0b3JhZ2UoKS5nZXQoKSwgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwpOwogfQogCi1l
bnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVI
VFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFz
a0lUUCA9IFNob3VsZEFza0lUUDo6WWVzKQorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yU2Vzc2lvbihjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBj
b25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6
OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQ
cm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29r
aWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBOU0Fy
cmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChzZXNzaW9uLCBmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOworICAgIE5TQXJyYXkg
KmNvb2tpZXMgPSBjb29raWVzRm9yVVJMKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIHNob3VsZEFza0lUUCk7CiAgICAgaWYgKCFbY29va2llcyBjb3VudF0p
CiAgICAgICAgIHJldHVybiB7IFN0cmluZygpLCBmYWxzZSB9OyAvLyBSZXR1cm4gYSBudWxsIHN0
cmluZywgbm90IGFuIGVtcHR5IG9uZSB0aGF0IFN0cmluZ0J1aWxkZXIgd291bGQgY3JlYXRlIGJl
bG93LgogCkBAIC0zNzQsMjIgKzM3OCwyMiBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxIVFRQQ29v
a2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiAKIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgU2hvdWxkQXNrSVRQIHNob3VsZEFza0lUUCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywg
c2hvdWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNsdWRlSFRUUE9ubHks
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBzaG91bGRBc2tJVFApOwogfQogCiBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSBjb25zdAogewot
ICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJ
bmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJl
Q29va2llcywgc2hvdWxkQXNrSVRQKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBP
bmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQKTsKIH0KIAogc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYgaGVhZGVyRmll
bGRQcm94eSkgY29uc3QKIHsKLSAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhl
YWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8s
IGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZp
ZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihoZWFkZXJGaWVs
ZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBoZWFkZXJG
aWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVsZFByb3h5
LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVTZWN1cmVD
b29raWVzKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAogewotICAgIEFTU0VSVChoYXNQcm9jZXNz
UHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKKyAgICBB
U1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdD
b29raWVzKSB8fCBtX2lzSW5NZW1vcnlDb29raWVTdG9yZSk7CiAKICAgICBCRUdJTl9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiAKQEAgLTQ1Nyw3ICs0NjEsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSQogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKLSAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTCgqdGhpcywgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgc2hvdWxkQXNrSVRQ
KTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gY29va2llc0ZvclVSTChmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFApOwogICAgIE5TVUlu
dGVnZXIgY291bnQgPSBbY29va2llcyBjb3VudF07CiAgICAgcmF3Q29va2llcy5yZXNlcnZlQ2Fw
YWNpdHkoY291bnQpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kp
IHsKQEAgLTUxOCw3ICs1MjIsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdAogCiB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaG9zdG5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzIGluY2x1ZGVIdHRw
T25seUNvb2tpZXMpCiB7Ci0gICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1By
aXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOworICAgIEFTU0VSVChoYXNQcm9jZXNzUHJp
dmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpIHx8IG1faXNJbk1l
bW9yeUNvb2tpZVN0b3JlKTsKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApA
QCAtNTY2LDQgKzU3MCw5OCBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2UoV2FsbFRpbWUgdGltZVBvaW50KQogICAgIFtzdG9yYWdlIF9z
YXZlQ29va2llc107CiB9CiAKK1ZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZG9tQ29va2llc0Zvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIE5TQXJyYXkgKm5z
Q29va2llcyA9IFtuc0Nvb2tpZVN0b3JhZ2UoKSBfZ2V0Q29va2llc0ZvckRvbWFpbjooTlNTdHJp
bmcgKilob3N0XTsKKyAgICByZXR1cm4gbnNDb29raWVzVG9Db29raWVWZWN0b3IobnNDb29raWVz
LCBbXShOU0hUVFBDb29raWUgKmNvb2tpZSkgeyByZXR1cm4gIWNvb2tpZS5IVFRQT25seTsgfSk7
Cit9CisKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6cmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5lY2Vzc2Fy
eSgpCit7CisgICAgaWYgKG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZGlkUmVnaXN0ZXJDb29raWVMaXN0ZW5lcnMgPSB0cnVlOworICAgIFtu
c0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0FkZGVkSGFuZGxlcjpeKE5TQXJyYXk8TlNIVFRQ
Q29va2llICo+ICogbnNDb29raWVzLCBOU1VSTCAqdXJsRm9yQWRkZWRDb29raWVzKSB7CisgICAg
ICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXMgPSBuc0Nvb2tpZXNUb0Nvb2tpZVZlY3Rvcihuc0Nv
b2tpZXMpOworICAgICAgICBhdXRvIGhvc3QgPSBVUkwodXJsRm9yQWRkZWRDb29raWVzKS5ob3N0
KCkudG9TdHJpbmcoKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIWhvc3QuaXNOdWxsKCkpOwor
ICAgICAgICBhdXRvIGl0ID0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZmluZChob3N0KTsKKyAg
ICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogaXQtPnZhbHVlKQorICAg
ICAgICAgICAgb2JzZXJ2ZXItPmNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKTsKKyAgICB9IG9u
UXVldWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07CisgICAgW25zQ29va2llU3RvcmFnZSgp
IF9zZXRDb29raWVzRGVsZXRlZEhhbmRsZXI6XihOU0FycmF5PE5TSFRUUENvb2tpZSAqPiAqLCBi
b29sIC8qZGVsZXRlZEFsbENvb2tpZXMqLykgeworICAgICAgICBmb3IgKGF1dG8mIG9ic2VydmVy
cyA6IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLnZhbHVlcygpKSB7CisgICAgICAgICAgICBmb3Ig
KGF1dG8qIG9ic2VydmVyIDogb2JzZXJ2ZXJzKQorICAgICAgICAgICAgICAgIG9ic2VydmVyLT5j
b29raWVzRGVsZXRlZCgpOworICAgICAgICB9CisgICAgfSBvblF1ZXVlOmRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCldOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6dW5yZWdpc3Rl
ckNvb2tpZUNoYW5nZUxpc3RlbmVyc0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBpZiAoIW1fZGlkUmVn
aXN0ZXJDb29raWVMaXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKKworICAgIFtuc0Nvb2tpZVN0
b3JhZ2UoKSBfc2V0Q29va2llc0FkZGVkSGFuZGxlcjpuaWwgb25RdWV1ZTpuaWxdOworICAgIFtu
c0Nvb2tpZVN0b3JhZ2UoKSBfc2V0Q29va2llc0RlbGV0ZWRIYW5kbGVyOm5pbCBvblF1ZXVlOm5p
bF07CisgICAgW25zQ29va2llU3RvcmFnZSgpIF9zZXRTdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tp
ZUNoYW5nZXM6bmlsXTsKKyAgICBtX2RpZFJlZ2lzdGVyQ29va2llTGlzdGVuZXJzID0gZmFsc2U7
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdGFydExpc3RlbmluZ0ZvckNvb2tp
ZUNoYW5nZU5vdGlmaWNhdGlvbnMoQ29va2llQ2hhbmdlT2JzZXJ2ZXImIG9ic2VydmVyLCBjb25z
dCBTdHJpbmcmIGhvc3QpCit7CisgICAgcmVnaXN0ZXJDb29raWVDaGFuZ2VMaXN0ZW5lcnNJZk5l
Y2Vzc2FyeSgpOworCisgICAgYXV0byYgb2JzZXJ2ZXJzID0gbV9jb29raWVDaGFuZ2VPYnNlcnZl
cnMuZW5zdXJlKGhvc3QsIFtdIHsKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8Q29va2llQ2hhbmdl
T2JzZXJ2ZXIqPiB7IH07CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIEFTU0VSVCghb2Jz
ZXJ2ZXJzLmNvbnRhaW5zKCZvYnNlcnZlcikpOworICAgIG9ic2VydmVycy5hZGQoJm9ic2VydmVy
KTsKKworICAgIGlmICghbV9zdWJzY3JpYmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMpCisgICAg
ICAgIG1fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzID0gYWRvcHROUyhbW05TTXV0
YWJsZVNldCBhbGxvY10gaW5pdF0pOworICAgIGVsc2UgaWYgKFttX3N1YnNjcmliZWREb21haW5z
Rm9yQ29va2llQ2hhbmdlcyBjb250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0XSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW21fc3Vic2NyaWJlZERvbWFpbnNGb3JDb29raWVDaGFuZ2VzIGFk
ZE9iamVjdDooTlNTdHJpbmcgKilob3N0XTsKKyAgICBbbnNDb29raWVTdG9yYWdlKCkgX3NldFN1
YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmliZWREb21haW5zRm9yQ29v
a2llQ2hhbmdlcy5nZXQoKV07Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9w
TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhDb29raWVDaGFuZ2VPYnNlcnZl
ciYgb2JzZXJ2ZXIsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgaG9zdHMpCit7CisgICAgYm9vbCBz
dWJzY3JpYmVkVVJMc0NoYW5nZWQgPSBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIGhvc3QgOiBob3N0
cykgeworICAgICAgICBhdXRvIGl0ID0gbV9jb29raWVDaGFuZ2VPYnNlcnZlcnMuZmluZChob3N0
KTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKTsK
KyAgICAgICAgaWYgKGl0ID09IG1fY29va2llQ2hhbmdlT2JzZXJ2ZXJzLmVuZCgpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgYXV0byYgb2JzZXJ2ZXJzID0gaXQtPnZhbHVlOwor
ICAgICAgICBBU1NFUlQob2JzZXJ2ZXJzLmNvbnRhaW5zKCZvYnNlcnZlcikpOworICAgICAgICBv
YnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CisgICAgICAgIGlmIChvYnNlcnZlcnMuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBtX2Nvb2tpZUNoYW5nZU9ic2VydmVycy5yZW1vdmUoaXQpOwor
ICAgICAgICAgICAgQVNTRVJUKFttX3N1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlcyBj
b250YWluc09iamVjdDooTlNTdHJpbmcgKilob3N0XSk7CisgICAgICAgICAgICBbbV9zdWJzY3Jp
YmVkRG9tYWluc0ZvckNvb2tpZUNoYW5nZXMgcmVtb3ZlT2JqZWN0OihOU1N0cmluZyAqKWhvc3Rd
OworICAgICAgICAgICAgc3Vic2NyaWJlZFVSTHNDaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBpZiAoc3Vic2NyaWJlZFVSTHNDaGFuZ2VkKQorICAgICAgICBbbnNDb29raWVT
dG9yYWdlKCkgX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczptX3N1YnNjcmli
ZWREb21haW5zRm9yQ29va2llQ2hhbmdlcy5nZXQoKV07Cit9CisKKy8vIEZJWE1FOiBUaGlzIGNh
biBldmVudHVhbGx5IGdvIGF3YXksIHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290aCB0
cmFuc2l0aW9uIHRvIHRoZSBuZXcgQVBJLgorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN1
cHBvcnRzQ29va2llQ2hhbmdlTGlzdGVuZXJBUEkoKSBjb25zdAoreworICAgIHN0YXRpYyBjb25z
dCBib29sIHN1cHBvcnRzQVBJID0gW25zQ29va2llU3RvcmFnZSgpIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3NldFN1YnNjcmliZWREb21haW5zRm9yQ29va2llQ2hhbmdlczopXTsKKyAg
ICByZXR1cm4gc3VwcG9ydHNBUEk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKENPT0tJRV9DSEFOR0Vf
TElTVEVORVJfQVBJKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDc1ZTBiNGEyNjVjOWVlNTlhMGI0MzA3OTRmN2VmMGQyMTdjNzJmMTcu
LjcyZTFkMjZkY2QzZjlhOGNmYjk1ZjAyM2EwMmNhNmE4OTBkMDYxY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCkBAIC0xMjQsNiArMTI0LDExIEBAIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjp+TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKQogICAgIGZvciAoYXV0
byYgcG9ydCA6IG1fcHJvY2Vzc0VudGFuZ2xlZFBvcnRzKQogICAgICAgICBuZXR3b3JrUHJvY2Vz
cygpLm1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCkuZGlkQ2xvc2VNZXNzYWdlUG9ydChwb3J0
KTsKIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgaWYgKGF1dG8q
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIG5ldHdv
cmtTdG9yYWdlU2Vzc2lvbi0+c3RvcExpc3RlbmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlv
bnMoKnRoaXMsIG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzKTsKKyNlbmRpZgorCiAjaWYgVVNF
KExJQldFQlJUQykKICAgICBpZiAobV9ydGNQcm92aWRlcikKICAgICAgICAgbV9ydGNQcm92aWRl
ci0+Y2xvc2UoKTsKQEAgLTYzMyw2ICs2MzgsNDggQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGMK
ICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUp
OwogfQogCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkb21Db29raWVzRm9y
SG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3Rp
ZmljYXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byogbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oKTsKKyAgICBpZiAoIW5ldHdvcmtTdG9yYWdlU2Vz
c2lvbikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisKKyNpZiBIQVZF
KENPT0tJRV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIGlmIChzdWJzY3JpYmVUb0Nvb2tpZUNo
YW5nZU5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgQVNTRVJUKCFtX2hvc3RzV2l0aENvb2tpZUxp
c3RlbmVycy5jb250YWlucyhob3N0KSk7CisgICAgICAgIG1faG9zdHNXaXRoQ29va2llTGlzdGVu
ZXJzLmFkZChob3N0KTsKKyAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zdGFydExpc3Rl
bmluZ0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoKnRoaXMsIGhvc3QpOworICAgIH0KKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9u
cyk7CisjZW5kaWYKKworICAgIGNvbXBsZXRpb25IYW5kbGVyKG5ldHdvcmtTdG9yYWdlU2Vzc2lv
bi0+ZG9tQ29va2llc0Zvckhvc3QoaG9zdCkpOworfQorCisjaWYgSEFWRShDT09LSUVfQ0hBTkdF
X0xJU1RFTkVSX0FQSSkKKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6dW5z
dWJzY3JpYmVGcm9tQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyhjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGhvc3RzKQoreworICAgIGJvb2wgcmVtb3ZlZCA9IG1faG9zdHNXaXRoQ29va2llTGlzdGVu
ZXJzLnJlbW92ZShob3N0cy5iZWdpbigpLCBob3N0cy5lbmQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChyZW1vdmVkLCByZW1vdmVkKTsKKworICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBzdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPnN0
b3BMaXN0ZW5pbmdGb3JDb29raWVDaGFuZ2VOb3RpZmljYXRpb25zKCp0aGlzLCBob3N0cyk7Cit9
CisKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNBZGRlZChjb25z
dCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29raWVzKQor
eworICAgIGNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OkNvb2tpZXNBZGRlZChob3N0LCBjb29raWVzKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNEZWxldGVkKCkKK3sKKyAgICBjb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpDb29raWVzRGVsZXRl
ZCgpLCAwKTsKK30KKworI2VuZGlmCisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgZXh0ZW5zaW9uSGFuZGxlLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeXBlKQogewogICAgIGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGViNmY1NWM2ZmU5ZTNiOWQxMjRhZjJhNzE1
ZjM1YWIxM2ZlMzNlNWUuLjdlZGM1YzYwNTk2YzViNGU2YmZiMjFhYTkzZjY1NWUxZDQ5NTc1YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5m
b3JtYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1By
b2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgpAQCAtODcsNiArODgsOSBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcwog
ICAgIDogcHVibGljIFJlZkNvdW50ZWQ8TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M+CiAj
aWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgLCBwdWJsaWMgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OkNsaWVudAorI2VuZGlmCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJ
U1RFTkVSX0FQSSkKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb29raWVDaGFuZ2VPYnNlcnZlcgog
I2VuZGlmCiAgICAgLCBJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6CkBAIC0yNjcs
NiArMjcxLDE2IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBuZXh0TWVzc2FnZUJhdGNoSWRl
bnRpZmllcihGdW5jdGlvbjx2b2lkKCk+JiYpOwogCisgICAgdm9pZCBkb21Db29raWVzRm9ySG9z
dChjb25zdCBTdHJpbmcmIGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmlj
YXRpb25zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik+JiYpOworCisjaWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICB2
b2lkIHVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBob3N0cyk7CisKKyAgICAvLyBXZWJDb3JlOjpDb29raWVDaGFuZ2VPYnNlcnZl
ci4KKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JikgZmluYWw7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpIGZp
bmFsOworI2VuZGlmCisKICAgICBzdHJ1Y3QgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
IHsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKCkgPSBkZWZhdWx0Owog
ICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoY29uc3QgUmVzb3VyY2VOZXR3
b3JrQWN0aXZpdHlUcmFja2VyJikgPSBkZWZhdWx0OwpAQCAtMzMwLDYgKzM0NCw5IEBAIHByaXZh
dGU6CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgTmV0d29ya01ETlNSZWdpc3RlciBtX21kbnNS
ZWdpc3RlcjsKICNlbmRpZgorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisg
ICAgSGFzaFNldDxTdHJpbmc+IG1faG9zdHNXaXRoQ29va2llTGlzdGVuZXJzOworI2VuZGlmCiAK
ICAgICBib29sIG1fY2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCB7IGZhbHNl
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVj
OWIwYjhmODRhODRmZmViMDU4NTFkNDkzYzU5NWYyNmE1NDY1YzQuLjgyNTU0NmMyMDdiMzdhNTYz
NWJkMjk4M2Q3MGQ1MWQ3ZDhkZDAyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgpAQCAtMzksNiArMzksMTAgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVt
OmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5n
IGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwog
ICAgIEdldFJhd0Nvb2tpZXMoVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQKSAtPiAoVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAgICBEZWxldGVDb29raWUo
VVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCisgICAgRG9tQ29va2llc0Zvckhvc3QoU3RyaW5n
IGhvc3QsIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zKSAtPiAoVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyNpZiBIQVZFKENPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIFVuc3Vic2NyaWJlRnJvbUNvb2tpZUNoYW5nZU5v
dGlmaWNhdGlvbnMoSGFzaFNldDxTdHJpbmc+IGhvc3RzKQorI2VuZGlmCiAKICAgICBSZWdpc3Rl
ckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKICAgICBSZWdp
c3RlckJsb2JVUkwoVVJMIHVybCwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMs
IFN0cmluZyBjb250ZW50VHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IDdmMWNmOWM3NTllMjYyNmQxNTk2MTc0NWFiZDQ1NzUxYjI0YzYzZjMuLmJkMTZj
ZmEyYzhiMjUxMTgzZDhiNzFlZWQ2ZDY0MDk3OWUyOTdiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjI1LDYgKzYyNSw3IEBAIGRlZiBoZWFkZXJzX2Zv
cl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpXZWJXaGVlbEV2ZW50JzogWyciV2ViRXZl
bnQuaCInXSwKICAgICAgICAgJ1dlYkNvcmU6Ok1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMn
OiBbJzxXZWJDb3JlL01lZGlhUGxheWVyLmg+J10sCiAgICAgICAgICdXZWJDb3JlOjpJU09XZWJW
VFRDdWUnOiBbJzxXZWJDb3JlL0lTT1ZUVEN1ZS5oPiddLAorICAgICAgICAnc3RydWN0IFdlYkNv
cmU6OkNvb2tpZSc6IFsnPFdlYkNvcmUvQ29va2llLmg+J10sCiAgICAgICAgICdzdHJ1Y3QgV2Vi
Q29yZTo6RWxlbWVudENvbnRleHQnOiBbJzxXZWJDb3JlL0VsZW1lbnRDb250ZXh0Lmg+J10sCiAg
ICAgICAgICdzdHJ1Y3QgV2ViS2l0OjpXZWJVc2VyU2NyaXB0RGF0YSc6IFsnIldlYlVzZXJDb250
ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oIiddLAogICAgICAgICAnc3RydWN0IFdlYktpdDo6V2Vi
VXNlclN0eWxlU2hlZXREYXRhJzogWyciV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVz
LmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55
YW1sIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAppbmRleCBmMjc1
MmE5MWRiZTg4OGQ3OTE0NzczZWY0MjI3YWI0Y2Y1NzY3ZTY0Li5lMzMwNjA3MGNlYmFmOGU0Yzcx
ODA1NThlZjJiMjQxN2Y3NzBkODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwKQEAgLTU1LDYgKzU1LDEzIEBAIEhUVFBTVXBncmFkZUVuYWJsZWQ6CiAgICBodW1h
blJlYWRhYmxlRGVzY3JpcHRpb246ICJBdXRvbWF0aWMgSFRUUFMgdXBncmFkZSBmb3Iga25vd24g
c3VwcG9ydGVkIHNpdGVzIgogICAgY2F0ZWdvcnk6IGV4cGVyaW1lbnRhbAogCitJblByb2Nlc3ND
b29raWVDYWNoZUVuYWJsZWQ6CisgICB0eXBlOiBib29sCisgICBkZWZhdWx0VmFsdWU6IHRydWUK
KyAgIGh1bWFuUmVhZGFibGVOYW1lOiAiSW4tUHJvY2VzcyBDb29raWUgQ2FjaGUiCisgICBodW1h
blJlYWRhYmxlRGVzY3JpcHRpb246ICJJbi1Qcm9jZXNzIERPTSBDb29raWUgQ2FjaGUiCisgICBj
YXRlZ29yeTogZXhwZXJpbWVudGFsCisKIFRoaXJkUGFydHlJZnJhbWVSZWRpcmVjdEJsb2NraW5n
RW5hYmxlZDoKICAgIHR5cGU6IGJvb2wKICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
aW5kZXggNzQ4OTRiZDI3YmFmNTg5NTFlNmFmMjQxYzg3OTk4YmM1YzVlYmFlOC4uYTVkMGJlMTQy
NzFmNjMwNmY4MzZiOGZkYmQ3ZDQyMGYyOTUyNDZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC02MjQsNiAr
NjI0LDcgQEAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VCYW5uZXIuY3BwCiBXZWJQcm9jZXNzL1dl
YlBhZ2UvVmlzaXRlZExpbmtUYWJsZUNvbnRyb2xsZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4
dE1lbnUuY3BwCitXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3Vt
ZW50TG9hZGVyLmNwcAogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IGUxZmM2ZjczNzJiMTYwM2U1ZGQyNWViMGE0YTYwMWM2YzliZTIzZWEu
LmQyNGE4MDQ4ZTM0NTA0NjM0MjdjOTMwNDMyZWY5MDAzOTc1MTFjMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTYxMyw2ICs2MTMsNyBAQCBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0
ZURpc3BhdGNoZXIuY3BwCiBXZWJQcm9jZXNzL1dlYlBhZ2UvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdElPUy5tbQogCiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvVGV4dENoZWNraW5nQ29u
dHJvbGxlclByb3h5Lm1tCitXZWJQcm9jZXNzL1dlYlBhZ2UvQ29jb2EvV2ViQ29va2llQ2FjaGVD
b2NvYS5tbQogV2ViUHJvY2Vzcy9XZWJQYWdlL0NvY29hL1dlYlBhZ2VDb2NvYS5tbQogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0NvY29hL1dlYlJlbW90ZU9iamVjdFJlZ2lzdHJ5LmNwcAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2YTQ1M2Zl
M2Y3OTA0YzRlMTJjOWRiMTliYjkyNWFmYmNlNjNmODdjLi4yMDFlNmM3YTExYmI3NTAzYzc4YzQ5
OWE3MTY0MTRiZWMxYjlmMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTk0Myw2ICs5NDMsNyBAQAogCQk0NjZCQzAzQzFGQTI2NkRB
MDAyRkE5QzEgLyogV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NkJDMDM5MUZBMjY2QzkwMDJGQTlD
MSAvKiBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oICovOyB9OwogCQk0NjcxRkYxRjIz
MjE3RUZGMDAxQjY0QzcgLyogV2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRD
NyAvKiBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovOyB9OwogCQk0NjdFNDNFODIyNDNGRjdE
MDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzky
NCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovOyB9OworCQk0NjgwOUE3QzIz
RDkyMjVFMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODA5QTdBMjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJD
b29raWVDYWNoZS5oICovOyB9OwogCQk0NkEyQjYwOTFFNTY3NkE2MDBDM0RFREEgLyogQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkEyQjYwNzFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dy
b3VuZFByb2Nlc3NSZXNwb25zaXZlbmVzc1RpbWVyLmggKi87IH07CiAJCTQ2QjA1MjQ3MjI2NjhE
ODUwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc0NvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjA1
MjQ0MjI2NjhEMjMwMDI2NUI5NyAvKiBXZWJEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vz
c0NvbnRyb2xsZXIuaCAqLzsgfTsKIAkJNDZCRUI2RDcyMkZCOUJENzAwMjY5ODY3IC8qIFN0b3Jh
Z2VBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkJFQjZENTIyRkI5QkQ2MDAyNjk4NjcgLyogU3RvcmFnZUFyZWEuaCAqLzsgfTsKQEAgLTM0ODYs
NiArMzQ4Nyw4IEBACiAJCTQ2NzFGRjFEMjMyMTdFRkYwMDFCNjRDNyAvKiBXZWJSZXNvdXJjZUxv
YWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJSZXNvdXJjZUxvYWRPYnNlcnZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcxRkYxRTIzMjE3RUZGMDAxQjY0QzcgLyog
V2ViUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjdFNDNF
NzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDlBN0EyM0Q5MjI1MzAwQzI5
N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvb2tpZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODA5QTdC
MjNEOTIyNTMwMEMyOTdEMCAvKiBXZWJDb29raWVDYWNoZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb29raWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTQ2ODM1NjlBMjFFODFDQzcwMDZFMjdBMyAvKiBQcm92aXNpb25hbFBhZ2VQ
cm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm92aXNpb25hbFBhZ2VQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgzNTY5QjIxRTgxQ0M3MDA2
RTI3QTMgLyogUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkEyQjYwNjFFNTY3NUEyMDBDM0RFREEgLyogQmFja2dyb3VuZFByb2Nl
c3NSZXNwb25zaXZlbmVzc1RpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJhY2tncm91bmRQcm9jZXNzUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDI4LDYgKzg0MzEsOCBAQAogCQkJCUJDNzJCOUY5MTFF
NjQ3NkIwMDFFQjRFQSAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oICovLAogCQkJCTUxODcx
QjU5MTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5jcHAgKi8sCiAJCQkJNTE4NzFC
NUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggKi8sCisJCQkJNDY4MDlBN0Iy
M0Q5MjI1MzAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmNwcCAqLywKKwkJCQk0NjgwOUE3QTIz
RDkyMjUzMDBDMjk3RDAgLyogV2ViQ29va2llQ2FjaGUuaCAqLywKIAkJCQk1QzdGQjQ2RTIxRTk3
QzBCMDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmNwcCAqLywKIAkJCQk1QzdGQjQ2RjIxRTk3QzBD
MDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggKi8sCiAJCQkJMUE1QjFDNTIxODk4N0VERjAwNEZD
RjlCIC8qIFdlYkRvY3VtZW50TG9hZGVyLmNwcCAqLywKQEAgLTEwNjY4LDYgKzEwNjczLDcgQEAK
IAkJCQk1MUFDQkI4MjEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFBQ0JCQTAxMjdBOEYyQzAwRDIwM0I5IC8qIFdlYkNvbnRleHRN
ZW51UHJveHlNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjRERTI1MTY4RkE0NDgwMEM5NEFG
QyAvKiBXZWJDb250ZXh0U3VwcGxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY4MDlBN0My
M0Q5MjI1RTAwQzI5N0QwIC8qIFdlYkNvb2tpZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
QzdGQjQ3MDIxRTk3REM1MDA5RTMyNDEgLyogV2ViQ29va2llSmFyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMzA5MzQ1MDEzMTVCOTREMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMzMwOTM0NDgxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFn
ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRl
eCAyOGJjMTJjMzQyM2Y5ZjI4MzU2YzNhODRjNjEyMjRjZmE0ZWQ3ZTk5Li4yYmI0NzllMzlkZTli
NmU5NTdmMjljZmI3ZWU4NTA2NGEwMGU1OTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTdG9yYWdlQXJlYU1hcC5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhTWFwTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDYWNoZVN0b3JhZ2VQcm92
aWRlci5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUphci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIgogI2lu
Y2x1ZGUgIldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlck1lc3NhZ2VzLmgiCkBAIC0yMzQsNiArMjM1
LDE4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpjb29raWVBY2NlcHRQb2xpY3lD
aGFuZ2VkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kKICAgICBtX2Nvb2tpZUFjY2VwdFBvbGljeSA9
IG5ld1BvbGljeTsKIH0KIAorI2lmIEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCit2
b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0FkZGVkKGNvbnN0IFN0cmluZyYg
aG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIGNvb2tpZXMpCit7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuY29va2llSmFyKCkuY29va2llc0FkZGVkKGhvc3QsIGNvb2tp
ZXMpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6Y29va2llc0RlbGV0ZWQo
KQoreworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNvb2tpZUphcigpLmNvb2tpZXNEZWxl
dGVkKCk7Cit9CisjZW5kaWYKKwogI2lmIEVOQUJMRShTSEFSRUFCTEVfUkVTT1VSQ0UpCiB2b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2FjaGVSZXNvdXJjZShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRs
ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggNTFmZGYzNTQ1MjRkOTE1ZGRmNmVkNTk0
YzdkMmMwZmQ4NjMzZDlkMS4uNzZkMjY2NTIwYzI2MGQxNTNiOTQxZDczOWJjNDQ5MDE4YzZlNGEz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CitzdHJ1Y3QgQ29va2llOwogc3RydWN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIGVudW0gY2xhc3Mg
SFRUUENvb2tpZUFjY2VwdFBvbGljeSA6IHVpbnQ4X3Q7CkBAIC04Myw2ICs4NCwxMSBAQCBwdWJs
aWM6CiAKICAgICBib29sIGNvb2tpZXNFbmFibGVkKCkgY29uc3Q7CiAKKyNpZiBIQVZFKENPT0tJ
RV9DSEFOR0VfTElTVEVORVJfQVBJKQorICAgIHZvaWQgY29va2llc0FkZGVkKGNvbnN0IFN0cmlu
ZyYgaG9zdCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2b2lkIGNvb2tp
ZXNEZWxldGVkKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyLCBXZWJDb3JlOjpIVFRQQ29va2llQWNj
ZXB0UG9saWN5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IDJhYTY4ODZlNTdhNTk5Y2JjMTdjMzVmNmI3NGU5OWQyYWIzYTg5ZTUuLjY5OTNmYTdlZjQ2
MGY3NTc2ZDYxY2ZlNGI2NDNkMjkwZjgyZDhkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KQEAgLTMxLDYgKzMxLDExIEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0T25MaW5lU3RhdGUoYm9v
bCBpc09uTGluZSk7CiAgICAgQ29va2llQWNjZXB0UG9saWN5Q2hhbmdlZChlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpOwogCisjaWYgSEFWRShDT09L
SUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBDb29raWVzQWRkZWQoU3RyaW5nIGhvc3QsIFZl
Y3RvcjxzdHJ1Y3QgV2ViQ29yZTo6Q29va2llPiBjb29raWVzKTsKKyAgICBDb29raWVzRGVsZXRl
ZCgpOworI2VuZGlmCisKICAgICBDaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShzdHJ1
Y3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyIHBvcnQpIC0+IChXZWJDb3JlOjpNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIEFzeW5jCiAg
ICAgTWVzc2FnZXNBdmFpbGFibGVGb3JQb3J0KHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXIgcG9ydCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NvY29hL1dlYkNvb2tpZUNhY2hlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2
YmM2NmQ5ZDRmYzZkMmY2NzY2NTBlY2M2ZGFhNWExYWEwNjA3MDUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9Db2NvYS9XZWJDb29raWVDYWNoZUNv
Y29hLm1tCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbXBvcnQgIldlYlByb2Nlc3MuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBXZWJDb29raWVDYWNoZTo6aW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgaWYgKCFt
X2luTWVtb3J5U3RvcmFnZVNlc3Npb24pIHsKKyAgICAgICAgU3RyaW5nIHNlc3Npb25OYW1lID0g
bWFrZVN0cmluZygiV2ViS2l0SW5Qcm9jZXNzU3RvcmFnZS0iLCBnZXRDdXJyZW50UHJvY2Vzc0lE
KCkpOworICAgICAgICBhdXRvIHN0b3JhZ2VTZXNzaW9uID0gYWRvcHRDRihXZWJDb3JlOjpjcmVh
dGVQcml2YXRlU3RvcmFnZVNlc3Npb24oc2Vzc2lvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSkpOworICAgICAgICBhdXRvIGNvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKF9DRlVSTFN0b3JhZ2VT
ZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RvcmFnZVNlc3Np
b24uZ2V0KCkpKTsKKyAgICAgICAgbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uID0gbWFrZVVuaXF1
ZTxOZXR3b3JrU3RvcmFnZVNlc3Npb24+KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25J
RCgpLCBXVEZNb3ZlKHN0b3JhZ2VTZXNzaW9uKSwgV1RGTW92ZShjb29raWVTdG9yYWdlKSwgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpJc0luTWVtb3J5Q29va2llU3RvcmU6Olllcyk7CisgICAgfQor
ICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUNhY2hlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mM2VkMjBjNjQ1MzNhYzc0YWI1YmZiZDdkYTNiMzg3
Nzg1YzljNjc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llQ2FjaGUuY3BwCkBAIC0wLDAgKzEsMTI0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkNvb2tpZUNhY2hlLmgiCisKKyNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK2Jvb2wgV2Vi
Q29va2llQ2FjaGU6OmlzU3VwcG9ydGVkKCkKK3sKKyNpZiBIQVZFKENPT0tJRV9DSEFOR0VfTElT
VEVORVJfQVBJKQorICAgIC8vIEZJWE1FOiBUaGlzIGNhbiBldmVudHVhbGx5IGJlIHJlbW92ZWQs
IHRoaXMgaXMgbWVyZWx5IHRvIGVuc3VyZSBhIHNtb290aCB0cmFuc2l0aW9uIHRvIHRoZSBuZXcg
QVBJLgorICAgIHJldHVybiBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkuc3VwcG9ydHNDb29raWVD
aGFuZ2VMaXN0ZW5lckFQSSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30K
KworU3RyaW5nIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBG
cmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3sKKyAgICBTdHJpbmcgaG9zdCA9IHVy
bC5ob3N0KCkudG9TdHJpbmcoKTsKKyAgICBpZiAoIW1faG9zdHNXaXRoSW5NZW1vcnlTdG9yYWdl
LmNvbnRhaW5zKGhvc3QpKSB7CisgICAgICAgIFZlY3RvcjxDb29raWU+IGNvb2tpZXM7CisgICAg
ICAgIGJvb2wgc3Vic2NyaWJlVG9Db29raWVDaGFuZ2VOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAg
ICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpEb21Db29raWVzRm9ySG9zdCh1cmwuaG9zdCgpLnRvU3RyaW5nKCks
IHN1YnNjcmliZVRvQ29va2llQ2hhbmdlTm90aWZpY2F0aW9ucyksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RG9tQ29va2llc0Zvckhvc3Q6OlJlcGx5KGNvb2tpZXMp
LCAwKSkKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIHBydW5lQ2FjaGVJZk5lY2Vz
c2FyeSgpOworICAgICAgICBtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5hZGQoaG9zdCk7Cisg
ICAgICAgIGZvciAoYXV0byYgY29va2llIDogY29va2llcykKKyAgICAgICAgICAgIGluTWVtb3J5
U3RvcmFnZVNlc3Npb24oKS5zZXRDb29raWUoY29va2llKTsKKyAgICB9CisgICAgcmV0dXJuIGlu
TWVtb3J5U3RvcmFnZVNlc3Npb24oKS5jb29raWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzLCBTaG91bGRB
c2tJVFA6Ok5vKS5maXJzdDsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQoreworICAgIFN0cmluZyBo
b3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOworICAgIGlmIChtX2hvc3RzV2l0aEluTWVtb3J5
U3RvcmFnZS5jb250YWlucyhob3N0KSkKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigp
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIFNob3VsZEFza0lUUDo6Tm8sIGNvb2tpZVN0cmluZyk7Cit9CisKK3ZvaWQgV2Vi
Q29va2llQ2FjaGU6OmNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3Rv
cjxDb29raWU+JiBjb29raWVzKQoreworICAgIGlmICghbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3Jh
Z2UuY29udGFpbnMoaG9zdCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoYXV0byYgY29v
a2llIDogY29va2llcykKKyAgICAgICAgaW5NZW1vcnlTdG9yYWdlU2Vzc2lvbigpLnNldENvb2tp
ZShjb29raWUpOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpjb29raWVzRGVsZXRlZCgpCit7
CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6Y2xlYXIoKQoreworI2lm
IEhBVkUoQ09PS0lFX0NIQU5HRV9MSVNURU5FUl9BUEkpCisgICAgaWYgKCFtX2hvc3RzV2l0aElu
TWVtb3J5U3RvcmFnZS5pc0VtcHR5KCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5zdWJzY3JpYmVGcm9tQ29va2ll
Q2hhbmdlTm90aWZpY2F0aW9ucyhtX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZSksIDApOworI2Vu
ZGlmCisgICAgbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2UuY2xlYXIoKTsKKyAgICBtX2luTWVt
b3J5U3RvcmFnZVNlc3Npb24gPSBudWxscHRyOworfQorCit2b2lkIFdlYkNvb2tpZUNhY2hlOjpj
bGVhckZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KQoreworICAgIGF1dG8gaXQgPSBtX2hvc3Rz
V2l0aEluTWVtb3J5U3RvcmFnZS5maW5kKGhvc3QpOworICAgIGlmIChpdCA9PSBtX2hvc3RzV2l0
aEluTWVtb3J5U3RvcmFnZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ob3N0c1dp
dGhJbk1lbW9yeVN0b3JhZ2UucmVtb3ZlKGl0KTsKKyAgICBpbk1lbW9yeVN0b3JhZ2VTZXNzaW9u
KCkuZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhWZWN0b3I8U3RyaW5nPiB7IGhvc3QgfSk7Cisj
aWYgSEFWRShDT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSkKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVuc3Vic2NyaWJlRnJv
bUNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnMoSGFzaFNldDxTdHJpbmc+IHsgaG9zdCB9KSwgMCk7
CisjZW5kaWYKK30KKwordm9pZCBXZWJDb29raWVDYWNoZTo6cHJ1bmVDYWNoZUlmTmVjZXNzYXJ5
KCkKK3sKKyAgICAvLyBXZSBtYXkgd2FudCB0byByYWlzZSB0aGlzIGxpbWl0IGlmIHdlIHN0YXJ0
IHVzaW5nIHRoZSBjYWNoZSBmb3IgdGhpcmQtcGFydHkgaWZyYW1lcy4KKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4Q2FjaGVkSG9zdHMgPSA1OworCisgICAgd2hpbGUgKG1faG9zdHNXaXRo
SW5NZW1vcnlTdG9yYWdlLnNpemUoKSA+PSBtYXhDYWNoZWRIb3N0cykKKyAgICAgICAgY2xlYXJG
b3JIb3N0KCptX2hvc3RzV2l0aEluTWVtb3J5U3RvcmFnZS5yYW5kb20oKSk7Cit9CisKKyNpZiAh
UExBVEZPUk0oQ09DT0EpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkNvb2tpZUNhY2hlOjpp
bk1lbW9yeVN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lF
VCgpOworICAgIHJldHVybiAqbV9pbk1lbW9yeVN0b3JhZ2VTZXNzaW9uOworfQorI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQwYzQxNmU1MjBjZWRjMjQ2YmUx
MmZhNTNmYmNmZTc4NmYzNTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUNhY2hlLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1NhbWVTaXRlSW5mby5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkNvb2tpZUNhY2hlIHsKK3B1YmxpYzoK
KyAgICBXZWJDb29raWVDYWNoZSgpID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNTdXBwb3J0ZWQo
KTsKKworICAgIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgV2ViQ29yZTo6RnJhbWVJZGVu
dGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZyk7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgp
OworCisgICAgdm9pZCBjbGVhcigpOworICAgIHZvaWQgY2xlYXJGb3JIb3N0KGNvbnN0IFN0cmlu
ZyYpOworCitwcml2YXRlOgorICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgaW5N
ZW1vcnlTdG9yYWdlU2Vzc2lvbigpOworICAgIHZvaWQgcHJ1bmVDYWNoZUlmTmVjZXNzYXJ5KCk7
CisKKyAgICBIYXNoU2V0PFN0cmluZz4gbV9ob3N0c1dpdGhJbk1lbW9yeVN0b3JhZ2U7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gbV9pbk1lbW9y
eVN0b3JhZ2VTZXNzaW9uOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCAzMjU4
MzA1Yzc4OWQ3NzVmZTE1YzFjMDgyOGMzNmU5ZTJmMmE4NjA5Li41YWIzMjQ1Y2NkNWRhYzFjZjUz
MWQ0ZGViNGQwZTFhODVkMDY5MWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VTZXNzaW9uUHJvdmlkZXIuaD4KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC04OCw2ICs4OSwyMyBAQCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja0Nv
b2tpZXMoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLAog
fQogI2VuZGlmCiAKK2Jvb2wgV2ViQ29va2llSmFyOjppc0VsaWdpYmxlRm9yQ2FjaGUoV2ViRnJh
bWUmIGZyYW1lLCBjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJl
c291cmNlVVJMKSBjb25zdAoreworICAgIGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkgPyBmcmFt
ZS5wYWdlKCktPmNvcmVQYWdlKCkgOiBudWxscHRyOworICAgIGlmICghcGFnZSB8fCAhcGFnZS0+
c2V0dGluZ3MoKS5pblByb2Nlc3NDb29raWVDYWNoZUVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgaWYgKCFtX2NhY2hlLmlzU3VwcG9ydGVkKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIEZvciBub3csIHdlIG9ubHkgY2FjaGUgY29va2llcyBmb3IgZmly
c3QtcGFydHkgY29udGVudC4gVGhpcmQtcGFydHkgY29va2llIGNhY2hpbmcgaXMgYSBiaXQgbW9y
ZSBjb21wbGljYXRlZCBkdWUgdG8gcGFydGl0aW9uaW5nIGFuZCBzdG9yYWdlIGFjY2Vzcy4KKyAg
ICBSZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiB7IHJlc291cmNlVVJMIH07CisgICAg
aWYgKHJlc291cmNlRG9tYWluLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIGZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgUmVnaXN0cmFibGVEb21haW4geyBmaXJz
dFBhcnR5Rm9yQ29va2llcyB9ID09IHJlc291cmNlRG9tYWluOworfQorCiBTdHJpbmcgV2ViQ29v
a2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgYXV0byogd2ViRnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpID8gV2Vi
RnJhbWU6OmZyb21Db3JlRnJhbWUoKmRvY3VtZW50LmZyYW1lKCkpIDogbnVsbHB0cjsKQEAgLTEw
MCwxMiArMTE4LDE3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIHsg
fTsKICNlbmRpZgogCisgICAgYXV0byBzYW1lU2l0ZUluZm8gPSBDb29raWVKYXI6OnNhbWVTaXRl
SW5mbyhkb2N1bWVudCk7CisgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IENvb2tpZUph
cjo6c2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAgICAgYXV0byBm
cmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBhdXRvIHBhZ2VJRCA9IHdlYkZyYW1l
LT5wYWdlKCktPmlkZW50aWZpZXIoKTsKIAorICAgIGlmIChpc0VsaWdpYmxlRm9yQ2FjaGUoKndl
YkZyYW1lLCBkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpKQorICAgICAgICBy
ZXR1cm4gbV9jYWNoZS5jb29raWVzRm9yRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVz
KCksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzKTsKKwogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQgPSBmYWxzZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oZG9jdW1lbnQu
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgc2FtZVNpdGVJbmZvKGRvY3VtZW50KSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQsIHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpLCBz
aG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShkb2N1bWVu
dC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcywgc2hvdWxkQXNrSVRQSW5OZXR3b3JrUHJvY2Vzcyks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6
UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQpLCAwKSkKICAgICAgICAg
cmV0dXJuIHsgfTsKIAogICAgIHJldHVybiBjb29raWVTdHJpbmc7CkBAIC0xMjMsMTAgKzE0Niwz
NCBAQCB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdAogICAgICAgICByZXR1cm47CiAjZW5kaWYKIAor
ICAgIGF1dG8gc2FtZVNpdGVJbmZvID0gQ29va2llSmFyOjpzYW1lU2l0ZUluZm8oZG9jdW1lbnQp
OwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgYXV0byBwYWdl
SUQgPSB3ZWJGcmFtZS0+cGFnZSgpLT5pZGVudGlmaWVyKCk7CiAKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNG
cm9tRE9NKGRvY3VtZW50LmZpcnN0UGFydHlGb3JDb29raWVzKCksIHNhbWVTaXRlSW5mbyhkb2N1
bWVudCksIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNz
LCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICBpZiAoaXNFbGlnaWJsZUZvckNhY2hlKCp3ZWJGcmFt
ZSwgZG9jdW1lbnQuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKSkKKyAgICAgICAgbV9jYWNo
ZS5zZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOworCisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpT
ZXRDb29raWVzRnJvbURPTShkb2N1bWVudC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBzaG91bGRBc2tJVFBJbk5ldHdvcmtQcm9jZXNz
LCBjb29raWVTdHJpbmcpLCAwKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNvb2tpZXNBZGRl
ZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiBjb29r
aWVzKQoreworICAgIG1fY2FjaGUuY29va2llc0FkZGVkKGhvc3QsIGNvb2tpZXMpOworfQorCit2
b2lkIFdlYkNvb2tpZUphcjo6Y29va2llc0RlbGV0ZWQoKQoreworICAgIG1fY2FjaGUuY29va2ll
c0RlbGV0ZWQoKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGUoKQoreworICAg
IG1fY2FjaGUuY2xlYXIoKTsKK30KKwordm9pZCBXZWJDb29raWVKYXI6OmNsZWFyQ2FjaGVGb3JI
b3N0KGNvbnN0IFN0cmluZyYgaG9zdCkKK3sKKyAgICBtX2NhY2hlLmNsZWFyRm9ySG9zdChob3N0
KTsKIH0KIAogYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50
JiBkb2N1bWVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmgKaW5kZXggNTI5NDhhOTFkZTVmMTQ1MjQ5OTEwZGQ0OTgzNDQ1MjAwMDFh
OTdmYi4uZDJkOTQ0NmM2YTk3NzI1MjgxMWNlM2NlYTg5ZjBkZjA3ZWY3YWVjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMTAgKzI1
LDE3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiV2ViQ29va2llQ2FjaGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1
Y3QgQ29va2llOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViRnJhbWU7CisK
IGNsYXNzIFdlYkNvb2tpZUphciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpDb29raWVKYXIgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViQ29va2llSmFyPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYkNvb2tpZUphcik7IH0KQEAgLTM5LDggKzQ2LDE4IEBAIHB1YmxpYzoK
ICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyPiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CiAgICAgYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgZmlu
YWw7CisKKyAgICB2b2lkIGNvb2tpZXNBZGRlZChjb25zdCBTdHJpbmcmIGhvc3QsIGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdm9pZCBjb29raWVzRGVsZXRlZCgpOworCiBw
cml2YXRlOgogICAgIFdlYkNvb2tpZUphcigpOworCisgICAgdm9pZCBjbGVhckNhY2hlKCkgZmlu
YWw7CisgICAgdm9pZCBjbGVhckNhY2hlRm9ySG9zdChjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAg
ICBib29sIGlzRWxpZ2libGVGb3JDYWNoZShXZWJGcmFtZSYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2VVUkwpIGNvbnN0OworCisgICAgbXV0YWJs
ZSBXZWJDb29raWVDYWNoZSBtX2NhY2hlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg2ODNj
MTA0ZGJmYTJjMDVmNWU4NGI1OTYwZmQ2ODJhZTI0NTFkYWYuLjhhYmY2NDVlYWIzYmUyYjNiMjk3
MTE0MDcyZjFlNGU4ODQ5YzcxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYktpdDo6TGliV2ViUlRDUHJvdmlkZXI+KCksCiAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksCiAg
ICAgICAgIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBX
ZWJDb29raWVKYXI6OmNyZWF0ZSgpLAorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5j
b29raWVKYXIoKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJQcm9ncmVzc1RyYWNrZXJDbGll
bnQ+KCp0aGlzKSwKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+
KCkKICAgICApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDY4
MTM3NmNlN2NhMTEyMTQ0YmM5M2Q5Mjc3OWRiM2E4YmVmN2ZiMGYuLjQ3YzljMDhhZGVlNDU4NWQ5
MTMzNDZiMWFiZGVlODY3YzVmMWNiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKKyNpbmNsdWRlICJXZWJDb29raWVKYXIuaCIK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5o
IgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKQEAgLTIwNSw2ICsyMDYs
NyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAsIG1fd2ViSW5zcGVjdG9ySW50ZXJy
dXB0RGlzcGF0Y2hlcihXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpjcmVhdGUoKSkK
ICAgICAsIG1fd2ViTG9hZGVyU3RyYXRlZ3koKm5ldyBXZWJMb2FkZXJTdHJhdGVneSkKICAgICAs
IG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgp
KQorICAgICwgbV9jb29raWVKYXIoV2ViQ29va2llSmFyOjpjcmVhdGUoKSkKICAgICAsIG1fZG5z
UHJlZmV0Y2hIeXN0ZXJlcmlzKFt0aGlzXShQQUw6Okh5c3RlcmVzaXNTdGF0ZSBzdGF0ZSkgeyBp
ZiAoc3RhdGUgPT0gUEFMOjpIeXN0ZXJlc2lzU3RhdGU6OlN0b3BwZWQpIG1fZG5zUHJlZmV0Y2hl
ZEhvc3RzLmNsZWFyKCk7IH0pCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAg
LCBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6OmNyZWF0ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggNjFlMDYyZTU1N2E5ZmUxMzlkMWU5NzU4OWNhY2U2NmRkZTM0NTkyMC4uNjhlM2MzYzU3NzI4
OGU4YjdiOGFmMTA3OTU5MWM2MmVhNTk4ZjZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0xMjAsNiArMTIwLDcgQEAgY2xhc3MgVXNlckRhdGE7CiBjbGFzcyBXYXls
YW5kQ29tcG9zaXRvckRpc3BsYXk7CiBjbGFzcyBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Owog
Y2xhc3MgV2ViQ2FjaGVTdG9yYWdlUHJvdmlkZXI7CitjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFz
cyBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE7CiBjbGFzcyBXZWJDb25uZWN0aW9uVG9V
SVByb2Nlc3M7CiBjbGFzcyBXZWJGcmFtZTsKQEAgLTI5Myw2ICsyOTQsNyBAQCBwdWJsaWM6CiAg
ICAgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSogYXV0b21hdGlvblNlc3Npb25Qcm94eSgpIHsg
cmV0dXJuIG1fYXV0b21hdGlvblNlc3Npb25Qcm94eS5nZXQoKTsgfQogCiAgICAgV2ViQ2FjaGVT
dG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyKCkgeyByZXR1cm4gbV9jYWNoZVN0
b3JhZ2VQcm92aWRlci5nZXQoKTsgfQorICAgIFdlYkNvb2tpZUphciYgY29va2llSmFyKCkgeyBy
ZXR1cm4gbV9jb29raWVKYXIuZ2V0KCk7IH0KICAgICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciYg
d2ViU29ja2V0Q2hhbm5lbE1hbmFnZXIoKSB7IHJldHVybiBtX3dlYlNvY2tldENoYW5uZWxNYW5h
Z2VyOyB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTU4LDYgKzU2MCw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIFJlZjxXZWJDYWNoZVN0b3JhZ2VQcm92aWRlcj4gbV9jYWNo
ZVN0b3JhZ2VQcm92aWRlcjsKKyAgICBSZWY8V2ViQ29va2llSmFyPiBtX2Nvb2tpZUphcjsKICAg
ICBXZWJTb2NrZXRDaGFubmVsTWFuYWdlciBtX3dlYlNvY2tldENoYW5uZWxNYW5hZ2VyOwogCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPExpYldlYlJUQ05ldHdvcms+IG1fbGliV2ViUlRDTmV0d29yazsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29va2ll
QWNjZXB0UG9saWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9D
b29raWVBY2NlcHRQb2xpY3kubW0KaW5kZXggN2FhMmI1YTJhMTVhZDJjNGUyOTdjZmQyNDMyOGE5
ZDg5YTk2NDBkMy4uODkwZDcyMzRmYTNlMmYyNjkwNzg2NjE4MWZmMjM0OWVkYTc0NTRlOSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVBY2Nl
cHRQb2xpY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9D
b29raWVBY2NlcHRQb2xpY3kubW0KQEAgLTMzLDYgKzMzLDEwIEBACiAjaW1wb3J0IDxwYWwvc3Bp
L2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCisvLyBGSVhN
RTogVGhpcyB0ZXN0IGlzIGNhdXNpbmcgZmxha2luZXNzIGluIEFQSSB0ZXN0cy4gSXQgc2V0cyB0
aGUgY29va2llIGFjY2VwdCBwb2xpY3kgdG8gJ05ldmVyJworLy8gYW5kIGZvbGxvd2luZyB0ZXN0
cyBvZnRlbiBhcmUgdW5hYmxlIHRvIHNldCBjb29raWVzLgorI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQorCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKIHN0YXRp
YyBSZXRhaW5QdHI8V0tTY3JpcHRNZXNzYWdlPiBsYXN0U2NyaXB0TWVzc2FnZTsKIApAQCAtNzIs
MyArNzYsNSBAQCBURVNUKFdlYktpdCwgQ29va2llQWNjZXB0UG9saWN5KQogICAgIFtbTlNIVFRQ
Q29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0Q29va2llQWNjZXB0UG9s
aWN5Om9yaWdpbmFsQ29va2llQWNjZXB0UG9saWN5XTsKICAgICBbW05TSFRUUENvb2tpZVN0b3Jh
Z2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2VdIF9zYXZlQ29va2llc107CiB9CisKKyNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ29va2llUHJpdmF0ZUJyb3dzaW5nLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVQcml2YXRlQnJvd3NpbmcubW0KaW5kZXgg
ZjUwMGYzZmViYWJmODE2NWM0YWQ1OTkwOTFjMmQyOGQzYThhNjNjZi4uMTg4OWE5ZjE0ZDZhODIy
Y2VhZDA3N2NiYmY0MjMzZDkwNDQ1Nzk4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVQcml2YXRlQnJvd3NpbmcubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db29raWVQcml2YXRlQnJvd3NpbmcubW0K
QEAgLTI2LDExICsyNiwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2wuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBzdGF0aWMgYm9vbCBy
ZWNlaXZlZEFsZXJ0OwogCkBAIC02OCwzICs3MSw2MCBAQCBURVNUKFdlYktpdCwgQ29va2llUHJp
dmF0ZUJyb3dzaW5nKQogICAgIFt2aWV3MiBsb2FkSFRNTFN0cmluZzphbGVydE9sZENvb2tpZSBi
YXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkQWxlcnQpOwogfQorCitURVNUKFdl
YktpdCwgQ29va2llQ2FjaGVTeW5jQWNyb3NzUHJvY2VzcykKK3sKKyAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwor
ICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vic2l0ZURhdGFTdG9y
ZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CisgICAgYXV0byB2aWV3MSA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdmlldzIg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBbdmlldzEgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiZm9vIiBiYXNlVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKyAgICBbdmlldzIgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiYmFyIiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKworICAgIC8vIENhY2hlIERPTSBjb29raWVz
IGluIGZpcnN0IFdlYlZpZXcuCisgICAgX19ibG9jayBib29sIGRvbmVFdmFsdWF0aW5nSmF2YVNj
cmlwdCA9IGZhbHNlOworICAgIFt2aWV3MSBldmFsdWF0ZUphdmFTY3JpcHQ6QCJkb2N1bWVudC5j
b29raWU7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJsZSBjb29raWUsIE5TRXJyb3Ig
KiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbY29va2llIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIChOU1N0cmluZyAqKWNvb2tpZSk7CisgICAgICAg
IGRvbmVFdmFsdWF0aW5nSmF2YVNjcmlwdCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQpOworCisgICAgLy8gQ2Fj
aGUgRE9NIGNvb2tpZXMgaW4gc2Vjb25kIFdlYlZpZXcuCisgICAgZG9uZUV2YWx1YXRpbmdKYXZh
U2NyaXB0ID0gZmFsc2U7CisgICAgW3ZpZXcyIGV2YWx1YXRlSmF2YVNjcmlwdDpAImRvY3VtZW50
LmNvb2tpZTsiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgX051bGxhYmxlIGNvb2tpZSwgTlNFcnJv
ciAqIF9OdWxsYWJsZSBlcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtjb29raWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgKE5TU3RyaW5nICopY29va2llKTsKKyAgICAg
ICAgZG9uZUV2YWx1YXRpbmdKYXZhU2NyaXB0ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmVFdmFsdWF0aW5nSmF2YVNjcmlwdCk7CisKKyAgICAvLyBT
ZXR0aW5nIGNvb2tpZSBpbiBmaXJzdCBXZWJ2aWV3IC8gcHJvY2Vzcy4KKyAgICBkb25lRXZhbHVh
dGluZ0phdmFTY3JpcHQgPSBmYWxzZTsKKyAgICBbdmlldzEgZXZhbHVhdGVKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuY29va2llID0gJ2Zvbz1iYXInOyBkb2N1bWVudC5jb29raWU7IiBjb21wbGV0aW9u
SGFuZGxlcjpeKGlkIF9OdWxsYWJsZSBjb29raWUsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3Ip
IHsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbY29v
a2llIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoImZvbz1iYXIiLCAoTlNTdHJpbmcgKiljb29raWUpOworICAgICAgICBkb25lRXZhbHVh
dGluZ0phdmFTY3JpcHQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZUV2YWx1YXRpbmdKYXZhU2NyaXB0KTsKKworICAgIC8vIE1ha2luZyBzdXJlIG5l
dyBjb29raWUgZ2V0cyBzeW5jJ2QgdG8gc2Vjb25kIFdlYlZpZXcgcHJvY2Vzcy4KKyAgICBpbnQg
dGltZW91dCA9IDA7CisgICAgX19ibG9jayBTdHJpbmcgY29va2llU3RyaW5nOworICAgIGRvIHsK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c2xlZXAoMC4xKTsKKyAgICAgICAgZG9uZUV2
YWx1YXRpbmdKYXZhU2NyaXB0ID0gZmFsc2U7CisgICAgICAgIFt2aWV3MiBldmFsdWF0ZUphdmFT
Y3JpcHQ6QCJkb2N1bWVudC5jb29raWU7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIF9OdWxsYWJs
ZSBjb29raWUsIE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKyAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtjb29raWUgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgICAgICBjb29raWVTdHJpbmcgPSAoTlNT
dHJpbmcgKiljb29raWU7CisgICAgICAgICAgICBkb25lRXZhbHVhdGluZ0phdmFTY3JpcHQgPSB0
cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
RXZhbHVhdGluZ0phdmFTY3JpcHQpOworICAgICAgICArK3RpbWVvdXQ7CisgICAgfSB3aGlsZSAo
Y29va2llU3RyaW5nICE9ICIiICYmIHRpbWVvdXQgPCA1MCk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCJmb289YmFyIiwgY29va2llU3RyaW5nKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNzc3N2M0NWMxM2IwYzU2N2I3
MWE5MTk5OTVkMmU2M2IwMGE5MDAyLi5mZmQ2ZGI3YjI5MDc4YTA4MDBiZDcwZjcxM2VlZGUzOTdm
YTZkMjI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDItMTcgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbV0syXVtDb2NvYV0gSW1wbGVtZW50IGluLVdl
YlByb2Nlc3MgY29va2llIGNhY2hlIHRvIGF2b2lkIHN5bmMgSVBDIGZvciBkb2N1bWVudC5jb29r
aWUgaW4gbW9zdCBjYXNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjA3NTkzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjAyNzAyNz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBBZGQgbGF5b3V0IHRl
c3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29v
a2llLWFmdGVyLXNob3dNb2RhbERpYWxvZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9n
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29r
aWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9z
ZS1tb2RhbC1kaWFsb2cuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9jb29raWVz
L3Jlc291cmNlcy9kb2N1bWVudC1jb29raWUtZHVyaW5nLWlmcmFtZS1wYXJzaW5nLWlmcmFtZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1j
b29raWUtYW5kLXNlcnZlLnBocDogQWRkZWQuCisKIDIwMjAtMDItMTcgIEphY29iIFVwaG9mZiAg
PGphY29iX3VwaG9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyB3azIgXSB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktcm90YXRl
ZC5odG1sIGlzIGZsYWt5IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9kb2N1bWVudC1jb29raWUtYWZ0
ZXItc2hvd01vZGFsRGlhbG9nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGFmOTI0YmZiN2U4
MWViM2QwY2Y0ZDNkNDJjYjIzMDhhNDQ1MzUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFs
b2ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29v
a2llIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIGFmdGVyIGEgc2hvd01vZGFsRGlhbG9nKCkgY2Fs
bAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBub3JtYWxpemVDb29raWUo
ZG9jdW1lbnQuY29va2llKSBpcyAidGVzdEtleT10ZXN0VmFsdWUiCitQQVNTIG5vcm1hbGl6ZUNv
b2tpZShkb2N1bWVudC5jb29raWUpIGlzICJmb289YmFyOyB0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWFmdGVy
LXNob3dNb2RhbERpYWxvZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2Rv
Y3VtZW50LWNvb2tpZS1hZnRlci1zaG93TW9kYWxEaWFsb2cuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YWI4
NDdiMzNkNTE5OGU5NjZkYTdiMDhjZWI4ODYwYTFkNjk0N2VhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1hZnRlci1zaG93
TW9kYWxEaWFsb2cuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nvb2tpZXMtdGVzdC1wcmUuanMnPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aW5wdXQgaWQ9InRlc3RCdXR0b24iIHR5cGU9ImJ1
dHRvbiIgdmFsdWU9IkNsaWNrIG1lIj48L2lucHV0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdU
ZXN0cyB0aGF0IGRvY3VtZW50LmNvb2tpZSByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSBhZnRlciBh
IHNob3dNb2RhbERpYWxvZygpIGNhbGwnKTsKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5zZXRDYW5PcGVuV2luZG93cygpOwor
Cit0ZXN0QnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7CisgICAgZG9jdW1lbnQuY29va2llID0gInRl
c3RLZXk9dGVzdFZhbHVlIjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNv
b2tpZShkb2N1bWVudC5jb29raWUpJywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICBzaG93
TW9kYWxEaWFsb2coInJlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHA/Y29va2llLW5h
bWU9Zm9vJmNvb2tpZS12YWx1ZT1iYXImZGVzdGluYXRpb249Y2xvc2UtbW9kYWwtZGlhbG9nLmh0
bWwiKTsKKworICAgIC8vIFRoaXMgaXMgc28gdGhlIGNvb2tpZSBnZXRzIHJlbW92ZWQgYXQgdGhl
IGVuZCBvZiB0aGUgdGVzdC4KKyAgICByZWdpc3RlckNvb2tpZUZvckNsZWFudXAoJ2Zvbz1iYXI7
IHBhdGg9LycpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnbm9ybWFsaXplQ29va2llKGRv
Y3VtZW50LmNvb2tpZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUnKTsKKworICAgIGZp
bmlzaEpTVGVzdCgpOworfQorCitvbmxvYWQgPSAoKSA9PiB7CisgICAgaW50ZXJuYWxzLndpdGhV
c2VyR2VzdHVyZSgoKSA9PiB7CisgICAgICAgIHRlc3RCdXR0b24uY2xpY2soKTsKKyAgICB9KTsK
K307Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSdyZXNvdXJjZXMvY29va2llcy10ZXN0LXBvc3Qu
anMnPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNv
b2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjZjVh
ZGE4YzQ5YWY1MjQ3MDdlYWQyZmExOGI0ZTYzZDE5MjIzYTQKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJh
bWUtcGFyc2luZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhhdCBkb2N1
bWVudC5jb29raWUgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgYWZ0ZXIgYSBzaG93TW9kYWxEaWFs
b2coKSBjYWxsCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vcm1hbGl6
ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJ0ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgbm9y
bWFsaXplQ29va2llKGNvb2tpZXNJbkZyYW1lKSBpcyAiZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFs
dWUiCitQQVNTIG5vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpIGlzICJmb289YmFyOyB0
ZXN0S2V5PXRlc3RWYWx1ZSIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMv
ZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZjI5ZWZiNTM4Y2E0N2UyMjhiNzM4ZmM1M2Q5NTA0NDlkYTljY2Ji
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL2RvY3Vt
ZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmcuaHRtbApAQCAtMCwwICsxLDM0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0ncmVzb3VyY2VzL2Nv
b2tpZXMtdGVzdC1wcmUuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0Pgor
ZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgZG9jdW1lbnQuY29va2llIHJldHVybnMgdGhlIHJpZ2h0
IHZhbHVlIGFmdGVyIGEgc2hvd01vZGFsRGlhbG9nKCkgY2FsbCcpOworanNUZXN0SXNBc3luYyA9
IHRydWU7CisKK2Z1bmN0aW9uIHZhbGlkYXRlQ29va2llc0R1cmluZ0NoaWxkRnJhbWVQYXJzaW5n
KF9jb29raWVzSW5GcmFtZSkKK3sKKyAgICBjb29raWVzSW5GcmFtZSA9IF9jb29raWVzSW5GcmFt
ZTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShjb29raWVzSW5G
cmFtZSknLCAnZm9vPWJhcjsgdGVzdEtleT10ZXN0VmFsdWUnKTsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUpJywgJ2Zvbz1iYXI7IHRl
c3RLZXk9dGVzdFZhbHVlJyk7CisgICAgZmluaXNoSlNUZXN0KCk7ICAgIAorfQorCitvbmxvYWQg
PSAoKSA9PiB7CisgICAgZG9jdW1lbnQuY29va2llID0gInRlc3RLZXk9dGVzdFZhbHVlIjsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ25vcm1hbGl6ZUNvb2tpZShkb2N1bWVudC5jb29raWUp
JywgJ3Rlc3RLZXk9dGVzdFZhbHVlJyk7CisKKyAgICAvLyBUaGlzIGlzIHNvIHRoZSBjb29raWUg
Z2V0cyByZW1vdmVkIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisgICAgcmVnaXN0ZXJDb29raWVG
b3JDbGVhbnVwKCdmb289YmFyOyBwYXRoPS8nKTsKKworICAgIGxldCBpZnJhbWUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnJhbWUuc3JjID0gInJlc291cmNlcy9z
ZXQtY29va2llLWFuZC1zZXJ2ZS5waHA/Y29va2llLW5hbWU9Zm9vJmNvb2tpZS12YWx1ZT1iYXIm
ZGVzdGluYXRpb249ZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1pZnJhbWUu
aHRtbCI7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpOworfTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9J3Jlc291cmNlcy9jb29raWVzLXRlc3QtcG9zdC5qcyc+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2Nvb2tpZXMvcmVzb3VyY2VzL2Nsb3NlLW1vZGFsLWRpYWxvZy5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9zZS1tb2RhbC1kaWFsb2cuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZjU2OGRmZWRiYjJkM2E5NWEyZjE0M2U2ZWYxYzgyMWVhY2JkYTJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9jbG9z
ZS1tb2RhbC1kaWFsb2cuaHRtbApAQCAtMCwwICsxLDcgQEAKKzxzY3JpcHQ+CitvbmxvYWQgPSAo
KSA9PiB7CisgICAgY2xvc2UoKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
dGVzdFJ1bm5lci5hYm9ydE1vZGFsKCk7Cit9OworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1kdXJp
bmctaWZyYW1lLXBhcnNpbmctaWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nv
b2tpZXMvcmVzb3VyY2VzL2RvY3VtZW50LWNvb2tpZS1kdXJpbmctaWZyYW1lLXBhcnNpbmctaWZy
YW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJkN2FiN2EzOTIyZDEwOGExZjYwMjc5OWU2NjgzNDM1YTg5
OTI0ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY29va2llcy9y
ZXNvdXJjZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy1pZnJhbWUuaHRt
bApAQCAtMCwwICsxLDMgQEAKKzxzY3JpcHQ+Cit0b3AudmFsaWRhdGVDb29raWVzRHVyaW5nQ2hp
bGRGcmFtZVBhcnNpbmcoZG9jdW1lbnQuY29va2llKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9jb29raWVzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1z
ZXJ2ZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nvb2tpZXMvcmVzb3VyY2VzL3NldC1j
b29raWUtYW5kLXNlcnZlLnBocApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OWY0M2YyOWU4NTJkZGNjMDlmOTY5Zjg5
OWU4ZjNlMTJhYmFhODQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9jb29raWVzL3Jlc291cmNlcy9zZXQtY29va2llLWFuZC1zZXJ2ZS5waHAKQEAgLTAsMCArMSwx
MyBAQAorPD9waHAKKyRjb29raWVOYW1lID0gJF9HRVRbJ2Nvb2tpZS1uYW1lJ107CiskY29va2ll
VmFsdWUgPSAkX0dFVFsnY29va2llLXZhbHVlJ107CiskZGVzdGluYXRpb24gPSAkX0dFVFsnZGVz
dGluYXRpb24nXTsKK2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2h0bWwiKTsKK2hlYWRlcigi
Q2FjaGUtQ29udHJvbDogbm8tc3RvcmUiKTsKK2hlYWRlcigiU2V0LUNvb2tpZTogJHtjb29raWVO
YW1lfT0ke2Nvb2tpZVZhbHVlfTsgcGF0aD0vIik7CiskZnAgPSBmb3BlbigkZGVzdGluYXRpb24s
ICdyYicpOworaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZpbGVzaXplKCRkZXN0aW5hdGlv
bikpOworCitmcGFzc3RocnUoJGZwKTsKK2V4aXQ7Cis/Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>