<?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>230649</bug_id>
          
          <creation_ts>2021-09-22 16:06:57 -0700</creation_ts>
          <short_desc>Add support for running service workers on the main thread</short_desc>
          <delta_ts>2021-09-30 16:28:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>231045</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>pangle</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796246</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-22 16:06:57 -0700</bug_when>
    <thetext>Add support for running service workers on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796260</commentid>
    <comment_count>1</comment_count>
      <attachid>438988</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-22 16:22:27 -0700</bug_when>
    <thetext>Created attachment 438988
WIP patch

Forces all service workers on the main thread for now to see if EWS is happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796482</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-23 07:18:04 -0700</bug_when>
    <thetext>Good, only 2 test failures and they are tests about hung service workers (and their termination) and this is obviously not working as well if the service worker runs on the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796525</commentid>
    <comment_count>3</comment_count>
      <attachid>439051</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-23 09:17:56 -0700</bug_when>
    <thetext>Created attachment 439051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796543</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-23 10:08:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/83453190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796985</commentid>
    <comment_count>5</comment_count>
      <attachid>439051</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-09-24 11:46:14 -0700</bug_when>
    <thetext>Comment on attachment 439051
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Add support for running service workers on the main thread (off by default).

Can you expand on the change log here and add some information about what the goal is here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797544</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-27 09:59:38 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; Comment on attachment 439051 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=439051&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Add support for running service workers on the main thread (off by default).
&gt; 
&gt; Can you expand on the change log here and add some information about what
&gt; the goal is here.

Ok, I will add more information.

Basically, the idea is to support uses where the injected bundle needs to be able to gets access to the service worker global object and script it. This is not practical if the service worker runs off the main thread.

Note that this is not for service workers in general. It will be only for very specific service workers that need to interact with the injected bundle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797551</commentid>
    <comment_count>7</comment_count>
      <attachid>439366</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-27 10:10:33 -0700</bug_when>
    <thetext>Created attachment 439366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798539</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-29 13:47:23 -0700</bug_when>
    <thetext>Ping review? I need this to actually start adding support for service worker scripting from injected bundle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798548</commentid>
    <comment_count>9</comment_count>
      <attachid>439366</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-29 13:56:45 -0700</bug_when>
    <thetext>Comment on attachment 439366
Patch

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

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2492
&gt; +        return makeUnique&lt;SWServer&gt;(makeUniqueRef&lt;WebSWOriginStore&gt;(), info.processTerminationDelayEnabled, WTFMove(path), sessionID, workerThreadMode, parentProcessHasServiceWorkerEntitlement(), [this, sessionID](auto&amp;&amp; jobData, bool shouldRefreshCache, auto&amp;&amp; request, auto&amp;&amp; completionHandler) mutable {

Not new to this patch, but I don&apos;t think we need the unsafe capture of this here.  Below we could also just capture a RefPtr&lt;Connection&gt; instead of this.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:489
&gt; +- (BOOL)shouldRunServiceWorkersOnMainThread

ForTesting would be nice on this here and everywhere else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798550</commentid>
    <comment_count>10</comment_count>
      <attachid>439366</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-29 14:00:09 -0700</bug_when>
    <thetext>Comment on attachment 439366
Patch

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

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2492
&gt;&gt; +        return makeUnique&lt;SWServer&gt;(makeUniqueRef&lt;WebSWOriginStore&gt;(), info.processTerminationDelayEnabled, WTFMove(path), sessionID, workerThreadMode, parentProcessHasServiceWorkerEntitlement(), [this, sessionID](auto&amp;&amp; jobData, bool shouldRefreshCache, auto&amp;&amp; request, auto&amp;&amp; completionHandler) mutable {
&gt; 
&gt; Not new to this patch, but I don&apos;t think we need the unsafe capture of this here.  Below we could also just capture a RefPtr&lt;Connection&gt; instead of this.

NetworkProcess owns the SWSessions and SWSession is not ref-counted. Therefore, capturing |this| seems safe to me?

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:489
&gt;&gt; +- (BOOL)shouldRunServiceWorkersOnMainThread
&gt; 
&gt; ForTesting would be nice on this here and everywhere else.

Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798611</commentid>
    <comment_count>11</comment_count>
      <attachid>439669</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-29 15:27:30 -0700</bug_when>
    <thetext>Created attachment 439669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798731</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-29 19:20:09 -0700</bug_when>
    <thetext>Committed r283295 (242320@main): &lt;https://commits.webkit.org/242320@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439669.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438988</attachid>
            <date>2021-09-22 16:22:27 -0700</date>
            <delta_ts>2021-09-23 09:17:43 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>ServiceWorkers_main_thread_wip.patch</filename>
            <type>text/plain</type>
            <size>35248</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJD
b25uZWN0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAKaW5kZXggMzU2YWIwNTc2MTAzLi42Njc4MmVjZGUz
ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwCkBAIC02MDksOCArNjA5LDYgQEAgdm9p
ZCBzZXRNYXRjaGluZ0l0ZW1zQ29udGV4dFN1c3BlbmRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjdXJyZW50Q29udGV4dCwgSGEKIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmZvcmdldEFj
dGl2aXR5Rm9yQ3VycmVudFRocmVhZCgpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
Ci0KICAgICB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlQ29ubmVjdGlvbk1h
cExvY2sgfTsKICAgICAgICAgcmVtb3ZlSXRlbXNNYXRjaGluZ0N1cnJlbnRUaHJlYWQobV9kYXRh
YmFzZUNvbm5lY3Rpb25NYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKaW5kZXggNzU3NWVjNzQ3YThlLi45ZmJjOTRlN2NlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTkyLDEwICs1OTIsMTAgQEAgdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjp3YWl0Rm9yTWV0aG9kQ29t
cGxldGlvbigpCiAgICAgaWYgKCFtX3dvcmtlckdsb2JhbFNjb3BlKQogICAgICAgICByZXR1cm47
CiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IG1fd29ya2VyR2xvYmFsU2NvcGUtPnRocmVh
ZCgpLnJ1bkxvb3AoKTsKLSAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3Nh
Z2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwogICAgIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1f
d29ya2VyQ2xpZW50V3JhcHBlci5wdHIoKTsKLSAgICB3aGlsZSAobV93b3JrZXJHbG9iYWxTY29w
ZSAmJiBjbGllbnRXcmFwcGVyICYmICFjbGllbnRXcmFwcGVyLT5zeW5jTWV0aG9kRG9uZSgpICYm
IHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7Ci0gICAgICAgIHJlc3VsdCA9IHJ1
bkxvb3AucnVuSW5Nb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIG1fdGFza01vZGUpOyAv
LyBNYXkgY2F1c2UgdGhpcyBicmlkZ2UgdG8gZ2V0IGRpc2Nvbm5lY3RlZCwgd2hpY2ggbWFrZXMg
bV93b3JrZXJHbG9iYWxTY29wZSBiZWNvbWUgbnVsbC4KKyAgICB3aGlsZSAobV93b3JrZXJHbG9i
YWxTY29wZSAmJiBjbGllbnRXcmFwcGVyICYmICFjbGllbnRXcmFwcGVyLT5zeW5jTWV0aG9kRG9u
ZSgpICYmIHN1Y2Nlc3MpIHsKKyAgICAgICAgc3VjY2VzcyA9IHJ1bkxvb3AucnVuSW5Nb2RlKG1f
d29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIG1fdGFza01vZGUpOyAvLyBNYXkgY2F1c2UgdGhpcyBi
cmlkZ2UgdG8gZ2V0IGRpc2Nvbm5lY3RlZCwgd2hpY2ggbWFrZXMgbV93b3JrZXJHbG9iYWxTY29w
ZSBiZWNvbWUgbnVsbC4KICAgICAgICAgY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlci5wdHIoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyRGVidWdnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRl
YnVnZ2VyLmNwcAppbmRleCA4YTdhYjhjMjBlMDkuLmI1MjA4OGJjMzlkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwCkBAIC03OSw5ICs3OSwxMyBAQCB2
b2lkIFdvcmtlckRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiAKICAgICBUaW1l
ckJhc2U6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogCisgICAgLy8gRklYTUU6IEFk
ZCBzdXBwb3J0IGZvciBwYXVzaW5nIHdvcmtlcnMgcnVubmluZyBvbiB0aGUgbWFpbiB0aHJlYWQu
CisgICAgaWYgKCFpczxXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wPihtX2dsb2JhbFNjb3BlLndvcmtl
ck9yV29ya2xldFRocmVhZCgpLT5ydW5Mb29wKCkpKQorICAgICAgICByZXR1cm47CisKICAgICBN
ZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7Ci0gICAgICAgIHJlc3VsdCA9
IG1fZ2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKS5ydW5JbkRl
YnVnZ2VyTW9kZShtX2dsb2JhbFNjb3BlKTsKKyAgICAgICAgcmVzdWx0ID0gZG93bmNhc3Q8V29y
a2VyRGVkaWNhdGVkUnVuTG9vcD4obV9nbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQo
KS0+cnVuTG9vcCgpKS5ydW5JbkRlYnVnZ2VyTW9kZShtX2dsb2JhbFNjb3BlKTsKICAgICB9IHdo
aWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCAmJiAhZG9uZVByb2Nlc3NpbmdE
ZWJ1Z2dlckV2ZW50cygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGMyZGFhNWNjYWNjOS4uZGZmODk3MDFjOTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC03NCwxMSArNzQsMTEgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3AKICAgICBhdXRvIG1v
ZGUgPSBtYWtlU3RyaW5nKCJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZSIsIHJ1bkxvb3Au
Y3JlYXRlVW5pcXVlSWQoKSk7CiAKICAgICBhdXRvIGxvYWRlciA9IFdvcmtlclRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgY2xpZW50LCBtb2RlLCBX
VEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7Ci0gICAgTWVzc2FnZVF1ZXVlV2Fp
dFJlc3VsdCByZXN1bHQgPSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7Ci0gICAgd2hpbGUg
KCFsb2FkZXItPmRvbmUoKSAmJiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKLSAg
ICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUoJndvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlLCBtb2RlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIHdoaWxlICghbG9hZGVy
LT5kb25lKCkgJiYgc3VjY2VzcykKKyAgICAgICAgc3VjY2VzcyA9IHJ1bkxvb3AucnVuSW5Nb2Rl
KCZ3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgbW9kZSk7CiAKLSAgICBpZiAoIWxvYWRlci0+
ZG9uZSgpICYmIHJlc3VsdCA9PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQorICAgIGlmICghbG9h
ZGVyLT5kb25lKCkgJiYgIXN1Y2Nlc3MpCiAgICAgICAgIGxvYWRlci0+Y2FuY2VsKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAppbmRleCBh
MzY4ODcyMzc0YzEuLmQxYmNjZmE1OTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VVc2VyVGltaW5nLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPGRv
dWJsZT4gUGVyZm9ybWFuY2VVc2VyVGltaW5nOjpjb252ZXJ0TWFya1RvVGltZXN0YW1wKGNvbnN0
IFZhcmlhbnQ8CiAKIEV4Y2VwdGlvbk9yPGRvdWJsZT4gUGVyZm9ybWFuY2VVc2VyVGltaW5nOjpj
b252ZXJ0TWFya1RvVGltZXN0YW1wKGNvbnN0IFN0cmluZyYgbWFyaykgY29uc3QKIHsKLSAgICBp
ZiAoIWlzPERvY3VtZW50PihtX3BlcmZvcm1hbmNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
IHsKKyAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRN
YXJrTmFtZU5vbk1haW5UaHJlYWQobWFyaykpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgVHlwZUVycm9yIH07CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBiOTcwY2RlNDFlN2MuLjJm
MWUzNTIxZjM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtNDUsNiArNDUsOSBAQCBjbGFzcyBXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMgUmVm
Q291bgogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKCk7
CiAKKyAgICB1c2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp3ZWFrUHRyRmFjdG9yeTsKKyAg
ICB1c2luZyBXZWFrVmFsdWVUeXBlID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6V2Vha1ZhbHVl
VHlwZTsKKwogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nsb3Npbmc7
IH0KICAgICBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGhyZWFkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIyZTFm
MzBkZTc0Ni4uZmYyN2I2YTZlYjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTI2NywxMCAr
MjY3LDEwIEBAIEpTQzo6SlNWYWx1ZSBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0ZU1vZHVsZShKU0M6OkpTTW9kdWxlUmVjb3JkCiAgICAgcmV0dXJuIG1vZHVsZVJlY29y
ZC5ldmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBhd2FpdGVkVmFsdWUsIHJlc3VtZU1vZGUpOwogfQog
Ci1NZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmxvYWRNb2R1bGVTeW5jaHJvbm91c2x5KFdvcmtlclNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNo
ZXIsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCitib29sIFdvcmtlck9yV29y
a2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTeW5jaHJvbm91c2x5KFdvcmtlclNjcmlw
dEZldGNoZXImIHNjcmlwdEZldGNoZXIsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUpCiB7CiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkpCi0gICAgICAgIHJldHVybiBN
ZXNzYWdlUXVldWVUZXJtaW5hdGVkOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbml0
U2NyaXB0SWZOZWVkZWQoKTsKIApAQCAtMzQwLDE0ICszNDAsMTQgQEAgTWVzc2FnZVF1ZXVlV2Fp
dFJlc3VsdCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU3luY2hy
b25vdXNseSgKICAgICAvLyB0YXNrIGlzIHF1ZXVlZCBpbiBXb3JrZXJSdW5Mb29wIGJlZm9yZSBz
dGFydCBydW5uaW5nIG1vZHVsZSBzY3JpcHRzLiBUaGlzIHRhc2sgc2hvdWxkIG5vdCBiZSBkaXNj
YXJkZWQKICAgICAvLyBpbiB0aGUgZm9sbG93aW5nIGRyaXZpbmcgb2YgdGhlIFJ1bkxvb3Agd2hp
Y2ggbWFpbmx5IGF0dGVtcHQgdG8gY29sbGVjdCBpbml0aWFsIGxvYWQgb2YgbW9kdWxlIHNjcmlw
dHMuCiAgICAgU3RyaW5nIHRhc2tNb2RlID0gV29ya2VyTW9kdWxlU2NyaXB0TG9hZGVyOjp0YXNr
TW9kZSgpOwotICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVl
TWVzc2FnZVJlY2VpdmVkOwotICAgIHdoaWxlICgoIXByb3RlY3Rvci0+aXNMb2FkZWQoKSAmJiAh
cHJvdGVjdG9yLT53YXNDYW5jZWxlZCgpKSAmJiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWlu
YXRlZCkgewotICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZShtX2dsb2JhbFNjb3Bl
LCB0YXNrTW9kZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRl
ZCkKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIHdoaWxlICgoIXByb3RlY3Rvci0+aXNM
b2FkZWQoKSAmJiAhcHJvdGVjdG9yLT53YXNDYW5jZWxlZCgpKSAmJiBzdWNjZXNzKSB7CisgICAg
ICAgIHN1Y2Nlc3MgPSBydW5Mb29wLnJ1bkluTW9kZShtX2dsb2JhbFNjb3BlLCB0YXNrTW9kZSk7
CisgICAgICAgIGlmIChzdWNjZXNzKQogICAgICAgICAgICAgbV9nbG9iYWxTY29wZS0+ZXZlbnRM
b29wKCkucGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKICAgICB9CiAKLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBzdWNjZXNzOwogfQogCiB2b2lkIFdvcmtlck9yV29ya2xldFNj
cmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShXb3JrZXJTY3JpcHRGZXRjaGVy
JiBzY3JpcHRGZXRjaGVyLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTdHJp
bmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMzA0YWM0
MDMzNGMwLi4zMzEzNzlkZmU1MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC05OSw3ICs5OSw3IEBA
IHB1YmxpYzoKICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoSlNDOjpKU01vZHVsZVJl
Y29yZCYsIEpTQzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSByZXN1bWVNb2Rl
KTsKIAogICAgIHZvaWQgbGlua0FuZEV2YWx1YXRlTW9kdWxlKFdvcmtlclNjcmlwdEZldGNoZXIm
LCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3Nh
Z2UgPSBudWxscHRyKTsKLSAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IGxvYWRNb2R1bGVTeW5j
aHJvbm91c2x5KFdvcmtlclNjcmlwdEZldGNoZXImLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7
CisgICAgYm9vbCBsb2FkTW9kdWxlU3luY2hyb25vdXNseShXb3JrZXJTY3JpcHRGZXRjaGVyJiwg
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYpOwogCiAgICAgdm9pZCBsb2FkQW5kRXZhbHVhdGVNb2R1
bGUoY29uc3QgVVJMJiBtb2R1bGVVUkwsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCmluZGV4
IGZkNjU5ODQ1MzBlNy4uYTNiZGRiYjRjOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRh
LmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmgiCiAKQEAgLTU0LDggKzU1LDIwIEBAIEhhc2hTZXQ8V29ya2VyT3JXb3JrbGV0VGhyZWFk
Kj4mIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkcygpCiAgICAg
cmV0dXJuIHdvcmtlck9yV29ya2xldFRocmVhZHM7CiB9CiAKLVdvcmtlck9yV29ya2xldFRocmVh
ZDo6V29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3N0YXRp
YyBVbmlxdWVSZWY8V29ya2VyUnVuTG9vcD4gY29uc3RydWN0UnVuTG9vcChXb3JrZXJUaHJlYWRN
b2RlIHdvcmtlclRocmVhZE1vZGUpCit7CisgICAgc3dpdGNoICh3b3JrZXJUaHJlYWRNb2RlKSB7
CisgICAgY2FzZSBXb3JrZXJUaHJlYWRNb2RlOjpVc2VNYWluVGhyZWFkOgorICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZjxXb3JrZXJNYWluUnVuTG9vcD4oKTsKKyAgICBjYXNlIFdvcmtlclRo
cmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiBtYWtlVW5pcXVlUmVmPFdvcmtlckRlZGljYXRlZFJ1bkxvb3A+KCk7Cit9CisKK1dvcmtl
ck9yV29ya2xldFRocmVhZDo6V29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKQogICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3J1bkxvb3AoY29uc3RydWN0UnVuTG9vcCh3b3Jr
ZXJUaHJlYWRNb2RlKSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgd29ya2VyT3JXb3JrbGV0VGhy
ZWFkc0xvY2soKSB9OwogICAgIHdvcmtlck9yV29ya2xldFRocmVhZHMoKS5hZGQodGhpcyk7CkBA
IC03Myw5ICs4NiwxMyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6c3RhcnRSdW5uaW5n
RGVidWdnZXJUYXNrcygpCiAgICAgQVNTRVJUKCFtX3BhdXNlZEZvckRlYnVnZ2VyKTsKICAgICBt
X3BhdXNlZEZvckRlYnVnZ2VyID0gdHJ1ZTsKIAorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3IgZGVidWdnaW5nIHdvcmtlcnMgcnVubmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgaWYg
KCFpczxXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wPihtX3J1bkxvb3AuZ2V0KCkpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7Ci0g
ICAgICAgIHJlc3VsdCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVnZ2VyTW9kZSgqbV9nbG9iYWxTY29w
ZSk7CisgICAgICAgIHJlc3VsdCA9IGRvd25jYXN0PFdvcmtlckRlZGljYXRlZFJ1bkxvb3A+KG1f
cnVuTG9vcC5nZXQoKSkucnVuSW5EZWJ1Z2dlck1vZGUoKm1fZ2xvYmFsU2NvcGUpOwogICAgIH0g
d2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmIG1fcGF1c2VkRm9yRGVi
dWdnZXIpOwogfQogCkBAIC04NywxMyArMTA0LDMxIEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhy
ZWFkOjpzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKQogdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJl
YWQ6OnJ1bkV2ZW50TG9vcCgpCiB7CiAgICAgLy8gRG9lcyBub3QgcmV0dXJuIHVudGlsIHRlcm1p
bmF0ZWQuCi0gICAgbV9ydW5Mb29wLnJ1bihtX2dsb2JhbFNjb3BlLmdldCgpKTsKKyAgICBpZiAo
aXM8V29ya2VyRGVkaWNhdGVkUnVuTG9vcD4obV9ydW5Mb29wLmdldCgpKSkKKyAgICAgICAgZG93
bmNhc3Q8V29ya2VyRGVkaWNhdGVkUnVuTG9vcD4obV9ydW5Mb29wLmdldCgpKS5ydW4obV9nbG9i
YWxTY29wZS5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJP
cldvcmtsZXRUaHJlYWQoKQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAor
ICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBtX2dsb2JhbFNjb3BlID0gY3JlYXRl
R2xvYmFsU2NvcGUoKTsKKyAgICAgICAgaWYgKCFtX2dsb2JhbFNjb3BlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGRvd25jYXN0PFdvcmtlck1haW5SdW5Mb29wPihtX3J1bkxvb3Au
Z2V0KCkpLnNldEdsb2JhbFNjb3BlKCptX2dsb2JhbFNjb3BlKTsKKworICAgICAgICBTdHJpbmcg
ZXhjZXB0aW9uTWVzc2FnZTsKKyAgICAgICAgZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShleGNl
cHRpb25NZXNzYWdlKTsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtldmFsdWF0ZUNhbGxi
YWNrID0gV1RGTW92ZShtX2V2YWx1YXRlQ2FsbGJhY2spLCBtZXNzYWdlID0gV1RGTW92ZShleGNl
cHRpb25NZXNzYWdlKV0geworICAgICAgICAgICAgaWYgKGV2YWx1YXRlQ2FsbGJhY2spCisgICAg
ICAgICAgICAgICAgZXZhbHVhdGVDYWxsYmFjayhtZXNzYWdlKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBQcm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBm
ZW52IHRvIHdvcmtlcnMuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQ6OnNpbmdsZXRvbigpLnByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVu
dCgpOwpAQCAtMTIwLDcgKzE1NSw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3Jr
ZXJPcldvcmtsZXRUaHJlYWQoKQogCiAgICAgICAgIHNjcmlwdENvbnRyb2xsZXIgPSBtX2dsb2Jh
bFNjb3BlLT5zY3JpcHQoKTsKIAotICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkg
eworICAgICAgICBpZiAobV9ydW5Mb29wLT50ZXJtaW5hdGVkKCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSB3b3JrZXIgd2FzIHRlcm1pbmF0ZWQgYmVmb3JlIHRoZSB0aHJlYWQgaGFkIGEgY2hhbmNl
IHRvIHJ1bi4gU2luY2UgdGhlIGNvbnRleHQgZGlkbid0IGV4aXN0IHlldCwKICAgICAgICAgICAg
IC8vIGZvcmJpZEV4ZWN1dGlvbigpIGNvdWxkbid0IGJlIGNhbGxlZCBmcm9tIHN0b3AoKS4KICAg
ICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24o
KTsKQEAgLTEzMiw3ICsxNjcsNyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2Vy
T3JXb3JrbGV0VGhyZWFkKCkKICAgICAgICAgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpOwog
CiAgICAgICAgIC8vIElmIHRoZSB3b3JrZXIgd2FzIHNvbWVob3cgdGVybWluYXRlZCB3aGlsZSBw
cm9jZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRzLgotICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1p
bmF0ZWQoKSkKKyAgICAgICAgaWYgKG1fcnVuTG9vcC0+dGVybWluYXRlZCgpKQogICAgICAgICAg
ICAgc2NyaXB0Q29udHJvbGxlci0+Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgfQogCkBAIC0yMjgs
NyArMjYzLDE4IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpzdG9wKEZ1bmN0aW9uPHZv
aWQoKT4mJiBzdG9wcGVkQ2FsbGJhY2spCiAgICAgaWYgKGdsb2JhbFNjb3BlKCkpIHsKICAgICAg
ICAgZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24o
KTsKIAotICAgICAgICBtX3J1bkxvb3AucG9zdFRhc2tBbmRUZXJtaW5hdGUoeyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQgKSB7CisgICAgICAgIGlmIChpczxXb3JrZXJNYWluUnVuTG9vcD4obV9ydW5M
b29wLmdldCgpKSkgeworICAgICAgICAgICAgYXV0byBnbG9iYWxTY29wZSA9IHN0ZDo6ZXhjaGFu
Z2UobV9nbG9iYWxTY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+cHJl
cGFyZUZvckRlc3RydWN0aW9uKCk7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+Y2xlYXJTY3Jp
cHQoKTsKKyAgICAgICAgICAgIG1fcnVuTG9vcC0+dGVybWluYXRlKCk7CisKKyAgICAgICAgICAg
IGlmIChtX3N0b3BwZWRDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KHN0ZDo6ZXhjaGFuZ2UobV9zdG9wcGVkQ2FsbGJhY2ssIG51bGxwdHIpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fcnVuTG9vcC0+cG9zdFRhc2tBbmRUZXJt
aW5hdGUoeyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQgKSB7CiAgICAgICAgICAgICBhdXRvJiBnbG9i
YWxTY29wZSA9IGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KTsK
IAogICAgICAgICAgICAgZ2xvYmFsU2NvcGUucHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CkBAIC0y
NDQsMTMgKzI5MCwxNiBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6c3RvcChGdW5jdGlv
bjx2b2lkKCk+JiYgc3RvcHBlZENhbGxiYWNrKQogICAgICAgICB9IH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fcnVuTG9vcC50ZXJtaW5hdGUoKTsKKyAgICBtX3J1bkxvb3AtPnRl
cm1pbmF0ZSgpOwogfQogCiB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6c3VzcGVuZCgpCiB7
CiAgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7Ci0gICAgbV9ydW5Mb29wLnBvc3RUYXNrKFsmXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGlmIChpczxXb3JrZXJNYWluUnVuTG9vcD4o
bV9ydW5Mb29wLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ydW5Mb29wLT5wb3N0
VGFzayhbJl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKGdsb2JhbFNj
b3BlKCkpCiAgICAgICAgICAgICBnbG9iYWxTY29wZSgpLT5zdXNwZW5kKCk7CiAKQEAgLTI2NSw2
ICszMTQsOSBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6cmVzdW1lKCkKIHsKICAgICBB
U1NFUlQobV9pc1N1c3BlbmRlZCk7CiAgICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOworICAgIGlm
IChpczxXb3JrZXJNYWluUnVuTG9vcD4obV9ydW5Mb29wLmdldCgpKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgbV9zdXNwZW5zaW9uU2VtYXBob3JlLnNpZ25hbCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAppbmRleCAxZWU4YTM0YjIy
MjEuLjA0MzlmYTQ2MjMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9y
V29ya2xldFRocmVhZC5oCkBAIC00MCw3ICs0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgV29ya2VyRGVidWdnZXJQcm94eTsKIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwotY2xh
c3MgV29ya2VyUnVuTG9vcDsKK2NsYXNzIFdvcmtlckRlZGljYXRlZFJ1bkxvb3A7CisKK2VudW0g
Y2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2wgeyBVc2VNYWluVGhyZWFkLCBDcmVhdGVOZXdU
aHJlYWQgfTsKIAogY2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkIDogcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFdvcmtlck9yV29ya2xldFRocmVhZD4gewogcHVibGljOgpAQCAtNzAsNyAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVt
b3J5SW5BbGxUaHJlYWRzKCk7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXb3JrZXJPcldv
cmtsZXRUaHJlYWQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBleHBsaWNpdCBXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXb3JrZXJUaHJlYWRN
b2RlID0gV29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkKTsKICAgICB2b2lkIHdvcmtl
ck9yV29ya2xldFRocmVhZCgpOwogCiAgICAgLy8gRXhlY3V0ZXMgdGhlIGV2ZW50IGxvb3AgZm9y
IHRoZSB3b3JrZXIgdGhyZWFkLiBEZXJpdmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHRvIHBlcmZv
cm0gYWN0aW9ucyBiZWZvcmUvYWZ0ZXIgZW50ZXJpbmcgdGhlIGV2ZW50IGxvb3AuCkBAIC04OCw3
ICs5MCw3IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2Nv
cGVMb2NrOwogICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4gbV9nbG9iYWxT
Y29wZTsKICAgICBSZWZQdHI8V1RGOjpUaHJlYWQ+IG1fdGhyZWFkOwotICAgIFdvcmtlclJ1bkxv
b3AgbV9ydW5Mb29wOworICAgIFVuaXF1ZVJlZjxXb3JrZXJSdW5Mb29wPiBtX3J1bkxvb3A7CiAg
ICAgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9ldmFsdWF0ZUNhbGxiYWNrOwogICAg
IEZ1bmN0aW9uPHZvaWQoKT4gbV9zdG9wcGVkQ2FsbGJhY2s7CiAgICAgQmluYXJ5U2VtYXBob3Jl
IG1fc3VzcGVuc2lvblNlbWFwaG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxv
b3AuY3BwCmluZGV4IGM5NTZkZjk1NmIwYi4uNmJjMTI3NzdlNDU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC03Niw3ICs3Niw3IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIG1fZGVmYXVsdE1vZGU7CiAgICAgfQogCi0gICAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IFdvcmtlclJ1bkxvb3A6OlRhc2smIHRhc2spIGNvbnN0CisgICAgYm9vbCBv
cGVyYXRvcigpKGNvbnN0IFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OlRhc2smIHRhc2spIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gbV9kZWZhdWx0TW9kZSB8fCBtX21vZGUgPT0gdGFzay5t
b2RlKCk7CiAgICAgfQpAQCAtODYsMTIgKzg2LDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rl
ZmF1bHRNb2RlOwogfTsKIAotV29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCgpCitXb3JrZXJE
ZWRpY2F0ZWRSdW5Mb29wOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wKCkKICAgICA6IG1fc2hhcmVk
VGltZXIobWFrZVVuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4oKSkKIHsKIH0KIAotV29ya2VyUnVu
TG9vcDo6fldvcmtlclJ1bkxvb3AoKQorV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6fldvcmtlckRl
ZGljYXRlZFJ1bkxvb3AoKQogewogICAgIEFTU0VSVCghbV9uZXN0ZWRDb3VudCk7CiB9CkBAIC0x
MTAsNyArMTEwLDcgQEAgY2xhc3MgUnVuTG9vcFNldHVwIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShSdW5Mb29wU2V0dXApOwogcHVibGljOgogICAgIGVudW0gY2xhc3MgSXNGb3JEZWJ1Z2dp
bmcgeyBObywgWWVzIH07Ci0gICAgUnVuTG9vcFNldHVwKFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3As
IElzRm9yRGVidWdnaW5nIGlzRm9yRGVidWdnaW5nKQorICAgIFJ1bkxvb3BTZXR1cChXb3JrZXJE
ZWRpY2F0ZWRSdW5Mb29wJiBydW5Mb29wLCBJc0ZvckRlYnVnZ2luZyBpc0ZvckRlYnVnZ2luZykK
ICAgICAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKICAgICAgICAgLCBtX2lzRm9yRGVidWdnaW5n
KGlzRm9yRGVidWdnaW5nKQogICAgIHsKQEAgLTEzMCwzNyArMTMwLDM2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIG1fcnVuTG9vcC5tX2RlYnVnQ291bnQtLTsKICAgICB9CiBwcml2YXRlOgotICAg
IFdvcmtlclJ1bkxvb3AmIG1fcnVuTG9vcDsKKyAgICBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wJiBt
X3J1bkxvb3A7CiAgICAgSXNGb3JEZWJ1Z2dpbmcgbV9pc0ZvckRlYnVnZ2luZyB7IElzRm9yRGVi
dWdnaW5nOjpObyB9OwogfTsKIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpydW4oV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUqIGNvbnRleHQpCit2b2lkIFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnJ1
bihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCkKIHsKICAgICBSdW5Mb29wU2V0
dXAgc2V0dXAoKnRoaXMsIFJ1bkxvb3BTZXR1cDo6SXNGb3JEZWJ1Z2dpbmc6Ok5vKTsKICAgICBN
b2RlUHJlZGljYXRlIG1vZGVQcmVkaWNhdGUoZGVmYXVsdE1vZGUoKSk7CiAgICAgTWVzc2FnZVF1
ZXVlV2FpdFJlc3VsdCByZXN1bHQ7CiAgICAgZG8gewotICAgICAgICByZXN1bHQgPSBydW5Jbk1v
ZGUoY29udGV4dCwgbW9kZVByZWRpY2F0ZSwgV2FpdEZvck1lc3NhZ2UpOworICAgICAgICByZXN1
bHQgPSBydW5Jbk1vZGUoY29udGV4dCwgbW9kZVByZWRpY2F0ZSk7CiAgICAgfSB3aGlsZSAocmVz
dWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpOwogICAgIHJ1bkNsZWFudXBUYXNrcyhjb250
ZXh0KTsKIH0KIAotTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5JbkRl
YnVnZ2VyTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4dCkKK01lc3NhZ2VR
dWV1ZVdhaXRSZXN1bHQgV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6cnVuSW5EZWJ1Z2dlck1vZGUo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRleHQpCiB7CiAgICAgUnVuTG9vcFNldHVw
IHNldHVwKCp0aGlzLCBSdW5Mb29wU2V0dXA6OklzRm9yRGVidWdnaW5nOjpZZXMpOwotICAgIHJl
dHVybiBydW5Jbk1vZGUoJmNvbnRleHQsIE1vZGVQcmVkaWNhdGUgeyBkZWJ1Z2dlck1vZGUoKSB9
LCBXYWl0Rm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIHJ1bkluTW9kZSgmY29udGV4dCwgTW9kZVBy
ZWRpY2F0ZSB7IGRlYnVnZ2VyTW9kZSgpIH0pOwogfQogCi1NZXNzYWdlUXVldWVXYWl0UmVzdWx0
IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiBtb2RlLCBXYWl0TW9kZSB3YWl0TW9kZSkKK2Jvb2wgV29ya2Vy
RGVkaWNhdGVkUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJUKG1vZGUgIT0gZGVidWdn
ZXJNb2RlKCkpOwogICAgIFJ1bkxvb3BTZXR1cCBzZXR1cCgqdGhpcywgUnVuTG9vcFNldHVwOjpJ
c0ZvckRlYnVnZ2luZzo6Tm8pOwogICAgIE1vZGVQcmVkaWNhdGUgbW9kZVByZWRpY2F0ZShTdHJp
bmcgeyBtb2RlIH0pOwotICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gcnVuSW5N
b2RlKGNvbnRleHQsIG1vZGVQcmVkaWNhdGUsIHdhaXRNb2RlKTsKLSAgICByZXR1cm4gcmVzdWx0
OworICAgIHJldHVybiBydW5Jbk1vZGUoY29udGV4dCwgbW9kZVByZWRpY2F0ZSkgIT0gTWVzc2Fn
ZVF1ZXVlV2FpdFJlc3VsdDo6TWVzc2FnZVF1ZXVlVGVybWluYXRlZDsKIH0KIAotTWVzc2FnZVF1
ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IE1vZGVQcmVkaWNhdGUmIHByZWRpY2F0ZSwgV2FpdE1v
ZGUgd2FpdE1vZGUpCitNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlckRlZGljYXRlZFJ1bkxv
b3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3Qg
TW9kZVByZWRpY2F0ZSYgcHJlZGljYXRlKQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBB
U1NFUlQoY29udGV4dC0+d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnRocmVhZCgpID09ICZUaHJl
YWQ6OmN1cnJlbnQoKSk7CkBAIC0xODUsNyArMTg0LDcgQEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3Vs
dCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNv
bnQKICAgICB0aW1lb3V0RGVsYXkgPSBzdGQ6Om1heCgwX3MsIFNlY29uZHModGltZVVudGlsTmV4
dENGUnVuTG9vcFRpbWVySW5TZWNvbmRzKSk7CiAjZW5kaWYKIAotICAgIGlmICh3YWl0TW9kZSA9
PSBXYWl0Rm9yTWVzc2FnZSAmJiBwcmVkaWNhdGUuaXNEZWZhdWx0TW9kZSgpICYmIG1fc2hhcmVk
VGltZXItPmlzQWN0aXZlKCkpCisgICAgaWYgKHByZWRpY2F0ZS5pc0RlZmF1bHRNb2RlKCkgJiYg
bV9zaGFyZWRUaW1lci0+aXNBY3RpdmUoKSkKICAgICAgICAgdGltZW91dERlbGF5ID0gc3RkOjpt
aW4odGltZW91dERlbGF5LCBtX3NoYXJlZFRpbWVyLT5maXJlVGltZURlbGF5KCkpOwogCiAgICAg
aWYgKGF1dG8qIHNjcmlwdCA9IGNvbnRleHQtPnNjcmlwdCgpKSB7CkBAIC0yMjUsNyArMjI0LDcg
QEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IFdvcmtlclJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSogY29udGV4dCkKK3ZvaWQgV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tz
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0KQogewogICAgIEFTU0VSVChjb250
ZXh0KTsKICAgICBBU1NFUlQoY29udGV4dC0+d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnRocmVh
ZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CkBAIC0yMzksNyArMjM4LDcgQEAgdm9pZCBXb3Jr
ZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNv
bnRleHQpCiAgICAgfQogfQogCi12b2lkIFdvcmtlclJ1bkxvb3A6OnRlcm1pbmF0ZSgpCit2b2lk
IFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnRlcm1pbmF0ZSgpCiB7CiAgICAgbV9tZXNzYWdlUXVl
dWUua2lsbCgpOwogfQpAQCAtMjQ5LDEyICsyNDgsMTIgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpw
b3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKICAgICBwb3N0VGFz
a0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgV29ya2Vy
UnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmIHRhc2spCit2b2lkIFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWlu
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogewogICAgIG1fbWVzc2Fn
ZVF1ZXVlLmFwcGVuZEFuZEtpbGwobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBkZWZh
dWx0TW9kZSgpKSk7CiB9CiAKLXZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCit2
b2lkIFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIG1fbWVz
c2FnZVF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayksIG1vZGUpKTsK
IH0KQEAgLTI2NCwxNiArMjYzLDU4IEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdERlYnVnZ2Vy
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKICAgICBwb3N0VGFza0Zv
ck1vZGUoV1RGTW92ZSh0YXNrKSwgZGVidWdnZXJNb2RlKCkpOwogfQogCi12b2lkIFdvcmtlclJ1
bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250
ZXh0KQordm9pZCBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpUYXNrOjpwZXJmb3JtVGFzayhXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCkKIHsKICAgICBpZiAoKCFjb250ZXh0LT5p
c0Nsb3NpbmcoKSAmJiBjb250ZXh0LT5zY3JpcHQoKSAmJiAhY29udGV4dC0+c2NyaXB0KCktPmlz
VGVybWluYXRpbmdFeGVjdXRpb24oKSkgfHwgbV90YXNrLmlzQ2xlYW51cFRhc2soKSkKICAgICAg
ICAgbV90YXNrLnBlcmZvcm1UYXNrKCpjb250ZXh0KTsKIH0KIAotV29ya2VyUnVuTG9vcDo6VGFz
azo6VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5n
JiBtb2RlKQorV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6VGFzazo6VGFzayhTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogICAgIDogbV90YXNr
KFdURk1vdmUodGFzaykpCiAgICAgLCBtX21vZGUobW9kZS5pc29sYXRlZENvcHkoKSkKIHsKIH0K
IAorV29ya2VyTWFpblJ1bkxvb3A6Oldvcmtlck1haW5SdW5Mb29wKCkKK3sKK30KKwordm9pZCBX
b3JrZXJNYWluUnVuTG9vcDo6c2V0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUmIGdsb2JhbFNjb3BlKQoreworICAgIG1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgPSBt
YWtlV2Vha1B0cihnbG9iYWxTY29wZSk7Cit9CisKK3ZvaWQgV29ya2VyTWFpblJ1bkxvb3A6OnBv
c3RUYXNrQW5kVGVybWluYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQor
eworICAgIGlmIChtX3Rlcm1pbmF0ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHRhc2sgPSBX
VEZNb3ZlKHRhc2spXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFr
VGhpcy0+bV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSB8fCB3ZWFrVGhpcy0+bV90ZXJtaW5h
dGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHdlYWtUaGlzLT5tX3Rlcm1pbmF0
ZWQgPSB0cnVlOworICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKCp3ZWFrVGhpcy0+bV93b3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWFpblJ1bkxv
b3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywg
Y29uc3QgU3RyaW5nJiAvKm1vZGUqLykKK3sKKyAgICBpZiAobV90ZXJtaW5hdGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNrKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUgfHwgd2Vha1RoaXMtPm1fdGVybWluYXRlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0YXNrLnBlcmZvcm1UYXNrKCp3ZWFrVGhpcy0+bV93b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSk7CisgICAgfSk7Cit9CisKK2Jvb2wgV29ya2VyTWFpblJ1bkxvb3A6OnJ1bkluTW9kZShX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYpCit7CisgICAgUnVuTG9v
cDo6bWFpbigpLmN5Y2xlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKaW5kZXggMTQ1YmU4
M2MwNzUwLi4zM2ZlMjQxODlhZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyUnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9v
cC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtNDIsMzAgKzQyLDQ5IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
OwogY2xhc3MgV29ya2VyU2hhcmVkVGltZXI7CiAKIGNsYXNzIFdvcmtlclJ1bkxvb3AgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdvcmtlclJ1bkxvb3AoKTsK
LSAgICB+V29ya2VyUnVuTG9vcCgpOworICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBXb3Jr
ZXJEZWRpY2F0ZWRSdW5Mb29wLCBXb3JrZXJNYWluUnVuTG9vcCB9OworCisgICAgdmlydHVhbCB+
V29ya2VyUnVuTG9vcCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBydW5Jbk1vZGUo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrRm9yTW9kZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB0ZXJtaW5hdGUoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHRlcm1pbmF0ZWQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisKKyAgICB2
b2lkIHBvc3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7CisgICAgdm9pZCBw
b3N0RGVidWdnZXJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRNb2RlKCk7CisKKyAgICB1bnNpZ25l
ZCBsb25nIGNyZWF0ZVVuaXF1ZUlkKCkgeyByZXR1cm4gKyttX3VuaXF1ZUlkOyB9CisKK3ByaXZh
dGU6CisgICAgdW5zaWduZWQgbG9uZyBtX3VuaXF1ZUlkIHsgMCB9OworfTsKKworY2xhc3MgV29y
a2VyRGVkaWNhdGVkUnVuTG9vcCBmaW5hbCA6IHB1YmxpYyBXb3JrZXJSdW5Mb29wIHsKK3B1Ymxp
YzoKKyAgICBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wKCk7CisgICAgfldvcmtlckRlZGljYXRlZFJ1
bkxvb3AoKTsKICAgICAKICAgICAvLyBCbG9ja2luZyBjYWxsLiBXYWl0cyBmb3IgdGFza3MgYW5k
IHRpbWVycywgaW52b2tlcyB0aGUgY2FsbGJhY2tzLgogICAgIHZvaWQgcnVuKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKik7CiAKLSAgICBlbnVtIFdhaXRNb2RlIHsgV2FpdEZvck1lc3NhZ2Us
IERvbnRXYWl0Rm9yTWVzc2FnZSB9OwotCiAgICAgLy8gV2FpdHMgZm9yIGEgc2luZ2xlIHRhc2sg
YW5kIHJldHVybnMuCi0gICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBydW5Jbk1vZGUoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIG1vZGUsIFdhaXRNb2RlID0gV2Fp
dEZvck1lc3NhZ2UpOworICAgIGJvb2wgcnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVz
dWx0IHJ1bkluRGVidWdnZXJNb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAKLSAg
ICB2b2lkIHRlcm1pbmF0ZSgpOwotICAgIGJvb2wgdGVybWluYXRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpOyB9CisgICAgdm9pZCB0ZXJtaW5hdGUoKSBmaW5hbDsK
KyAgICBib29sIHRlcm1pbmF0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX21lc3NhZ2VRdWV1
ZS5raWxsZWQoKTsgfQorICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6
OldvcmtlckRlZGljYXRlZFJ1bkxvb3A7IH0KIAotICAgIHZvaWQgcG9zdFRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzayYmKTsKLSAgICB2b2lkIHBvc3RUYXNrQW5kVGVybWluYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBw
b3N0VGFza0Zvck1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJp
bmcmIG1vZGUpOwotICAgIHZvaWQgcG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrJiYpOwotCi0gICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZCgpIHsgcmV0
dXJuICsrbV91bmlxdWVJZDsgfQorICAgIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0
cmluZyYgbW9kZSkgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRl
ZmF1bHRNb2RlKCk7CiAgICAgY2xhc3MgVGFzayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRhc2spOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC03OCwx
MiArOTcsMTIgQEAgcHVibGljOgogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
IG1fdGFzazsKICAgICAgICAgU3RyaW5nIG1fbW9kZTsKIAotICAgICAgICBmcmllbmQgY2xhc3Mg
V29ya2VyUnVuTG9vcDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckRlZGljYXRlZFJ1bkxv
b3A7CiAgICAgfTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUnVuTG9vcFNldHVwOwot
ICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKiwgY29uc3QgTW9kZVByZWRpY2F0ZSYsIFdhaXRNb2RlKTsKKyAgICBNZXNzYWdlUXVl
dWVXYWl0UmVzdWx0IHJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSosIGNvbnN0
IE1vZGVQcmVkaWNhdGUmKTsKIAogICAgIC8vIFJ1bnMgYW55IGNsZWFuIHVwIHRhc2tzIHRoYXQg
YXJlIGN1cnJlbnRseSBpbiB0aGUgcXVldWUgYW5kIHJldHVybnMuCiAgICAgLy8gVGhpcyBzaG91
bGQgb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgY29udGV4dCBpcyBjbG9zZWQgb3IgbG9vcCBoYXMg
YmVlbiB0ZXJtaW5hdGVkLgpAQCAtOTUsNyArMTE0LDMzIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdvcmtlclNoYXJlZFRpbWVyPiBtX3NoYXJlZFRpbWVyOwogICAgIGludCBtX25l
c3RlZENvdW50IHsgMCB9OwogICAgIGludCBtX2RlYnVnQ291bnQgeyAwIH07Ci0gICAgdW5zaWdu
ZWQgbG9uZyBtX3VuaXF1ZUlkIHsgMCB9OworfTsKKworY2xhc3MgV29ya2VyTWFpblJ1bkxvb3Ag
ZmluYWwgOiBwdWJsaWMgV29ya2VyUnVuTG9vcCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdvcmtl
ck1haW5SdW5Mb29wPiB7CitwdWJsaWM6CisgICAgV29ya2VyTWFpblJ1bkxvb3AoKTsKKworICAg
IHZvaWQgc2V0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKKworICAg
IHZvaWQgdGVybWluYXRlKCkgZmluYWwgeyBtX3Rlcm1pbmF0ZWQgPSB0cnVlOyB9CisgICAgYm9v
bCB0ZXJtaW5hdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90ZXJtaW5hdGVkOyB9CisKKyAg
ICBib29sIHJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSosIGNvbnN0IFN0cmlu
ZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYpIGZpbmFsOworICAgIHZvaWQgcG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKKyAgICBU
eXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpXb3JrZXJNYWluUnVuTG9vcDsg
fQorCitwcml2YXRlOgorICAgIFdlYWtQdHI8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+IG1f
d29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgYm9vbCBtX3Rlcm1pbmF0ZWQgeyBmYWxz
ZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0JFR0lOKFdlYkNvcmU6OldvcmtlckRlZGljYXRlZFJ1bkxvb3ApCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldvcmtlclJ1bkxvb3AmIHJ1bkxvb3ApIHsgcmV0dXJu
IHJ1bkxvb3AudHlwZSgpID09IFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OlR5cGU6OldvcmtlckRl
ZGljYXRlZFJ1bkxvb3A7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lB
TElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXb3JrZXJNYWluUnVuTG9vcCkKKyAgICBz
dGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V29ya2VyUnVuTG9vcCYgcnVuTG9vcCkg
eyByZXR1cm4gcnVuTG9vcC50eXBlKCkgPT0gV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6VHlwZTo6
V29ya2VyTWFpblJ1bkxvb3A7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCBjM2Y1NWViMjFkNTguLjM4ZTIz
ZGE4OTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAtNjAs
NyArNjAsOCBAQCBXb3JrZXJQYXJhbWV0ZXJzIFdvcmtlclBhcmFtZXRlcnM6Omlzb2xhdGVkQ29w
eSgpIGNvbnN0CiAgICAgICAgIHJlZmVycmVyUG9saWN5LAogICAgICAgICB3b3JrZXJUeXBlLAog
ICAgICAgICBjcmVkZW50aWFscywKLSAgICAgICAgc2V0dGluZ3NWYWx1ZXMuaXNvbGF0ZWRDb3B5
KCkKKyAgICAgICAgc2V0dGluZ3NWYWx1ZXMuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHdvcmtl
clRocmVhZE1vZGUKICAgICB9OwogfQogCkBAIC04Niw3ICs4Nyw3IEBAIFdvcmtlclRocmVhZFN0
YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiBvdGhlciwKIH0KIAogV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgV29ya2VyUGFy
YW1ldGVycyYgcGFyYW1zLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtlckxv
YWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgd29ya2Vy
RGVidWdnZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1Byb3h5
LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdpbiYg
dG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblByb3h5
LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1bnRp
bWVGbGFncykKLSAgICA6IFdvcmtlck9yV29ya2xldFRocmVhZChwYXJhbXMuaWRlbnRpZmllci5p
c29sYXRlZENvcHkoKSkKKyAgICA6IFdvcmtlck9yV29ya2xldFRocmVhZChwYXJhbXMuaWRlbnRp
Zmllci5pc29sYXRlZENvcHkoKSwgcGFyYW1zLndvcmtlclRocmVhZE1vZGUpCiAgICAgLCBtX3dv
cmtlckxvYWRlclByb3h5KHdvcmtlckxvYWRlclByb3h5KQogICAgICwgbV93b3JrZXJEZWJ1Z2dl
clByb3h5KHdvcmtlckRlYnVnZ2VyUHJveHkpCiAgICAgLCBtX3dvcmtlclJlcG9ydGluZ1Byb3h5
KHdvcmtlclJlcG9ydGluZ1Byb3h5KQpAQCAtMTA2LDYgKzEwNywxNSBAQCBXb3JrZXJUaHJlYWQ6
On5Xb3JrZXJUaHJlYWQoKQogCiBSZWY8VGhyZWFkPiBXb3JrZXJUaHJlYWQ6OmNyZWF0ZVRocmVh
ZCgpCiB7CisgICAgaWYgKGlzPFdvcmtlck1haW5SdW5Mb29wPihydW5Mb29wKCkpKSB7CisgICAg
ICAgIC8vIFRoaXMgd29ya2VyIHNob3VsZCBydW4gb24gdGhlIG1haW4gdGhyZWFkLgorICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9
XSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrZXJPcldvcmtsZXRUaHJlYWQoKTsK
KyAgICAgICAgfSk7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIHJl
dHVybiBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICB9CisKICAgICByZXR1cm4gVGhyZWFkOjpjcmVh
dGUoaXNTZXJ2aWNlV29ya2VyVGhyZWFkKCkgPyAiV2ViQ29yZTogU2VydmljZSBXb3JrZXIiIDog
IldlYkNvcmU6IFdvcmtlciIsIFt0aGlzXSB7CiAgICAgICAgIHdvcmtlck9yV29ya2xldFRocmVh
ZCgpOwogICAgIH0sIFRocmVhZFR5cGU6OkphdmFTY3JpcHQpOwpAQCAtMTM2LDggKzE0Niw4IEBA
IHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYgZXhj
ZXB0aW9uTWVzc2FnZSkKICAgICAgICAgYXV0byBzY3JpcHRGZXRjaGVyID0gV29ya2VyU2NyaXB0
RmV0Y2hlcjo6Y3JlYXRlKGdsb2JhbFNjb3BlKCktPmNyZWRlbnRpYWxzKCksIGdsb2JhbFNjb3Bl
KCktPmRlc3RpbmF0aW9uKCksIGdsb2JhbFNjb3BlKCktPnJlZmVycmVyUG9saWN5KCkpOwogICAg
ICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUobV9zdGFydHVwRGF0YS0+c291cmNlQ29k
ZSwgVVJMKG1fc3RhcnR1cERhdGEtPnBhcmFtcy5zY3JpcHRVUkwpLCB7IH0sIEpTQzo6U291cmNl
UHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUsIHNjcmlwdEZldGNoZXIuY29weVJlZigpKTsKICAg
ICAgICAgc291cmNlUHJvdmlkZXIgPSBtYWtlV2Vha1B0cihzdGF0aWNfY2FzdDxTY3JpcHRCdWZm
ZXJTb3VyY2VQcm92aWRlciY+KHNvdXJjZUNvZGUucHJvdmlkZXIoKSkpOwotICAgICAgICBNZXNz
YWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IGdsb2JhbFNjb3BlKCktPnNjcmlwdCgpLT5sb2Fk
TW9kdWxlU3luY2hyb25vdXNseShzY3JpcHRGZXRjaGVyLmdldCgpLCBzb3VyY2VDb2RlKTsKLSAg
ICAgICAgaWYgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7CisgICAgICAgIGJv
b2wgc3VjY2VzcyA9IGdsb2JhbFNjb3BlKCktPnNjcmlwdCgpLT5sb2FkTW9kdWxlU3luY2hyb25v
dXNseShzY3JpcHRGZXRjaGVyLmdldCgpLCBzb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKHN1Y2Nl
c3MpIHsKICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpFcnJv
cj4gZXJyb3IgPSBzY3JpcHRGZXRjaGVyLT5lcnJvcigpKSB7CiAgICAgICAgICAgICAgICAgaWYg
KHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdlID0g
ZXJyb3ItPmNvbnNvbGVNZXNzYWdlKQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25NZXNz
YWdlID0gbWVzc2FnZS0+bWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5o
CmluZGV4IDZlOWRjZTU5M2IxZC4uMTE4YTUxOThmZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyVGhyZWFkLmgKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgogICAgIFdvcmtlclR5cGUg
d29ya2VyVHlwZTsKICAgICBGZXRjaFJlcXVlc3RDcmVkZW50aWFscyBjcmVkZW50aWFsczsKICAg
ICBTZXR0aW5nczo6VmFsdWVzIHNldHRpbmdzVmFsdWVzOworICAgIFdvcmtlclRocmVhZE1vZGUg
d29ya2VyVGhyZWFkTW9kZSB7IFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZCB9Owog
CiAgICAgV29ya2VyUGFyYW1ldGVycyBpc29sYXRlZENvcHkoKSBjb25zdDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUuY3BwCmluZGV4IDg2YzYzZTE1ZDA3Ni4uODVmMzA4OTRkN2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlOjpyZW1vdmVTZXJ2aWNlV29ya2VyQ2xpZW50KFNlcnZpY2VXb3JrZXJDbGllbnQmIGNs
CiAvLyBodHRwczovL3czYy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jdXBkYXRlLXNlcnZpY2Ut
d29ya2VyLWV4dGVuZGVkLWV2ZW50cy1zZXQtYWxnb3JpdGhtCiB2b2lkIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZTo6dXBkYXRlRXh0ZW5kZWRFdmVudHNTZXQoRXh0ZW5kYWJsZUV2ZW50KiBuZXdF
dmVudCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNDb250
ZXh0VGhyZWFkKCkpOwogICAgIEFTU0VSVCghbmV3RXZlbnQgfHwgIW5ld0V2ZW50LT5pc0JlaW5n
RGlzcGF0Y2hlZCgpKTsKICAgICBib29sIGhhZFBlbmRpbmdFdmVudHMgPSBoYXNQZW5kaW5nRXZl
bnRzKCk7CiAgICAgbV9leHRlbmRlZEV2ZW50cy5yZW1vdmVBbGxNYXRjaGluZyhbXShhdXRvJiBl
dmVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCA5NjQ4NjI1MzY3Y2MuLmE0
NTA1OTY2YmE2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTczLDggKzczLDI4
IEBAIHByaXZhdGU6CiAvLyBGSVhNRTogVXNlIGEgdmFsaWQgV29ya2VyT2JqZWN0UHJveHkKIC8v
IEZJWE1FOiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCitzdGF0aWMgV29ya2VyUGFyYW1ldGVy
cyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiBjb250ZXh0RGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0aW5nczo6VmFsdWVz
JiBzZXR0aW5nc1ZhbHVlcykKK3sKKyAgICByZXR1cm4geworICAgICAgICBjb250ZXh0RGF0YS5z
Y3JpcHRVUkwsCisgICAgICAgIGVtcHR5U3RyaW5nKCksCisgICAgICAgICJzZXJ2aWNld29ya2Vy
OiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigpLAor
ICAgICAgICBXVEZNb3ZlKHVzZXJBZ2VudCksCisgICAgICAgIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAgICBjb250ZXh0RGF0YS5jb250
ZW50U2VjdXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAgICAgICBjb250ZXh0RGF0YS5j
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBNb25vdG9uaWNUaW1lOjpub3coKSwK
KyAgICAgICAgeyB9LAorICAgICAgICBjb250ZXh0RGF0YS53b3JrZXJUeXBlLAorICAgICAgICBG
ZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwKKyAgICAgICAgc2V0dGluZ3NWYWx1ZXMsCisg
ICAgICAgIFdvcmtlclRocmVhZE1vZGU6OlVzZU1haW5UaHJlYWQgLy8gRklYTUU6IFdlIHNob3Vs
ZCBwYXNzIHRoaXMgYXMgYSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBoYXJkLWNvZGluZyBpdC4KKyAg
ICB9OworfQorCiBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdv
cmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0
dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdn
ZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlk
YkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQotICAgIDog
V29ya2VyVGhyZWFkKHsgY29udGV4dERhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2Vy
dmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50
aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVy
U3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgY29udGV4dERhdGEuY29udGVudFNlY3VyaXR5UG9saWN5
LCBmYWxzZSwgY29udGV4dERhdGEuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwgTW9ub3Rvbmlj
VGltZTo6bm93KCksIHsgfSwgY29udGV4dERhdGEud29ya2VyVHlwZSwgRmV0Y2hSZXF1ZXN0Q3Jl
ZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGNvbnRleHREYXRhLnNjcmlwdCwgbG9h
ZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpz
aGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNvbnRleHREYXRhLnJlZ2lz
dHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVj
dGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVu
YWJsZWQoKSkKKyAgICA6IFdvcmtlclRocmVhZChnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29u
dGV4dERhdGEsIFdURk1vdmUodXNlckFnZW50KSwgc2V0dGluZ3NWYWx1ZXMpLCBjb250ZXh0RGF0
YS5zY3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjb250
ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0
KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdz
OjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGNv
bnRleHREYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICwgbV9qb2JEYXRhSWRlbnRp
Zmllcihjb250ZXh0RGF0YS5qb2JEYXRhSWRlbnRpZmllcikKICAgICAsIG1fY29udGV4dERhdGEo
Y3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY29udGV4dERhdGEpKSkKQEAgLTE5NCw3ICsyMTQsNyBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQo
KQogCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgp
CiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGdsb2JhbFNjb3Bl
KCktPmlzQ29udGV4dFRocmVhZCgpKTsKICAgICBtX2RvZXNIYW5kbGVGZXRjaCA9IGdsb2JhbFNj
b3BlKCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5mZXRjaEV2ZW50KTsKIH0KIApA
QCAtMjI2LDYgKzI0NiwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hF
dmVudE1vbml0b3JpbmcoKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0SGVhcnRC
ZWF0VGltZXIoKQogeworICAgIC8vIFdlIGNhbm5vdCBkZXRlY3QgcmVzcG9uc2l2ZW5lc3MgZm9y
IHNlcnZpY2Ugd29ya2VycyBydW5uaW5nIG9uIHRoZSBtYWluIHRocmVhZCBieSB1c2luZyBhIG1h
aW4gdGhyZWFkIHRpbWVyLgorICAgIGlmIChpczxXb3JrZXJNYWluUnVuTG9vcD4ocnVuTG9vcCgp
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1faGVhcnRCZWF0VGltZXIuaXNBY3RpdmUo
KSkKICAgICAgICAgcmV0dXJuOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439051</attachid>
            <date>2021-09-23 09:17:56 -0700</date>
            <delta_ts>2021-09-27 10:10:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230649-20210923091755.patch</filename>
            <type>text/plain</type>
            <size>86808</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDE5ZDVlYjYzYWVlOThh
OGNjZmVkNTk1ZGRkMTJhZTEyZDdiMjU0My4uODNkMmQ0NzI2NDI0ODUyNzhkZTZlN2IxZDlhNzU3
NjMzYmU0NmQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDIxLTA5LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJ1
bm5pbmcgc2VydmljZSB3b3JrZXJzIG9uIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJ1bm5pbmcg
c2VydmljZSB3b3JrZXJzIG9uIHRoZSBtYWluIHRocmVhZCAob2ZmIGJ5IGRlZmF1bHQpLgorCisg
ICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6
SURCQ29ubmVjdGlvblByb3h5Ojpmb3JnZXRBY3Rpdml0eUZvckN1cnJlbnRUaHJlYWQpOgorICAg
ICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6QnJpZGdlOjp3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbik6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1
Z2dlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlcjo6cnVuRXZlbnRMb29w
V2hpbGVQYXVzZWQpOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVXNlclRpbWluZzo6Y29udmVydE1hcmtU
b1RpbWVzdGFtcCBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZS5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyOjpsb2FkTW9kdWxlU3luY2hyb25vdXNseSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldv
cmtsZXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0UnVuTG9vcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Oldvcmtlck9yV29ya2xldFRo
cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0YXJ0UnVu
bmluZ0RlYnVnZ2VyVGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhy
ZWFkOjpydW5FdmVudExvb3ApOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhy
ZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JX
b3JrbGV0VGhyZWFkOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRo
cmVhZDo6c3VzcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6
OnJlc3VtZSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaDoKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9k
ZVByZWRpY2F0ZTo6b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJE
ZWRpY2F0ZWRSdW5Mb29wOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckRlZGljYXRlZFJ1bkxvb3A6On5Xb3JrZXJEZWRpY2F0ZWRSdW5Mb29wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bkxvb3BTZXR1cDo6UnVuTG9vcFNldHVwKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpydW5JbkRlYnVnZ2VyTW9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpydW5Jbk1vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKToKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6VGFzazo6cGVyZm9ybVRh
c2spOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6VGFzazo6VGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNYWluUnVuTG9vcDo6V29ya2VyTWFpblJ1bkxv
b3ApOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWFpblJ1bkxvb3A6OnNldEdsb2JhbFNjb3Bl
KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1haW5SdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1p
bmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNYWluUnVuTG9vcDo6cG9zdFRhc2tGb3JN
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1haW5SdW5Mb29wOjpydW5Jbk1vZGUpOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5oOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyUnVuTG9vcDo6Y3JlYXRlVW5pcXVlSWQpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJQYXJh
bWV0ZXJzOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkOjpXb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpjcmVh
dGVUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlw
dElmTmVjZXNzYXJ5KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5oOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkTW9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6dXBkYXRlRXh0ZW5kZWRFdmVudHNTZXQpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0SGVhcnRCZWF0
VGltZXIpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6
OlNXU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjppbnN0YWxsQ29udGV4dERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorCiAyMDIx
LTA5LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBt
YWtlUmVmKCkgYW5kIHVzZSBSZWYgeyB9IGluc3RlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZTllNTVjY2YyOGI5
YzM5ODY0MDY3NjI2NDRkODA0ZGNmNWE4OTkyZi4uZjdmNDE5ZGMyYTU4NGZjZWQ4Y2NlOTJmZDU5
MmY0YmNiNWZiZWEyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MSBAQAorMjAyMS0wOS0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBy
dW5uaW5nIHNlcnZpY2Ugd29ya2VycyBvbiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBydW5uaW5n
IHNlcnZpY2Ugd29ya2VycyBvbiB0aGUgbWFpbiB0aHJlYWQgKG9mZiBieSBkZWZhdWx0KS4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbik6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
U2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzaG91bGRSdW5T
ZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZF0pOgorICAg
ICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzZXRTaG91bGRSdW5TZXJ2
aWNlV29ya2Vyc09uTWFpblRocmVhZDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNob3VsZFJ1blNlcnZpY2VXb3JrZXJz
T25NYWluVGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb246OnNldFNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5z
dGFsbFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwogMjAyMS0wOS0yMiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgbWFrZVJlZigp
IGFuZCB1c2UgUmVmIHsgfSBpbnN0ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQppbmRleCAyNjY0ODQ0Y2Ey
YjNlMzQ5MDcxZWRkMWUzNGIxZDczZjVkNTU4OTJkLi4wZTUwMzE1M2RkNTc3NmY5Njk5MDU3OTEz
ZmRmYTBlMWM1MTliZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTE3MjIsNiArMTcyMiw3IEBA
IHNldChXZWJDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICB3b3JrZXJzL1dvcmtl
clNjcmlwdExvYWRlci5oCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaAog
ICAgIHdvcmtlcnMvV29ya2VyVGhyZWFkLmgKKyAgICB3b3JrZXJzL1dvcmtlclRocmVhZE1vZGUu
aAogICAgIHdvcmtlcnMvV29ya2VyVGhyZWFkVHlwZS5oCiAgICAgd29ya2Vycy9Xb3JrZXJUeXBl
LmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50
L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAppbmRleCAzNTZhYjA1NzYxMDNjYmFiZGZi
YjJmMTI0MmFmOTU5NDk4NWYwMTAyLi42Njc4MmVjZGUzZTQ3MjFlY2I0YjM0YzBkZDIwMzdjOTE1
ZTI4ZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGll
bnQvSURCQ29ubmVjdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblByb3h5LmNwcApAQCAtNjA5LDggKzYwOSw2IEBA
IHZvaWQgc2V0TWF0Y2hpbmdJdGVtc0NvbnRleHRTdXNwZW5kZWQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY3VycmVudENvbnRleHQsIEhhCiAKIHZvaWQgSURCQ29ubmVjdGlvblByb3h5Ojpmb3Jn
ZXRBY3Rpdml0eUZvckN1cnJlbnRUaHJlYWQoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwotCiAgICAgewogICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNvbm5lY3Rp
b25NYXBMb2NrIH07CiAgICAgICAgIHJlbW92ZUl0ZW1zTWF0Y2hpbmdDdXJyZW50VGhyZWFkKG1f
ZGF0YWJhc2VDb25uZWN0aW9uTWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IDc1NzVlYzc0N2E4ZWUzMDM3YmEzNTI1NWQ0NWQyMGI2YTYzODg2NjIu
LjlmYmM5NGU3Y2VmNjNkNzQxYjMxZGFjMmViNzhkYTdkYjUwMTU2YTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtNTkyLDEwICs1OTIsMTAgQEAgdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjp3YWl0Rm9yTWV0aG9k
Q29tcGxldGlvbigpCiAgICAgaWYgKCFtX3dvcmtlckdsb2JhbFNjb3BlKQogICAgICAgICByZXR1
cm47CiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9IG1fd29ya2VyR2xvYmFsU2NvcGUtPnRo
cmVhZCgpLnJ1bkxvb3AoKTsKLSAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1l
c3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwogICAg
IFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9
IG1fd29ya2VyQ2xpZW50V3JhcHBlci5wdHIoKTsKLSAgICB3aGlsZSAobV93b3JrZXJHbG9iYWxT
Y29wZSAmJiBjbGllbnRXcmFwcGVyICYmICFjbGllbnRXcmFwcGVyLT5zeW5jTWV0aG9kRG9uZSgp
ICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7Ci0gICAgICAgIHJlc3VsdCA9
IHJ1bkxvb3AucnVuSW5Nb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIG1fdGFza01vZGUp
OyAvLyBNYXkgY2F1c2UgdGhpcyBicmlkZ2UgdG8gZ2V0IGRpc2Nvbm5lY3RlZCwgd2hpY2ggbWFr
ZXMgbV93b3JrZXJHbG9iYWxTY29wZSBiZWNvbWUgbnVsbC4KKyAgICB3aGlsZSAobV93b3JrZXJH
bG9iYWxTY29wZSAmJiBjbGllbnRXcmFwcGVyICYmICFjbGllbnRXcmFwcGVyLT5zeW5jTWV0aG9k
RG9uZSgpICYmIHN1Y2Nlc3MpIHsKKyAgICAgICAgc3VjY2VzcyA9IHJ1bkxvb3AucnVuSW5Nb2Rl
KG1fd29ya2VyR2xvYmFsU2NvcGUuZ2V0KCksIG1fdGFza01vZGUpOyAvLyBNYXkgY2F1c2UgdGhp
cyBicmlkZ2UgdG8gZ2V0IGRpc2Nvbm5lY3RlZCwgd2hpY2ggbWFrZXMgbV93b3JrZXJHbG9iYWxT
Y29wZSBiZWNvbWUgbnVsbC4KICAgICAgICAgY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50
V3JhcHBlci5wdHIoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDhmNDUzYTQyMzE0OTgwMzRmODBhMTBiNGRj
OWI3NGEzNDljZWE0Ni4uNGIzNDgzZjdhYjQ3Mjg5OTY5NTI2ZWE2MjdlNmY3OTUzZjg4OTNhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTMzMSw2ICsxMzMxLDcgQEAKIAkJNDYyRTRDNTAyNjE2QTgxMTAwM0EyQzY3IC8qIFNj
cmlwdEJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDYyRTRDNEQyNjE2QTgwMTAwM0EyQzY3IC8qIFNjcmlwdEJ1ZmZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzUyMUFEMjA4MTA5MkEw
MEMyODkyMiAvKiBXaW5kb3dQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYzNTIxQUEyMDgxMDkwQjAwQzI4OTIyIC8qIFdpbmRvd1Byb3h5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzRUI2
MjMxQjg3ODlFMDAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBU
YWdDb2xsZWN0aW9uLmggKi87IH07CisJCTQ2NTBBRDE5MjZGQ0NBNjUwMDQ3RjdBRCAvKiBXb3Jr
ZXJUaHJlYWRNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjUwQUQxNzI2RkNDQTVBMDA0N0Y3QUQgLyogV29ya2VyVGhyZWFkTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2NTMwN0QwMURC
NkVFNDgwMEU0MTM3QyAvKiBKU1VJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4M0UwNDVFRjFEQUExMDRGMDBCMEQ4QjkgLyogSlNVSUV2
ZW50SW5pdC5oICovOyB9OwogCQk0NjY1OERDOTFGQTI0Qjg3MDBGN0RENTQgLyogU1dDb250ZXh0
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY3MjQxM0IxRkEyNEIxNDAwODhCRDZEIC8qIFNXQ29udGV4dE1hbmFnZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjZDMkRBRDI2QzczQUZD
MDA2NTE5MzEgLyogUG9saWN5Q29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjZDMkRBQjI2QzczQUZCMDA2NTE5MzEgLyogUG9saWN5Q29u
dGFpbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTg0OTYsNiArODQ5Nyw3IEBACiAJCTQ2M0VCNjIwMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBUYWdD
b2xsZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRhZ0Nv
bGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjNFQjYyMTFCODc4
OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUYWdDb2xsZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
NDI0MDQ1MjBFQUYwRUQwMEIyOUZEMiAvKiBEYXRhYmFzZU1hbmFnZXJDb2NvYS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERhdGFiYXNlTWFuYWdlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NjUwQUQxNzI2RkNDQTVBMDA0N0Y3QUQgLyogV29ya2VyVGhyZWFkTW9k
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJUaHJlYWRNb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUE4RTc4MUM4QTI0Q0UwMEU3RDNFNCAv
KiBSdW50aW1lQXBwbGljYXRpb25DaGVja3NDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrc0NvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjVFREQ5RjIyMkY0RUMzMDBCNDZFMTYgLyogRGV2
aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NUVEREEwMjIyRjRFQzQwMEI0NkUx
NiAvKiBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRl
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NTEzLDYgKzE5NTE1LDcgQEAK
IAkJCQkyRUE3NjgwMzBGRTcxMjY0MDBBQjlDOEEgLyogV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50
LmggKi8sCiAJCQkJMkU0MzQ2NDIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAg
Ki8sCiAJCQkJMkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovLAor
CQkJCTQ2NTBBRDE3MjZGQ0NBNUEwMDQ3RjdBRCAvKiBXb3JrZXJUaHJlYWRNb2RlLmggKi8sCiAJ
CQkJRTNBRkQ3QUIyNTVGNTBEQzAwRTVFMzBFIC8qIFdvcmtlclRocmVhZFR5cGUuaCAqLywKIAkJ
CQk1MUYxNzRGQzFGMzU4OTg4MDBDNzQ5NTAgLyogV29ya2VyVHlwZS5oICovLAogCQkJCTUxRjE3
NEZBMUYzNTg4RDcwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmlkbCAqLywKQEAgLTM1OTM4LDYgKzM1
OTQxLDcgQEAKIAkJCQkyRTQzNDY1NTBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwQjkwNTZGOTBGMjY4NUYzMDA5NUZGNkEgLyogV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdBQUJEMkQxNEZBMDlENTAwNzQ1
N0FFIC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NjUwQUQxOTI2RkNDQTY1MDA0N0Y3QUQgLyogV29ya2VyVGhyZWFkTW9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTNBRkQ3QUQyNTVGNTBFQjAwRTVFMzBFIC8qIFdvcmtlclRocmVhZFR5
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1NEEwQzY4MURCODA3RDkwMDE3QTkwQiAvKiBXb3Jr
ZXJUb1BhZ2VGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRjE3NEZFMUYz
NTg5OTIwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwCmluZGV4IDhhN2FiOGMyMGUwOTQ5MGJl
MzdlNWMwNjc1NjJiMmMzZDI1MWJjNTQuLmI1MjA4OGJjMzlkNmVmZWQ0ZDk4MGIzYWQ0MmU5M2Ey
NGQ5ZTU4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1
Z2dlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNw
cApAQCAtNzksOSArNzksMTMgQEAgdm9pZCBXb3JrZXJEZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hp
bGVQYXVzZWQoKQogCiAgICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3Ao
KTsKIAorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgcGF1c2luZyB3b3JrZXJzIHJ1bm5p
bmcgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIGlmICghaXM8V29ya2VyRGVkaWNhdGVkUnVuTG9v
cD4obV9nbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+cnVuTG9vcCgpKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQ7CiAgICAg
ZG8gewotICAgICAgICByZXN1bHQgPSBtX2dsb2JhbFNjb3BlLndvcmtlck9yV29ya2xldFRocmVh
ZCgpLT5ydW5Mb29wKCkucnVuSW5EZWJ1Z2dlck1vZGUobV9nbG9iYWxTY29wZSk7CisgICAgICAg
IHJlc3VsdCA9IGRvd25jYXN0PFdvcmtlckRlZGljYXRlZFJ1bkxvb3A+KG1fZ2xvYmFsU2NvcGUu
d29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKSkucnVuSW5EZWJ1Z2dlck1vZGUobV9n
bG9iYWxTY29wZSk7CiAgICAgfSB3aGlsZSAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0
ZWQgJiYgIWRvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBjMmRhYTVj
Y2FjYzliM2I0MGRhNjFmNzYyNmM4MTk4MGVhZWJhZDNjLi5kZmY4OTcwMWM5MzliYzczYzM3MDMy
YWQ5YzQyYWQyMDYzMjZhZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtl
clRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC03NCwxMSArNzQsMTEgQEAgdm9pZCBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3AKICAgICBhdXRvIG1vZGUgPSBtYWtlU3RyaW5nKCJsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5TW9kZSIsIHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSk7CiAKICAgICBhdXRvIGxvYWRl
ciA9IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSwgY2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBTdHJpbmcoKSk7
Ci0gICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBNZXNzYWdlUXVldWVNZXNzYWdl
UmVjZWl2ZWQ7Ci0gICAgd2hpbGUgKCFsb2FkZXItPmRvbmUoKSAmJiByZXN1bHQgIT0gTWVzc2Fn
ZVF1ZXVlVGVybWluYXRlZCkKLSAgICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUoJndv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBtb2RlKTsKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVl
OworICAgIHdoaWxlICghbG9hZGVyLT5kb25lKCkgJiYgc3VjY2VzcykKKyAgICAgICAgc3VjY2Vz
cyA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwgbW9kZSk7
CiAKLSAgICBpZiAoIWxvYWRlci0+ZG9uZSgpICYmIHJlc3VsdCA9PSBNZXNzYWdlUXVldWVUZXJt
aW5hdGVkKQorICAgIGlmICghbG9hZGVyLT5kb25lKCkgJiYgIXN1Y2Nlc3MpCiAgICAgICAgIGxv
YWRlci0+Y2FuY2VsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VVc2VyVGltaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VV
c2VyVGltaW5nLmNwcAppbmRleCBhMzY4ODcyMzc0YzEyZjdjYTMwZTFiZjljMjkxMDM1OThlM2Ew
OTE3Li5kMWJjY2ZhNTkyYmM1MjUyM2VlYmQ2ZjBhMDM1MmRkMGYzMTRlYjQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCkBAIC0xMzcsNyArMTM3
LDcgQEAgRXhjZXB0aW9uT3I8ZG91YmxlPiBQZXJmb3JtYW5jZVVzZXJUaW1pbmc6OmNvbnZlcnRN
YXJrVG9UaW1lc3RhbXAoY29uc3QgVmFyaWFudDwKIAogRXhjZXB0aW9uT3I8ZG91YmxlPiBQZXJm
b3JtYW5jZVVzZXJUaW1pbmc6OmNvbnZlcnRNYXJrVG9UaW1lc3RhbXAoY29uc3QgU3RyaW5nJiBt
YXJrKSBjb25zdAogewotICAgIGlmICghaXM8RG9jdW1lbnQ+KG1fcGVyZm9ybWFuY2Uuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKSkgeworICAgIGlmICghaXNNYWluVGhyZWFkKCkpIHsKICAgICAg
ICAgaWYgKGlzUmVzdHJpY3RlZE1hcmtOYW1lTm9uTWFpblRocmVhZChtYXJrKSkKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKICAgICB9IGVsc2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oCmlu
ZGV4IGI5NzBjZGU0MWU3YzU0MTEyMTAyNTJlNjVhMThlNDFjNmI5MzlkNjguLjJmMWUzNTIxZjM0
NzcxZDRhZDU1NTY2NmQ4Yzc3ODdmODQ0OThjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKQEAgLTQ1LDYgKzQ1LDkgQEAg
Y2xhc3MgV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgcHVibGljIFJlZkNvdW4KIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Xb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSgpOwogCisgICAgdXNpbmcgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
d2Vha1B0ckZhY3Rvcnk7CisgICAgdXNpbmcgV2Vha1ZhbHVlVHlwZSA9IFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OldlYWtWYWx1ZVR5cGU7CisKICAgICBib29sIGlzQ2xvc2luZygpIGNvbnN0IHsg
cmV0dXJuIG1faXNDbG9zaW5nOyB9CiAgICAgV29ya2VyT3JXb3JrbGV0VGhyZWFkKiB3b3JrZXJP
cldvcmtsZXRUaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3RocmVhZDsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmNwcAppbmRleCBiMmUxZjMwZGU3NDYyN2EzNDUwYzRlYzQwZWE0YjRmNzQ1MTllMDQ4Li5m
ZjI3YjZhNmViNDQ3ZDZkYTlhZjY1NTIzZjE5Yjc4YTVhMDZiY2U5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTI2NywxMCArMjY3LDEwIEBAIEpTQzo6SlNWYWx1ZSBXb3JrZXJPcldvcmtsZXRT
Y3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZShKU0M6OkpTTW9kdWxlUmVjb3JkCiAgICAg
cmV0dXJuIG1vZHVsZVJlY29yZC5ldmFsdWF0ZSgmZ2xvYmFsT2JqZWN0LCBhd2FpdGVkVmFsdWUs
IHJlc3VtZU1vZGUpOwogfQogCi1NZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlck9yV29ya2xl
dFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTeW5jaHJvbm91c2x5KFdvcmtlclNjcmlwdEZl
dGNoZXImIHNjcmlwdEZldGNoZXIsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUp
Citib29sIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTeW5jaHJv
bm91c2x5KFdvcmtlclNjcmlwdEZldGNoZXImIHNjcmlwdEZldGNoZXIsIGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUpCiB7CiAgICAgaWYgKGlzRXhlY3V0aW9uRm9yYmlkZGVuKCkp
Ci0gICAgICAgIHJldHVybiBNZXNzYWdlUXVldWVUZXJtaW5hdGVkOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKIApAQCAtMzQwLDE0ICszNDAsMTQg
QEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVy
Ojpsb2FkTW9kdWxlU3luY2hyb25vdXNseSgKICAgICAvLyB0YXNrIGlzIHF1ZXVlZCBpbiBXb3Jr
ZXJSdW5Mb29wIGJlZm9yZSBzdGFydCBydW5uaW5nIG1vZHVsZSBzY3JpcHRzLiBUaGlzIHRhc2sg
c2hvdWxkIG5vdCBiZSBkaXNjYXJkZWQKICAgICAvLyBpbiB0aGUgZm9sbG93aW5nIGRyaXZpbmcg
b2YgdGhlIFJ1bkxvb3Agd2hpY2ggbWFpbmx5IGF0dGVtcHQgdG8gY29sbGVjdCBpbml0aWFsIGxv
YWQgb2YgbW9kdWxlIHNjcmlwdHMuCiAgICAgU3RyaW5nIHRhc2tNb2RlID0gV29ya2VyTW9kdWxl
U2NyaXB0TG9hZGVyOjp0YXNrTW9kZSgpOwotICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVz
dWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwotICAgIHdoaWxlICgoIXByb3RlY3Rv
ci0+aXNMb2FkZWQoKSAmJiAhcHJvdGVjdG9yLT53YXNDYW5jZWxlZCgpKSAmJiByZXN1bHQgIT0g
TWVzc2FnZVF1ZXVlVGVybWluYXRlZCkgewotICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bklu
TW9kZShtX2dsb2JhbFNjb3BlLCB0YXNrTW9kZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gTWVz
c2FnZVF1ZXVlVGVybWluYXRlZCkKKyAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOworICAgIHdoaWxl
ICgoIXByb3RlY3Rvci0+aXNMb2FkZWQoKSAmJiAhcHJvdGVjdG9yLT53YXNDYW5jZWxlZCgpKSAm
JiBzdWNjZXNzKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBydW5Mb29wLnJ1bkluTW9kZShtX2dsb2Jh
bFNjb3BlLCB0YXNrTW9kZSk7CisgICAgICAgIGlmIChzdWNjZXNzKQogICAgICAgICAgICAgbV9n
bG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucGVyZm9ybU1pY3JvdGFza0NoZWNrcG9pbnQoKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzdWNjZXNzOwogfQogCiB2b2lk
IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxpbmtBbmRFdmFsdWF0ZU1vZHVsZShX
b3JrZXJTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRjaGVyLCBjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
JiBzb3VyY2VDb2RlLCBTdHJpbmcqIHJldHVybmVkRXhjZXB0aW9uTWVzc2FnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmgKaW5kZXggMzA0YWM0MDMzNGMwNjJmN2ViNGJmZTU5ZTM1ODc2OWNiNzRjOTY2ZC4uMzMx
Mzc5ZGZlNTIzN2MwM2VjMmYxNGZjOThhZTc3MWViMjRmZmFkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmgK
QEAgLTk5LDcgKzk5LDcgQEAgcHVibGljOgogICAgIEpTQzo6SlNWYWx1ZSBldmFsdWF0ZU1vZHVs
ZShKU0M6OkpTTW9kdWxlUmVjb3JkJiwgSlNDOjpKU1ZhbHVlIGF3YWl0ZWRWYWx1ZSwgSlNDOjpK
U1ZhbHVlIHJlc3VtZU1vZGUpOwogCiAgICAgdm9pZCBsaW5rQW5kRXZhbHVhdGVNb2R1bGUoV29y
a2VyU2NyaXB0RmV0Y2hlciYsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTdHJpbmcqIHJldHVy
bmVkRXhjZXB0aW9uTWVzc2FnZSA9IG51bGxwdHIpOwotICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1
bHQgbG9hZE1vZHVsZVN5bmNocm9ub3VzbHkoV29ya2VyU2NyaXB0RmV0Y2hlciYsIGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmKTsKKyAgICBib29sIGxvYWRNb2R1bGVTeW5jaHJvbm91c2x5KFdvcmtl
clNjcmlwdEZldGNoZXImLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAKICAgICB2b2lkIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShjb25zdCBVUkwmIG1vZHVsZVVSTCwgRmV0Y2hPcHRpb25zOjpD
cmVkZW50aWFscywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlv
bj4mJik+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9y
V29ya2xldFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFRocmVhZC5jcHAKaW5kZXggZmQ2NTk4NDUzMGU3YzE4MjhlOTMzMzAwMTE1Mjk4ZWIwZWRhZWYz
NC4uYTNiZGRiYjRjOTNhOWMzMTQwZWQ2ZWFhYTM0ZGQwYjQyNGM0NDU5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFRocmVhZC5oIgogCiAjaW5jbHVkZSAi
VGhyZWFkR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIldvcmtlckV2ZW50TG9vcC5oIgogI2luY2x1
ZGUgIldvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3Jr
bGV0U2NyaXB0Q29udHJvbGxlci5oIgogCkBAIC01NCw4ICs1NSwyMCBAQCBIYXNoU2V0PFdvcmtl
ck9yV29ya2xldFRocmVhZCo+JiBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xl
dFRocmVhZHMoKQogICAgIHJldHVybiB3b3JrZXJPcldvcmtsZXRUaHJlYWRzOwogfQogCi1Xb3Jr
ZXJPcldvcmtsZXRUaHJlYWQ6Oldvcmtlck9yV29ya2xldFRocmVhZChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpCitzdGF0aWMgVW5pcXVlUmVmPFdvcmtlclJ1bkxvb3A+IGNvbnN0cnVjdFJ1bkxv
b3AoV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKQoreworICAgIHN3aXRjaCAod29y
a2VyVGhyZWFkTW9kZSkgeworICAgIGNhc2UgV29ya2VyVGhyZWFkTW9kZTo6VXNlTWFpblRocmVh
ZDoKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8V29ya2VyTWFpblJ1bkxvb3A+KCk7Cisg
ICAgY2FzZSBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxXb3JrZXJEZWRpY2F0ZWRSdW5Mb29w
PigpOworfQorCitXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Oldvcmtlck9yV29ya2xldFRocmVhZChj
b25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9k
ZSkKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9ydW5Mb29wKGNvbnN0
cnVjdFJ1bkxvb3Aod29ya2VyVGhyZWFkTW9kZSkpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IHdv
cmtlck9yV29ya2xldFRocmVhZHNMb2NrKCkgfTsKICAgICB3b3JrZXJPcldvcmtsZXRUaHJlYWRz
KCkuYWRkKHRoaXMpOwpAQCAtNzMsOSArODYsMTMgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJl
YWQ6OnN0YXJ0UnVubmluZ0RlYnVnZ2VyVGFza3MoKQogICAgIEFTU0VSVCghbV9wYXVzZWRGb3JE
ZWJ1Z2dlcik7CiAgICAgbV9wYXVzZWRGb3JEZWJ1Z2dlciA9IHRydWU7CiAKKyAgICAvLyBGSVhN
RTogQWRkIHN1cHBvcnQgZm9yIGRlYnVnZ2luZyB3b3JrZXJzIHJ1bm5pbmcgb24gdGhlIG1haW4g
dGhyZWFkLgorICAgIGlmICghaXM8V29ya2VyRGVkaWNhdGVkUnVuTG9vcD4obV9ydW5Mb29wLmdl
dCgpKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1
bHQ7CiAgICAgZG8gewotICAgICAgICByZXN1bHQgPSBtX3J1bkxvb3AucnVuSW5EZWJ1Z2dlck1v
ZGUoKm1fZ2xvYmFsU2NvcGUpOworICAgICAgICByZXN1bHQgPSBkb3duY2FzdDxXb3JrZXJEZWRp
Y2F0ZWRSdW5Mb29wPihtX3J1bkxvb3AuZ2V0KCkpLnJ1bkluRGVidWdnZXJNb2RlKCptX2dsb2Jh
bFNjb3BlKTsKICAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCAm
JiBtX3BhdXNlZEZvckRlYnVnZ2VyKTsKIH0KIApAQCAtODcsMTMgKzEwNCwzMSBAQCB2b2lkIFdv
cmtlck9yV29ya2xldFRocmVhZDo6c3RvcFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCkKIHZvaWQgV29y
a2VyT3JXb3JrbGV0VGhyZWFkOjpydW5FdmVudExvb3AoKQogewogICAgIC8vIERvZXMgbm90IHJl
dHVybiB1bnRpbCB0ZXJtaW5hdGVkLgotICAgIG1fcnVuTG9vcC5ydW4obV9nbG9iYWxTY29wZS5n
ZXQoKSk7CisgICAgaWYgKGlzPFdvcmtlckRlZGljYXRlZFJ1bkxvb3A+KG1fcnVuTG9vcC5nZXQo
KSkpCisgICAgICAgIGRvd25jYXN0PFdvcmtlckRlZGljYXRlZFJ1bkxvb3A+KG1fcnVuTG9vcC5n
ZXQoKSkucnVuKG1fZ2xvYmFsU2NvcGUuZ2V0KCkpOwogfQogCiB2b2lkIFdvcmtlck9yV29ya2xl
dFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkKIHsKICAgICBSZWYgcHJvdGVjdGVkVGhp
cyB7ICp0aGlzIH07CiAKKyAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgbV9nbG9i
YWxTY29wZSA9IGNyZWF0ZUdsb2JhbFNjb3BlKCk7CisgICAgICAgIGlmICghbV9nbG9iYWxTY29w
ZSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkb3duY2FzdDxXb3JrZXJNYWluUnVu
TG9vcD4obV9ydW5Mb29wLmdldCgpKS5zZXRHbG9iYWxTY29wZSgqbV9nbG9iYWxTY29wZSk7CisK
KyAgICAgICAgU3RyaW5nIGV4Y2VwdGlvbk1lc3NhZ2U7CisgICAgICAgIGV2YWx1YXRlU2NyaXB0
SWZOZWNlc3NhcnkoZXhjZXB0aW9uTWVzc2FnZSk7CisKKyAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbZXZhbHVhdGVDYWxsYmFjayA9IFdURk1vdmUobV9ldmFsdWF0ZUNhbGxiYWNrKSwgbWVzc2Fn
ZSA9IFdURk1vdmUoZXhjZXB0aW9uTWVzc2FnZSldIHsKKyAgICAgICAgICAgIGlmIChldmFsdWF0
ZUNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGV2YWx1YXRlQ2FsbGJhY2sobWVzc2FnZSk7Cisg
ICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gUHJvcGFnYXRlIHRo
ZSBtYWluVGhyZWFkJ3MgZmVudiB0byB3b3JrZXJzLgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgRmxvYXRpbmdQb2ludEVudmlyb25tZW50OjpzaW5nbGV0b24oKS5wcm9wYWdhdGVNYWlu
VGhyZWFkRW52aXJvbm1lbnQoKTsKQEAgLTEyMCw3ICsxNTUsNyBAQCB2b2lkIFdvcmtlck9yV29y
a2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkKIAogICAgICAgICBzY3JpcHRDb250
cm9sbGVyID0gbV9nbG9iYWxTY29wZS0+c2NyaXB0KCk7CiAKLSAgICAgICAgaWYgKG1fcnVuTG9v
cC50ZXJtaW5hdGVkKCkpIHsKKyAgICAgICAgaWYgKG1fcnVuTG9vcC0+dGVybWluYXRlZCgpKSB7
CiAgICAgICAgICAgICAvLyBUaGUgd29ya2VyIHdhcyB0ZXJtaW5hdGVkIGJlZm9yZSB0aGUgdGhy
ZWFkIGhhZCBhIGNoYW5jZSB0byBydW4uIFNpbmNlIHRoZSBjb250ZXh0IGRpZG4ndCBleGlzdCB5
ZXQsCiAgICAgICAgICAgICAvLyBmb3JiaWRFeGVjdXRpb24oKSBjb3VsZG4ndCBiZSBjYWxsZWQg
ZnJvbSBzdG9wKCkuCiAgICAgICAgICAgICBzY3JpcHRDb250cm9sbGVyLT5zY2hlZHVsZUV4ZWN1
dGlvblRlcm1pbmF0aW9uKCk7CkBAIC0xMzIsNyArMTY3LDcgQEAgdm9pZCBXb3JrZXJPcldvcmts
ZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCgpCiAgICAgICAgIHN0YXJ0UnVubmluZ0Rl
YnVnZ2VyVGFza3MoKTsKIAogICAgICAgICAvLyBJZiB0aGUgd29ya2VyIHdhcyBzb21laG93IHRl
cm1pbmF0ZWQgd2hpbGUgcHJvY2Vzc2luZyBkZWJ1Z2dlciBjb21tYW5kcy4KLSAgICAgICAgaWYg
KG1fcnVuTG9vcC50ZXJtaW5hdGVkKCkpCisgICAgICAgIGlmIChtX3J1bkxvb3AtPnRlcm1pbmF0
ZWQoKSkKICAgICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPmZvcmJpZEV4ZWN1dGlvbigpOwog
ICAgIH0KIApAQCAtMjI4LDcgKzI2MywxOCBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6
c3RvcChGdW5jdGlvbjx2b2lkKCk+JiYgc3RvcHBlZENhbGxiYWNrKQogICAgIGlmIChnbG9iYWxT
Y29wZSgpKSB7CiAgICAgICAgIGdsb2JhbFNjb3BlKCktPnNjcmlwdCgpLT5zY2hlZHVsZUV4ZWN1
dGlvblRlcm1pbmF0aW9uKCk7CiAKLSAgICAgICAgbV9ydW5Mb29wLnBvc3RUYXNrQW5kVGVybWlu
YXRlKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xlYW51cFRhc2ssIFtdIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0ICkgeworICAgICAgICBpZiAoaXM8V29ya2VyTWFp
blJ1bkxvb3A+KG1fcnVuTG9vcC5nZXQoKSkpIHsKKyAgICAgICAgICAgIGF1dG8gZ2xvYmFsU2Nv
cGUgPSBzdGQ6OmV4Y2hhbmdlKG1fZ2xvYmFsU2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAg
Z2xvYmFsU2NvcGUtPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOworICAgICAgICAgICAgZ2xvYmFs
U2NvcGUtPmNsZWFyU2NyaXB0KCk7CisgICAgICAgICAgICBtX3J1bkxvb3AtPnRlcm1pbmF0ZSgp
OworCisgICAgICAgICAgICBpZiAobV9zdG9wcGVkQ2FsbGJhY2spCisgICAgICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChzdGQ6OmV4Y2hhbmdlKG1fc3RvcHBlZENhbGxiYWNrLCBudWxscHRy
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtX3J1bkxvb3At
PnBvc3RUYXNrQW5kVGVybWluYXRlKHsgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzazo6Q2xl
YW51cFRhc2ssIFtdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0ICkgewogICAgICAg
ICAgICAgYXV0byYgZ2xvYmFsU2NvcGUgPSBkb3duY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZT4oY29udGV4dCk7CiAKICAgICAgICAgICAgIGdsb2JhbFNjb3BlLnByZXBhcmVGb3JEZXN0
cnVjdGlvbigpOwpAQCAtMjQ0LDEzICsyOTAsMTYgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJl
YWQ6OnN0b3AoRnVuY3Rpb248dm9pZCgpPiYmIHN0b3BwZWRDYWxsYmFjaykKICAgICAgICAgfSB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3J1bkxvb3AudGVybWluYXRlKCk7Cisg
ICAgbV9ydW5Mb29wLT50ZXJtaW5hdGUoKTsKIH0KIAogdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJl
YWQ6OnN1c3BlbmQoKQogewogICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOwotICAgIG1fcnVuTG9v
cC5wb3N0VGFzayhbJl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICBpZiAoaXM8V29y
a2VyTWFpblJ1bkxvb3A+KG1fcnVuTG9vcC5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fcnVuTG9vcC0+cG9zdFRhc2soWyZdKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAg
ICAgIGlmIChnbG9iYWxTY29wZSgpKQogICAgICAgICAgICAgZ2xvYmFsU2NvcGUoKS0+c3VzcGVu
ZCgpOwogCkBAIC0yNjUsNiArMzE0LDkgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnJl
c3VtZSgpCiB7CiAgICAgQVNTRVJUKG1faXNTdXNwZW5kZWQpOwogICAgIG1faXNTdXNwZW5kZWQg
PSBmYWxzZTsKKyAgICBpZiAoaXM8V29ya2VyTWFpblJ1bkxvb3A+KG1fcnVuTG9vcC5nZXQoKSkp
CisgICAgICAgIHJldHVybjsKKwogICAgIG1fc3VzcGVuc2lvblNlbWFwaG9yZS5zaWduYWwoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRU
aHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgK
aW5kZXggMWVlOGEzNGIyMjIxN2QwYjIwOWU5NGM5OTk1N2E4MmRiYjBkMDgxNi4uYmIzYmI3NTJk
YjRiYTIwZGFlMmVjZmRkYWE4YmU1NDk5ZDAyOTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIldvcmtlclJ1bkxvb3AuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJl
YWRNb2RlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgpAQCAtNDAsNyArNDEsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIFdvcmtlckRlYnVnZ2VyUHJveHk7CiBjbGFzcyBXb3JrZXJMb2Fk
ZXJQcm94eTsKLWNsYXNzIFdvcmtlclJ1bkxvb3A7CiAKIGNsYXNzIFdvcmtlck9yV29ya2xldFRo
cmVhZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxXb3JrZXJPcldvcmtsZXRUaHJlYWQ+
IHsKIHB1YmxpYzoKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJl
bGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0IFN0cmluZyYgaWRlbnRpZmll
cik7CisgICAgZXhwbGljaXQgV29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgV29ya2VyVGhyZWFkTW9kZSA9IFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1Ro
cmVhZCk7CiAgICAgdm9pZCB3b3JrZXJPcldvcmtsZXRUaHJlYWQoKTsKIAogICAgIC8vIEV4ZWN1
dGVzIHRoZSBldmVudCBsb29wIGZvciB0aGUgd29ya2VyIHRocmVhZC4gRGVyaXZlZCBjbGFzc2Vz
IGNhbiBvdmVycmlkZSB0byBwZXJmb3JtIGFjdGlvbnMgYmVmb3JlL2FmdGVyIGVudGVyaW5nIHRo
ZSBldmVudCBsb29wLgpAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIExvY2sgbV90aHJl
YWRDcmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9jazsKICAgICBSZWZQdHI8V29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGU+IG1fZ2xvYmFsU2NvcGU7CiAgICAgUmVmUHRyPFdURjo6VGhyZWFkPiBtX3Ro
cmVhZDsKLSAgICBXb3JrZXJSdW5Mb29wIG1fcnVuTG9vcDsKKyAgICBVbmlxdWVSZWY8V29ya2Vy
UnVuTG9vcD4gbV9ydW5Mb29wOwogICAgIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+IG1f
ZXZhbHVhdGVDYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fc3RvcHBlZENhbGxiYWNr
OwogICAgIEJpbmFyeVNlbWFwaG9yZSBtX3N1c3BlbnNpb25TZW1hcGhvcmU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBjOTU2ZGY5NTZiMGI0MTNiNmYzMWU2
OGIxMjcwMTFlMmMwNzJlNjRlLi42YmMxMjc3N2U0NTg5ZmE0NzFkZjYwMGYzYzA4ODExNjQ0OTMz
ZmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTEsNiAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIAogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZGVmYXVsdE1vZGU7CiAg
ICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFdvcmtlclJ1bkxvb3A6OlRhc2smIHRh
c2spIGNvbnN0CisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFdvcmtlckRlZGljYXRlZFJ1bkxv
b3A6OlRhc2smIHRhc2spIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9kZWZhdWx0TW9k
ZSB8fCBtX21vZGUgPT0gdGFzay5tb2RlKCk7CiAgICAgfQpAQCAtODYsMTIgKzg2LDEyIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX2RlZmF1bHRNb2RlOwogfTsKIAotV29ya2VyUnVuTG9vcDo6V29y
a2VyUnVuTG9vcCgpCitXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpXb3JrZXJEZWRpY2F0ZWRSdW5M
b29wKCkKICAgICA6IG1fc2hhcmVkVGltZXIobWFrZVVuaXF1ZTxXb3JrZXJTaGFyZWRUaW1lcj4o
KSkKIHsKIH0KIAotV29ya2VyUnVuTG9vcDo6fldvcmtlclJ1bkxvb3AoKQorV29ya2VyRGVkaWNh
dGVkUnVuTG9vcDo6fldvcmtlckRlZGljYXRlZFJ1bkxvb3AoKQogewogICAgIEFTU0VSVCghbV9u
ZXN0ZWRDb3VudCk7CiB9CkBAIC0xMTAsNyArMTEwLDcgQEAgY2xhc3MgUnVuTG9vcFNldHVwIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSdW5Mb29wU2V0dXApOwogcHVibGljOgogICAgIGVu
dW0gY2xhc3MgSXNGb3JEZWJ1Z2dpbmcgeyBObywgWWVzIH07Ci0gICAgUnVuTG9vcFNldHVwKFdv
cmtlclJ1bkxvb3AmIHJ1bkxvb3AsIElzRm9yRGVidWdnaW5nIGlzRm9yRGVidWdnaW5nKQorICAg
IFJ1bkxvb3BTZXR1cChXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wJiBydW5Mb29wLCBJc0ZvckRlYnVn
Z2luZyBpc0ZvckRlYnVnZ2luZykKICAgICAgICAgOiBtX3J1bkxvb3AocnVuTG9vcCkKICAgICAg
ICAgLCBtX2lzRm9yRGVidWdnaW5nKGlzRm9yRGVidWdnaW5nKQogICAgIHsKQEAgLTEzMCwzNyAr
MTMwLDM2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIG1fcnVuTG9vcC5tX2RlYnVnQ291bnQtLTsK
ICAgICB9CiBwcml2YXRlOgotICAgIFdvcmtlclJ1bkxvb3AmIG1fcnVuTG9vcDsKKyAgICBXb3Jr
ZXJEZWRpY2F0ZWRSdW5Mb29wJiBtX3J1bkxvb3A7CiAgICAgSXNGb3JEZWJ1Z2dpbmcgbV9pc0Zv
ckRlYnVnZ2luZyB7IElzRm9yRGVidWdnaW5nOjpObyB9OwogfTsKIAotdm9pZCBXb3JrZXJSdW5M
b29wOjpydW4oV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQpCit2b2lkIFdvcmtl
ckRlZGljYXRlZFJ1bkxvb3A6OnJ1bihXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4
dCkKIHsKICAgICBSdW5Mb29wU2V0dXAgc2V0dXAoKnRoaXMsIFJ1bkxvb3BTZXR1cDo6SXNGb3JE
ZWJ1Z2dpbmc6Ok5vKTsKICAgICBNb2RlUHJlZGljYXRlIG1vZGVQcmVkaWNhdGUoZGVmYXVsdE1v
ZGUoKSk7CiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQ7CiAgICAgZG8gewotICAg
ICAgICByZXN1bHQgPSBydW5Jbk1vZGUoY29udGV4dCwgbW9kZVByZWRpY2F0ZSwgV2FpdEZvck1l
c3NhZ2UpOworICAgICAgICByZXN1bHQgPSBydW5Jbk1vZGUoY29udGV4dCwgbW9kZVByZWRpY2F0
ZSk7CiAgICAgfSB3aGlsZSAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpOwogICAg
IHJ1bkNsZWFudXBUYXNrcyhjb250ZXh0KTsKIH0KIAotTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBX
b3JrZXJSdW5Mb29wOjpydW5JbkRlYnVnZ2VyTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSYgY29udGV4dCkKK01lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyRGVkaWNhdGVkUnVuTG9v
cDo6cnVuSW5EZWJ1Z2dlck1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRleHQp
CiB7CiAgICAgUnVuTG9vcFNldHVwIHNldHVwKCp0aGlzLCBSdW5Mb29wU2V0dXA6OklzRm9yRGVi
dWdnaW5nOjpZZXMpOwotICAgIHJldHVybiBydW5Jbk1vZGUoJmNvbnRleHQsIE1vZGVQcmVkaWNh
dGUgeyBkZWJ1Z2dlck1vZGUoKSB9LCBXYWl0Rm9yTWVzc2FnZSk7CisgICAgcmV0dXJuIHJ1bklu
TW9kZSgmY29udGV4dCwgTW9kZVByZWRpY2F0ZSB7IGRlYnVnZ2VyTW9kZSgpIH0pOwogfQogCi1N
ZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtb2RlLCBXYWl0TW9kZSB3
YWl0TW9kZSkKK2Jvb2wgV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9y
V29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAg
QVNTRVJUKG1vZGUgIT0gZGVidWdnZXJNb2RlKCkpOwogICAgIFJ1bkxvb3BTZXR1cCBzZXR1cCgq
dGhpcywgUnVuTG9vcFNldHVwOjpJc0ZvckRlYnVnZ2luZzo6Tm8pOwogICAgIE1vZGVQcmVkaWNh
dGUgbW9kZVByZWRpY2F0ZShTdHJpbmcgeyBtb2RlIH0pOwotICAgIE1lc3NhZ2VRdWV1ZVdhaXRS
ZXN1bHQgcmVzdWx0ID0gcnVuSW5Nb2RlKGNvbnRleHQsIG1vZGVQcmVkaWNhdGUsIHdhaXRNb2Rl
KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBydW5Jbk1vZGUoY29udGV4dCwgbW9k
ZVByZWRpY2F0ZSkgIT0gTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdDo6TWVzc2FnZVF1ZXVlVGVybWlu
YXRlZDsKIH0KIAotTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1v
ZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IE1vZGVQcmVkaWNh
dGUmIHByZWRpY2F0ZSwgV2FpdE1vZGUgd2FpdE1vZGUpCitNZXNzYWdlUXVldWVXYWl0UmVzdWx0
IFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZSogY29udGV4dCwgY29uc3QgTW9kZVByZWRpY2F0ZSYgcHJlZGljYXRlKQogewogICAgIEFT
U0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQoY29udGV4dC0+d29ya2VyT3JXb3JrbGV0VGhyZWFk
KCktPnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CkBAIC0xODUsNyArMTg0LDcgQEAg
TWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUqIGNvbnQKICAgICB0aW1lb3V0RGVsYXkgPSBzdGQ6Om1heCgwX3Ms
IFNlY29uZHModGltZVVudGlsTmV4dENGUnVuTG9vcFRpbWVySW5TZWNvbmRzKSk7CiAjZW5kaWYK
IAotICAgIGlmICh3YWl0TW9kZSA9PSBXYWl0Rm9yTWVzc2FnZSAmJiBwcmVkaWNhdGUuaXNEZWZh
dWx0TW9kZSgpICYmIG1fc2hhcmVkVGltZXItPmlzQWN0aXZlKCkpCisgICAgaWYgKHByZWRpY2F0
ZS5pc0RlZmF1bHRNb2RlKCkgJiYgbV9zaGFyZWRUaW1lci0+aXNBY3RpdmUoKSkKICAgICAgICAg
dGltZW91dERlbGF5ID0gc3RkOjptaW4odGltZW91dERlbGF5LCBtX3NoYXJlZFRpbWVyLT5maXJl
VGltZURlbGF5KCkpOwogCiAgICAgaWYgKGF1dG8qIHNjcmlwdCA9IGNvbnRleHQtPnNjcmlwdCgp
KSB7CkBAIC0yMjUsNyArMjI0LDcgQEAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJSdW5M
b29wOjpydW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnQKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi12b2lkIFdvcmtlclJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyhXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCkKK3ZvaWQgV29ya2VyRGVkaWNhdGVkUnVu
TG9vcDo6cnVuQ2xlYW51cFRhc2tzKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0
KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKICAgICBBU1NFUlQoY29udGV4dC0+d29ya2VyT3JX
b3JrbGV0VGhyZWFkKCktPnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJlbnQoKSk7CkBAIC0yMzks
NyArMjM4LDcgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MoV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQpCiAgICAgfQogfQogCi12b2lkIFdvcmtlclJ1bkxv
b3A6OnRlcm1pbmF0ZSgpCit2b2lkIFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnRlcm1pbmF0ZSgp
CiB7CiAgICAgbV9tZXNzYWdlUXVldWUua2lsbCgpOwogfQpAQCAtMjQ5LDEyICsyNDgsMTIgQEAg
dm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYgdGFzaykKICAgICBwb3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1vZGUo
KSk7CiB9CiAKLXZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCit2b2lkIFdvcmtlckRlZGljYXRlZFJ1bkxv
b3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrKQogewogICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwobWFrZVVuaXF1ZTxUYXNr
PihXVEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKSk7CiB9CiAKLXZvaWQgV29ya2VyUnVuTG9v
cDo6cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBj
b25zdCBTdHJpbmcmIG1vZGUpCit2b2lkIFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnBvc3RUYXNr
Rm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5n
JiBtb2RlKQogewogICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZChtYWtlVW5pcXVlPFRhc2s+KFdU
Rk1vdmUodGFzayksIG1vZGUpKTsKIH0KQEAgLTI2NCwxNiArMjYzLDU4IEBAIHZvaWQgV29ya2Vy
UnVuTG9vcDo6cG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYg
dGFzaykKICAgICBwb3N0VGFza0Zvck1vZGUoV1RGTW92ZSh0YXNrKSwgZGVidWdnZXJNb2RlKCkp
OwogfQogCi12b2lkIFdvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKiBjb250ZXh0KQordm9pZCBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpU
YXNrOjpwZXJmb3JtVGFzayhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCkKIHsK
ICAgICBpZiAoKCFjb250ZXh0LT5pc0Nsb3NpbmcoKSAmJiBjb250ZXh0LT5zY3JpcHQoKSAmJiAh
Y29udGV4dC0+c2NyaXB0KCktPmlzVGVybWluYXRpbmdFeGVjdXRpb24oKSkgfHwgbV90YXNrLmlz
Q2xlYW51cFRhc2soKSkKICAgICAgICAgbV90YXNrLnBlcmZvcm1UYXNrKCpjb250ZXh0KTsKIH0K
IAotV29ya2VyUnVuTG9vcDo6VGFzazo6VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNr
JiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQorV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6VGFz
azo6VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5n
JiBtb2RlKQogICAgIDogbV90YXNrKFdURk1vdmUodGFzaykpCiAgICAgLCBtX21vZGUobW9kZS5p
c29sYXRlZENvcHkoKSkKIHsKIH0KIAorV29ya2VyTWFpblJ1bkxvb3A6Oldvcmtlck1haW5SdW5M
b29wKCkKK3sKK30KKwordm9pZCBXb3JrZXJNYWluUnVuTG9vcDo6c2V0R2xvYmFsU2NvcGUoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGdsb2JhbFNjb3BlKQoreworICAgIG1fd29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUgPSBtYWtlV2Vha1B0cihnbG9iYWxTY29wZSk7Cit9CisKK3ZvaWQg
V29ya2VyTWFpblJ1bkxvb3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2smJiB0YXNrKQoreworICAgIGlmIChtX3Rlcm1pbmF0ZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSgpIG11dGFibGUgeworICAgICAgICBp
ZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSB8
fCB3ZWFrVGhpcy0+bV90ZXJtaW5hdGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHdlYWtUaGlzLT5tX3Rlcm1pbmF0ZWQgPSB0cnVlOworICAgICAgICB0YXNrLnBlcmZvcm1UYXNr
KCp3ZWFrVGhpcy0+bV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV29ya2VyTWFpblJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiAvKm1vZGUqLykKK3sKKyAgICBpZiAo
bV90ZXJtaW5hdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0YXNrID0gV1RGTW92ZSh0YXNr
KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1fd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgfHwgd2Vha1RoaXMtPm1fdGVybWluYXRlZCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0YXNrLnBlcmZvcm1UYXNrKCp3ZWFrVGhpcy0+bV93
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSk7CisgICAgfSk7Cit9CisKK2Jvb2wgV29ya2VyTWFp
blJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSosIGNvbnN0IFN0
cmluZyYpCit7CisgICAgUnVuTG9vcDo6bWFpbigpLmN5Y2xlKCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmgKaW5kZXggMTQ1YmU4M2MwNzUwMjZlNDFkMmUxOTA3YzczNjAyNjM2YmUxNWE0Zi4u
MzNmZTI0MTg5YWQzOTA4YzkyMjAzMjlmYzAzYjRlMzRkY2E0ZDhlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNy0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00MiwzMCArNDIsNDkgQEAgY2xhc3MgV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU7CiBjbGFzcyBXb3JrZXJTaGFyZWRUaW1lcjsKIAogY2xhc3Mg
V29ya2VyUnVuTG9vcCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgV29ya2VyUnVuTG9vcCgpOwotICAgIH5Xb3JrZXJSdW5Mb29wKCk7CisgICAgZW51bSBjbGFz
cyBUeXBlIDogYm9vbCB7IFdvcmtlckRlZGljYXRlZFJ1bkxvb3AsIFdvcmtlck1haW5SdW5Mb29w
IH07CisKKyAgICB2aXJ0dWFsIH5Xb3JrZXJSdW5Mb29wKCkgPSBkZWZhdWx0OworCisgICAgdmly
dHVhbCBib29sIHJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSosIGNvbnN0IFN0
cmluZyYgbW9kZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza0FuZFRlcm1pbmF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9z
dFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5n
JiBtb2RlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgdGVybWluYXRlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFR5cGUgdHlwZSgp
IGNvbnN0ID0gMDsKKworICAgIHZvaWQgcG9zdFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayYmKTsKKyAgICB2b2lkIHBvc3REZWJ1Z2dlclRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzayYmKTsKKworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE1v
ZGUoKTsKKworICAgIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWQoKSB7IHJldHVybiArK21f
dW5pcXVlSWQ7IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBsb25nIG1fdW5pcXVlSWQgeyAw
IH07Cit9OworCitjbGFzcyBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wIGZpbmFsIDogcHVibGljIFdv
cmtlclJ1bkxvb3AgeworcHVibGljOgorICAgIFdvcmtlckRlZGljYXRlZFJ1bkxvb3AoKTsKKyAg
ICB+V29ya2VyRGVkaWNhdGVkUnVuTG9vcCgpOwogICAgIAogICAgIC8vIEJsb2NraW5nIGNhbGwu
IFdhaXRzIGZvciB0YXNrcyBhbmQgdGltZXJzLCBpbnZva2VzIHRoZSBjYWxsYmFja3MuCiAgICAg
dm9pZCBydW4oV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqKTsKIAotICAgIGVudW0gV2FpdE1v
ZGUgeyBXYWl0Rm9yTWVzc2FnZSwgRG9udFdhaXRGb3JNZXNzYWdlIH07Ci0KICAgICAvLyBXYWl0
cyBmb3IgYSBzaW5nbGUgdGFzayBhbmQgcmV0dXJucy4KLSAgICBNZXNzYWdlUXVldWVXYWl0UmVz
dWx0IHJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYg
bW9kZSwgV2FpdE1vZGUgPSBXYWl0Rm9yTWVzc2FnZSk7CisgICAgYm9vbCBydW5Jbk1vZGUoV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIG1vZGUpIGZpbmFsOwogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcnVuSW5EZWJ1Z2dlck1vZGUoV29ya2VyT3JXb3JrbGV0
R2xvYmFsU2NvcGUmKTsKIAotICAgIHZvaWQgdGVybWluYXRlKCk7Ci0gICAgYm9vbCB0ZXJtaW5h
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlUXVldWUua2lsbGVkKCk7IH0KKyAgICB2b2lk
IHRlcm1pbmF0ZSgpIGZpbmFsOworICAgIGJvb2wgdGVybWluYXRlZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbWVzc2FnZVF1ZXVlLmtpbGxlZCgpOyB9CisgICAgVHlwZSB0eXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gVHlwZTo6V29ya2VyRGVkaWNhdGVkUnVuTG9vcDsgfQogCi0gICAgdm9p
ZCBwb3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpOwotICAgIHZvaWQgcG9z
dFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgdm9pZCBwb3N0RGVidWdnZXJUYXNr
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7Ci0KLSAgICB1bnNpZ25lZCBsb25nIGNy
ZWF0ZVVuaXF1ZUlkKCkgeyByZXR1cm4gKyttX3VuaXF1ZUlkOyB9CisgICAgdm9pZCBwb3N0VGFz
a0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpIGZpbmFsOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKIAotICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBTdHJpbmcgZGVmYXVsdE1vZGUoKTsKICAgICBjbGFzcyBUYXNrIHsKICAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGFzayk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIHB1YmxpYzoKQEAgLTc4LDEyICs5NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgbV90YXNrOwogICAgICAgICBTdHJpbmcgbV9tb2RlOwogCi0g
ICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJSdW5Mb29wOworICAgICAgICBmcmllbmQgY2xhc3Mg
V29ya2VyRGVkaWNhdGVkUnVuTG9vcDsKICAgICB9OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBSdW5Mb29wU2V0dXA7Ci0gICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBydW5Jbk1vZGUo
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqLCBjb25zdCBNb2RlUHJlZGljYXRlJiwgV2FpdE1v
ZGUpOworICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcnVuSW5Nb2RlKFdvcmtlck9yV29ya2xl
dEdsb2JhbFNjb3BlKiwgY29uc3QgTW9kZVByZWRpY2F0ZSYpOwogCiAgICAgLy8gUnVucyBhbnkg
Y2xlYW4gdXAgdGFza3MgdGhhdCBhcmUgY3VycmVudGx5IGluIHRoZSBxdWV1ZSBhbmQgcmV0dXJu
cy4KICAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBjb250ZXh0IGlz
IGNsb3NlZCBvciBsb29wIGhhcyBiZWVuIHRlcm1pbmF0ZWQuCkBAIC05NSw3ICsxMTQsMzMgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V29ya2VyU2hhcmVkVGltZXI+IG1fc2hhcmVk
VGltZXI7CiAgICAgaW50IG1fbmVzdGVkQ291bnQgeyAwIH07CiAgICAgaW50IG1fZGVidWdDb3Vu
dCB7IDAgfTsKLSAgICB1bnNpZ25lZCBsb25nIG1fdW5pcXVlSWQgeyAwIH07Cit9OworCitjbGFz
cyBXb3JrZXJNYWluUnVuTG9vcCBmaW5hbCA6IHB1YmxpYyBXb3JrZXJSdW5Mb29wLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8V29ya2VyTWFpblJ1bkxvb3A+IHsKK3B1YmxpYzoKKyAgICBXb3JrZXJN
YWluUnVuTG9vcCgpOworCisgICAgdm9pZCBzZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSYpOworCisgICAgdm9pZCB0ZXJtaW5hdGUoKSBmaW5hbCB7IG1fdGVybWluYXRl
ZCA9IHRydWU7IH0KKyAgICBib29sIHRlcm1pbmF0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Rlcm1pbmF0ZWQ7IH0KKworICAgIGJvb2wgcnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKiwgY29uc3QgU3RyaW5nJiBtb2RlKTsKKyAgICB2b2lkIHBvc3RUYXNrQW5kVGVybWlu
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CisgICAgdm9pZCBwb3N0
VGFza0Zvck1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcm
IG1vZGUpIGZpbmFsOworICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6
Oldvcmtlck1haW5SdW5Mb29wOyB9CisKK3ByaXZhdGU6CisgICAgV2Vha1B0cjxXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZT4gbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZTsKKyAgICBib29s
IG1fdGVybWluYXRlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V29ya2VyRGVkaWNhdGVkUnVu
TG9vcCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V29ya2VyUnVuTG9v
cCYgcnVuTG9vcCkgeyByZXR1cm4gcnVuTG9vcC50eXBlKCkgPT0gV2ViQ29yZTo6V29ya2VyUnVu
TG9vcDo6VHlwZTo6V29ya2VyRGVkaWNhdGVkUnVuTG9vcDsgfQorU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19FTkQoKQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6Oldvcmtl
ck1haW5SdW5Mb29wKQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXb3Jr
ZXJSdW5Mb29wJiBydW5Mb29wKSB7IHJldHVybiBydW5Mb29wLnR5cGUoKSA9PSBXZWJDb3JlOjpX
b3JrZXJSdW5Mb29wOjpUeXBlOjpXb3JrZXJNYWluUnVuTG9vcDsgfQorU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4
IGMzZjU1ZWIyMWQ1ODE4NjkzZmYwNmY4NjRiYTIwOGJmZmQwMWUzMGIuLjM4ZTIzZGE4OTZkNTAz
MTIyNmMxMmMzYzI3N2M5ZGIxOWE4MzA2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKQEAgLTYwLDcgKzYwLDggQEAgV29ya2VyUGFyYW1ldGVycyBXb3JrZXJQYXJh
bWV0ZXJzOjppc29sYXRlZENvcHkoKSBjb25zdAogICAgICAgICByZWZlcnJlclBvbGljeSwKICAg
ICAgICAgd29ya2VyVHlwZSwKICAgICAgICAgY3JlZGVudGlhbHMsCi0gICAgICAgIHNldHRpbmdz
VmFsdWVzLmlzb2xhdGVkQ29weSgpCisgICAgICAgIHNldHRpbmdzVmFsdWVzLmlzb2xhdGVkQ29w
eSgpLAorICAgICAgICB3b3JrZXJUaHJlYWRNb2RlCiAgICAgfTsKIH0KIApAQCAtODYsNyArODcs
NyBAQCBXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6V29ya2VyVGhyZWFkU3RhcnR1cERhdGEoY29u
c3QgV29ya2VyUGFyYW1ldGVycyYgb3RoZXIsCiB9CiAKIFdvcmtlclRocmVhZDo6V29ya2VyVGhy
ZWFkKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIHBhcmFtcywgY29uc3QgU2NyaXB0QnVmZmVyJiBz
b3VyY2VDb2RlLCBXb3JrZXJMb2FkZXJQcm94eSYgd29ya2VyTG9hZGVyUHJveHksIFdvcmtlckRl
YnVnZ2VyUHJveHkmIHdvcmtlckRlYnVnZ2VyUHJveHksIFdvcmtlclJlcG9ydGluZ1Byb3h5JiB3
b3JrZXJSZXBvcnRpbmdQcm94eSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlIHN0YXJ0TW9kZSwgY29u
c3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJv
eHkqIGNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyLCBKU0M6
OlJ1bnRpbWVGbGFncyBydW50aW1lRmxhZ3MpCi0gICAgOiBXb3JrZXJPcldvcmtsZXRUaHJlYWQo
cGFyYW1zLmlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCkpCisgICAgOiBXb3JrZXJPcldvcmtsZXRU
aHJlYWQocGFyYW1zLmlkZW50aWZpZXIuaXNvbGF0ZWRDb3B5KCksIHBhcmFtcy53b3JrZXJUaHJl
YWRNb2RlKQogICAgICwgbV93b3JrZXJMb2FkZXJQcm94eSh3b3JrZXJMb2FkZXJQcm94eSkKICAg
ICAsIG1fd29ya2VyRGVidWdnZXJQcm94eSh3b3JrZXJEZWJ1Z2dlclByb3h5KQogICAgICwgbV93
b3JrZXJSZXBvcnRpbmdQcm94eSh3b3JrZXJSZXBvcnRpbmdQcm94eSkKQEAgLTEwNiw2ICsxMDcs
MTUgQEAgV29ya2VyVGhyZWFkOjp+V29ya2VyVGhyZWFkKCkKIAogUmVmPFRocmVhZD4gV29ya2Vy
VGhyZWFkOjpjcmVhdGVUaHJlYWQoKQogeworICAgIGlmIChpczxXb3JrZXJNYWluUnVuTG9vcD4o
cnVuTG9vcCgpKSkgeworICAgICAgICAvLyBUaGlzIHdvcmtlciBzaG91bGQgcnVuIG9uIHRoZSBt
YWluIHRocmVhZC4KKyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRU
aGlzID0gUmVmIHsgKnRoaXMgfV0geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d29ya2Vy
T3JXb3JrbGV0VGhyZWFkKCk7CisgICAgICAgIH0pOworICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgICAgICByZXR1cm4gVGhyZWFkOjpjdXJyZW50KCk7CisgICAgfQorCiAgICAg
cmV0dXJuIFRocmVhZDo6Y3JlYXRlKGlzU2VydmljZVdvcmtlclRocmVhZCgpID8gIldlYkNvcmU6
IFNlcnZpY2UgV29ya2VyIiA6ICJXZWJDb3JlOiBXb3JrZXIiLCBbdGhpc10gewogICAgICAgICB3
b3JrZXJPcldvcmtsZXRUaHJlYWQoKTsKICAgICB9LCBUaHJlYWRUeXBlOjpKYXZhU2NyaXB0KTsK
QEAgLTEzNiw4ICsxNDYsOCBAQCB2b2lkIFdvcmtlclRocmVhZDo6ZXZhbHVhdGVTY3JpcHRJZk5l
Y2Vzc2FyeShTdHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpCiAgICAgICAgIGF1dG8gc2NyaXB0RmV0
Y2hlciA9IFdvcmtlclNjcmlwdEZldGNoZXI6OmNyZWF0ZShnbG9iYWxTY29wZSgpLT5jcmVkZW50
aWFscygpLCBnbG9iYWxTY29wZSgpLT5kZXN0aW5hdGlvbigpLCBnbG9iYWxTY29wZSgpLT5yZWZl
cnJlclBvbGljeSgpKTsKICAgICAgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKG1fc3Rh
cnR1cERhdGEtPnNvdXJjZUNvZGUsIFVSTChtX3N0YXJ0dXBEYXRhLT5wYXJhbXMuc2NyaXB0VVJM
KSwgeyB9LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlLCBzY3JpcHRGZXRj
aGVyLmNvcHlSZWYoKSk7CiAgICAgICAgIHNvdXJjZVByb3ZpZGVyID0gbWFrZVdlYWtQdHIoc3Rh
dGljX2Nhc3Q8U2NyaXB0QnVmZmVyU291cmNlUHJvdmlkZXImPihzb3VyY2VDb2RlLnByb3ZpZGVy
KCkpKTsKLSAgICAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBnbG9iYWxTY29w
ZSgpLT5zY3JpcHQoKS0+bG9hZE1vZHVsZVN5bmNocm9ub3VzbHkoc2NyaXB0RmV0Y2hlci5nZXQo
KSwgc291cmNlQ29kZSk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWlu
YXRlZCkgeworICAgICAgICBib29sIHN1Y2Nlc3MgPSBnbG9iYWxTY29wZSgpLT5zY3JpcHQoKS0+
bG9hZE1vZHVsZVN5bmNocm9ub3VzbHkoc2NyaXB0RmV0Y2hlci5nZXQoKSwgc291cmNlQ29kZSk7
CisgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgICAgICBpZiAoc3RkOjpvcHRpb25hbDxM
b2FkYWJsZVNjcmlwdDo6RXJyb3I+IGVycm9yID0gc2NyaXB0RmV0Y2hlci0+ZXJyb3IoKSkgewog
ICAgICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpDb25zb2xl
TWVzc2FnZT4gbWVzc2FnZSA9IGVycm9yLT5jb25zb2xlTWVzc2FnZSkKICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uTWVzc2FnZSA9IG1lc3NhZ2UtPm1lc3NhZ2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCA2ZTlkY2U1OTNiMWQzMTNhNWYwOGQxOWU5YmE3NGFh
ODYwMTIyZmFlLi4xMThhNTE5OGZlN2U1NTA4YzY0YzlmZGRjOTllZjBiMTg3NTMwNWE2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGlj
OgogICAgIFdvcmtlclR5cGUgd29ya2VyVHlwZTsKICAgICBGZXRjaFJlcXVlc3RDcmVkZW50aWFs
cyBjcmVkZW50aWFsczsKICAgICBTZXR0aW5nczo6VmFsdWVzIHNldHRpbmdzVmFsdWVzOworICAg
IFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSB7IFdvcmtlclRocmVhZE1vZGU6OkNy
ZWF0ZU5ld1RocmVhZCB9OwogCiAgICAgV29ya2VyUGFyYW1ldGVycyBpc29sYXRlZENvcHkoKSBj
b25zdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZE1vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkTW9kZS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjZhODY3MmYxZGI5NmQxOTE3MTYyN2Q5MzEyNThlZWM0NzkxOGNjM2EKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZE1vZGUuaApAQCAt
MCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51bSBjbGFzcyBXb3Jr
ZXJUaHJlYWRNb2RlIDogYm9vbCB7IFVzZU1haW5UaHJlYWQsIENyZWF0ZU5ld1RocmVhZCB9Owor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDg2YzYzZTE1ZDA3NmMyMWZmYTI0YjUwMWE0
ZDI4ZmIxODU0MjZmNjYuLjg1ZjMwODk0ZDdkY2RhYTVhZTE3MGY3MTE5YWNmZGUzYTUzOWE2YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGU6OnJlbW92ZVNlcnZpY2VXb3JrZXJDbGllbnQoU2VydmljZVdvcmtl
ckNsaWVudCYgY2wKIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9TZXJ2aWNlV29ya2VyLyN1cGRh
dGUtc2VydmljZS13b3JrZXItZXh0ZW5kZWQtZXZlbnRzLXNldC1hbGdvcml0aG0KIHZvaWQgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlOjp1cGRhdGVFeHRlbmRlZEV2ZW50c1NldChFeHRlbmRhYmxl
RXZlbnQqIG5ld0V2ZW50KQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChpc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgQVNTRVJUKCFuZXdFdmVudCB8fCAhbmV3RXZl
bnQtPmlzQmVpbmdEaXNwYXRjaGVkKCkpOwogICAgIGJvb2wgaGFkUGVuZGluZ0V2ZW50cyA9IGhh
c1BlbmRpbmdFdmVudHMoKTsKICAgICBtX2V4dGVuZGVkRXZlbnRzLnJlbW92ZUFsbE1hdGNoaW5n
KFtdKGF1dG8mIGV2ZW50KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCmluZGV4IDk2NDg2
MjUzNjdjYzE2YjU4OWJkZmQ3MGVhMDViYmExZjE0NDgwN2QuLmU3MTQ2MDNmMzU2NDA5MThhZTA2
YTlhZmE5MWY4MTk3N2Q1N2EzNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCkBAIC03
Myw4ICs3MywyOCBAQCBwcml2YXRlOgogLy8gRklYTUU6IFVzZSBhIHZhbGlkIFdvcmtlck9iamVj
dFByb3h5CiAvLyBGSVhNRTogVXNlIHZhbGlkIHJ1bnRpbWUgZmxhZ3MKIAotU2VydmljZVdvcmtl
clRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBj
b250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2Vy
QWdlbnQsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFsdWVzLCBXb3JrZXJMb2Fk
ZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkmIGRlYnVnZ2VyUHJveHks
IElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0aW9uUHJveHksIFNvY2tl
dFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKLSAgICA6IFdvcmtlclRocmVhZCh7IGNvbnRleHRE
YXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rv
cjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFn
ZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCks
IGNvbnRleHREYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIGNvbnRleHREYXRhLmNy
b3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ksIE1vbm90b25pY1RpbWU6Om5vdygpLCB7IH0sIGNvbnRl
eHREYXRhLndvcmtlclR5cGUsIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzOjpPbWl0LCBzZXR0aW5n
c1ZhbHVlcyB9LCBjb250ZXh0RGF0YS5zY3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5
LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0
YXJ0TW9kZTo6Tm9ybWFsLCBjb250ZXh0RGF0YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigp
LnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlk
ZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCitzdGF0aWMgV29ya2Vy
UGFyYW1ldGVycyBnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiBjb250ZXh0RGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRN
b2RlIHdvcmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFs
dWVzKQoreworICAgIHJldHVybiB7CisgICAgICAgIGNvbnRleHREYXRhLnNjcmlwdFVSTCwKKyAg
ICAgICAgZW1wdHlTdHJpbmcoKSwKKyAgICAgICAgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rv
cjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksCisgICAgICAgIFdURk1v
dmUodXNlckFnZW50KSwKKyAgICAgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0cmF0
ZWd5KCktPmlzT25MaW5lKCksCisgICAgICAgIGNvbnRleHREYXRhLmNvbnRlbnRTZWN1cml0eVBv
bGljeSwKKyAgICAgICAgZmFsc2UsCisgICAgICAgIGNvbnRleHREYXRhLmNyb3NzT3JpZ2luRW1i
ZWRkZXJQb2xpY3ksCisgICAgICAgIE1vbm90b25pY1RpbWU6Om5vdygpLAorICAgICAgICB7IH0s
CisgICAgICAgIGNvbnRleHREYXRhLndvcmtlclR5cGUsCisgICAgICAgIEZldGNoUmVxdWVzdENy
ZWRlbnRpYWxzOjpPbWl0LAorICAgICAgICBzZXR0aW5nc1ZhbHVlcywKKyAgICAgICAgd29ya2Vy
VGhyZWFkTW9kZQorICAgIH07Cit9CisKK1NlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3Jr
ZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VX
b3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRN
b2RlIHdvcmtlclRocmVhZE1vZGUsIGNvbnN0IFNldHRpbmdzOjpWYWx1ZXMmIHNldHRpbmdzVmFs
dWVzLCBXb3JrZXJMb2FkZXJQcm94eSYgbG9hZGVyUHJveHksIFdvcmtlckRlYnVnZ2VyUHJveHkm
IGRlYnVnZ2VyUHJveHksIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBpZGJDb25uZWN0
aW9uUHJveHksIFNvY2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcikKKyAgICA6IFdvcmtlclRo
cmVhZChnZW5lcmF0ZVdvcmtlclBhcmFtZXRlcnMoY29udGV4dERhdGEsIFdURk1vdmUodXNlckFn
ZW50KSwgd29ya2VyVGhyZWFkTW9kZSwgc2V0dGluZ3NWYWx1ZXMpLCBjb250ZXh0RGF0YS5zY3Jp
cHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBEdW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0TW9kZTo6Tm9ybWFsLCBjb250ZXh0RGF0
YS5yZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIGlk
YkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVh
dGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyKGNvbnRleHRE
YXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQogICAgICwgbV9qb2JEYXRhSWRlbnRpZmllcihj
b250ZXh0RGF0YS5qb2JEYXRhSWRlbnRpZmllcikKICAgICAsIG1fY29udGV4dERhdGEoY3Jvc3NU
aHJlYWRDb3B5KFdURk1vdmUoY29udGV4dERhdGEpKSkKQEAgLTE5NCw3ICsyMTQsNyBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7Ci0g
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGdsb2JhbFNjb3BlKCktPmlz
Q29udGV4dFRocmVhZCgpKTsKICAgICBtX2RvZXNIYW5kbGVGZXRjaCA9IGdsb2JhbFNjb3BlKCkt
Pmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS5mZXRjaEV2ZW50KTsKIH0KIApAQCAtMjI2
LDYgKzI0NiwxMCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hFdmVudE1v
bml0b3JpbmcoKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0SGVhcnRCZWF0VGlt
ZXIoKQogeworICAgIC8vIFdlIGNhbm5vdCBkZXRlY3QgcmVzcG9uc2l2ZW5lc3MgZm9yIHNlcnZp
Y2Ugd29ya2VycyBydW5uaW5nIG9uIHRoZSBtYWluIHRocmVhZCBieSB1c2luZyBhIG1haW4gdGhy
ZWFkIHRpbWVyLgorICAgIGlmIChpczxXb3JrZXJNYWluUnVuTG9vcD4ocnVuTG9vcCgpKSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKG1faGVhcnRCZWF0VGltZXIuaXNBY3RpdmUoKSkKICAg
ICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKaW5kZXggZjgxMjkwOWRmOTU0
MGZhNzAxY2UyYmM4NWQ4NDA2MDU3NWRjODIxZi4uMjE4Mjk1NTdjMDY0NGI0NzBhZjBiNzE4OWEw
ZDVmYmI0NmY4NzBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaApAQCAtNzksNyArNzksNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIGNv
bnN0IFNldHRpbmdzOjpWYWx1ZXMmLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2Vy
UHJveHkmLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7
CisgICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmJiwgU2VydmljZVdvcmtlckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3Jr
ZXJUaHJlYWRNb2RlLCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiwgV29ya2VyTG9hZGVyUHJveHkm
LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBT
b2NrZXRQcm92aWRlciopOwogCiAgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJUaHJlYWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBmaW5pc2hlZEV2YWx1YXRpbmdTY3Jp
cHQoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCmluZGV4IDZh
NGIyYThkNjczMWUxNjQ5ODVkNTU4N2NkZTUwZjgwNjVhMDNmYTguLjQxYjZmMjUxZjU0MjQ2NGI1
NWU0ZWE1NTg2NTU3ZGUxMTA1NTFkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcApAQCAtOTMsMTMgKzkzLDEzIEBAIHN0YXRpYyBIYXNoU2V0PFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eSo+JiBhbGxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveGllcygpCiAgICAgcmV0dXJu
IHNldDsKIH0KIAotU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlvbiwgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0
YSwgU3RyaW5nJiYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVTdG9yYWdl
UHJvdmlkZXIsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBzdG9yYWdlQmxvY2tpbmdQb2xpY3kpCitT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29u
ZmlndXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1
c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgQ2FjaGVTdG9yYWdl
UHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyLCBTdG9yYWdlQmxvY2tpbmdQb2xpY3kgc3Rv
cmFnZUJsb2NraW5nUG9saWN5KQogICAgIDogbV9wYWdlKGNyZWF0ZVBhZ2VGb3JTZXJ2aWNlV29y
a2VyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pLCBjb250ZXh0RGF0YSwgc3RvcmFnZUJsb2Nr
aW5nUG9saWN5KSkKICAgICAsIG1fZG9jdW1lbnQoKm1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1l
bnQoKSkKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAsIG1fcmVtb3RlRGVidWdn
YWJsZShtYWtlVW5pcXVlPFNlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlPigqdGhpcywgY29udGV4dERh
dGEpKQogI2VuZGlmCi0gICAgLCBtX3NlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlclRo
cmVhZDo6Y3JlYXRlKFdURk1vdmUoY29udGV4dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBX
VEZNb3ZlKHVzZXJBZ2VudCksIG1fZG9jdW1lbnQtPnNldHRpbmdzVmFsdWVzKCksICp0aGlzLCAq
dGhpcywgaWRiQ29ubmVjdGlvblByb3h5KG1fZG9jdW1lbnQpLCBtX2RvY3VtZW50LT5zb2NrZXRQ
cm92aWRlcigpKSkKKyAgICAsIG1fc2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpjcmVhdGUoV1RGTW92ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIFdU
Rk1vdmUodXNlckFnZW50KSwgd29ya2VyVGhyZWFkTW9kZSwgbV9kb2N1bWVudC0+c2V0dGluZ3NW
YWx1ZXMoKSwgKnRoaXMsICp0aGlzLCBpZGJDb25uZWN0aW9uUHJveHkobV9kb2N1bWVudCksIG1f
ZG9jdW1lbnQtPnNvY2tldFByb3ZpZGVyKCkpKQogICAgICwgbV9jYWNoZVN0b3JhZ2VQcm92aWRl
cihjYWNoZVN0b3JhZ2VQcm92aWRlcikKICAgICAsIG1faW5zcGVjdG9yUHJveHkoKnRoaXMpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCmluZGV4IGUyOGQ5ZTQ3NDY1NDAzNGZj
NWM3YWI5ZGYzM2YyNjM2ZTU5YjkyMDIuLjMwNDNkYjEzZjA2NzViOWJjZGI1YjYzODJmNGQ4Mjk5
MGM2ZTMzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oCkBAIC00OSw2ICs0
OSw3IEBAIGNsYXNzIEZldGNoTG9hZGVyQ2xpZW50OwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247
CiBjbGFzcyBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHk7CiBzdHJ1Y3QgU2VydmljZVdvcmtl
ckNvbnRleHREYXRhOworZW51bSBjbGFzcyBXb3JrZXJUaHJlYWRNb2RlIDogYm9vbDsKIAogY2xh
c3MgU2VydmljZVdvcmtlclRocmVhZFByb3h5IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94
eSwgcHVibGljIFdvcmtlckRlYnVnZ2VyUHJveHkgewogcHVibGljOgpAQCAtODUsNyArODYsNyBA
QCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCgpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eShQYWdlQ29uZmlndXJhdGlvbiYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiwgU2VydmljZVdvcmtlckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBDYWNoZVN0b3JhZ2VQ
cm92aWRlciYsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CisgICAgV0VCQ09SRV9FWFBPUlQgU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYsIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdv
cmtlclRocmVhZE1vZGUsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiwgU3RvcmFnZUJsb2NraW5nUG9s
aWN5KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIG5ldHdvcmtTdGF0ZUNoYW5n
ZWQoYm9vbCBpc09uTGluZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggY2NiOTViZDI1YmI0M2E5Y2Y0YThmMjg0MjJm
M2QyMjBjMmY5NjYyNi4uMDJiMTFhNTkxMmI3YTczMGQ2NWM5N2JjNzI4ZTg1ZDdkMjNhZGQxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKQEAgLTMyNywxMyArMzI3LDE0IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnJl
bW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyCiAgICAg
bV9zZXJ2ZXIucmVtb3ZlQ2xpZW50U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbigqdGhpcywgaWRl
bnRpZmllcik7CiB9CiAKLVNXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9y
ZT4mJiBvcmlnaW5TdG9yZSwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0
cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGJvb2wgaGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50LCBTb2Z0VXBkYXRlQ2FsbGJh
Y2smJiBzb2Z0VXBkYXRlQ2FsbGJhY2ssIENyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2sm
JiBjYWxsYmFjaywgQXBwQm91bmREb21haW5zQ2FsbGJhY2smJiBhcHBCb3VuZERvbWFpbnNDYWxs
YmFjaykKK1NXU2VydmVyOjpTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiBvcmln
aW5TdG9yZSwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJl
Z2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdv
cmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSwgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnQsIFNvZnRVcGRhdGVDYWxsYmFjayYmIHNvZnRVcGRhdGVDYWxsYmFjaywgQ3JlYXRl
Q29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmIGNhbGxiYWNrLCBBcHBCb3VuZERvbWFpbnNDYWxs
YmFjayYmIGFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKQogICAgIDogbV9vcmlnaW5TdG9yZShXVEZN
b3ZlKG9yaWdpblN0b3JlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1f
aXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQocHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlF
bmFibGVkKQogICAgICwgbV9jcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrKFdURk1vdmUo
Y2FsbGJhY2spKQogICAgICwgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soV1RGTW92ZShzb2Z0VXBkYXRl
Q2FsbGJhY2spKQogICAgICwgbV9hcHBCb3VuZERvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGFwcEJv
dW5kRG9tYWluc0NhbGxiYWNrKSkKKyAgICAsIG1fd29ya2VyVGhyZWFkTW9kZSh3b3JrZXJUaHJl
YWRNb2RlKQogICAgICwgbV9oYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQoaGFzU2VydmljZVdv
cmtlckVudGl0bGVtZW50KQogewogICAgIFJFTEVBU0VfTE9HX0lGKHJlZ2lzdHJhdGlvbkRhdGFi
YXNlRGlyZWN0b3J5LmlzRW1wdHkoKSwgU2VydmljZVdvcmtlciwgIk5vIHBhdGggdG8gc3RvcmUg
dGhlIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbnMiKTsKQEAgLTczMCw3ICs3MzEsNyBAQCB2
b2lkIFNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEoY29uc3QgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhJiBkYXRhKQogICAgIGF1dG8gcmVzdWx0ID0gbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dv
cmtlcnMuYWRkKGRhdGEuc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdvcmtlci5jb3B5UmVmKCkp
OwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBj
b25uZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSwgd29ya2VyLT5kYXRh
KCksIHVzZXJBZ2VudCk7CisgICAgY29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250
ZXh0KGRhdGEsIHdvcmtlci0+ZGF0YSgpLCB1c2VyQWdlbnQsIG1fd29ya2VyVGhyZWFkTW9kZSk7
CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBSdW5TZXJ2aWNlV29ya2VyQ2FsbGJhY2smJiBj
YWxsYmFjaykKQEAgLTc5OCw3ICs3OTksNyBAQCBib29sIFNXU2VydmVyOjpydW5TZXJ2aWNlV29y
a2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgYXV0byogY29udGV4
dENvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25uZWN0aW9uKCk7CiAgICAgQVNTRVJUKGNv
bnRleHRDb25uZWN0aW9uKTsKIAotICAgIGNvbnRleHRDb25uZWN0aW9uLT5pbnN0YWxsU2Vydmlj
ZVdvcmtlckNvbnRleHQod29ya2VyLT5jb250ZXh0RGF0YSgpLCB3b3JrZXItPmRhdGEoKSwgd29y
a2VyLT51c2VyQWdlbnQoKSk7CisgICAgY29udGV4dENvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNl
V29ya2VyQ29udGV4dCh3b3JrZXItPmNvbnRleHREYXRhKCksIHdvcmtlci0+ZGF0YSgpLCB3b3Jr
ZXItPnVzZXJBZ2VudCgpLCBtX3dvcmtlclRocmVhZE1vZGUpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKaW5kZXggOWM2NTMyNmMyNjYzY2E1ZmM2YzkxZDAzZTUzNWQ0MDc1ZmM3ODc0Yi4uYmE1ZGNj
OTUzNjZkNTdmMDVlNmNkMjI3MjZmNzlhNGJkMTlmNzVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaApAQCAtMzgsNiArMzgsNyBAQAog
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBl
cy5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZE1vZGUuaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lv
bklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgpAQCAtMTI4LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBTb2Z0VXBkYXRlQ2FsbGJh
Y2sgPSBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJKb2JEYXRhJiYgam9iRGF0YSwgYm9vbCBz
aG91bGRSZWZyZXNoQ2FjaGUsIFJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpPiYmKT47CiAgICAgdXNpbmcgQ3Jl
YXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKICAg
ICB1c2luZyBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik+
OwotICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYm
LCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0
aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklELCBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCwgU29mdFVwZGF0ZUNhbGxiYWNrJiYsIENyZWF0ZUNvbnRleHRDb25uZWN0
aW9uQ2FsbGJhY2smJiwgQXBwQm91bmREb21haW5zQ2FsbGJhY2smJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rl
cm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVj
dG9yeSwgUEFMOjpTZXNzaW9uSUQsIFdvcmtlclRocmVhZE1vZGUsIGJvb2wgaGFzU2VydmljZVdv
cmtlckVudGl0bGVtZW50LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENvbm5l
Y3Rpb25DYWxsYmFjayYmLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCkBAIC0yODEsNiArMjgyLDcgQEAgcHJpdmF0ZToKICAg
ICBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayBtX2FwcEJvdW5kRG9tYWluc0NhbGxiYWNrOwogICAg
IAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IG1fYXBwQm91bmREb21h
aW5zOworICAgIFdvcmtlclRocmVhZE1vZGUgbV93b3JrZXJUaHJlYWRNb2RlIHsgV29ya2VyVGhy
ZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkIH07CiAgICAgYm9vbCBtX2hhc1NlcnZpY2VXb3JrZXJF
bnRpdGxlbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc1JlY2VpdmVkQXBwQm91bmREb21h
aW5zIHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX3VuaXF1ZVJlZ2lzdHJhdGlvbkNvdW50IHsg
MCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggZDc0YTY5MDA4
MTlhNjMzYzQ2MGE4NzU2NDE4MGRkYzQyYWQ0OTdmYy4uOTNiMWRkNTIxNjczMWM5ODY2MmVlNGVi
MWVkZjYxN2IxYThjYzVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CkBAIC00Miw2ICs0Miw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTsKIHN0cnVj
dCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcjsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyOworZW51bSBj
bGFzcyBXb3JrZXJUaHJlYWRNb2RlIDogYm9vbDsKIAogY2xhc3MgU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTUxLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbklkZW50aWZpZXIgaWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCiAgICAgLy8gTWVzc2Fn
ZXMgdG8gdGhlIFNXIGhvc3QgcHJvY2VzcwotICAgIHZpcnR1YWwgdm9pZCBpbnN0YWxsU2Vydmlj
ZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3QgU2Vy
dmljZVdvcmtlckRhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgU2VydmljZVdvcmtlckNv
bnRleHREYXRhJiwgY29uc3QgU2VydmljZVdvcmtlckRhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgV29ya2VyVGhyZWFkTW9kZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgTGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmlyZUluc3RhbGxFdmVudChTZXJ2
aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmaXJlQWN0aXZhdGVF
dmVudChTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA3Y2Q2ODkwY2ZjNTUxMjljOGRk
YTU2NDgzMTFmMzhjNzhhZGY0OGEwLi5mNzJkOTQyN2RmNjMwNmVkNjBlNWJkMGRkMTIyOWUyNzdj
MWE1MmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcApAQCAtMjQ4NCw3ICsyNDg0LDEwIEBAIFNXU2VydmVyJiBOZXR3b3JrUHJvY2Vzczo6
c3dTZXJ2ZXJGb3JTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIH07CiAjZW5kaWYKLSAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1dTZXJ2ZXI+KG1ha2VVbmlxdWVSZWY8V2ViU1dPcmlnaW5TdG9yZT4o
KSwgaW5mby5wcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQsIFdURk1vdmUocGF0aCksIHNl
c3Npb25JRCwgcGFyZW50UHJvY2Vzc0hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpLCBbdGhp
cywgc2Vzc2lvbklEXShhdXRvJiYgam9iRGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIGF1
dG8mJiByZXF1ZXN0LCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgeworICAgICAg
ICBXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUgeyBXb3JrZXJUaHJlYWRNb2RlOjpD
cmVhdGVOZXdUaHJlYWQgfTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgd29ya2VyVGhyZWFkTW9kZSA9IHNlc3Npb24t
PnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkKCkgPyBXb3JrZXJUaHJlYWRNb2Rl
OjpVc2VNYWluVGhyZWFkIDogV29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkOworICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTV1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdp
blN0b3JlPigpLCBpbmZvLnByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShw
YXRoKSwgc2Vzc2lvbklELCB3b3JrZXJUaHJlYWRNb2RlLCBwYXJlbnRQcm9jZXNzSGFzU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50KCksIFt0aGlzLCBzZXNzaW9uSURdKGF1dG8mJiBqb2JEYXRhLCBi
b29sIHNob3VsZFJlZnJlc2hDYWNoZSwgYXV0byYmIHJlcXVlc3QsIGF1dG8mJiBjb21wbGV0aW9u
SGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlcjo6c3RhcnQobmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSwgV1RGTW92ZShqb2JEYXRhKSwg
c2hvdWxkUmVmcmVzaENhY2hlLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiAgICAgICAgIH0sIFt0aGlzLCBzZXNzaW9uSURdKGF1dG8mIHJlZ2lzdHJhYmxl
RG9tYWluLCBhdXRvJiYgY29tcGxldGlvbkhhbmRsZXIpIHsKICAgICAgICAgICAgIEFTU0VSVCgh
cmVnaXN0cmFibGVEb21haW4uaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggZjM4NjBiMjA0ZjA2MzBhOWQ2ZWU1OTZj
M2VmOWNiZGMxMjUyZDJjMi4uZGUwNTlmYTExZmNmYzM4MWU2YjE5ZjhlZjY5YWYzOWNkZTJkMjIz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5j
cHAKQEAgLTExOCw2ICsxMTgsNyBAQCBOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24oTmV0
d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBjb25zdCBOZXR3b3JrU2VzcwogICAgICwgbV9i
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnkobWFrZVVuaXF1ZVJlZjxOZXR3b3JrQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5PigpKQogICAgICwgbV90ZXN0U3BlZWRNdWx0aXBsaWVyKHBhcmFtZXRlcnMu
dGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAsIG1fYWxsb3dzU2VydmVyUHJlY29ubmVjdChwYXJh
bWV0ZXJzLmFsbG93c1NlcnZlclByZWNvbm5lY3QpCisgICAgLCBtX3Nob3VsZFJ1blNlcnZpY2VX
b3JrZXJzT25NYWluVGhyZWFkKHBhcmFtZXRlcnMuc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1h
aW5UaHJlYWQpCiB7CiAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKSB7CiAgICAg
ICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLm5ldHdvcmtDYWNo
ZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uaAppbmRleCA5N2Y3ZDA3ZjU4NmIyYjk3Y2Q2NTQ5NzgyNmE3N2UzYTAzM2M5Yjg2Li4xYjEz
YTRjZjE5M2EyOWIzNDllMzkyZGYxOWFkZDFmZTJiYjZlYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC0xNjIsNiArMTYyLDcgQEAgcHVi
bGljOgogCiAgICAgdW5zaWduZWQgdGVzdFNwZWVkTXVsdGlwbGllcigpIGNvbnN0IHsgcmV0dXJu
IG1fdGVzdFNwZWVkTXVsdGlwbGllcjsgfQogICAgIGJvb2wgYWxsb3dzU2VydmVyUHJlY29ubmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzU2VydmVyUHJlY29ubmVjdDsgfQorICAgIGJvb2wg
c2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkOyB9CiAKICAgICBib29sIGlzU3RhbGVX
aGlsZVJldmFsaWRhdGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0YWxlV2hpbGVSZXZh
bGlkYXRlRW5hYmxlZDsgfQogCkBAIC0yMzgsNiArMjM5LDcgQEAgcHJvdGVjdGVkOgogICAgIFVu
aXF1ZVJlZjxOZXR3b3JrQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiBtX2Jyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeTsKICAgICB1bnNpZ25lZCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIgeyAxIH07CiAg
ICAgYm9vbCBtX2FsbG93c1NlcnZlclByZWNvbm5lY3QgeyB0cnVlIH07CisgICAgYm9vbCBtX3No
b3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29mdFVwZGF0ZUxvYWRlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDllOGFiZmQ5Y2FiZWY5ZGZhNDlmZGFkNGFjNjdkN2U4
NmVkMDJmNjMuLjU0ZDdhYzA5MDIyNGIxYTVhN2IwYjYzOWY1N2UzYmJmMzdiNjQyNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04Myw2ICs4Myw3IEBAIHZvaWQgTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9u
T25TeXN0ZW1DaGFuZ2U7CiAgICAgZW5jb2RlciA8PCBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0Owog
ICAgIGVuY29kZXIgPDwgcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjsKKyAgICBl
bmNvZGVyIDw8IHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkOwogICAgIGVuY29k
ZXIgPDwgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsKICAgICBlbmNvZGVy
IDw8IGFwcEhhc1JlcXVlc3RlZENyb3NzV2Vic2l0ZVRyYWNraW5nUGVybWlzc2lvbjsKICAgICBl
bmNvZGVyIDw8IHVzZU5ldHdvcmtMb2FkZXI7CkBAIC0yNzQsNiArMjc1LDExIEBAIHN0ZDo6b3B0
aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzCiAgICAgZGVjb2RlciA+PiByZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlD
b25uZWN0aW9uOwogICAgIGlmICghcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbikK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4g
c2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQ7CisgICAgZGVjb2RlciA+PiBzaG91
bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZDsKKyAgICBpZiAoIXNob3VsZFJ1blNlcnZp
Y2VXb3JrZXJzT25NYWluVGhyZWFkKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IAogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50
aWNhdGlvbjsKICAgICBkZWNvZGVyID4+IHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGlj
YXRpb247CkBAIC0zNDksNiArMzU1LDcgQEAgc3RkOjpvcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMKICAgICAg
ICAgLCBXVEZNb3ZlKCpzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFu
Z2UpCiAgICAgICAgICwgV1RGTW92ZSgqYWxsb3dzU2VydmVyUHJlY29ubmVjdCkKICAgICAgICAg
LCBXVEZNb3ZlKCpyZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uKQorICAgICAgICAs
ICpzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZAogICAgICAgICAsIFdURk1vdmUo
KnByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb24pCiAgICAgICAgICwgV1RGTW92
ZSgqYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uKQogICAgICAg
ICAsIFdURk1vdmUoKnVzZU5ldHdvcmtMb2FkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKaW5kZXggNWI2NGY2YjI5ZDRmZTVlZjIzMWZkNDNkYjhiM2I3ZjEwMTU5MjBmMy4uMTFhNDMz
NjUxMmI1YmNhMjA0MjljZDk2YmMwYzMxMTkzMTViZjdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaApAQCAtOTgsNiArOTgsNyBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMgewogICAgIGJvb2wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9u
U3lzdGVtQ2hhbmdlIHsgZmFsc2UgfTsKICAgICBib29sIGFsbG93c1NlcnZlclByZWNvbm5lY3Qg
eyB0cnVlIH07CiAgICAgYm9vbCByZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uIHsg
ZmFsc2UgfTsKKyAgICBib29sIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkIHsg
ZmFsc2UgfTsKICAgICBib29sIHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb24g
eyBmYWxzZSB9OwogICAgIGJvb2wgYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQ
ZXJtaXNzaW9uIHsgZmFsc2UgfTsKICAgICBib29sIHVzZU5ldHdvcmtMb2FkZXIgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNw
cAppbmRleCAwNjAyOGU5MTQzOWE5ZDEzYzAyNjRlYzNiOWYyZWI1YTFmMDZmODVkLi5kOThkZWIy
ZDdlNmM0ZTlhMDQwZjZkOWJmNjg1ODIxZmJkZmFlMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtODcsOSArODcsOSBAQCB2
b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXJDbGllbnQoY29uc3QgU2VydgogICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuY29udGV4dElkZW50aWZp
ZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9CiAKLXZvaWQg
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlckNvbnRl
eHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBjb250ZXh0RGF0YSwgY29uc3QgU2Vy
dmljZVdvcmtlckRhdGEmIHdvcmtlckRhdGEsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQordm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29u
dGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhLCBjb25zdCBT
ZXJ2aWNlV29ya2VyRGF0YSYgd29ya2VyRGF0YSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdv
cmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIgeyBjb250
ZXh0RGF0YSwgd29ya2VyRGF0YSwgdXNlckFnZW50IH0pOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlciB7IGNvbnRl
eHREYXRhLCB3b3JrZXJEYXRhLCB1c2VyQWdlbnQsIHdvcmtlclRocmVhZE1vZGUgfSk7CiB9CiAK
IHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1cGRhdGVBcHBJbml0aWF0ZWRW
YWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2Vi
Q29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKaW5kZXggOTQzM2JmNTNhMzZlNWM4ODI2NmU2NTg0ZTViOTZmOTFhY2Q4MDE4NC4uNWNk
MTZhMDgyNGI4NGRiNWZiODVlOGZkNzI3ZGFlZTY5MTVlMWRmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODUsNyArODUsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29uc3Qg
V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbik7CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9jZXNz
Ci0gICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGEm
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CisgICAgdm9pZCBpbnN0YWxsU2Vydmlj
ZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwg
Y29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCwgV2ViQ29yZTo6V29ya2VyVGhyZWFkTW9kZSkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVBcHBJ
bml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpIGZpbmFsOwogICAgIHZvaWQgZmlyZUluc3Rh
bGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9p
ZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IDA4NTEyM2Qw
ZDRmYWJlOTljZmYxMTRmMTYxZTY0NDgwZDM0ODkzNWYuLjUwNzEwZDA0NTk1NTJmMzdiYTUzYzY5
MGM5MDkwYTIxM2YxNjNjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCkBAIC01Miw2ICs1Miw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlv
cygxMS4wKSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcg
KmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40
KSwgaW9zKDEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHByZXZlbnRzU3lzdGVt
SFRUUFByb3h5QXV0aGVudGljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9z
KDE0LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHJlcXVpcmVzU2VjdXJlSFRUUFNQ
cm94eUNvbm5lY3Rpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWlu
VGhyZWFkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKIC8vIFRoZXNlIHByb3BlcnRpZXMgb25seSBtYWtlIHNlbnNlIGZvciBwZXJzaXN0ZW50
IGRhdGEgc3RvcmVzLCBhbmQgd2lsbCB0aHJvdwogLy8gYW4gZXhjZXB0aW9uIGlmIHNldCBmb3Ig
bm9uLXBlcnNpc3RlbnQgc3RvcmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uLm1tCmluZGV4IDU5MDA3NTJmN2IwNDE0OTY2MGE1N2RkMmU0YjQyOTY2MTg3MDA1MDYuLjE0
YTVhZjg3YTA3OTVjZGUwY2M3NmRmMzlhZjM0NmIxYmI5OWQyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KQEAgLTQ4Niw2ICs0ODYsMTYgQEAgLSAodm9pZClz
ZXRSZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uOihCT09MKXJlcXVpcmVzCiAgICAg
X2NvbmZpZ3VyYXRpb24tPnNldFJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24ocmVx
dWlyZXMpOwogfQogCistIChCT09MKXNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFk
Cit7CisgICAgcmV0dXJuIF9jb25maWd1cmF0aW9uLT5zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09u
TWFpblRocmVhZCgpOworfQorCistICh2b2lkKXNldFNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25N
YWluVGhyZWFkOihCT09MKXNob3VsZFJ1bk9uTWFpblRocmVhZAoreworICAgIF9jb25maWd1cmF0
aW9uLT5zZXRTaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZChzaG91bGRSdW5Pbk1h
aW5UaHJlYWQpOworfQorCiAtICh2b2lkKXNldFByb3h5Q29uZmlndXJhdGlvbjooTlNEaWN0aW9u
YXJ5ICopY29uZmlndXJhdGlvbgogewogICAgIF9jb25maWd1cmF0aW9uLT5zZXRQcm94eUNvbmZp
Z3VyYXRpb24oKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilbY29uZmlndXJhdGlvbiBjb3B5XSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IDIxMGNkMGFmNzI4MzEwNTBjOTFlYWVmOGNjZDkwYTkzNTQz
NmRiMmEuLmY1NGQzOTUwMjkxMzM5YmE4N2ExOGE4YzNmZDNiODMyZWM1OGE2YmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwCkBAIC0yMDU4LDYgKzIwNTgsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFt
ZXRlcnMuYWxsb3dzU2VydmVyUHJlY29ubmVjdCA9IG1fY29uZmlndXJhdGlvbi0+YWxsb3dzU2Vy
dmVyUHJlY29ubmVjdCgpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycyA9IFdURk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
cmFtZXRlcnMpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5yZXF1aXJlc1NlY3VyZUhU
VFBTUHJveHlDb25uZWN0aW9uID0gbV9jb25maWd1cmF0aW9uLT5yZXF1aXJlc1NlY3VyZUhUVFBT
UHJveHlDb25uZWN0aW9uKCk7CisgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnNob3VsZFJ1
blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkID0gbV9jb25maWd1cmF0aW9uLT5zaG91bGRSdW5T
ZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCgpOwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uID0gbV9jb25maWd1cmF0aW9u
LT5wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uKCk7CiAgICAgbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLmFsbG93c0hTVFNXaXRoVW50cnVzdGVkUm9vdENlcnRpZmljYXRlID0g
bV9jb25maWd1cmF0aW9uLT5hbGxvd3NIU1RTV2l0aFVudHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZSgp
OwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5wY21NYWNoU2VydmljZU5hbWUgPSBtX2Nv
bmZpZ3VyYXRpb24tPnBjbU1hY2hTZXJ2aWNlTmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDIwY2IxNGMyOTZmMTNjYjc3ZDM5ZjFlYzRmMTIyYTMx
ZDI2MzQxNTAuLjcxNTc2ODEwMWM0MzU1MjdmOTQ1ZGM5NTkxMjU5YjE5MTc0Mjk1ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTk3LDYgKzk3LDcgQEAg
UmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9zdXBwcmVzc2VzQ29ubmVjdGlvblRl
cm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgPSB0aGlzLT5tX3N1cHByZXNzZXNDb25uZWN0aW9uVGVy
bWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBjb3B5LT5tX2FsbG93c1NlcnZlclByZWNvbm5l
Y3QgPSB0aGlzLT5tX2FsbG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAgY29weS0+bV9yZXF1aXJl
c1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uID0gdGhpcy0+bV9yZXF1aXJlc1NlY3VyZUhUVFBT
UHJveHlDb25uZWN0aW9uOworICAgIGNvcHktPm1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1h
aW5UaHJlYWQgPSB0aGlzLT5tX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkOwog
ICAgIGNvcHktPm1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbiA9IHRoaXMt
Pm1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsKICAgICBjb3B5LT5tX3N0
YW5kYWxvbmVBcHBsaWNhdGlvblVSTCA9IHRoaXMtPm1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJM
OwogICAgIGNvcHktPm1fZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeUZvclRlc3RpbmcgPSB0aGlz
LT5tX2VuYWJsZUluQXBwQnJvd3NlclByaXZhY3lGb3JUZXN0aW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggMzI1NmNkZWMzMTBmNjc0NmJkNWU0YWFlNjVmNWQ5
MWQyNWJiZWZhYS4uZjY4MjI1M2Y5OTMzNjI5MWJlYTA0NzA4ZjVmYzkxODcwNzAwYmU5ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCkBAIC0xNzEsNiArMTcxLDkgQEAg
cHVibGljOgogICAgIGJvb2wgcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjsgfTsKICAg
ICB2b2lkIHNldFJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24oYm9vbCByZXF1aXJl
cykgeyBtX3JlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24gPSByZXF1aXJlczsgfQog
CisgICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQ7IH0KKyAgICB2b2lk
IHNldFNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkUnVuT25N
YWluVGhyZWFkKSB7IG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQgPSBzaG91
bGRSdW5Pbk1haW5UaHJlYWQ7IH0KKwogICAgIGNvbnN0IFVSTCYgc3RhbmRhbG9uZUFwcGxpY2F0
aW9uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9zdGFuZGFsb25lQXBwbGljYXRpb25VUkw7IH0KICAg
ICB2b2lkIHNldFN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTChVUkwmJiB1cmwpIHsgbV9zdGFuZGFs
b25lQXBwbGljYXRpb25VUkwgPSBXVEZNb3ZlKHVybCk7IH0KIApAQCAtMjMxLDYgKzIzNCw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2FsbG93c1NlcnZlclByZWNvbm5lY3QgeyB0cnVlIH07CiAg
ICAgYm9vbCBtX3ByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb24geyBmYWxzZSB9
OwogICAgIGJvb2wgbV9yZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQgeyBmYWxz
ZSB9OwogICAgIHVuc2lnbmVkIG1fdGVzdFNwZWVkTXVsdGlwbGllciB7IDEgfTsKICAgICBVUkwg
bV9zdGFuZGFsb25lQXBwbGljYXRpb25VUkw7CiAgICAgYm9vbCBtX2VuYWJsZUluQXBwQnJvd3Nl
clByaXZhY3lGb3JUZXN0aW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcAppbmRleCBlY2M5NTM5ODFiNmM2NDVkYTFhZTdkOGNiZTYyMmQ3MDYwNmU3ZjQ4Li5k
ZWY5ODE2NTkwZTdjMTc4MmQxNDhiY2I3ZTc5OTI5YjBiYTdmZDcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoU2VydmljZVdvcmtl
cklkZW50aWYKICAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zZXRMYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBXZWJD
b3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKTsKIH0KIAotdm9pZCBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoU2VydmljZVdv
cmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2Vy
RGF0YSwgU3RyaW5nJiYgdXNlckFnZW50KQordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29u
dGV4dERhdGEsIFNlcnZpY2VXb3JrZXJEYXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFn
ZW50LCBXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUpCiB7CiAgICAgYXV0byBwYWdl
Q29uZmlndXJhdGlvbiA9IHBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyhXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zZXNzaW9uSUQoKSk7CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcihTZXJ2
aWNlV29ya2VyQ29udGV4dERhdAogI2VuZGlmCiAgICAgCiAgICAgYXV0byBsYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCA9IGNvbnRleHREYXRhLmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOwotICAgIGF1dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbiksIFdURk1vdmUoY29u
dGV4dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKGVmZmVjdGl2ZVVzZXJBZ2Vu
dCksIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCksIG1fc3Rv
cmFnZUJsb2NraW5nUG9saWN5KTsKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9
IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y3JlYXRlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRp
b24pLCBXVEZNb3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZShl
ZmZlY3RpdmVVc2VyQWdlbnQpLCB3b3JrZXJUaHJlYWRNb2RlLCBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5jYWNoZVN0b3JhZ2VQcm92aWRlcigpLCBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAK
ICAgICBpZiAobGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCiAgICAgICAgIHNlcnZpY2VX
b3JrZXJUaHJlYWRQcm94eS0+c2V0TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQobGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPT0gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ6Olllcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA1OTk2
ZTZjY2FlZDhhZTc2YjRkYmIwODQ5MTliOGI0YmYwMDEzY2FiLi5kZGQwOGQyOThjMDY1NGFhZGEz
MzNmMDIxN2JiYWIxNzg2NjhlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgK
QEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IEZldGNoT3B0aW9u
czsKIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGE7CitlbnVtIGNsYXNzIFdvcmtlclRocmVhZE1vZGUgOiBib29sOwogfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKQEAgLTg2LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEMgbWVzc2FnZXMu
CiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgZmluYWw7CiAgICAgdm9pZCBzZXJ2aWNlV29y
a2VyRmFpbGVkVG9TdGFydChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGV4Y2VwdGlvbk1lc3NhZ2UpIGZpbmFsOwotICAgIHZvaWQgaW5zdGFsbFNlcnZpY2VX
b3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CisgICAgdm9pZCBpbnN0YWxsU2Vy
dmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgV2ViQ29yZTo6
U2VydmljZVdvcmtlckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBXZWJDb3JlOjpXb3JrZXJU
aHJlYWRNb2RlKTsKICAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCk7CiAgICAgdm9pZCBzdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRj
aElkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpGZXRjaE9w
dGlvbnMmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmLCBTdHJpbmcmJiByZWZlcnJlcik7CiAg
ICAgdm9pZCBjYW5jZWxGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0Y2hJZGVudGlm
aWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggMmFmNDg5ZDUxNmE0ZWM2OTZiYWUwZmEyNTI4NzkyN2M0ZGNmNDgyNS4uMjVhYzEzNjg4
Yzc4ZDkzNGM0MmQ0MzQ4ZjdiYWE4NGYzZGEyNTZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAKIG1lc3NhZ2VzIC0+IFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uIE5vdFJlZkNvdW50ZWQgewotICAgIEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0cnVjdCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEsIHN0cnVjdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyRGF0YSB3b3JrZXJEYXRhLCBTdHJpbmcgdXNlckFnZW50KQorICAg
IEluc3RhbGxTZXJ2aWNlV29ya2VyKHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEgY29udGV4dERhdGEsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YSB3b3Jr
ZXJEYXRhLCBTdHJpbmcgdXNlckFnZW50LCBlbnVtOmJvb2wgV2ViQ29yZTo6V29ya2VyVGhyZWFk
TW9kZSB3b3JrZXJUaHJlYWRNb2RlKQogICAgIFVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBlbnVt
OmJvb2wgV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQpCiAgICAgU3RhcnRGZXRjaChXZWJDb3JlOjpTV1NlcnZlckNvbm5l
Y3Rpb25JZGVudGlmaWVyIHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMgb3B0aW9ucywgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgU3RyaW5nIHJlZmVycmVyKQogICAgIENhbmNlbEZldGNo
KFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMzNTE3NWI1
MzYwNWRlODEwZTA2Y2E0MjAzNWM4MzU2OTM3NzliNmUuLjk2OTBjYTZhZmEwNjg1YzYwNmUzZTdl
NzU4YmFjODg0ZjI1YTFmNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOS0yMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBydW5uaW5nIHNlcnZp
Y2Ugd29ya2VycyBvbiB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tOgor
CiAyMDIxLTA5LTIyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBEaXNhYmxlIEZUUC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvU2VydmljZVdvcmtlckJhc2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KaW5kZXggZjc1NjU3NzJjZjk5YzY1
ZjU5Yjg5ZjY1ZjdlYTJiNGE2YzQwMzA2ZS4uM2Y3NjBmOWEyZjc5NGMyNTJkMjBiZWY1YTQ0MmFk
NTA5ZjA1MDMyNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW0KQEAgLTQyMCw3ICs0MjAsMTcgQEAg
c2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAKIClTV1JFU09V
UkNFIjsKIAotVEVTVChTZXJ2aWNlV29ya2VycywgQmFzaWMpCitlbnVtIGNsYXNzIFNob3VsZFJ1
blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkIDogYm9vbCB7IE5vLCBZZXMgfTsKKworc3RhdGlj
IHZvaWQgc2V0Vmlld0RhdGFTdG9yZShXS1dlYlZpZXdDb25maWd1cmF0aW9uKiB2aWV3Q29uZmln
dXJhdGlvbiwgU2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQgc2hvdWxkUnVuU2Vy
dmljZVdvcmtlcnNPbk1haW5UaHJlYWQpCit7CisgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBb
c3RvcmVDb25maWd1cmF0aW9uIHNldFNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFk
OnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkID09IFNob3VsZFJ1blNlcnZpY2VX
b3JrZXJzT25NYWluVGhyZWFkOjpZZXNdOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbdmlld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURh
dGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOworfQorCitzdGF0aWMgdm9pZCBydW5CYXNpY1NXVGVz
dChTaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCBzaG91bGRSdW5TZXJ2aWNlV29y
a2Vyc09uTWFpblRocmVhZCkKIHsKICAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7
CiAgICAgICAgIHsgInRleHQvaHRtbCIsIG1haW5CeXRlcyB9LApAQCAtNDI5LDE4ICs0MzksMTkg
QEAgVEVTVChTZXJ2aWNlV29ya2VycywgQmFzaWMpCiAKICAgICBbV0tXZWJzaXRlRGF0YVN0b3Jl
IF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwogCisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBzZXRWaWV3RGF0YVN0b3JlKGNvbmZpZ3VyYXRpb24uZ2V0KCksIHNob3VsZFJ1blNl
cnZpY2VXb3JrZXJzT25NYWluVGhyZWFkKTsKKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBh
ZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJh
dGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3Nh
Z2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCiAgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFu
IHNsYXRlIGRhdGEgc3RvcmUKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0
b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRh
VHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRs
ZXI6XigpIHsKKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gcmVtb3ZlRGF0
YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBtb2RpZmll
ZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAg
ICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKLQotICAgIGF1dG8g
bWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OwotICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwotCiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKIAogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwpAQCAtNDUw
LDcgKzQ2MSw3IEBAIFRFU1QoU2VydmljZVdvcmtlcnMsIEJhc2ljKQogCiAgICAgd2ViVmlldyA9
IG51bGxwdHI7CiAKLSAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSBm
ZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRh
VHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TQXJy
YXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqd2Vic2l0ZURhdGFSZWNvcmRzKSB7CisgICAgW1tj
b25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIGZldGNoRGF0YVJlY29yZHNPZlR5cGVzOltO
U1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNpdGVEYXRhUmVjb3JkICo+
ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKICAgICAgICAgRVhQRUNUX0VRKDF1LCBbd2Vic2l0ZURh
dGFSZWNvcmRzIGNvdW50XSk7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUSh3ZWJzaXRlRGF0YVJl
Y29yZHNbMF0uZGlzcGxheU5hbWUsICIxMjcuMC4wLjEiKTsKIApAQCAtNDYxLDYgKzQ3MiwxNiBA
QCBURVNUKFNlcnZpY2VXb3JrZXJzLCBCYXNpYykKICAgICBkb25lID0gZmFsc2U7CiB9CiAKK1RF
U1QoU2VydmljZVdvcmtlcnMsIEJhc2ljKQoreworICAgIHJ1bkJhc2ljU1dUZXN0KFNob3VsZFJ1
blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkOjpObyk7Cit9CisKK1RFU1QoU2VydmljZVdvcmtl
cnMsIEJhc2ljV2l0aE1haW5UaHJlYWRTVykKK3sKKyAgICBydW5CYXNpY1NXVGVzdChTaG91bGRS
dW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZDo6WWVzKTsKK30KKwogQGludGVyZmFjZSBTV0N1
c3RvbVVzZXJBZ2VudERlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiB7
CiAgICAgTlNTdHJpbmcgKl91c2VyQWdlbnQ7CiB9CkBAIC03NjcsNiArNzg4LDU4IEBAIFRFU1Qo
U2VydmljZVdvcmtlcnMsIEludGVyY2VwdEZpcnN0TG9hZEFmdGVyUmVzdG9yZUZyb21EaXNrKQog
ICAgIGRvbmUgPSBmYWxzZTsKIH0KIAorVEVTVChTZXJ2aWNlV29ya2VycywgTWFpblRocmVhZFNX
SW50ZXJjZXB0c0xvYWQpCit7CisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRl
RGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgc2V0Vmlld0RhdGFTdG9yZShjb25maWd1cmF0aW9uLmdldCgp
LCBTaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZDo6WWVzKTsKKworICAgIFJldGFp
blB0cjxXS1dlYnNpdGVEYXRhU3RvcmU+IGRhdGFTdG9yZSA9IFtjb25maWd1cmF0aW9uIHdlYnNp
dGVEYXRhU3RvcmVdOworCisgICAgLy8gU3RhcnQgd2l0aCBhIGNsZWFuIHNsYXRlIGRhdGEgc3Rv
cmUKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBj
b21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKwor
ICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlcldpdGhF
eHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5n
ZXQoKSBuYW1lOkAic3ciXTsKKworICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsK
KyAgICAgICAgeyAidGV4dC9odG1sIiwgbWFpbkZvckZpcnN0TG9hZEludGVyY2VwdFRlc3RCeXRl
cyB9LAorICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Iiwgc2NyaXB0SW50ZXJjZXB0
aW5nRmlyc3RMb2FkQnl0ZXMgfSwKKyAgICB9LCB7CisgICAgICAgIHsgImFwcGxpY2F0aW9uL2ph
dmFzY3JpcHQiLCBzY3JpcHRJbnRlcmNlcHRpbmdGaXJzdExvYWRCeXRlcyB9LAorICAgIH0pOwor
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJTZXJ2aWNlIFdvcmtlciBhY3Rp
dmF0ZWQiOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIHdlYlZpZXcgPSBudWxs
cHRyOworICAgIGNvbmZpZ3VyYXRpb24gPSBudWxscHRyOworICAgIG1lc3NhZ2VIYW5kbGVyID0g
bnVsbHB0cjsKKworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6ZGF0YVN0b3JlLmdldCgpXTsKKyAgICBtZXNzYWdl
SGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBh
bGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJd
IGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJd
OworCisgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiSW50ZXJjZXB0ZWQgYnkgd29ya2Vy
IjsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworfQorCiBU
RVNUKFNlcnZpY2VXb3JrZXJzLCBXYWl0Rm9yUG9saWN5RGVsZWdhdGUpCiB7CiAgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439366</attachid>
            <date>2021-09-27 10:10:33 -0700</date>
            <delta_ts>2021-09-29 15:27:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230649-20210927101032.patch</filename>
            <type>text/plain</type>
            <size>87368</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZjMDIyZjg0ZThiMTg1
NGY2MDM2NmZkMjk0ZmFlMzliZWRmOTFlYy4uZGRmMDFlMGI3NTQzOTM5NDkwMGNkMmJiNDY1MTVm
ZGFlNjQ1YzNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIxLTA5LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJ1
bm5pbmcgc2VydmljZSB3b3JrZXJzIG9uIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJ1bm5pbmcg
c2VydmljZSB3b3JrZXJzIG9uIHRoZSBtYWluIHRocmVhZCAob2ZmIGJ5IGRlZmF1bHQpLgorCisg
ICAgICAgIFRoaXMgaXMgdG8gc3VwcG9ydCB1c2UgY2FzZXMgd2hlcmUgdGhlIEluamVjdGVkQnVu
ZGxlIG5lZWRzIHRvIGhhdmUgYWNjZXNzCisgICAgICAgIHRvIGEgc2VydmljZSB3b3JrZXIncyBK
UyBnbG9iYWwgb2JqZWN0IGFuZCBzY3JpcHQgaXQuIEl0IHdvdWxkbid0IGJlIHByYWN0aWNhbAor
ICAgICAgICBpbiBzdWNoIGNhc2VzIHRvIGhhdmUgdGhlIHNlcnZpY2Ugd29ya2VyIHJ1bm5pbmcg
b2ZmIHRoZSBtYWluIHRocmVhZC4gTm90ZSB0aGF0CisgICAgICAgIHRoaXMgaXMgbm90IG1lYW50
IHRvIGJlIHVzZWQgZm9yIHNlcnZpY2Ugd29ya2VycyBpbiBnZW5lcmFsLCBvbmx5IGZvciBzb21l
IHZlcnkKKyAgICAgICAgc3BlY2lmaWMgc2VydmljZSB3b3JrZXJzIHRoYXQgcmVxdWlyZSBpbnRl
cmFjdGlvbiB3aXRoIFdlYktpdCdzIGluamVjdGVkIGJ1bmRsZS4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Qcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eTo6Zm9yZ2V0QWN0aXZpdHlGb3JDdXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6d2Fp
dEZvck1ldGhvZENvbXBsZXRpb24pOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKToK
KyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KToKKyAgICAgICAgKiBwYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQZXJmb3JtYW5jZVVzZXJUaW1pbmc6OmNvbnZlcnRNYXJrVG9UaW1lc3RhbXAgY29u
c3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVs
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0
Q29udHJvbGxlci5oOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFJ1bkxvb3ApOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjpzdGFydFJ1bm5pbmdEZWJ1Z2dlclRh
c2tzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6cnVuRXZlbnRM
b29wKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JX
b3JrbGV0VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6
c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN1c3BlbmQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjpyZXN1bWUpOgorICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmg6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vZGVQcmVkaWNhdGU6Om9w
ZXJhdG9yKCkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVkaWNhdGVkUnVuTG9v
cDo6V29ya2VyRGVkaWNhdGVkUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWRp
Y2F0ZWRSdW5Mb29wOjp+V29ya2VyRGVkaWNhdGVkUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW5Mb29wU2V0dXA6OlJ1bkxvb3BTZXR1cCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJE
ZWRpY2F0ZWRSdW5Mb29wOjpydW4pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVkaWNhdGVk
UnVuTG9vcDo6cnVuSW5EZWJ1Z2dlck1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVk
aWNhdGVkUnVuTG9vcDo6cnVuSW5Nb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlZGlj
YXRlZFJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJE
ZWRpY2F0ZWRSdW5Mb29wOjp0ZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVk
aWNhdGVkUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlckRlZGljYXRlZFJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckRlZGljYXRlZFJ1bkxvb3A6OlRhc2s6OlRhc2spOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWFpblJ1bkxvb3A6Oldvcmtlck1haW5SdW5Mb29wKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck1haW5SdW5Mb29wOjpzZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJNYWluUnVuTG9vcDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWFpblJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNYWluUnVuTG9vcDo6cnVuSW5Nb2RlKToKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuaDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OmNy
ZWF0ZVVuaXF1ZUlkKToKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUGFyYW1ldGVyczo6aXNvbGF0
ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6V29ya2VyVGhy
ZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6Y3JlYXRlVGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6ZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeSk6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlclRocmVhZE1vZGUuaDogQWRkZWQuCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGU6OnVwZGF0ZUV4dGVuZGVkRXZlbnRzU2V0KToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmdlbmVyYXRlV29ya2VyUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVhdFRpbWVyKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpTV1NlcnZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6aW5zdGFsbENvbnRleHREYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKwogMjAyMS0wOS0yNyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDYXNjYWRlIExheWVy
c10gU3VwcG9ydCBAbGF5ZXIgc3RhdGVtZW50IGJlZm9yZSBAaW1wb3J0IHN0YXRlbWVudHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggZjNjYjY1Y2QxMWIzZGQxODIxZDdkZDYzOWFjOWVlOWQ4ZjM0ODZiYi4uZmIxZDVi
YzY4YjdlNGIwMGFhNWRkOThmM2YzOGJjNGZjOWY0YTkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MSBAQAorMjAyMS0wOS0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCBzdXBwb3J0IGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyBvbiB0aGUgbWFpbiB0
aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MDY0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyBvbiB0aGUgbWFpbiB0aHJlYWQg
KG9mZiBieSBkZWZhdWx0KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vz
c2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uOjpzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJD
b250ZXh0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAo
LVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzaG91bGRSdW5TZXJ2aWNlV29ya2Vy
c09uTWFpblRocmVhZF0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiBzZXRTaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNo
b3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNob3VsZFJ1blNlcnZpY2VXb3Jr
ZXJzT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbjoKKwogMjAyMS0wOS0yNyAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbaU9TXVtHUFVQXSBSZW1vdmUgYWNjZXNzIHRvIHVudXNlZCBtYWNoIHNlcnZpY2VzIGlu
IHNhbmRib3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGVjMDUwMTQyYTVmYzY2MTNkNzczNWY2NWY5
NDlmNzgxZDhjZTBmYzYuLjMyMTExMmEzOTIwNTYwZDVhMmUzNDE0NTBkMzE1OTY5YzYyMmZkYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTcyMyw2ICsxNzIzLDcgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmgK
ICAgICB3b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlckNsaWVudC5oCiAgICAgd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaAorICAgIHdvcmtlcnMvV29ya2VyVGhyZWFkTW9kZS5oCiAgICAgd29ya2Vycy9X
b3JrZXJUaHJlYWRUeXBlLmgKICAgICB3b3JrZXJzL1dvcmtlclR5cGUuaAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVjdGlvblBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25u
ZWN0aW9uUHJveHkuY3BwCmluZGV4IDM1NmFiMDU3NjEwM2NiYWJkZmJiMmYxMjQyYWY5NTk0OTg1
ZjAxMDIuLjY2NzgyZWNkZTNlNDcyMWVjYjRiMzRjMGRkMjAzN2M5MTVlMjhkZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9u
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9J
REJDb25uZWN0aW9uUHJveHkuY3BwCkBAIC02MDksOCArNjA5LDYgQEAgdm9pZCBzZXRNYXRjaGlu
Z0l0ZW1zQ29udGV4dFN1c3BlbmRlZChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjdXJyZW50Q29u
dGV4dCwgSGEKIAogdm9pZCBJREJDb25uZWN0aW9uUHJveHk6OmZvcmdldEFjdGl2aXR5Rm9yQ3Vy
cmVudFRocmVhZCgpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0KICAgICB7CiAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcExvY2sgfTsKICAg
ICAgICAgcmVtb3ZlSXRlbXNNYXRjaGluZ0N1cnJlbnRUaHJlYWQobV9kYXRhYmFzZUNvbm5lY3Rp
b25NYXApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXgg
NzU3NWVjNzQ3YThlZTMwMzdiYTM1MjU1ZDQ1ZDIwYjZhNjM4ODY2Mi4uOWZiYzk0ZTdjZWY2M2Q3
NDFiMzFkYWMyZWI3OGRhN2RiNTAxNTZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC01OTIsMTAgKzU5MiwxMCBAQCB2b2lkIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OndhaXRGb3JNZXRob2RDb21wbGV0aW9uKCkKICAg
ICBpZiAoIW1fd29ya2VyR2xvYmFsU2NvcGUpCiAgICAgICAgIHJldHVybjsKICAgICBXb3JrZXJS
dW5Mb29wJiBydW5Mb29wID0gbV93b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkucnVuTG9vcCgp
OwotICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2Fn
ZVJlY2VpdmVkOworICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgICAgVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRX
cmFwcGVyLnB0cigpOwotICAgIHdoaWxlIChtX3dvcmtlckdsb2JhbFNjb3BlICYmIGNsaWVudFdy
YXBwZXIgJiYgIWNsaWVudFdyYXBwZXItPnN5bmNNZXRob2REb25lKCkgJiYgcmVzdWx0ICE9IE1l
c3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKLSAgICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1v
ZGUobV93b3JrZXJHbG9iYWxTY29wZS5nZXQoKSwgbV90YXNrTW9kZSk7IC8vIE1heSBjYXVzZSB0
aGlzIGJyaWRnZSB0byBnZXQgZGlzY29ubmVjdGVkLCB3aGljaCBtYWtlcyBtX3dvcmtlckdsb2Jh
bFNjb3BlIGJlY29tZSBudWxsLgorICAgIHdoaWxlIChtX3dvcmtlckdsb2JhbFNjb3BlICYmIGNs
aWVudFdyYXBwZXIgJiYgIWNsaWVudFdyYXBwZXItPnN5bmNNZXRob2REb25lKCkgJiYgc3VjY2Vz
cykgeworICAgICAgICBzdWNjZXNzID0gcnVuTG9vcC5ydW5Jbk1vZGUobV93b3JrZXJHbG9iYWxT
Y29wZS5nZXQoKSwgbV90YXNrTW9kZSk7IC8vIE1heSBjYXVzZSB0aGlzIGJyaWRnZSB0byBnZXQg
ZGlzY29ubmVjdGVkLCB3aGljaCBtYWtlcyBtX3dvcmtlckdsb2JhbFNjb3BlIGJlY29tZSBudWxs
LgogICAgICAgICBjbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLnB0cigpOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAyNWMxMTQ2NjJkYmRiMzQ4OGVmYmJkOTM5MTEwYWQzMGFmNWJjMThmLi5j
NjE0NzE2NjMxYWRkNjJlOWViZWU3NTdiZDI1ZDhjNmRmOGJhNjAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzExLDYgKzEz
MTEsNyBAQAogCQk0NjJFNEM1MDI2MTZBODExMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjJFNEM0RDI2MTZB
ODAxMDAzQTJDNjcgLyogU2NyaXB0QnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzNTIxQUQyMDgxMDkyQTAwQzI4OTIyIC8qIFdpbmRv
d1Byb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjM1MjFBQTIwODEwOTBCMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjNFQjYyMzFCODc4OUUwMDA5NkVE
NTEgLyogVGFnQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uaCAq
LzsgfTsKKwkJNDY1MEFEMTkyNkZDQ0E2NTAwNDdGN0FEIC8qIFdvcmtlclRocmVhZE1vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NTBBRDE3MjZG
Q0NBNUEwMDQ3RjdBRCAvKiBXb3JrZXJUaHJlYWRNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY1MzA3RDAxREI2RUU0ODAwRTQxMzdDIC8q
IEpTVUlFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzRTA0NUVGMURBQTEwNEYwMEIwRDhCOSAvKiBKU1VJRXZlbnRJbml0LmggKi87IH07
CiAJCTQ2NjU4REM5MUZBMjRCODcwMEY3REQ1NCAvKiBTV0NvbnRleHRNYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcyNDEzQjFGQTI0QjE0
MDA4OEJENkQgLyogU1dDb250ZXh0TWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2NkMyREFEMjZDNzNBRkMwMDY1MTkzMSAvKiBQb2xp
Y3lDb250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2NkMyREFCMjZDNzNBRkIwMDY1MTkzMSAvKiBQb2xpY3lDb250YWluZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODQzOSw2ICs4NDQw
LDcgQEAKIAkJNDYzRUI2MjAxQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rpb24uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2M0VCNjIxMUI4Nzg5Q0IwMDk2RUQ1MSAvKiBU
YWdDb2xsZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRhZ0NvbGxl
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY0MjQwNDUyMEVBRjBFRDAw
QjI5RkQyIC8qIERhdGFiYXNlTWFuYWdlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RGF0YWJhc2VNYW5hZ2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2
NTBBRDE3MjZGQ0NBNUEwMDQ3RjdBRCAvKiBXb3JrZXJUaHJlYWRNb2RlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclRocmVhZE1vZGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDY1QThFNzgxQzhBMjRDRTAwRTdEM0U0IC8qIFJ1bnRpbWVBcHBsaWNh
dGlvbkNoZWNrc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ2NUVERDlGMjIyRjRFQzMwMEI0NkUxNiAvKiBEZXZpY2VPcmllbnRhdGlvbk9y
TW90aW9uUGVybWlzc2lvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDY1RUREQTAyMjJGNEVDNDAwQjQ2RTE2IC8qIERldmljZU9yaWVu
dGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTk0NzgsNiArMTk0ODAsNyBAQAogCQkJCTJFQTc2ODAzMEZF
NzEyNjQwMEFCOUM4QSAvKiBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQuaCAqLywKIAkJCQkyRTQz
NDY0MjBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmNwcCAqLywKIAkJCQkyRTQzNDY0
MzBGNTQ2QTgyMDBCMEYxQkEgLyogV29ya2VyVGhyZWFkLmggKi8sCisJCQkJNDY1MEFEMTcyNkZD
Q0E1QTAwNDdGN0FEIC8qIFdvcmtlclRocmVhZE1vZGUuaCAqLywKIAkJCQlFM0FGRDdBQjI1NUY1
MERDMDBFNUUzMEUgLyogV29ya2VyVGhyZWFkVHlwZS5oICovLAogCQkJCTUxRjE3NEZDMUYzNTg5
ODgwMEM3NDk1MCAvKiBXb3JrZXJUeXBlLmggKi8sCiAJCQkJNTFGMTc0RkExRjM1ODhENzAwQzc0
OTUwIC8qIFdvcmtlclR5cGUuaWRsICovLApAQCAtMzU5MjIsNiArMzU5MjUsNyBAQAogCQkJCTJF
NDM0NjU1MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBCOTA1NkY5MEYyNjg1RjMwMDk1RkY2QSAvKiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5N0FBQkQyRDE0RkEwOUQ1MDA3NDU3QUUgLyogV29ya2VyVGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ2NTBBRDE5MjZG
Q0NBNjUwMDQ3RjdBRCAvKiBXb3JrZXJUaHJlYWRNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
M0FGRDdBRDI1NUY1MEVCMDBFNUUzMEUgLyogV29ya2VyVGhyZWFkVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTU0QTBDNjgxREI4MDdEOTAwMTdBOTBCIC8qIFdvcmtlclRvUGFnZUZyb250ZW5k
Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFGMTc0RkUxRjM1ODk5MjAwQzc0OTUwIC8q
IFdvcmtlclR5cGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJEZWJ1Z2dlci5jcHAKaW5kZXggOGE3YWI4YzIwZTA5NDkwYmUzN2U1YzA2NzU2MmIyYzNk
MjUxYmM1NC4uYjUyMDg4YmMzOWQ2ZWZlZDRkOTgwYjNhZDQyZTkzYTI0ZDllNThmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwCkBAIC03OSw5ICs3OSwx
MyBAQCB2b2lkIFdvcmtlckRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiAKICAg
ICBUaW1lckJhc2U6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogCisgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBwYXVzaW5nIHdvcmtlcnMgcnVubmluZyBvbiB0aGUgbWFpbiB0
aHJlYWQuCisgICAgaWYgKCFpczxXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wPihtX2dsb2JhbFNjb3Bl
Lndvcmtlck9yV29ya2xldFRocmVhZCgpLT5ydW5Mb29wKCkpKQorICAgICAgICByZXR1cm47CisK
ICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7Ci0gICAgICAgIHJl
c3VsdCA9IG1fZ2xvYmFsU2NvcGUud29ya2VyT3JXb3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKS5y
dW5JbkRlYnVnZ2VyTW9kZShtX2dsb2JhbFNjb3BlKTsKKyAgICAgICAgcmVzdWx0ID0gZG93bmNh
c3Q8V29ya2VyRGVkaWNhdGVkUnVuTG9vcD4obV9nbG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRU
aHJlYWQoKS0+cnVuTG9vcCgpKS5ydW5JbkRlYnVnZ2VyTW9kZShtX2dsb2JhbFNjb3BlKTsKICAg
ICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCAmJiAhZG9uZVByb2Nl
c3NpbmdEZWJ1Z2dlckV2ZW50cygpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGMyZGFhNWNjYWNjOWIzYjQwZGE2MWY3
NjI2YzgxOTgwZWFlYmFkM2MuLmRmZjg5NzAxYzkzOWJjNzNjMzcwMzJhZDljNDJhZDIwNjMyNmFk
NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKQEAgLTc0LDExICs3NCwxMSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcAogICAgIGF1
dG8gbW9kZSA9IG1ha2VTdHJpbmcoImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlIiwgcnVu
TG9vcC5jcmVhdGVVbmlxdWVJZCgpKTsKIAogICAgIGF1dG8gbG9hZGVyID0gV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBjbGllbnQsIG1v
ZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFN0cmluZygpKTsKLSAgICBNZXNzYWdlUXVl
dWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsKLSAgICB3
aGlsZSAoIWxvYWRlci0+ZG9uZSgpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVk
KQotICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZSgmd29ya2VyT3JXb3JrbGV0R2xv
YmFsU2NvcGUsIG1vZGUpOworICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CisgICAgd2hpbGUgKCFs
b2FkZXItPmRvbmUoKSAmJiBzdWNjZXNzKQorICAgICAgICBzdWNjZXNzID0gcnVuTG9vcC5ydW5J
bk1vZGUoJndvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLCBtb2RlKTsKIAotICAgIGlmICghbG9h
ZGVyLT5kb25lKCkgJiYgcmVzdWx0ID09IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCisgICAgaWYg
KCFsb2FkZXItPmRvbmUoKSAmJiAhc3VjY2VzcykKICAgICAgICAgbG9hZGVyLT5jYW5jZWwoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1p
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVVzZXJUaW1pbmcuY3BwCmlu
ZGV4IGEzNjg4NzIzNzRjMTJmN2NhMzBlMWJmOWMyOTEwMzU5OGUzYTA5MTcuLmQxYmNjZmE1OTJi
YzUyNTIzZWViZDZmMGEwMzUyZGQwZjMxNGViNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCBFeGNlcHRpb25P
cjxkb3VibGU+IFBlcmZvcm1hbmNlVXNlclRpbWluZzo6Y29udmVydE1hcmtUb1RpbWVzdGFtcChj
b25zdCBWYXJpYW50PAogCiBFeGNlcHRpb25Pcjxkb3VibGU+IFBlcmZvcm1hbmNlVXNlclRpbWlu
Zzo6Y29udmVydE1hcmtUb1RpbWVzdGFtcChjb25zdCBTdHJpbmcmIG1hcmspIGNvbnN0CiB7Ci0g
ICAgaWYgKCFpczxEb2N1bWVudD4obV9wZXJmb3JtYW5jZS5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpKSB7CisgICAgaWYgKCFpc01haW5UaHJlYWQoKSkgewogICAgICAgICBpZiAoaXNSZXN0cmlj
dGVkTWFya05hbWVOb25NYWluVGhyZWFkKG1hcmspKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciB9OwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggYjk3MGNkZTQxZTdj
NTQxMTIxMDI1MmU2NWExOGU0MWM2YjkzOWQ2OC4uMmYxZTM1MjFmMzQ3NzFkNGFkNTU1NjY2ZDhj
Nzc4N2Y4NDQ5OGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtNDUsNiArNDUsOSBAQCBjbGFzcyBXb3JrZXJPcldv
cmtsZXRHbG9iYWxTY29wZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0LCBwdWJsaWMg
UmVmQ291bgogcHVibGljOgogICAgIHZpcnR1YWwgfldvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KCk7CiAKKyAgICB1c2luZyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojp3ZWFrUHRyRmFjdG9yeTsK
KyAgICB1c2luZyBXZWFrVmFsdWVUeXBlID0gU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6V2Vha1Zh
bHVlVHlwZTsKKwogICAgIGJvb2wgaXNDbG9zaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0Nsb3Np
bmc7IH0KICAgICBXb3JrZXJPcldvcmtsZXRUaHJlYWQqIHdvcmtlck9yV29ya2xldFRocmVhZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGhyZWFkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGIy
ZTFmMzBkZTc0NjI3YTM0NTBjNGVjNDBlYTRiNGY3NDUxOWUwNDguLmZmMjdiNmE2ZWI0NDdkNmRh
OWFmNjU1MjNmMTliNzhhNWEwNmJjZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMjY3LDEw
ICsyNjcsMTAgQEAgSlNDOjpKU1ZhbHVlIFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlTW9kdWxlKEpTQzo6SlNNb2R1bGVSZWNvcmQKICAgICByZXR1cm4gbW9kdWxlUmVj
b3JkLmV2YWx1YXRlKCZnbG9iYWxPYmplY3QsIGF3YWl0ZWRWYWx1ZSwgcmVzdW1lTW9kZSk7CiB9
CiAKLU1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxl
cjo6bG9hZE1vZHVsZVN5bmNocm9ub3VzbHkoV29ya2VyU2NyaXB0RmV0Y2hlciYgc2NyaXB0RmV0
Y2hlciwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKK2Jvb2wgV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVN5bmNocm9ub3VzbHkoV29ya2VyU2Ny
aXB0RmV0Y2hlciYgc2NyaXB0RmV0Y2hlciwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNl
Q29kZSkKIHsKICAgICBpZiAoaXNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKLSAgICAgICAgcmV0dXJu
IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQ7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlu
aXRTY3JpcHRJZk5lZWRlZCgpOwogCkBAIC0zNDAsMTQgKzM0MCwxNCBAQCBNZXNzYWdlUXVldWVX
YWl0UmVzdWx0IFdvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXI6OmxvYWRNb2R1bGVTeW5j
aHJvbm91c2x5KAogICAgIC8vIHRhc2sgaXMgcXVldWVkIGluIFdvcmtlclJ1bkxvb3AgYmVmb3Jl
IHN0YXJ0IHJ1bm5pbmcgbW9kdWxlIHNjcmlwdHMuIFRoaXMgdGFzayBzaG91bGQgbm90IGJlIGRp
c2NhcmRlZAogICAgIC8vIGluIHRoZSBmb2xsb3dpbmcgZHJpdmluZyBvZiB0aGUgUnVuTG9vcCB3
aGljaCBtYWlubHkgYXR0ZW1wdCB0byBjb2xsZWN0IGluaXRpYWwgbG9hZCBvZiBtb2R1bGUgc2Ny
aXB0cy4KICAgICBTdHJpbmcgdGFza01vZGUgPSBXb3JrZXJNb2R1bGVTY3JpcHRMb2FkZXI6OnRh
c2tNb2RlKCk7Ci0gICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBNZXNzYWdlUXVl
dWVNZXNzYWdlUmVjZWl2ZWQ7Ci0gICAgd2hpbGUgKCghcHJvdGVjdG9yLT5pc0xvYWRlZCgpICYm
ICFwcm90ZWN0b3ItPndhc0NhbmNlbGVkKCkpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJt
aW5hdGVkKSB7Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKG1fZ2xvYmFsU2Nv
cGUsIHRhc2tNb2RlKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5h
dGVkKQorICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CisgICAgd2hpbGUgKCghcHJvdGVjdG9yLT5p
c0xvYWRlZCgpICYmICFwcm90ZWN0b3ItPndhc0NhbmNlbGVkKCkpICYmIHN1Y2Nlc3MpIHsKKyAg
ICAgICAgc3VjY2VzcyA9IHJ1bkxvb3AucnVuSW5Nb2RlKG1fZ2xvYmFsU2NvcGUsIHRhc2tNb2Rl
KTsKKyAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICBtX2dsb2JhbFNjb3BlLT5ldmVu
dExvb3AoKS5wZXJmb3JtTWljcm90YXNrQ2hlY2twb2ludCgpOwogICAgIH0KIAotICAgIHJldHVy
biByZXN1bHQ7CisgICAgcmV0dXJuIHN1Y2Nlc3M7CiB9CiAKIHZvaWQgV29ya2VyT3JXb3JrbGV0
U2NyaXB0Q29udHJvbGxlcjo6bGlua0FuZEV2YWx1YXRlTW9kdWxlKFdvcmtlclNjcmlwdEZldGNo
ZXImIHNjcmlwdEZldGNoZXIsIGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIFN0
cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNzYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAppbmRleCAzMDRh
YzQwMzM0YzA2MmY3ZWI0YmZlNTllMzU4NzY5Y2I3NGM5NjZkLi4zMzEzNzlkZmU1MjM3YzAzZWMy
ZjE0ZmM5OGFlNzcxZWIyNGZmYWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaApAQCAtOTksNyArOTksNyBA
QCBwdWJsaWM6CiAgICAgSlNDOjpKU1ZhbHVlIGV2YWx1YXRlTW9kdWxlKEpTQzo6SlNNb2R1bGVS
ZWNvcmQmLCBKU0M6OkpTVmFsdWUgYXdhaXRlZFZhbHVlLCBKU0M6OkpTVmFsdWUgcmVzdW1lTW9k
ZSk7CiAKICAgICB2b2lkIGxpbmtBbmRFdmFsdWF0ZU1vZHVsZShXb3JrZXJTY3JpcHRGZXRjaGVy
JiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFN0cmluZyogcmV0dXJuZWRFeGNlcHRpb25NZXNz
YWdlID0gbnVsbHB0cik7Ci0gICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBsb2FkTW9kdWxlU3lu
Y2hyb25vdXNseShXb3JrZXJTY3JpcHRGZXRjaGVyJiwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYp
OworICAgIGJvb2wgbG9hZE1vZHVsZVN5bmNocm9ub3VzbHkoV29ya2VyU2NyaXB0RmV0Y2hlciYs
IGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKIAogICAgIHZvaWQgbG9hZEFuZEV2YWx1YXRlTW9k
dWxlKGNvbnN0IFVSTCYgbW9kdWxlVVJMLCBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcAppbmRl
eCBmZDY1OTg0NTMwZTdjMTgyOGU5MzMzMDAxMTUyOThlYjBlZGFlZjM0Li5hM2JkZGJiNGM5M2E5
YzMxNDBlZDZlYWFhMzRkZDBiNDI0YzQ0NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiV29ya2VyT3JXb3JrbGV0VGhyZWFkLmgiCiAKICNpbmNsdWRlICJUaHJlYWRHbG9iYWxEYXRh
LmgiCisjaW5jbHVkZSAiV29ya2VyRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9s
bGVyLmgiCiAKQEAgLTU0LDggKzU1LDIwIEBAIEhhc2hTZXQ8V29ya2VyT3JXb3JrbGV0VGhyZWFk
Kj4mIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkcygpCiAgICAg
cmV0dXJuIHdvcmtlck9yV29ya2xldFRocmVhZHM7CiB9CiAKLVdvcmtlck9yV29ya2xldFRocmVh
ZDo6V29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3N0YXRp
YyBVbmlxdWVSZWY8V29ya2VyUnVuTG9vcD4gY29uc3RydWN0UnVuTG9vcChXb3JrZXJUaHJlYWRN
b2RlIHdvcmtlclRocmVhZE1vZGUpCit7CisgICAgc3dpdGNoICh3b3JrZXJUaHJlYWRNb2RlKSB7
CisgICAgY2FzZSBXb3JrZXJUaHJlYWRNb2RlOjpVc2VNYWluVGhyZWFkOgorICAgICAgICByZXR1
cm4gbWFrZVVuaXF1ZVJlZjxXb3JrZXJNYWluUnVuTG9vcD4oKTsKKyAgICBjYXNlIFdvcmtlclRo
cmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJl
dHVybiBtYWtlVW5pcXVlUmVmPFdvcmtlckRlZGljYXRlZFJ1bkxvb3A+KCk7Cit9CisKK1dvcmtl
ck9yV29ya2xldFRocmVhZDo6V29ya2VyT3JXb3JrbGV0VGhyZWFkKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllciwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlKQogICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX3J1bkxvb3AoY29uc3RydWN0UnVuTG9vcCh3b3Jr
ZXJUaHJlYWRNb2RlKSkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgd29ya2VyT3JXb3JrbGV0VGhy
ZWFkc0xvY2soKSB9OwogICAgIHdvcmtlck9yV29ya2xldFRocmVhZHMoKS5hZGQodGhpcyk7CkBA
IC03Myw5ICs4NiwxMyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6c3RhcnRSdW5uaW5n
RGVidWdnZXJUYXNrcygpCiAgICAgQVNTRVJUKCFtX3BhdXNlZEZvckRlYnVnZ2VyKTsKICAgICBt
X3BhdXNlZEZvckRlYnVnZ2VyID0gdHJ1ZTsKIAorICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3IgZGVidWdnaW5nIHdvcmtlcnMgcnVubmluZyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgaWYg
KCFpczxXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wPihtX3J1bkxvb3AuZ2V0KCkpKQorICAgICAgICBy
ZXR1cm47CisKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7Ci0g
ICAgICAgIHJlc3VsdCA9IG1fcnVuTG9vcC5ydW5JbkRlYnVnZ2VyTW9kZSgqbV9nbG9iYWxTY29w
ZSk7CisgICAgICAgIHJlc3VsdCA9IGRvd25jYXN0PFdvcmtlckRlZGljYXRlZFJ1bkxvb3A+KG1f
cnVuTG9vcC5nZXQoKSkucnVuSW5EZWJ1Z2dlck1vZGUoKm1fZ2xvYmFsU2NvcGUpOwogICAgIH0g
d2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmIG1fcGF1c2VkRm9yRGVi
dWdnZXIpOwogfQogCkBAIC04NywxMyArMTA0LDMxIEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhy
ZWFkOjpzdG9wUnVubmluZ0RlYnVnZ2VyVGFza3MoKQogdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJl
YWQ6OnJ1bkV2ZW50TG9vcCgpCiB7CiAgICAgLy8gRG9lcyBub3QgcmV0dXJuIHVudGlsIHRlcm1p
bmF0ZWQuCi0gICAgbV9ydW5Mb29wLnJ1bihtX2dsb2JhbFNjb3BlLmdldCgpKTsKKyAgICBpZiAo
aXM8V29ya2VyRGVkaWNhdGVkUnVuTG9vcD4obV9ydW5Mb29wLmdldCgpKSkKKyAgICAgICAgZG93
bmNhc3Q8V29ya2VyRGVkaWNhdGVkUnVuTG9vcD4obV9ydW5Mb29wLmdldCgpKS5ydW4obV9nbG9i
YWxTY29wZS5nZXQoKSk7CiB9CiAKIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJP
cldvcmtsZXRUaHJlYWQoKQogewogICAgIFJlZiBwcm90ZWN0ZWRUaGlzIHsgKnRoaXMgfTsKIAor
ICAgIGlmIChpc01haW5UaHJlYWQoKSkgeworICAgICAgICBtX2dsb2JhbFNjb3BlID0gY3JlYXRl
R2xvYmFsU2NvcGUoKTsKKyAgICAgICAgaWYgKCFtX2dsb2JhbFNjb3BlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGRvd25jYXN0PFdvcmtlck1haW5SdW5Mb29wPihtX3J1bkxvb3Au
Z2V0KCkpLnNldEdsb2JhbFNjb3BlKCptX2dsb2JhbFNjb3BlKTsKKworICAgICAgICBTdHJpbmcg
ZXhjZXB0aW9uTWVzc2FnZTsKKyAgICAgICAgZXZhbHVhdGVTY3JpcHRJZk5lY2Vzc2FyeShleGNl
cHRpb25NZXNzYWdlKTsKKworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtldmFsdWF0ZUNhbGxi
YWNrID0gV1RGTW92ZShtX2V2YWx1YXRlQ2FsbGJhY2spLCBtZXNzYWdlID0gV1RGTW92ZShleGNl
cHRpb25NZXNzYWdlKV0geworICAgICAgICAgICAgaWYgKGV2YWx1YXRlQ2FsbGJhY2spCisgICAg
ICAgICAgICAgICAgZXZhbHVhdGVDYWxsYmFjayhtZXNzYWdlKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBQcm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBm
ZW52IHRvIHdvcmtlcnMuCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBGbG9hdGluZ1Bv
aW50RW52aXJvbm1lbnQ6OnNpbmdsZXRvbigpLnByb3BhZ2F0ZU1haW5UaHJlYWRFbnZpcm9ubWVu
dCgpOwpAQCAtMTIwLDcgKzE1NSw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3Jr
ZXJPcldvcmtsZXRUaHJlYWQoKQogCiAgICAgICAgIHNjcmlwdENvbnRyb2xsZXIgPSBtX2dsb2Jh
bFNjb3BlLT5zY3JpcHQoKTsKIAotICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1pbmF0ZWQoKSkg
eworICAgICAgICBpZiAobV9ydW5Mb29wLT50ZXJtaW5hdGVkKCkpIHsKICAgICAgICAgICAgIC8v
IFRoZSB3b3JrZXIgd2FzIHRlcm1pbmF0ZWQgYmVmb3JlIHRoZSB0aHJlYWQgaGFkIGEgY2hhbmNl
IHRvIHJ1bi4gU2luY2UgdGhlIGNvbnRleHQgZGlkbid0IGV4aXN0IHlldCwKICAgICAgICAgICAg
IC8vIGZvcmJpZEV4ZWN1dGlvbigpIGNvdWxkbid0IGJlIGNhbGxlZCBmcm9tIHN0b3AoKS4KICAg
ICAgICAgICAgIHNjcmlwdENvbnRyb2xsZXItPnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24o
KTsKQEAgLTEzMiw3ICsxNjcsNyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2Vy
T3JXb3JrbGV0VGhyZWFkKCkKICAgICAgICAgc3RhcnRSdW5uaW5nRGVidWdnZXJUYXNrcygpOwog
CiAgICAgICAgIC8vIElmIHRoZSB3b3JrZXIgd2FzIHNvbWVob3cgdGVybWluYXRlZCB3aGlsZSBw
cm9jZXNzaW5nIGRlYnVnZ2VyIGNvbW1hbmRzLgotICAgICAgICBpZiAobV9ydW5Mb29wLnRlcm1p
bmF0ZWQoKSkKKyAgICAgICAgaWYgKG1fcnVuTG9vcC0+dGVybWluYXRlZCgpKQogICAgICAgICAg
ICAgc2NyaXB0Q29udHJvbGxlci0+Zm9yYmlkRXhlY3V0aW9uKCk7CiAgICAgfQogCkBAIC0yMjgs
NyArMjYzLDE4IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpzdG9wKEZ1bmN0aW9uPHZv
aWQoKT4mJiBzdG9wcGVkQ2FsbGJhY2spCiAgICAgaWYgKGdsb2JhbFNjb3BlKCkpIHsKICAgICAg
ICAgZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPnNjaGVkdWxlRXhlY3V0aW9uVGVybWluYXRpb24o
KTsKIAotICAgICAgICBtX3J1bkxvb3AucG9zdFRhc2tBbmRUZXJtaW5hdGUoeyBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQgKSB7CisgICAgICAgIGlmIChpczxXb3JrZXJNYWluUnVuTG9vcD4obV9ydW5M
b29wLmdldCgpKSkgeworICAgICAgICAgICAgYXV0byBnbG9iYWxTY29wZSA9IHN0ZDo6ZXhjaGFu
Z2UobV9nbG9iYWxTY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+cHJl
cGFyZUZvckRlc3RydWN0aW9uKCk7CisgICAgICAgICAgICBnbG9iYWxTY29wZS0+Y2xlYXJTY3Jp
cHQoKTsKKyAgICAgICAgICAgIG1fcnVuTG9vcC0+dGVybWluYXRlKCk7CisKKyAgICAgICAgICAg
IGlmIChtX3N0b3BwZWRDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KHN0ZDo6ZXhjaGFuZ2UobV9zdG9wcGVkQ2FsbGJhY2ssIG51bGxwdHIpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1fcnVuTG9vcC0+cG9zdFRhc2tBbmRUZXJt
aW5hdGUoeyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrOjpDbGVhbnVwVGFzaywgW10gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQgKSB7CiAgICAgICAgICAgICBhdXRvJiBnbG9i
YWxTY29wZSA9IGRvd25jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KTsK
IAogICAgICAgICAgICAgZ2xvYmFsU2NvcGUucHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CkBAIC0y
NDQsMTMgKzI5MCwxNiBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6c3RvcChGdW5jdGlv
bjx2b2lkKCk+JiYgc3RvcHBlZENhbGxiYWNrKQogICAgICAgICB9IH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fcnVuTG9vcC50ZXJtaW5hdGUoKTsKKyAgICBtX3J1bkxvb3AtPnRl
cm1pbmF0ZSgpOwogfQogCiB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6c3VzcGVuZCgpCiB7
CiAgICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7Ci0gICAgbV9ydW5Mb29wLnBvc3RUYXNrKFsmXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgIGlmIChpczxXb3JrZXJNYWluUnVuTG9vcD4o
bV9ydW5Mb29wLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ydW5Mb29wLT5wb3N0
VGFzayhbJl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKICAgICAgICAgaWYgKGdsb2JhbFNj
b3BlKCkpCiAgICAgICAgICAgICBnbG9iYWxTY29wZSgpLT5zdXNwZW5kKCk7CiAKQEAgLTI2NSw2
ICszMTQsOSBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6cmVzdW1lKCkKIHsKICAgICBB
U1NFUlQobV9pc1N1c3BlbmRlZCk7CiAgICAgbV9pc1N1c3BlbmRlZCA9IGZhbHNlOworICAgIGlm
IChpczxXb3JrZXJNYWluUnVuTG9vcD4obV9ydW5Mb29wLmdldCgpKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgbV9zdXNwZW5zaW9uU2VtYXBob3JlLnNpZ25hbCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaAppbmRleCAxZWU4YTM0YjIy
MjE3ZDBiMjA5ZTk0Yzk5OTU3YTgyZGJiMGQwODE2Li5iYjNiYjc1MmRiNGJhMjBkYWUyZWNmZGRh
YThiZTU0OTlkMDI5M2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0VGhyZWFkLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiV29ya2VyUnVuTG9vcC5oIgorI2luY2x1ZGUgIldvcmtlclRocmVhZE1vZGUuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CkBAIC00MCw3ICs0MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgV29ya2VyRGVidWdnZXJQcm94eTsKIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwotY2xhc3Mg
V29ya2VyUnVuTG9vcDsKIAogY2xhc3MgV29ya2VyT3JXb3JrbGV0VGhyZWFkIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFdvcmtlck9yV29ya2xldFRocmVhZD4gewogcHVibGljOgpAQCAt
NzAsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUZhc3RNYWxsb2NG
cmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXb3Jr
ZXJPcldvcmtsZXRUaHJlYWQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKTsKKyAgICBleHBsaWNp
dCBXb3JrZXJPcldvcmtsZXRUaHJlYWQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBXb3JrZXJU
aHJlYWRNb2RlID0gV29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkKTsKICAgICB2b2lk
IHdvcmtlck9yV29ya2xldFRocmVhZCgpOwogCiAgICAgLy8gRXhlY3V0ZXMgdGhlIGV2ZW50IGxv
b3AgZm9yIHRoZSB3b3JrZXIgdGhyZWFkLiBEZXJpdmVkIGNsYXNzZXMgY2FuIG92ZXJyaWRlIHRv
IHBlcmZvcm0gYWN0aW9ucyBiZWZvcmUvYWZ0ZXIgZW50ZXJpbmcgdGhlIGV2ZW50IGxvb3AuCkBA
IC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgTG9jayBtX3RocmVhZENyZWF0aW9uQW5kR2xv
YmFsU2NvcGVMb2NrOwogICAgIFJlZlB0cjxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZT4gbV9n
bG9iYWxTY29wZTsKICAgICBSZWZQdHI8V1RGOjpUaHJlYWQ+IG1fdGhyZWFkOwotICAgIFdvcmtl
clJ1bkxvb3AgbV9ydW5Mb29wOworICAgIFVuaXF1ZVJlZjxXb3JrZXJSdW5Mb29wPiBtX3J1bkxv
b3A7CiAgICAgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4gbV9ldmFsdWF0ZUNhbGxiYWNr
OwogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9zdG9wcGVkQ2FsbGJhY2s7CiAgICAgQmluYXJ5U2Vt
YXBob3JlIG1fc3VzcGVuc2lvblNlbWFwaG9yZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clJ1bkxvb3AuY3BwCmluZGV4IGM5NTZkZjk1NmIwYjQxM2I2ZjMxZTY4YjEyNzAxMWUyYzA3MmU2
NGUuLjZiYzEyNzc3ZTQ1ODlmYTQ3MWRmNjAwZjNjMDg4MTE2NDQ5MzNmZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTc2LDcgKzc2LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbV9kZWZhdWx0TW9kZTsKICAgICB9CiAKLSAgICBib29s
IG9wZXJhdG9yKCkoY29uc3QgV29ya2VyUnVuTG9vcDo6VGFzayYgdGFzaykgY29uc3QKKyAgICBi
b29sIG9wZXJhdG9yKCkoY29uc3QgV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6VGFzayYgdGFzaykg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX2RlZmF1bHRNb2RlIHx8IG1fbW9kZSA9PSB0
YXNrLm1vZGUoKTsKICAgICB9CkBAIC04NiwxMiArODYsMTIgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fZGVmYXVsdE1vZGU7CiB9OwogCi1Xb3JrZXJSdW5Mb29wOjpXb3JrZXJSdW5Mb29wKCkKK1dv
cmtlckRlZGljYXRlZFJ1bkxvb3A6OldvcmtlckRlZGljYXRlZFJ1bkxvb3AoKQogICAgIDogbV9z
aGFyZWRUaW1lcihtYWtlVW5pcXVlPFdvcmtlclNoYXJlZFRpbWVyPigpKQogewogfQogCi1Xb3Jr
ZXJSdW5Mb29wOjp+V29ya2VyUnVuTG9vcCgpCitXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjp+V29y
a2VyRGVkaWNhdGVkUnVuTG9vcCgpCiB7CiAgICAgQVNTRVJUKCFtX25lc3RlZENvdW50KTsKIH0K
QEAgLTExMCw3ICsxMTAsNyBAQCBjbGFzcyBSdW5Mb29wU2V0dXAgewogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJ1bkxvb3BTZXR1cCk7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBJc0ZvckRl
YnVnZ2luZyB7IE5vLCBZZXMgfTsKLSAgICBSdW5Mb29wU2V0dXAoV29ya2VyUnVuTG9vcCYgcnVu
TG9vcCwgSXNGb3JEZWJ1Z2dpbmcgaXNGb3JEZWJ1Z2dpbmcpCisgICAgUnVuTG9vcFNldHVwKFdv
cmtlckRlZGljYXRlZFJ1bkxvb3AmIHJ1bkxvb3AsIElzRm9yRGVidWdnaW5nIGlzRm9yRGVidWdn
aW5nKQogICAgICAgICA6IG1fcnVuTG9vcChydW5Mb29wKQogICAgICAgICAsIG1faXNGb3JEZWJ1
Z2dpbmcoaXNGb3JEZWJ1Z2dpbmcpCiAgICAgewpAQCAtMTMwLDM3ICsxMzAsMzYgQEAgcHVibGlj
OgogICAgICAgICAgICAgbV9ydW5Mb29wLm1fZGVidWdDb3VudC0tOwogICAgIH0KIHByaXZhdGU6
Ci0gICAgV29ya2VyUnVuTG9vcCYgbV9ydW5Mb29wOworICAgIFdvcmtlckRlZGljYXRlZFJ1bkxv
b3AmIG1fcnVuTG9vcDsKICAgICBJc0ZvckRlYnVnZ2luZyBtX2lzRm9yRGVidWdnaW5nIHsgSXNG
b3JEZWJ1Z2dpbmc6Ok5vIH07CiB9OwogCi12b2lkIFdvcmtlclJ1bkxvb3A6OnJ1bihXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCkKK3ZvaWQgV29ya2VyRGVkaWNhdGVkUnVuTG9v
cDo6cnVuKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0KQogewogICAgIFJ1bkxv
b3BTZXR1cCBzZXR1cCgqdGhpcywgUnVuTG9vcFNldHVwOjpJc0ZvckRlYnVnZ2luZzo6Tm8pOwog
ICAgIE1vZGVQcmVkaWNhdGUgbW9kZVByZWRpY2F0ZShkZWZhdWx0TW9kZSgpKTsKICAgICBNZXNz
YWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7Ci0gICAgICAgIHJlc3VsdCA9IHJ1
bkluTW9kZShjb250ZXh0LCBtb2RlUHJlZGljYXRlLCBXYWl0Rm9yTWVzc2FnZSk7CisgICAgICAg
IHJlc3VsdCA9IHJ1bkluTW9kZShjb250ZXh0LCBtb2RlUHJlZGljYXRlKTsKICAgICB9IHdoaWxl
IChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCk7CiAgICAgcnVuQ2xlYW51cFRhc2tz
KGNvbnRleHQpOwogfQogCi1NZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1
bkluRGVidWdnZXJNb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBjb250ZXh0KQorTWVz
c2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpydW5JbkRlYnVnZ2Vy
TW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYgY29udGV4dCkKIHsKICAgICBSdW5Mb29w
U2V0dXAgc2V0dXAoKnRoaXMsIFJ1bkxvb3BTZXR1cDo6SXNGb3JEZWJ1Z2dpbmc6Olllcyk7Ci0g
ICAgcmV0dXJuIHJ1bkluTW9kZSgmY29udGV4dCwgTW9kZVByZWRpY2F0ZSB7IGRlYnVnZ2VyTW9k
ZSgpIH0sIFdhaXRGb3JNZXNzYWdlKTsKKyAgICByZXR1cm4gcnVuSW5Nb2RlKCZjb250ZXh0LCBN
b2RlUHJlZGljYXRlIHsgZGVidWdnZXJNb2RlKCkgfSk7CiB9CiAKLU1lc3NhZ2VRdWV1ZVdhaXRS
ZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG1vZGUsIFdhaXRNb2RlIHdhaXRNb2RlKQorYm9vbCBX
b3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2Nv
cGUqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBBU1NFUlQobW9kZSAhPSBk
ZWJ1Z2dlck1vZGUoKSk7CiAgICAgUnVuTG9vcFNldHVwIHNldHVwKCp0aGlzLCBSdW5Mb29wU2V0
dXA6OklzRm9yRGVidWdnaW5nOjpObyk7CiAgICAgTW9kZVByZWRpY2F0ZSBtb2RlUHJlZGljYXRl
KFN0cmluZyB7IG1vZGUgfSk7Ci0gICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBy
dW5Jbk1vZGUoY29udGV4dCwgbW9kZVByZWRpY2F0ZSwgd2FpdE1vZGUpOwotICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgcmV0dXJuIHJ1bkluTW9kZShjb250ZXh0LCBtb2RlUHJlZGljYXRlKSAhPSBN
ZXNzYWdlUXVldWVXYWl0UmVzdWx0OjpNZXNzYWdlUXVldWVUZXJtaW5hdGVkOwogfQogCi1NZXNz
YWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmts
ZXRHbG9iYWxTY29wZSogY29udGV4dCwgY29uc3QgTW9kZVByZWRpY2F0ZSYgcHJlZGljYXRlLCBX
YWl0TW9kZSB3YWl0TW9kZSkKK01lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyRGVkaWNhdGVk
UnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0LCBj
b25zdCBNb2RlUHJlZGljYXRlJiBwcmVkaWNhdGUpCiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOwog
ICAgIEFTU0VSVChjb250ZXh0LT53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+dGhyZWFkKCkgPT0g
JlRocmVhZDo6Y3VycmVudCgpKTsKQEAgLTE4NSw3ICsxODQsNyBAQCBNZXNzYWdlUXVldWVXYWl0
UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSogY29udAogICAgIHRpbWVvdXREZWxheSA9IHN0ZDo6bWF4KDBfcywgU2Vjb25kcyh0aW1lVW50
aWxOZXh0Q0ZSdW5Mb29wVGltZXJJblNlY29uZHMpKTsKICNlbmRpZgogCi0gICAgaWYgKHdhaXRN
b2RlID09IFdhaXRGb3JNZXNzYWdlICYmIHByZWRpY2F0ZS5pc0RlZmF1bHRNb2RlKCkgJiYgbV9z
aGFyZWRUaW1lci0+aXNBY3RpdmUoKSkKKyAgICBpZiAocHJlZGljYXRlLmlzRGVmYXVsdE1vZGUo
KSAmJiBtX3NoYXJlZFRpbWVyLT5pc0FjdGl2ZSgpKQogICAgICAgICB0aW1lb3V0RGVsYXkgPSBz
dGQ6Om1pbih0aW1lb3V0RGVsYXksIG1fc2hhcmVkVGltZXItPmZpcmVUaW1lRGVsYXkoKSk7CiAK
ICAgICBpZiAoYXV0byogc2NyaXB0ID0gY29udGV4dC0+c2NyaXB0KCkpIHsKQEAgLTIyNSw3ICsy
MjQsNyBAQCBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IFdvcmtlclJ1bkxvb3A6OnJ1bkluTW9kZShX
b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LXZvaWQgV29ya2VyUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlKiBjb250ZXh0KQordm9pZCBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpydW5DbGVhbnVw
VGFza3MoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KGNvbnRleHQpOwogICAgIEFTU0VSVChjb250ZXh0LT53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+
dGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKQEAgLTIzOSw3ICsyMzgsNyBAQCB2b2lk
IFdvcmtlclJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSogY29udGV4dCkKICAgICB9CiB9CiAKLXZvaWQgV29ya2VyUnVuTG9vcDo6dGVybWluYXRlKCkK
K3ZvaWQgV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6dGVybWluYXRlKCkKIHsKICAgICBtX21lc3Nh
Z2VRdWV1ZS5raWxsKCk7CiB9CkBAIC0yNDksMTIgKzI0OCwxMiBAQCB2b2lkIFdvcmtlclJ1bkxv
b3A6OnBvc3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogICAgIHBv
c3RUYXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBkZWZhdWx0TW9kZSgpKTsKIH0KIAotdm9pZCBX
b3JrZXJSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrJiYgdGFzaykKK3ZvaWQgV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6cG9zdFRhc2tBbmRU
ZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiB7CiAgICAgbV9t
ZXNzYWdlUXVldWUuYXBwZW5kQW5kS2lsbChtYWtlVW5pcXVlPFRhc2s+KFdURk1vdmUodGFzayks
IGRlZmF1bHRNb2RlKCkpKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1v
ZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9k
ZSkKK3ZvaWQgV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAg
bV9tZXNzYWdlUXVldWUuYXBwZW5kKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgbW9k
ZSkpOwogfQpAQCAtMjY0LDE2ICsyNjMsNTggQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0RGVi
dWdnZXJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrKQogICAgIHBvc3RU
YXNrRm9yTW9kZShXVEZNb3ZlKHRhc2spLCBkZWJ1Z2dlck1vZGUoKSk7CiB9CiAKLXZvaWQgV29y
a2VyUnVuTG9vcDo6VGFzazo6cGVyZm9ybVRhc2soV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUq
IGNvbnRleHQpCit2b2lkIFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNr
KFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0KQogewogICAgIGlmICgoIWNvbnRl
eHQtPmlzQ2xvc2luZygpICYmIGNvbnRleHQtPnNjcmlwdCgpICYmICFjb250ZXh0LT5zY3JpcHQo
KS0+aXNUZXJtaW5hdGluZ0V4ZWN1dGlvbigpKSB8fCBtX3Rhc2suaXNDbGVhbnVwVGFzaygpKQog
ICAgICAgICBtX3Rhc2sucGVyZm9ybVRhc2soKmNvbnRleHQpOwogfQogCi1Xb3JrZXJSdW5Mb29w
OjpUYXNrOjpUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBT
dHJpbmcmIG1vZGUpCitXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpUYXNrOjpUYXNrKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiAgICAgOiBt
X3Rhc2soV1RGTW92ZSh0YXNrKSkKICAgICAsIG1fbW9kZShtb2RlLmlzb2xhdGVkQ29weSgpKQog
ewogfQogCitXb3JrZXJNYWluUnVuTG9vcDo6V29ya2VyTWFpblJ1bkxvb3AoKQoreworfQorCit2
b2lkIFdvcmtlck1haW5SdW5Mb29wOjpzZXRHbG9iYWxTY29wZShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSYgZ2xvYmFsU2NvcGUpCit7CisgICAgbV93b3JrZXJPcldvcmtsZXRHbG9iYWxTY29w
ZSA9IG1ha2VXZWFrUHRyKGdsb2JhbFNjb3BlKTsKK30KKwordm9pZCBXb3JrZXJNYWluUnVuTG9v
cDo6cG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRh
c2spCit7CisgICAgaWYgKG1fdGVybWluYXRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUnVu
TG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgdGFz
ayA9IFdURk1vdmUodGFzayldKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwg
IXdlYWtUaGlzLT5tX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIHx8IHdlYWtUaGlzLT5tX3Rl
cm1pbmF0ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgd2Vha1RoaXMtPm1fdGVy
bWluYXRlZCA9IHRydWU7CisgICAgICAgIHRhc2sucGVyZm9ybVRhc2soKndlYWtUaGlzLT5tX3dv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNYWlu
UnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrLCBjb25zdCBTdHJpbmcmIC8qbW9kZSovKQoreworICAgIGlmIChtX3Rlcm1pbmF0ZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyksIHRhc2sgPSBXVEZNb3ZlKHRhc2spXSgpIG11dGFibGUgewor
ICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICF3ZWFrVGhpcy0+bV93b3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSB8fCB3ZWFrVGhpcy0+bV90ZXJtaW5hdGVkKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRhc2sucGVyZm9ybVRhc2soKndlYWtUaGlzLT5tX3dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKTsKKyAgICB9KTsKK30KKworYm9vbCBXb3JrZXJNYWluUnVuTG9vcDo6cnVuSW5N
b2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBS
dW5Mb29wOjptYWluKCkuY3ljbGUoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJS
dW5Mb29wLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAppbmRleCAx
NDViZTgzYzA3NTAyNmU0MWQyZTE5MDdjNzM2MDI2MzZiZTE1YTRmLi4zM2ZlMjQxODlhZDM5MDhj
OTIyMDMyOWZjMDNiNGUzNGRjYTRkOGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1
bkxvb3AuaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTQyLDMwICs0Miw0OSBAQCBjbGFzcyBXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZTsKIGNsYXNzIFdvcmtlclNoYXJlZFRpbWVyOwogCiBjbGFzcyBXb3JrZXJSdW5Mb29wIHsK
KyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXb3JrZXJSdW5Mb29w
KCk7Ci0gICAgfldvcmtlclJ1bkxvb3AoKTsKKyAgICBlbnVtIGNsYXNzIFR5cGUgOiBib29sIHsg
V29ya2VyRGVkaWNhdGVkUnVuTG9vcCwgV29ya2VyTWFpblJ1bkxvb3AgfTsKKworICAgIHZpcnR1
YWwgfldvcmtlclJ1bkxvb3AoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIGJvb2wgcnVuSW5N
b2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiBtb2RlKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrQW5kVGVybWluYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OlRhc2smJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza0Zvck1vZGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdGVybWluYXRlKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0ZXJtaW5h
dGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgPSAwOworCisg
ICAgdm9pZCBwb3N0VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpOworICAgIHZv
aWQgcG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpOworCisg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBkZWZhdWx0TW9kZSgpOworCisgICAgdW5z
aWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZCgpIHsgcmV0dXJuICsrbV91bmlxdWVJZDsgfQorCitw
cml2YXRlOgorICAgIHVuc2lnbmVkIGxvbmcgbV91bmlxdWVJZCB7IDAgfTsKK307CisKK2NsYXNz
IFdvcmtlckRlZGljYXRlZFJ1bkxvb3AgZmluYWwgOiBwdWJsaWMgV29ya2VyUnVuTG9vcCB7Citw
dWJsaWM6CisgICAgV29ya2VyRGVkaWNhdGVkUnVuTG9vcCgpOworICAgIH5Xb3JrZXJEZWRpY2F0
ZWRSdW5Mb29wKCk7CiAgICAgCiAgICAgLy8gQmxvY2tpbmcgY2FsbC4gV2FpdHMgZm9yIHRhc2tz
IGFuZCB0aW1lcnMsIGludm9rZXMgdGhlIGNhbGxiYWNrcy4KICAgICB2b2lkIHJ1bihXb3JrZXJP
cldvcmtsZXRHbG9iYWxTY29wZSopOwogCi0gICAgZW51bSBXYWl0TW9kZSB7IFdhaXRGb3JNZXNz
YWdlLCBEb250V2FpdEZvck1lc3NhZ2UgfTsKLQogICAgIC8vIFdhaXRzIGZvciBhIHNpbmdsZSB0
YXNrIGFuZCByZXR1cm5zLgotICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcnVuSW5Nb2RlKFdv
cmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiwgY29uc3QgU3RyaW5nJiBtb2RlLCBXYWl0TW9kZSA9
IFdhaXRGb3JNZXNzYWdlKTsKKyAgICBib29sIHJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9i
YWxTY29wZSosIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7CiAgICAgTWVzc2FnZVF1ZXVlV2Fp
dFJlc3VsdCBydW5JbkRlYnVnZ2VyTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSYpOwog
Ci0gICAgdm9pZCB0ZXJtaW5hdGUoKTsKLSAgICBib29sIHRlcm1pbmF0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX21lc3NhZ2VRdWV1ZS5raWxsZWQoKTsgfQorICAgIHZvaWQgdGVybWluYXRlKCkgZmlu
YWw7CisgICAgYm9vbCB0ZXJtaW5hdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9tZXNzYWdl
UXVldWUua2lsbGVkKCk7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBU
eXBlOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOyB9CiAKLSAgICB2b2lkIHBvc3RUYXNrKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7Ci0gICAgdm9pZCBwb3N0VGFza0FuZFRlcm1pbmF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiwgY29uc3Qg
U3RyaW5nJiBtb2RlKTsKLSAgICB2b2lkIHBvc3REZWJ1Z2dlclRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmKTsKLQotICAgIHVuc2lnbmVkIGxvbmcgY3JlYXRlVW5pcXVlSWQoKSB7
IHJldHVybiArK21fdW5pcXVlSWQ7IH0KKyAgICB2b2lkIHBvc3RUYXNrQW5kVGVybWluYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJikgZmluYWw7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBwb3N0VGFza0Zvck1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25z
dCBTdHJpbmcmIG1vZGUpIGZpbmFsOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmlu
ZyBkZWZhdWx0TW9kZSgpOwogICAgIGNsYXNzIFRhc2sgewogICAgICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShUYXNrKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgpAQCAt
NzgsMTIgKzk3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
VGFzayBtX3Rhc2s7CiAgICAgICAgIFN0cmluZyBtX21vZGU7CiAKLSAgICAgICAgZnJpZW5kIGNs
YXNzIFdvcmtlclJ1bkxvb3A7CisgICAgICAgIGZyaWVuZCBjbGFzcyBXb3JrZXJEZWRpY2F0ZWRS
dW5Mb29wOwogICAgIH07CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJ1bkxvb3BTZXR1
cDsKLSAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZSosIGNvbnN0IE1vZGVQcmVkaWNhdGUmLCBXYWl0TW9kZSk7CisgICAgTWVzc2Fn
ZVF1ZXVlV2FpdFJlc3VsdCBydW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqLCBj
b25zdCBNb2RlUHJlZGljYXRlJik7CiAKICAgICAvLyBSdW5zIGFueSBjbGVhbiB1cCB0YXNrcyB0
aGF0IGFyZSBjdXJyZW50bHkgaW4gdGhlIHF1ZXVlIGFuZCByZXR1cm5zLgogICAgIC8vIFRoaXMg
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRleHQgaXMgY2xvc2VkIG9yIGxvb3Ag
aGFzIGJlZW4gdGVybWluYXRlZC4KQEAgLTk1LDcgKzExNCwzMyBAQCBwcml2YXRlOgogICAgIHN0
ZDo6dW5pcXVlX3B0cjxXb3JrZXJTaGFyZWRUaW1lcj4gbV9zaGFyZWRUaW1lcjsKICAgICBpbnQg
bV9uZXN0ZWRDb3VudCB7IDAgfTsKICAgICBpbnQgbV9kZWJ1Z0NvdW50IHsgMCB9OwotICAgIHVu
c2lnbmVkIGxvbmcgbV91bmlxdWVJZCB7IDAgfTsKK307CisKK2NsYXNzIFdvcmtlck1haW5SdW5M
b29wIGZpbmFsIDogcHVibGljIFdvcmtlclJ1bkxvb3AsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
b3JrZXJNYWluUnVuTG9vcD4geworcHVibGljOgorICAgIFdvcmtlck1haW5SdW5Mb29wKCk7CisK
KyAgICB2b2lkIHNldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CisK
KyAgICB2b2lkIHRlcm1pbmF0ZSgpIGZpbmFsIHsgbV90ZXJtaW5hdGVkID0gdHJ1ZTsgfQorICAg
IGJvb2wgdGVybWluYXRlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdGVybWluYXRlZDsgfQor
CisgICAgYm9vbCBydW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqLCBjb25zdCBT
dHJpbmcmIG1vZGUpOworICAgIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RUYXNrRm9yTW9kZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgZmluYWw7Cisg
ICAgVHlwZSB0eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6V29ya2VyTWFpblJ1bkxv
b3A7IH0KKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
PiBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOworICAgIGJvb2wgbV90ZXJtaW5hdGVkIHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19CRUdJTihXZWJDb3JlOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wKQorICAgIHN0YXRp
YyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpXb3JrZXJSdW5Mb29wJiBydW5Mb29wKSB7IHJl
dHVybiBydW5Mb29wLnR5cGUoKSA9PSBXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpUeXBlOjpXb3Jr
ZXJEZWRpY2F0ZWRSdW5Mb29wOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKK1NQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V29ya2VyTWFpblJ1bkxvb3ApCisg
ICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OldvcmtlclJ1bkxvb3AmIHJ1bkxv
b3ApIHsgcmV0dXJuIHJ1bkxvb3AudHlwZSgpID09IFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OlR5
cGU6Oldvcmtlck1haW5SdW5Mb29wOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKaW5kZXggYzNmNTVlYjIxZDU4MTg2
OTNmZjA2Zjg2NGJhMjA4YmZmZDAxZTMwYi4uMzhlMjNkYTg5NmQ1MDMxMjI2YzEyYzNjMjc3Yzlk
YjE5YTgzMDZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcApAQCAt
NjAsNyArNjAsOCBAQCBXb3JrZXJQYXJhbWV0ZXJzIFdvcmtlclBhcmFtZXRlcnM6Omlzb2xhdGVk
Q29weSgpIGNvbnN0CiAgICAgICAgIHJlZmVycmVyUG9saWN5LAogICAgICAgICB3b3JrZXJUeXBl
LAogICAgICAgICBjcmVkZW50aWFscywKLSAgICAgICAgc2V0dGluZ3NWYWx1ZXMuaXNvbGF0ZWRD
b3B5KCkKKyAgICAgICAgc2V0dGluZ3NWYWx1ZXMuaXNvbGF0ZWRDb3B5KCksCisgICAgICAgIHdv
cmtlclRocmVhZE1vZGUKICAgICB9OwogfQogCkBAIC04Niw3ICs4Nyw3IEBAIFdvcmtlclRocmVh
ZFN0YXJ0dXBEYXRhOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YShjb25zdCBXb3JrZXJQYXJhbWV0
ZXJzJiBvdGhlciwKIH0KIAogV29ya2VyVGhyZWFkOjpXb3JrZXJUaHJlYWQoY29uc3QgV29ya2Vy
UGFyYW1ldGVycyYgcGFyYW1zLCBjb25zdCBTY3JpcHRCdWZmZXImIHNvdXJjZUNvZGUsIFdvcmtl
ckxvYWRlclByb3h5JiB3b3JrZXJMb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgd29y
a2VyRGVidWdnZXJQcm94eSwgV29ya2VyUmVwb3J0aW5nUHJveHkmIHdvcmtlclJlcG9ydGluZ1By
b3h5LCBXb3JrZXJUaHJlYWRTdGFydE1vZGUgc3RhcnRNb2RlLCBjb25zdCBTZWN1cml0eU9yaWdp
biYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSogY29ubmVjdGlvblBy
b3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzIHJ1
bnRpbWVGbGFncykKLSAgICA6IFdvcmtlck9yV29ya2xldFRocmVhZChwYXJhbXMuaWRlbnRpZmll
ci5pc29sYXRlZENvcHkoKSkKKyAgICA6IFdvcmtlck9yV29ya2xldFRocmVhZChwYXJhbXMuaWRl
bnRpZmllci5pc29sYXRlZENvcHkoKSwgcGFyYW1zLndvcmtlclRocmVhZE1vZGUpCiAgICAgLCBt
X3dvcmtlckxvYWRlclByb3h5KHdvcmtlckxvYWRlclByb3h5KQogICAgICwgbV93b3JrZXJEZWJ1
Z2dlclByb3h5KHdvcmtlckRlYnVnZ2VyUHJveHkpCiAgICAgLCBtX3dvcmtlclJlcG9ydGluZ1By
b3h5KHdvcmtlclJlcG9ydGluZ1Byb3h5KQpAQCAtMTA2LDYgKzEwNywxNSBAQCBXb3JrZXJUaHJl
YWQ6On5Xb3JrZXJUaHJlYWQoKQogCiBSZWY8VGhyZWFkPiBXb3JrZXJUaHJlYWQ6OmNyZWF0ZVRo
cmVhZCgpCiB7CisgICAgaWYgKGlzPFdvcmtlck1haW5SdW5Mb29wPihydW5Mb29wKCkpKSB7Cisg
ICAgICAgIC8vIFRoaXMgd29ya2VyIHNob3VsZCBydW4gb24gdGhlIG1haW4gdGhyZWFkLgorICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhp
cyB9XSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT53b3JrZXJPcldvcmtsZXRUaHJlYWQo
KTsKKyAgICAgICAgfSk7CisgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAg
IHJldHVybiBUaHJlYWQ6OmN1cnJlbnQoKTsKKyAgICB9CisKICAgICByZXR1cm4gVGhyZWFkOjpj
cmVhdGUoaXNTZXJ2aWNlV29ya2VyVGhyZWFkKCkgPyAiV2ViQ29yZTogU2VydmljZSBXb3JrZXIi
IDogIldlYkNvcmU6IFdvcmtlciIsIFt0aGlzXSB7CiAgICAgICAgIHdvcmtlck9yV29ya2xldFRo
cmVhZCgpOwogICAgIH0sIFRocmVhZFR5cGU6OkphdmFTY3JpcHQpOwpAQCAtMTM2LDggKzE0Niw4
IEBAIHZvaWQgV29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KFN0cmluZyYg
ZXhjZXB0aW9uTWVzc2FnZSkKICAgICAgICAgYXV0byBzY3JpcHRGZXRjaGVyID0gV29ya2VyU2Ny
aXB0RmV0Y2hlcjo6Y3JlYXRlKGdsb2JhbFNjb3BlKCktPmNyZWRlbnRpYWxzKCksIGdsb2JhbFNj
b3BlKCktPmRlc3RpbmF0aW9uKCksIGdsb2JhbFNjb3BlKCktPnJlZmVycmVyUG9saWN5KCkpOwog
ICAgICAgICBTY3JpcHRTb3VyY2VDb2RlIHNvdXJjZUNvZGUobV9zdGFydHVwRGF0YS0+c291cmNl
Q29kZSwgVVJMKG1fc3RhcnR1cERhdGEtPnBhcmFtcy5zY3JpcHRVUkwpLCB7IH0sIEpTQzo6U291
cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUsIHNjcmlwdEZldGNoZXIuY29weVJlZigpKTsK
ICAgICAgICAgc291cmNlUHJvdmlkZXIgPSBtYWtlV2Vha1B0cihzdGF0aWNfY2FzdDxTY3JpcHRC
dWZmZXJTb3VyY2VQcm92aWRlciY+KHNvdXJjZUNvZGUucHJvdmlkZXIoKSkpOwotICAgICAgICBN
ZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IGdsb2JhbFNjb3BlKCktPnNjcmlwdCgpLT5s
b2FkTW9kdWxlU3luY2hyb25vdXNseShzY3JpcHRGZXRjaGVyLmdldCgpLCBzb3VyY2VDb2RlKTsK
LSAgICAgICAgaWYgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7CisgICAgICAg
IGJvb2wgc3VjY2VzcyA9IGdsb2JhbFNjb3BlKCktPnNjcmlwdCgpLT5sb2FkTW9kdWxlU3luY2hy
b25vdXNseShzY3JpcHRGZXRjaGVyLmdldCgpLCBzb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKHN1
Y2Nlc3MpIHsKICAgICAgICAgICAgIGlmIChzdGQ6Om9wdGlvbmFsPExvYWRhYmxlU2NyaXB0OjpF
cnJvcj4gZXJyb3IgPSBzY3JpcHRGZXRjaGVyLT5lcnJvcigpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdlPiBtZXNzYWdl
ID0gZXJyb3ItPmNvbnNvbGVNZXNzYWdlKQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25N
ZXNzYWdlID0gbWVzc2FnZS0+bWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oCmluZGV4IDZlOWRjZTU5M2IxZDMxM2E1ZjA4ZDE5ZTliYTc0YWE4NjAxMjJmYWUuLjExOGE1
MTk4ZmU3ZTU1MDhjNjRjOWZkZGM5OWVmMGIxODc1MzA1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJUaHJlYWQuaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyVHlw
ZSB3b3JrZXJUeXBlOwogICAgIEZldGNoUmVxdWVzdENyZWRlbnRpYWxzIGNyZWRlbnRpYWxzOwog
ICAgIFNldHRpbmdzOjpWYWx1ZXMgc2V0dGluZ3NWYWx1ZXM7CisgICAgV29ya2VyVGhyZWFkTW9k
ZSB3b3JrZXJUaHJlYWRNb2RlIHsgV29ya2VyVGhyZWFkTW9kZTo6Q3JlYXRlTmV3VGhyZWFkIH07
CiAKICAgICBXb3JrZXJQYXJhbWV0ZXJzIGlzb2xhdGVkQ29weSgpIGNvbnN0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkTW9kZS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWRNb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmE4NjcyZjFk
Yjk2ZDE5MTcxNjI3ZDkzMTI1OGVlYzQ3OTE4Y2MzYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkTW9kZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIFdvcmtlclRocmVhZE1vZGUgOiBi
b29sIHsgVXNlTWFpblRocmVhZCwgQ3JlYXRlTmV3VGhyZWFkIH07CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKaW5kZXggODZjNjNlMTVkMDc2YzIxZmZhMjRiNTAxYTRkMjhmYjE4NTQyNmY2Ni4u
ODVmMzA4OTRkN2RjZGFhNWFlMTcwZjcxMTlhY2ZkZTNhNTM5YTZjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZTo6cmVtb3ZlU2VydmljZVdvcmtlckNsaWVudChTZXJ2aWNlV29ya2VyQ2xpZW50JiBjbAogLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL1NlcnZpY2VXb3JrZXIvI3VwZGF0ZS1zZXJ2aWNlLXdvcmtl
ci1leHRlbmRlZC1ldmVudHMtc2V0LWFsZ29yaXRobQogdm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGU6OnVwZGF0ZUV4dGVuZGVkRXZlbnRzU2V0KEV4dGVuZGFibGVFdmVudCogbmV3RXZlbnQp
CiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzQ29udGV4dFRo
cmVhZCgpKTsKICAgICBBU1NFUlQoIW5ld0V2ZW50IHx8ICFuZXdFdmVudC0+aXNCZWluZ0Rpc3Bh
dGNoZWQoKSk7CiAgICAgYm9vbCBoYWRQZW5kaW5nRXZlbnRzID0gaGFzUGVuZGluZ0V2ZW50cygp
OwogICAgIG1fZXh0ZW5kZWRFdmVudHMucmVtb3ZlQWxsTWF0Y2hpbmcoW10oYXV0byYgZXZlbnQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggOTY0ODYyNTM2N2NjMTZiNTg5YmRm
ZDcwZWEwNWJiYTFmMTQ0ODA3ZC4uZTcxNDYwM2YzNTY0MDkxOGFlMDZhOWFmYTkxZjgxOTc3ZDU3
YTM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTczLDggKzczLDI4IEBAIHBy
aXZhdGU6CiAvLyBGSVhNRTogVXNlIGEgdmFsaWQgV29ya2VyT2JqZWN0UHJveHkKIC8vIEZJWE1F
OiBVc2UgdmFsaWQgcnVudGltZSBmbGFncwogCi1TZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNl
V29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2
aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0
dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQ
cm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwgSURCQ2xpZW50OjpJREJD
b25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0UHJvdmlkZXIqIHNvY2tl
dFByb3ZpZGVyKQotICAgIDogV29ya2VyVGhyZWFkKHsgY29udGV4dERhdGEuc2NyaXB0VVJMLCBl
bXB0eVN0cmluZygpLCAic2VydmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0Zh
Y3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUoKSwgY29udGV4dERhdGEuY29u
dGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgY29udGV4dERhdGEuY3Jvc3NPcmlnaW5FbWJlZGRl
clBvbGljeSwgTW9ub3RvbmljVGltZTo6bm93KCksIHsgfSwgY29udGV4dERhdGEud29ya2VyVHlw
ZSwgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQsIHNldHRpbmdzVmFsdWVzIH0sIGNvbnRl
eHREYXRhLnNjcmlwdCwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWws
IGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4o
KS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1l
RmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKK3N0YXRpYyBXb3JrZXJQYXJhbWV0ZXJzIGdlbmVy
YXRlV29ya2VyUGFyYW1ldGVycyhjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRl
eHREYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFk
TW9kZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMpCit7CisgICAgcmV0
dXJuIHsKKyAgICAgICAgY29udGV4dERhdGEuc2NyaXB0VVJMLAorICAgICAgICBlbXB0eVN0cmlu
ZygpLAorICAgICAgICAic2VydmljZXdvcmtlcjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0Zh
Y3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwKKyAgICAgICAgV1RGTW92ZSh1c2VyQWdlbnQpLAor
ICAgICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3koKS0+aXNPbkxpbmUo
KSwKKyAgICAgICAgY29udGV4dERhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LAorICAgICAgICBm
YWxzZSwKKyAgICAgICAgY29udGV4dERhdGEuY3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSwKKyAg
ICAgICAgTW9ub3RvbmljVGltZTo6bm93KCksCisgICAgICAgIHsgfSwKKyAgICAgICAgY29udGV4
dERhdGEud29ya2VyVHlwZSwKKyAgICAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHM6Ok9taXQs
CisgICAgICAgIHNldHRpbmdzVmFsdWVzLAorICAgICAgICB3b3JrZXJUaHJlYWRNb2RlCisgICAg
fTsKK30KKworU2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3Jr
ZXJEYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFk
TW9kZSwgY29uc3QgU2V0dGluZ3M6OlZhbHVlcyYgc2V0dGluZ3NWYWx1ZXMsIFdvcmtlckxvYWRl
clByb3h5JiBsb2FkZXJQcm94eSwgV29ya2VyRGVidWdnZXJQcm94eSYgZGVidWdnZXJQcm94eSwg
SURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqIGlkYkNvbm5lY3Rpb25Qcm94eSwgU29ja2V0
UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKQorICAgIDogV29ya2VyVGhyZWFkKGdlbmVyYXRlV29y
a2VyUGFyYW1ldGVycyhjb250ZXh0RGF0YSwgV1RGTW92ZSh1c2VyQWdlbnQpLCB3b3JrZXJUaHJl
YWRNb2RlLCBzZXR0aW5nc1ZhbHVlcyksIGNvbnRleHREYXRhLnNjcmlwdCwgbG9hZGVyUHJveHks
IGRlYnVnZ2VyUHJveHksIER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwg
V29ya2VyVGhyZWFkU3RhcnRNb2RlOjpOb3JtYWwsIGNvbnRleHREYXRhLnJlZ2lzdHJhdGlvbi5r
ZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwgaWRiQ29ubmVjdGlvblByb3h5
LCBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkK
ICAgICAsIG1fc2VydmljZVdvcmtlcklkZW50aWZpZXIoY29udGV4dERhdGEuc2VydmljZVdvcmtl
cklkZW50aWZpZXIpCiAgICAgLCBtX2pvYkRhdGFJZGVudGlmaWVyKGNvbnRleHREYXRhLmpvYkRh
dGFJZGVudGlmaWVyKQogICAgICwgbV9jb250ZXh0RGF0YShjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShjb250ZXh0RGF0YSkpKQpAQCAtMTk0LDcgKzIxNCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclRo
cmVhZDo6cXVldWVUYXNrVG9GaXJlQWN0aXZhdGVFdmVudCgpCiAKIHZvaWQgU2VydmljZVdvcmtl
clRocmVhZDo6ZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KCkKIHsKLSAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoZ2xvYmFsU2NvcGUoKS0+aXNDb250ZXh0VGhyZWFkKCkp
OwogICAgIG1fZG9lc0hhbmRsZUZldGNoID0gZ2xvYmFsU2NvcGUoKS0+aGFzRXZlbnRMaXN0ZW5l
cnMoZXZlbnROYW1lcygpLmZldGNoRXZlbnQpOwogfQogCkBAIC0yMjYsNiArMjQ2LDEwIEBAIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRGZXRjaEV2ZW50TW9uaXRvcmluZygpCiAKIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRIZWFydEJlYXRUaW1lcigpCiB7CisgICAgLy8g
V2UgY2Fubm90IGRldGVjdCByZXNwb25zaXZlbmVzcyBmb3Igc2VydmljZSB3b3JrZXJzIHJ1bm5p
bmcgb24gdGhlIG1haW4gdGhyZWFkIGJ5IHVzaW5nIGEgbWFpbiB0aHJlYWQgdGltZXIuCisgICAg
aWYgKGlzPFdvcmtlck1haW5SdW5Mb29wPihydW5Mb29wKCkpKQorICAgICAgICByZXR1cm47CisK
ICAgICBpZiAobV9oZWFydEJlYXRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAppbmRleCBmODEyOTA5ZGY5NTQwZmE3MDFjZTJiYzg1ZDg0
MDYwNTc1ZGM4MjFmLi4yMTgyOTU1N2MwNjQ0YjQ3MGFmMGI3MTg5YTBkNWZiYjQ2Zjg3MGViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5oCkBAIC03OSw3ICs3OSw3IEBAIHByb3RlY3RlZDoKICAg
ICB2b2lkIHJ1bkV2ZW50TG9vcCgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVf
RVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNl
cnZpY2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgY29uc3QgU2V0dGluZ3M6OlZh
bHVlcyYsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIElEQkNsaWVu
dDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2
aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUsIGNv
bnN0IFNldHRpbmdzOjpWYWx1ZXMmLCBXb3JrZXJMb2FkZXJQcm94eSYsIFdvcmtlckRlYnVnZ2Vy
UHJveHkmLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKik7
CiAKICAgICBib29sIGlzU2VydmljZVdvcmtlclRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2b2lkIGZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKaW5kZXggNmE0YjJhOGQ2NzMxZTE2NDk4
NWQ1NTg3Y2RlNTBmODA2NWEwM2ZhOC4uNDFiNmYyNTFmNTQyNDY0YjU1ZTRlYTU1ODY1NTdkZTEx
MDU1MWRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC05Mywx
MyArOTMsMTMgQEAgc3RhdGljIEhhc2hTZXQ8U2VydmljZVdvcmtlclRocmVhZFByb3h5Kj4mIGFs
bFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94aWVzKCkKICAgICByZXR1cm4gc2V0OwogfQogCi1TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHk6OlNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmln
dXJhdGlvbiYmIHBhZ2VDb25maWd1cmF0aW9uLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBj
b250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2Vy
QWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92aWRlciwgU3RvcmFn
ZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSkKK1NlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYgcGFn
ZUNvbmZpZ3VyYXRpb24sIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBT
ZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2Vy
VGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBDYWNoZVN0b3JhZ2VQcm92aWRlciYgY2FjaGVT
dG9yYWdlUHJvdmlkZXIsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSBzdG9yYWdlQmxvY2tpbmdQb2xp
Y3kpCiAgICAgOiBtX3BhZ2UoY3JlYXRlUGFnZUZvclNlcnZpY2VXb3JrZXIoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbiksIGNvbnRleHREYXRhLCBzdG9yYWdlQmxvY2tpbmdQb2xpY3kpKQogICAg
ICwgbV9kb2N1bWVudCgqbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQogI2lmIEVOQUJM
RShSRU1PVEVfSU5TUEVDVE9SKQogICAgICwgbV9yZW1vdGVEZWJ1Z2dhYmxlKG1ha2VVbmlxdWU8
U2VydmljZVdvcmtlckRlYnVnZ2FibGU+KCp0aGlzLCBjb250ZXh0RGF0YSkpCiAjZW5kaWYKLSAg
ICAsIG1fc2VydmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyVGhyZWFkOjpjcmVhdGUoV1RG
TW92ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0YSksIFdURk1vdmUodXNlckFnZW50
KSwgbV9kb2N1bWVudC0+c2V0dGluZ3NWYWx1ZXMoKSwgKnRoaXMsICp0aGlzLCBpZGJDb25uZWN0
aW9uUHJveHkobV9kb2N1bWVudCksIG1fZG9jdW1lbnQtPnNvY2tldFByb3ZpZGVyKCkpKQorICAg
ICwgbV9zZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShXVEZN
b3ZlKGNvbnRleHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZSh1c2VyQWdlbnQp
LCB3b3JrZXJUaHJlYWRNb2RlLCBtX2RvY3VtZW50LT5zZXR0aW5nc1ZhbHVlcygpLCAqdGhpcywg
KnRoaXMsIGlkYkNvbm5lY3Rpb25Qcm94eShtX2RvY3VtZW50KSwgbV9kb2N1bWVudC0+c29ja2V0
UHJvdmlkZXIoKSkpCiAgICAgLCBtX2NhY2hlU3RvcmFnZVByb3ZpZGVyKGNhY2hlU3RvcmFnZVBy
b3ZpZGVyKQogICAgICwgbV9pbnNwZWN0b3JQcm94eSgqdGhpcykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZFByb3h5LmgKaW5kZXggZTI4ZDllNDc0NjU0MDM0ZmM1YzdhYjlkZjMzZjI2MzZl
NTliOTIwMi4uMzA0M2RiMTNmMDY3NWI5YmNkYjViNjM4MmY0ZDgyOTkwYzZlMzMwYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgY2xhc3MgRmV0
Y2hMb2FkZXJDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFNlcnZpY2VX
b3JrZXJJbnNwZWN0b3JQcm94eTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE7Citl
bnVtIGNsYXNzIFdvcmtlclRocmVhZE1vZGUgOiBib29sOwogCiBjbGFzcyBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VydmljZVdv
cmtlclRocmVhZFByb3h5PiwgcHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2Vy
RGVidWdnZXJQcm94eSB7CiBwdWJsaWM6CkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCk7CiAKIHBy
aXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VD
b25maWd1cmF0aW9uJiYsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2Vy
RGF0YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiwgU3RvcmFn
ZUJsb2NraW5nUG9saWN5KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNl
cnZpY2VXb3JrZXJEYXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSwg
Q2FjaGVTdG9yYWdlUHJvdmlkZXImLCBTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZChib29sIGlzT25MaW5l
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAppbmRleCBjY2I5NWJkMjViYjQzYTljZjRhOGYyODQyMmYzZDIyMGMyZjk2NjI2Li4w
MmIxMWE1OTEyYjdhNzMwZDY1Yzk3YmM3MjhlODVkN2QyM2FkZDFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzI3LDEz
ICszMjcsMTQgQEAgdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6cmVtb3ZlU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXIKICAgICBtX3NlcnZlci5yZW1vdmVD
bGllbnRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKCp0aGlzLCBpZGVudGlmaWVyKTsKIH0KIAot
U1dTZXJ2ZXI6OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3Jl
LCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0
aW9uRGF0YWJhc2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBoYXNT
ZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQsIFNvZnRVcGRhdGVDYWxsYmFjayYmIHNvZnRVcGRhdGVD
YWxsYmFjaywgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmIGNhbGxiYWNrLCBBcHBC
b3VuZERvbWFpbnNDYWxsYmFjayYmIGFwcEJvdW5kRG9tYWluc0NhbGxiYWNrKQorU1dTZXJ2ZXI6
OlNXU2VydmVyKFVuaXF1ZVJlZjxTV09yaWdpblN0b3JlPiYmIG9yaWdpblN0b3JlLCBib29sIHBy
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgcmVnaXN0cmF0aW9uRGF0YWJh
c2VEaXJlY3RvcnksIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV29ya2VyVGhyZWFkTW9kZSB3
b3JrZXJUaHJlYWRNb2RlLCBib29sIGhhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCwgU29mdFVw
ZGF0ZUNhbGxiYWNrJiYgc29mdFVwZGF0ZUNhbGxiYWNrLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlv
bkNhbGxiYWNrJiYgY2FsbGJhY2ssIEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrJiYgYXBwQm91bmRE
b21haW5zQ2FsbGJhY2spCiAgICAgOiBtX29yaWdpblN0b3JlKFdURk1vdmUob3JpZ2luU3RvcmUp
KQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9pc1Byb2Nlc3NUZXJtaW5h
dGlvbkRlbGF5RW5hYmxlZChwcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQpCiAgICAgLCBt
X2NyZWF0ZUNvbnRleHRDb25uZWN0aW9uQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykpCiAgICAg
LCBtX3NvZnRVcGRhdGVDYWxsYmFjayhXVEZNb3ZlKHNvZnRVcGRhdGVDYWxsYmFjaykpCiAgICAg
LCBtX2FwcEJvdW5kRG9tYWluc0NhbGxiYWNrKFdURk1vdmUoYXBwQm91bmREb21haW5zQ2FsbGJh
Y2spKQorICAgICwgbV93b3JrZXJUaHJlYWRNb2RlKHdvcmtlclRocmVhZE1vZGUpCiAgICAgLCBt
X2hhc1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudChoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQp
CiB7CiAgICAgUkVMRUFTRV9MT0dfSUYocmVnaXN0cmF0aW9uRGF0YWJhc2VEaXJlY3RvcnkuaXNF
bXB0eSgpLCBTZXJ2aWNlV29ya2VyLCAiTm8gcGF0aCB0byBzdG9yZSB0aGUgc2VydmljZSB3b3Jr
ZXIgcmVnaXN0cmF0aW9ucyIpOwpAQCAtNzMwLDcgKzczMSw3IEBAIHZvaWQgU1dTZXJ2ZXI6Omlu
c3RhbGxDb250ZXh0RGF0YShjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEpCiAg
ICAgYXV0byByZXN1bHQgPSBtX3J1bm5pbmdPclRlcm1pbmF0aW5nV29ya2Vycy5hZGQoZGF0YS5z
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd29ya2VyLmNvcHlSZWYoKSk7CiAgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIGNvbm5lY3Rpb24tPmluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dChkYXRhLCB3b3JrZXItPmRhdGEoKSwgdXNlckFnZW50KTsK
KyAgICBjb25uZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSwgd29ya2Vy
LT5kYXRhKCksIHVzZXJBZ2VudCwgbV93b3JrZXJUaHJlYWRNb2RlKTsKIH0KIAogdm9pZCBTV1Nl
cnZlcjo6cnVuU2VydmljZVdvcmtlcklmTmVjZXNzYXJ5KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIFJ1blNlcnZpY2VXb3JrZXJDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtNzk4
LDcgKzc5OSw3IEBAIGJvb2wgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBhdXRvKiBjb250ZXh0Q29ubmVjdGlvbiA9IHdv
cmtlci0+Y29udGV4dENvbm5lY3Rpb24oKTsKICAgICBBU1NFUlQoY29udGV4dENvbm5lY3Rpb24p
OwogCi0gICAgY29udGV4dENvbm5lY3Rpb24tPmluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dCh3
b3JrZXItPmNvbnRleHREYXRhKCksIHdvcmtlci0+ZGF0YSgpLCB3b3JrZXItPnVzZXJBZ2VudCgp
KTsKKyAgICBjb250ZXh0Q29ubmVjdGlvbi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KHdv
cmtlci0+Y29udGV4dERhdGEoKSwgd29ya2VyLT5kYXRhKCksIHdvcmtlci0+dXNlckFnZW50KCks
IG1fd29ya2VyVGhyZWFkTW9kZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCA5YzY1MzI2
YzI2NjNjYTVmYzZjOTFkMDNlNTM1ZDQwNzVmYzc4NzRiLi5iYTVkY2M5NTM2NmQ1N2YwNWU2Y2Qy
MjcyNmY3OWE0YmQxOWY3NWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCisjaW5jbHVkZSAi
V29ya2VyVGhyZWFkTW9kZS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMjgsNyArMTI5
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFNvZnRVcGRhdGVDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNo
ZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0Jik+JiYpPjsKICAgICB1c2luZyBDcmVhdGVDb250ZXh0Q29ubmVj
dGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OwogICAgIHVzaW5nIEFwcEJvdW5k
RG9tYWluc0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhh
c2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKT47Ci0gICAgV0VCQ09SRV9F
WFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYsIGJvb2wgcHJvY2Vzc1Rl
cm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVj
dG9yeSwgUEFMOjpTZXNzaW9uSUQsIGJvb2wgaGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50LCBT
b2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmLCBB
cHBCb3VuZERvbWFpbnNDYWxsYmFjayYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcihV
bmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxheUVu
YWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0b3J5LCBQQUw6OlNlc3Np
b25JRCwgV29ya2VyVGhyZWFkTW9kZSwgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQs
IFNvZnRVcGRhdGVDYWxsYmFjayYmLCBDcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYs
IEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrJiYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgflNXU2Vy
dmVyKCk7CiAKQEAgLTI4MSw2ICsyODIsNyBAQCBwcml2YXRlOgogICAgIEFwcEJvdW5kRG9tYWlu
c0NhbGxiYWNrIG1fYXBwQm91bmREb21haW5zQ2FsbGJhY2s7CiAgICAgCiAgICAgSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gbV9hcHBCb3VuZERvbWFpbnM7CisgICAgV29ya2Vy
VGhyZWFkTW9kZSBtX3dvcmtlclRocmVhZE1vZGUgeyBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVO
ZXdUaHJlYWQgfTsKICAgICBib29sIG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50IHsgZmFs
c2UgfTsKICAgICBib29sIG1faGFzUmVjZWl2ZWRBcHBCb3VuZERvbWFpbnMgeyBmYWxzZSB9Owog
ICAgIHVuc2lnbmVkIG1fdW5pcXVlUmVnaXN0cmF0aW9uQ291bnQgeyAwIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCBkNzRhNjkwMDgxOWE2MzNjNDYwYTg3NTY0
MTgwZGRjNDJhZDQ5N2ZjLi45M2IxZGQ1MjE2NzMxYzk4NjYyZWU0ZWIxZWRmNjE3YjFhOGNjNWU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTQyLDYgKzQyLDcg
QEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJD
bGllbnRJZGVudGlmaWVyOwogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIHN0cnVj
dCBTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI7CitlbnVtIGNsYXNzIFdvcmtlclRocmVh
ZE1vZGUgOiBib29sOwogCiBjbGFzcyBTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNTEsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAg
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9z
dCBwcm9jZXNzCi0gICAgdmlydHVhbCB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChj
b25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBTZXJ2aWNlV29ya2VyRGF0YSYs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluc3RhbGxT
ZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25z
dCBTZXJ2aWNlV29ya2VyRGF0YSYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXb3JrZXJUaHJl
YWRNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZpcmVBY3RpdmF0ZUV2ZW50KFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCmluZGV4IGRlYjgwOWY3Yzg2OWRjNWEyMTE5ODc4NzUxZjBhNjJkODFi
YjE5M2IuLmY2ZDkxZWJhMjNhNDdiYzA2YWY1N2QzZDUzOTEyOWRjYTBiYmE5ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yNDg2
LDcgKzI0ODYsMTAgQEAgU1dTZXJ2ZXImIE5ldHdvcmtQcm9jZXNzOjpzd1NlcnZlckZvclNlc3Np
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKICAgICAgICAgfTsKICNlbmRpZgotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxT
V1NlcnZlcj4obWFrZVVuaXF1ZVJlZjxXZWJTV09yaWdpblN0b3JlPigpLCBpbmZvLnByb2Nlc3NU
ZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgV1RGTW92ZShwYXRoKSwgc2Vzc2lvbklELCBwYXJlbnRQ
cm9jZXNzSGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KCksIFt0aGlzLCBzZXNzaW9uSURdKGF1
dG8mJiBqb2JEYXRhLCBib29sIHNob3VsZFJlZnJlc2hDYWNoZSwgYXV0byYmIHJlcXVlc3QsIGF1
dG8mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CisgICAgICAgIFdvcmtlclRocmVhZE1v
ZGUgd29ya2VyVGhyZWFkTW9kZSB7IFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZCB9
OworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkp
CisgICAgICAgICAgICB3b3JrZXJUaHJlYWRNb2RlID0gc2Vzc2lvbi0+c2hvdWxkUnVuU2Vydmlj
ZVdvcmtlcnNPbk1haW5UaHJlYWQoKSA/IFdvcmtlclRocmVhZE1vZGU6OlVzZU1haW5UaHJlYWQg
OiBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQ7CisgICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIGluZm8u
cHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQs
IHdvcmtlclRocmVhZE1vZGUsIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnQoKSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYmIGpvYkRhdGEsIGJvb2wgc2hvdWxkUmVmcmVz
aENhY2hlLCBhdXRvJiYgcmVxdWVzdCwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpzdGFydChuZXR3
b3JrU2Vzc2lvbihzZXNzaW9uSUQpLCBXVEZNb3ZlKGpvYkRhdGEpLCBzaG91bGRSZWZyZXNoQ2Fj
aGUsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAg
ICAgfSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYgcmVnaXN0cmFibGVEb21haW4sIGF1dG8mJiBj
b21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICAgICAgQVNTRVJUKCFyZWdpc3RyYWJsZURvbWFp
bi5pc0VtcHR5KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcAppbmRleCBmMzg2MGIyMDRmMDYzMGE5ZDZlZTU5NmMzZWY5Y2JkYzEyNTJkMmMy
Li5kZTA1OWZhMTFmY2ZjMzgxZTZiMTlmOGVmNjlhZjM5Y2RlMmQyMjM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMTE4LDYgKzEx
OCw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2VzcyYgbmV0
d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAgICAgLCBtX2Jyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeShtYWtlVW5pcXVlUmVmPE5ldHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+KCkp
CiAgICAgLCBtX3Rlc3RTcGVlZE11bHRpcGxpZXIocGFyYW1ldGVycy50ZXN0U3BlZWRNdWx0aXBs
aWVyKQogICAgICwgbV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KHBhcmFtZXRlcnMuYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdCkKKyAgICAsIG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJl
YWQocGFyYW1ldGVycy5zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCkKIHsKICAg
ICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpIHsKICAgICAgICAgU3RyaW5nIG5ldHdv
cmtDYWNoZURpcmVjdG9yeSA9IHBhcmFtZXRlcnMubmV0d29ya0NhY2hlRGlyZWN0b3J5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDk3Zjdk
MDdmNTg2YjJiOTdjZDY1NDk3ODI2YTc3ZTNhMDMzYzliODYuLjFiMTNhNGNmMTkzYTI5YjM0OWUz
OTJkZjE5YWRkMWZlMmJiNmVjMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKQEAgLTE2Miw2ICsxNjIsNyBAQCBwdWJsaWM6CiAKICAgICB1bnNp
Z25lZCB0ZXN0U3BlZWRNdWx0aXBsaWVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0U3BlZWRNdWx0
aXBsaWVyOyB9CiAgICAgYm9vbCBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OyB9CisgICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNl
V29ya2Vyc09uTWFpblRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWQ7IH0KIAogICAgIGJvb2wgaXNTdGFsZVdoaWxlUmV2YWxpZGF0ZUVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFibGVkOyB9
CiAKQEAgLTIzOCw2ICsyMzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVW5pcXVlUmVmPE5ldHdvcmtC
cm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+IG1fYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwogICAg
IHVuc2lnbmVkIG1fdGVzdFNwZWVkTXVsdGlwbGllciB7IDEgfTsKICAgICBib29sIG1fYWxsb3dz
U2VydmVyUHJlY29ubmVjdCB7IHRydWUgfTsKKyAgICBib29sIG1fc2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWQgeyBmYWxzZSB9OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIEhhc2hTZXQ8c3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyPj4gbV9zb2Z0VXBkYXRlTG9hZGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggOWU4YWJmZDljYWJlZjlkZmE0OWZkYWQ0YWM2N2Q3ZTg2ZWQwMmY2My4uNTRkN2Fj
MDkwMjI0YjFhNWE3YjBiNjM5ZjU3ZTNiYmYzN2I2NDI0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTgzLDYgKzgzLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsK
ICAgICBlbmNvZGVyIDw8IGFsbG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAgZW5jb2RlciA8PCBy
ZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uOworICAgIGVuY29kZXIgPDwgc2hvdWxk
UnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQ7CiAgICAgZW5jb2RlciA8PCBwcmV2ZW50c1N5
c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOwogICAgIGVuY29kZXIgPDwgYXBwSGFzUmVxdWVz
dGVkQ3Jvc3NXZWJzaXRlVHJhY2tpbmdQZXJtaXNzaW9uOwogICAgIGVuY29kZXIgPDwgdXNlTmV0
d29ya0xvYWRlcjsKQEAgLTI3NCw2ICsyNzUsMTEgQEAgc3RkOjpvcHRpb25hbDxOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMK
ICAgICBkZWNvZGVyID4+IHJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb247CiAgICAg
aWYgKCFyZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBzaG91bGRSdW5TZXJ2aWNl
V29ya2Vyc09uTWFpblRocmVhZDsKKyAgICBkZWNvZGVyID4+IHNob3VsZFJ1blNlcnZpY2VXb3Jr
ZXJzT25NYWluVGhyZWFkOworICAgIGlmICghc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5U
aHJlYWQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgCiAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOwogICAgIGRl
Y29kZXIgPj4gcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsKQEAgLTM0OSw2
ICszNTUsNyBAQCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJz
PiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycwogICAgICAgICAsIFdURk1vdmUoKnN1
cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSkKICAgICAgICAgLCBX
VEZNb3ZlKCphbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQogICAgICAgICAsIFdURk1vdmUoKnJlcXVp
cmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24pCisgICAgICAgICwgKnNob3VsZFJ1blNlcnZp
Y2VXb3JrZXJzT25NYWluVGhyZWFkCiAgICAgICAgICwgV1RGTW92ZSgqcHJldmVudHNTeXN0ZW1I
VFRQUHJveHlBdXRoZW50aWNhdGlvbikKICAgICAgICAgLCBXVEZNb3ZlKCphcHBIYXNSZXF1ZXN0
ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb24pCiAgICAgICAgICwgV1RGTW92ZSgqdXNl
TmV0d29ya0xvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA1YjY0ZjZi
MjlkNGZlNWVmMjMxZmQ0M2RiOGIzYjdmMTAxNTkyMGYzLi4xMWE0MzM2NTEyYjViY2EyMDQyOWNk
OTZiYzBjMzExOTMxNWJmN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC05
OCw2ICs5OCw3IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAg
ICAgYm9vbCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UgeyBm
YWxzZSB9OwogICAgIGJvb2wgYWxsb3dzU2VydmVyUHJlY29ubmVjdCB7IHRydWUgfTsKICAgICBi
b29sIHJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24geyBmYWxzZSB9OworICAgIGJv
b2wgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07CiAgICAg
Ym9vbCBhcHBIYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb24geyBmYWxz
ZSB9OwogICAgIGJvb2wgdXNlTmV0d29ya0xvYWRlciB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCmluZGV4IDA2MDI4ZTkx
NDM5YTlkMTNjMDI2NGVjM2I5ZjJlYjVhMWYwNmY4NWQuLmQ5OGRlYjJkN2U2YzRlOWEwNDBmNmQ5
YmY2ODU4MjFmYmRmYWUwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC04Nyw5ICs4Nyw5IEBAIHZvaWQgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25z
dCBTZXJ2CiAgICAgICAgIGNvbm5lY3Rpb24tPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KGRlc3RpbmF0aW9uSWRlbnRpZmllci5jb250ZXh0SWRlbnRpZmllciwgbWVzc2FnZSwgc291
cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luKTsKIH0KIAotdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBTZXJ2aWNl
V29ya2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhLCBjb25zdCBTZXJ2aWNlV29ya2VyRGF0YSYg
d29ya2VyRGF0YSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit2b2lkIFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEsIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRh
JiB3b3JrZXJEYXRhLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3
b3JrZXJUaHJlYWRNb2RlKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlciB7IGNvbnRleHREYXRhLCB3b3JrZXJE
YXRhLCB1c2VyQWdlbnQgfSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246Okluc3RhbGxTZXJ2aWNlV29ya2VyIHsgY29udGV4dERhdGEsIHdvcmtlckRh
dGEsIHVzZXJBZ2VudCwgd29ya2VyVGhyZWFkTW9kZSB9KTsKIH0KIAogdm9pZCBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OnVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA5NDMz
YmY1M2EzNmU1Yzg4MjY2ZTY1ODRlNWI5NmY5MWFjZDgwMTg0Li41Y2QxNmEwODI0Yjg0ZGI1ZmI4
NWU4ZmQ3MjdkYWVlNjkxNWUxZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNvdXJjZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAog
ICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IFdlYlByb2Nlc3MKLSAgICB2b2lkIGluc3Rh
bGxTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4
dERhdGEmLCBjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YSYsIGNvbnN0IFN0cmluZyYg
dXNlckFnZW50KSBmaW5hbDsKKyAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyQ29udGV4dChj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBjb25zdCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyRGF0YSYsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBXZWJDb3JlOjpXb3Jr
ZXJUaHJlYWRNb2RlKSBmaW5hbDsKICAgICB2b2lkIHVwZGF0ZUFwcEluaXRpYXRlZFZhbHVlKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCkgZmluYWw7CiAgICAgdm9pZCBmaXJlSW5zdGFsbEV2ZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGZpcmVBY3RpdmF0ZUV2
ZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKaW5kZXggMDg1MTIzZDBkNGZhYmU5OWNmZjExNGYx
NjFlNjQ0ODBkMzQ4OTM1Zi4uNTA3MTBkMDQ1OTU1MmYzN2JhNTNjNjkwYzkwOTBhMjEzZjE2M2Nk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTUyLDYgKzUy
LDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKQogQHByb3Bl
cnR5IChub25hdG9taWMsIG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqZGF0YUNvbm5lY3Rpb25T
ZXJ2aWNlVHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQpLCBpb3MoMTMuNCkpOwog
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50
aWNhdGlvbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOwogQHByb3Bl
cnR5IChub25hdG9taWMpIEJPT0wgcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbiBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDExLjApLCBpb3MoMTQuMCkpOworQHByb3BlcnR5IChub25h
dG9taWMpIEJPT0wgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogLy8gVGhlc2Ug
cHJvcGVydGllcyBvbmx5IG1ha2Ugc2Vuc2UgZm9yIHBlcnNpc3RlbnQgZGF0YSBzdG9yZXMsIGFu
ZCB3aWxsIHRocm93CiAvLyBhbiBleGNlcHRpb24gaWYgc2V0IGZvciBub24tcGVyc2lzdGVudCBz
dG9yZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24ubW0KaW5kZXggNTkw
MDc1MmY3YjA0MTQ5NjYwYTU3ZGQyZTRiNDI5NjYxODcwMDUwNi4uMTRhNWFmODdhMDc5NWNkZTBj
Yzc2ZGYzOWFmMzQ2YjFiYjk5ZDIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5tbQpAQCAtNDg2LDYgKzQ4NiwxNiBAQCAtICh2b2lkKXNldFJlcXVpcmVzU2VjdXJl
SFRUUFNQcm94eUNvbm5lY3Rpb246KEJPT0wpcmVxdWlyZXMKICAgICBfY29uZmlndXJhdGlvbi0+
c2V0UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbihyZXF1aXJlcyk7CiB9CiAKKy0g
KEJPT0wpc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQKK3sKKyAgICByZXR1cm4g
X2NvbmZpZ3VyYXRpb24tPnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkKCk7Cit9
CisKKy0gKHZvaWQpc2V0U2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQ6KEJPT0wp
c2hvdWxkUnVuT25NYWluVGhyZWFkCit7CisgICAgX2NvbmZpZ3VyYXRpb24tPnNldFNob3VsZFJ1
blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkKHNob3VsZFJ1bk9uTWFpblRocmVhZCk7Cit9CisK
IC0gKHZvaWQpc2V0UHJveHlDb25maWd1cmF0aW9uOihOU0RpY3Rpb25hcnkgKiljb25maWd1cmF0
aW9uCiB7CiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldFByb3h5Q29uZmlndXJhdGlvbigoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKVtjb25maWd1cmF0aW9uIGNvcHldKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
aW5kZXggMjEwY2QwYWY3MjgzMTA1MGM5MWVhZWY4Y2NkOTBhOTM1NDM2ZGIyYS4uZjU0ZDM5NTAy
OTEzMzliYTg3YTE4YThjM2ZkM2I4MzJlYzU4YTZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTIw
NTgsNiArMjA1OCw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3Rv
cmU6OnBhcmFtZXRlcnMoKQogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5hbGxvd3NTZXJ2
ZXJQcmVjb25uZWN0ID0gbV9jb25maWd1cmF0aW9uLT5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KCk7
CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXJh
bWV0ZXJzID0gV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycyk7CiAgICAg
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rp
b24gPSBtX2NvbmZpZ3VyYXRpb24tPnJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24o
KTsKKyAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkUnVuU2VydmljZVdvcmtlcnNP
bk1haW5UaHJlYWQgPSBtX2NvbmZpZ3VyYXRpb24tPnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25N
YWluVGhyZWFkKCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnByZXZlbnRzU3lzdGVt
SFRUUFByb3h5QXV0aGVudGljYXRpb24gPSBtX2NvbmZpZ3VyYXRpb24tPnByZXZlbnRzU3lzdGVt
SFRUUFByb3h5QXV0aGVudGljYXRpb24oKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMu
YWxsb3dzSFNUU1dpdGhVbnRydXN0ZWRSb290Q2VydGlmaWNhdGUgPSBtX2NvbmZpZ3VyYXRpb24t
PmFsbG93c0hTVFNXaXRoVW50cnVzdGVkUm9vdENlcnRpZmljYXRlKCk7CiAgICAgbmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLnBjbU1hY2hTZXJ2aWNlTmFtZSA9IG1fY29uZmlndXJhdGlvbi0+cGNt
TWFjaFNlcnZpY2VOYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5j
cHAKaW5kZXggMjBjYjE0YzI5NmYxM2NiNzdkMzlmMWVjNGYxMjJhMzFkMjYzNDE1MC4uNzE1NzY4
MTAxYzQzNTUyN2Y5NDVkYzk1OTEyNTliMTkxNzQyOTU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtOTcsNiArOTcsNyBAQCBSZWY8V2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5KCkg
Y29uc3QKICAgICBjb3B5LT5tX3N1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3Rl
bUNoYW5nZSA9IHRoaXMtPm1fc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVt
Q2hhbmdlOwogICAgIGNvcHktPm1fYWxsb3dzU2VydmVyUHJlY29ubmVjdCA9IHRoaXMtPm1fYWxs
b3dzU2VydmVyUHJlY29ubmVjdDsKICAgICBjb3B5LT5tX3JlcXVpcmVzU2VjdXJlSFRUUFNQcm94
eUNvbm5lY3Rpb24gPSB0aGlzLT5tX3JlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb247
CisgICAgY29weS0+bV9zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCA9IHRoaXMt
Pm1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQ7CiAgICAgY29weS0+bV9wcmV2
ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uID0gdGhpcy0+bV9wcmV2ZW50c1N5c3Rl
bUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOwogICAgIGNvcHktPm1fc3RhbmRhbG9uZUFwcGxpY2F0
aW9uVVJMID0gdGhpcy0+bV9zdGFuZGFsb25lQXBwbGljYXRpb25VUkw7CiAgICAgY29weS0+bV9l
bmFibGVJbkFwcEJyb3dzZXJQcml2YWN5Rm9yVGVzdGluZyA9IHRoaXMtPm1fZW5hYmxlSW5BcHBC
cm93c2VyUHJpdmFjeUZvclRlc3Rpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uaAppbmRleCAzMjU2Y2RlYzMxMGY2NzQ2YmQ1ZTRhYWU2NWY1ZDkxZDI1YmJlZmFhLi5mNjgy
MjUzZjk5MzM2MjkxYmVhMDQ3MDhmNWZjOTE4NzA3MDBiZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDb25maWd1cmF0aW9uLmgKQEAgLTE3MSw2ICsxNzEsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCByZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9y
ZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlDb25uZWN0aW9uOyB9OwogICAgIHZvaWQgc2V0UmVxdWly
ZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbihib29sIHJlcXVpcmVzKSB7IG1fcmVxdWlyZXNT
ZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbiA9IHJlcXVpcmVzOyB9CiAKKyAgICBib29sIHNob3Vs
ZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRS
dW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZDsgfQorICAgIHZvaWQgc2V0U2hvdWxkUnVuU2Vy
dmljZVdvcmtlcnNPbk1haW5UaHJlYWQoYm9vbCBzaG91bGRSdW5Pbk1haW5UaHJlYWQpIHsgbV9z
aG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCA9IHNob3VsZFJ1bk9uTWFpblRocmVh
ZDsgfQorCiAgICAgY29uc3QgVVJMJiBzdGFuZGFsb25lQXBwbGljYXRpb25VUkwoKSBjb25zdCB7
IHJldHVybiBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvblVSTDsgfQogICAgIHZvaWQgc2V0U3RhbmRh
bG9uZUFwcGxpY2F0aW9uVVJMKFVSTCYmIHVybCkgeyBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvblVS
TCA9IFdURk1vdmUodXJsKTsgfQogCkBAIC0yMzEsNiArMjM0LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fYWxsb3dzU2VydmVyUHJlY29ubmVjdCB7IHRydWUgfTsKICAgICBib29sIG1fcHJldmVu
dHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jl
cXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24geyBmYWxzZSB9OworICAgIGJvb2wgbV9z
aG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCB7IGZhbHNlIH07CiAgICAgdW5zaWdu
ZWQgbV90ZXN0U3BlZWRNdWx0aXBsaWVyIHsgMSB9OwogICAgIFVSTCBtX3N0YW5kYWxvbmVBcHBs
aWNhdGlvblVSTDsKICAgICBib29sIG1fZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeUZvclRlc3Rp
bmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGVj
Yzk1Mzk4MWI2YzY0NWRhMWFlN2Q4Y2JlNjIyZDcwNjA2ZTdmNDguLmRlZjk4MTY1OTBlN2MxNzgy
ZDE0OGJjYjdlNzk5MjliMGJhN2ZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjp1cGRhdGVBcHBJbml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZgogICAgICAg
ICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkKGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID09IFdlYkNvcmU6Okxhc3ROYXZpZ2F0
aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEm
JiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1
c2VyQWdlbnQpCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2Vy
dmljZVdvcmtlcihTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2Vydmlj
ZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVh
ZE1vZGUgd29ya2VyVGhyZWFkTW9kZSkKIHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0g
cGFnZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnNlc3Npb25JRCgpKTsKIApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0CiAjZW5kaWYKICAgICAKICAgICBhdXRvIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
ID0gY29udGV4dERhdGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7Ci0gICAgYXV0byBz
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0
ZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSwgV1RGTW92ZShjb250ZXh0RGF0YSksIFdURk1v
dmUod29ya2VyRGF0YSksIFdURk1vdmUoZWZmZWN0aXZlVXNlckFnZW50KSwgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuY2FjaGVTdG9yYWdlUHJvdmlkZXIoKSwgbV9zdG9yYWdlQmxvY2tpbmdQb2xp
Y3kpOworICAgIGF1dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2VydmljZVdvcmtlclRo
cmVhZFByb3h5OjpjcmVhdGUoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbiksIFdURk1vdmUoY29u
dGV4dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKGVmZmVjdGl2ZVVzZXJBZ2Vu
dCksIHdvcmtlclRocmVhZE1vZGUsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFn
ZVByb3ZpZGVyKCksIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKIAogICAgIGlmIChsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKICAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5
LT5zZXRMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCA9PSBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDU5OTZlNmNjYWVkOGFlNzZiNGRi
YjA4NDkxOWI4YjRiZjAwMTNjYWIuLmRkZDA4ZDI5OGMwNjU0YWFkYTMzM2YwMjE3YmJhYjE3ODY2
OGUyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNDksNiArNDksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0Owogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKK2VudW0gY2xhc3Mg
V29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODYs
NyArODcsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZp
Y2VXb3JrZXJTdGFydGVkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9l
c0hhbmRsZUZldGNoKSBmaW5hbDsKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJGYWlsZWRUb1N0YXJ0
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9u
TWVzc2FnZSkgZmluYWw7Ci0gICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlcihXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGEmJiwg
U3RyaW5nJiYgdXNlckFnZW50KTsKKyAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0
YSYmLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdlYkNvcmU6OldvcmtlclRocmVhZE1vZGUpOwogICAg
IHZvaWQgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKICAgICB2b2lk
IHN0YXJ0RmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYsIFN0cmluZyYmIHJlZmVycmVyKTsKICAgICB2b2lkIGNhbmNlbEZl
dGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAyYWY0ODlkNTE2
YTRlYzY5NmJhZTBmYTI1Mjg3OTI3YzRkY2Y0ODI1Li4yNWFjMTM2ODhjNzhkOTM0YzQyZDQzNDhm
N2JhYTg0ZjNkYTI1NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKIAogbWVzc2FnZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291
bnRlZCB7Ci0gICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJEYXRhIHdvcmtlckRhdGEsIFN0cmluZyB1c2VyQWdlbnQpCisgICAgSW5zdGFsbFNlcnZpY2VX
b3JrZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0
YSwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhIHdvcmtlckRhdGEsIFN0cmluZyB1
c2VyQWdlbnQsIGVudW06Ym9vbCBXZWJDb3JlOjpXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVh
ZE1vZGUpCiAgICAgVXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGVudW06Ym9vbCBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCkKICAgICBTdGFydEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIg
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0
Y2hJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdl
YkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVl
c3RCb2R5LCBTdHJpbmcgcmVmZXJyZXIpCiAgICAgQ2FuY2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNv
cmU6OkZldGNoSWRlbnRpZmllciBmZXRjaElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjQ3ZTRiYmE1M2Q5Mzg0NGQ5ZjJhMDM1
ODdiZGIxN2ZiMjgzNjE0NC4uN2I1NTY4MzQ2NTYzZjVkZDcwNDg1MjY4NmI3ZDg2ZmFhNDc0NTU5
NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDIxLTA5LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIG9uIHRo
ZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMwNjQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIEFQSSB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2VyQmFzaWMubW06CisKIDIwMjEtMDktMjcgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2Ugc3VyZSB0byBy
ZXNldCBwcmVzZW50aW5nIGFwcGxpY2F0aW9uIHBpZCBpbiBjYXNlIG9mIG1lZGlhc2VydmVyZCBj
cmFzaApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9T
ZXJ2aWNlV29ya2VyQmFzaWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQppbmRleCBmNzU2NTc3MmNmOTljNjVmNTliODlmNjVm
N2VhMmI0YTZjNDAzMDZlLi4zZjc2MGY5YTJmNzk0YzI1MmQyMGJlZjVhNDQyYWQ1MDlmMDUwMzI2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NlcnZp
Y2VXb3JrZXJCYXNpYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbQpAQCAtNDIwLDcgKzQyMCwxNyBAQCBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKIAogKVNXUkVTT1VSQ0UiOwogCi1U
RVNUKFNlcnZpY2VXb3JrZXJzLCBCYXNpYykKK2VudW0gY2xhc3MgU2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWQgOiBib29sIHsgTm8sIFllcyB9OworCitzdGF0aWMgdm9pZCBzZXRW
aWV3RGF0YVN0b3JlKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24qIHZpZXdDb25maWd1cmF0aW9uLCBT
aG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vy
c09uTWFpblRocmVhZCkKK3sKKyAgICBhdXRvIHN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtzdG9yZUNvbmZp
Z3VyYXRpb24gc2V0U2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQ6c2hvdWxkUnVu
U2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQgPT0gU2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1h
aW5UaHJlYWQ6Olllc107CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlv
bi5nZXQoKV0pOworICAgIFt2aWV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRh
dGFTdG9yZS5nZXQoKV07Cit9CisKK3N0YXRpYyB2b2lkIHJ1bkJhc2ljU1dUZXN0KFNob3VsZFJ1
blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWlu
VGhyZWFkKQogewogICAgIFNlcnZpY2VXb3JrZXJUQ1BTZXJ2ZXIgc2VydmVyKHsKICAgICAgICAg
eyAidGV4dC9odG1sIiwgbWFpbkJ5dGVzIH0sCkBAIC00MjksMTggKzQzOSwxOSBAQCBURVNUKFNl
cnZpY2VXb3JrZXJzLCBCYXNpYykKIAogICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vi
c2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CiAKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIHNl
dFZpZXdEYXRhU3RvcmUoY29uZmlndXJhdGlvbi5nZXQoKSwgc2hvdWxkUnVuU2VydmljZVdvcmtl
cnNPbk1haW5UaHJlYWQpOworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tT
V01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJD
b250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIu
Z2V0KCkgbmFtZTpAInN3Il07CisKICAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0
YSBzdG9yZQotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92
ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewor
ICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpb
V0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05T
RGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKICAgICAgICAgZG9uZSA9
IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKICAg
ICBkb25lID0gZmFsc2U7CiAKLSAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotCi0gICAgYXV0byBtZXNzYWdlSGFu
ZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Ci0gICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07Ci0KICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CkBAIC00NTAsNyArNDYxLDcg
QEAgVEVTVChTZXJ2aWNlV29ya2VycywgQmFzaWMpCiAKICAgICB3ZWJWaWV3ID0gbnVsbHB0cjsK
IAotICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIGZldGNoRGF0YVJl
Y29yZHNPZlR5cGVzOltOU1NldCBzZXRXaXRoT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnNdIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxXS1dlYnNp
dGVEYXRhUmVjb3JkICo+ICp3ZWJzaXRlRGF0YVJlY29yZHMpIHsKKyAgICBbW2NvbmZpZ3VyYXRp
b24gd2Vic2l0ZURhdGFTdG9yZV0gZmV0Y2hEYXRhUmVjb3Jkc09mVHlwZXM6W05TU2V0IHNldFdp
dGhPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc10gY29t
cGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vic2l0ZURhdGFSZWNvcmQgKj4gKndlYnNpdGVE
YXRhUmVjb3JkcykgewogICAgICAgICBFWFBFQ1RfRVEoMXUsIFt3ZWJzaXRlRGF0YVJlY29yZHMg
Y291bnRdKTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHdlYnNpdGVEYXRhUmVjb3Jkc1swXS5k
aXNwbGF5TmFtZSwgIjEyNy4wLjAuMSIpOwogCkBAIC00NjEsNiArNDcyLDE2IEBAIFRFU1QoU2Vy
dmljZVdvcmtlcnMsIEJhc2ljKQogICAgIGRvbmUgPSBmYWxzZTsKIH0KIAorVEVTVChTZXJ2aWNl
V29ya2VycywgQmFzaWMpCit7CisgICAgcnVuQmFzaWNTV1Rlc3QoU2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWQ6Ok5vKTsKK30KKworVEVTVChTZXJ2aWNlV29ya2VycywgQmFzaWNX
aXRoTWFpblRocmVhZFNXKQoreworICAgIHJ1bkJhc2ljU1dUZXN0KFNob3VsZFJ1blNlcnZpY2VX
b3JrZXJzT25NYWluVGhyZWFkOjpZZXMpOworfQorCiBAaW50ZXJmYWNlIFNXQ3VzdG9tVXNlckFn
ZW50RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IHsKICAgICBOU1N0
cmluZyAqX3VzZXJBZ2VudDsKIH0KQEAgLTc2Nyw2ICs3ODgsNTggQEAgVEVTVChTZXJ2aWNlV29y
a2VycywgSW50ZXJjZXB0Rmlyc3RMb2FkQWZ0ZXJSZXN0b3JlRnJvbURpc2spCiAgICAgZG9uZSA9
IGZhbHNlOwogfQogCitURVNUKFNlcnZpY2VXb3JrZXJzLCBNYWluVGhyZWFkU1dJbnRlcmNlcHRz
TG9hZCkKK3sKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jk
c0ZvckFsbE9yaWdpbnNdOworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBzZXRWaWV3RGF0YVN0b3JlKGNvbmZpZ3VyYXRpb24uZ2V0KCksIFNob3VsZFJ1
blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkOjpZZXMpOworCisgICAgUmV0YWluUHRyPFdLV2Vi
c2l0ZURhdGFTdG9yZT4gZGF0YVN0b3JlID0gW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9y
ZV07CisKKyAgICAvLyBTdGFydCB3aXRoIGEgY2xlYW4gc2xhdGUgZGF0YSBzdG9yZQorICAgIFtk
YXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRl
RGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25I
YW5kbGVyOl4oKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byBt
ZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTV01lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVz
c2FnZSBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6
QCJzdyJdOworCisgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7
ICJ0ZXh0L2h0bWwiLCBtYWluRm9yRmlyc3RMb2FkSW50ZXJjZXB0VGVzdEJ5dGVzIH0sCisgICAg
ICAgIHsgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCBzY3JpcHRJbnRlcmNlcHRpbmdGaXJzdExv
YWRCeXRlcyB9LAorICAgIH0sIHsKKyAgICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIs
IHNjcmlwdEludGVyY2VwdGluZ0ZpcnN0TG9hZEJ5dGVzIH0sCisgICAgfSk7CisKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlNlcnZpY2UgV29ya2VyIGFjdGl2YXRlZCI7Cisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgd2ViVmlldyA9IG51bGxwdHI7CisgICAg
Y29uZmlndXJhdGlvbiA9IG51bGxwdHI7CisgICAgbWVzc2FnZUhhbmRsZXIgPSBudWxscHRyOwor
CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
V2Vic2l0ZURhdGFTdG9yZTpkYXRhU3RvcmUuZ2V0KCldOworICAgIG1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0
XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJJbnRlcmNlcHRlZCBieSB3b3JrZXIiOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7Cit9CisKIFRFU1QoU2Vydmlj
ZVdvcmtlcnMsIFdhaXRGb3JQb2xpY3lEZWxlZ2F0ZSkKIHsKICAgICBbV0tXZWJzaXRlRGF0YVN0
b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439669</attachid>
            <date>2021-09-29 15:27:30 -0700</date>
            <delta_ts>2021-09-29 19:20:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230649-20210929152730.patch</filename>
            <type>text/plain</type>
            <size>87997</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzE2MTFlZGUyOTA3ODUw
MGMzZTgwN2RlYzNjOWVjMzJmZWYxYzljYy4uOWNkZmYxY2EwZWQwOGQxNmFjY2ZjZDM2MjdlNmUz
ZjkxNzNkN2I3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkxIEBACisyMDIxLTA5LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHJ1
bm5pbmcgc2VydmljZSB3b3JrZXJzIG9uIHRoZSBtYWluIHRocmVhZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjQ5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcnVubmlu
ZyBzZXJ2aWNlIHdvcmtlcnMgb24gdGhlIG1haW4gdGhyZWFkIChvZmYgYnkgZGVmYXVsdCkuCisK
KyAgICAgICAgVGhpcyBpcyB0byBzdXBwb3J0IHVzZSBjYXNlcyB3aGVyZSB0aGUgSW5qZWN0ZWRC
dW5kbGUgbmVlZHMgdG8gaGF2ZSBhY2Nlc3MKKyAgICAgICAgdG8gYSBzZXJ2aWNlIHdvcmtlcidz
IEpTIGdsb2JhbCBvYmplY3QgYW5kIHNjcmlwdCBpdC4gSXQgd291bGRuJ3QgYmUgcHJhY3RpY2Fs
CisgICAgICAgIGluIHN1Y2ggY2FzZXMgdG8gaGF2ZSB0aGUgc2VydmljZSB3b3JrZXIgcnVubmlu
ZyBvZmYgdGhlIG1haW4gdGhyZWFkLiBOb3RlIHRoYXQKKyAgICAgICAgdGhpcyBpcyBub3QgbWVh
bnQgdG8gYmUgdXNlZCBmb3Igc2VydmljZSB3b3JrZXJzIGluIGdlbmVyYWwsIG9ubHkgZm9yIHNv
bWUgdmVyeQorICAgICAgICBzcGVjaWZpYyBzZXJ2aWNlIHdvcmtlcnMgdGhhdCByZXF1aXJlIGlu
dGVyYWN0aW9uIHdpdGggV2ViS2l0J3MgaW5qZWN0ZWQgYnVuZGxlLgorCisgICAgICAgICogSGVh
ZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvSURCQ29ubmVj
dGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkNsaWVudDo6SURCQ29ubmVjdGlv
blByb3h5Ojpmb3JnZXRBY3Rpdml0eUZvckN1cnJlbnRUaHJlYWQpOgorICAgICAgICAqIE1vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjp3
YWl0Rm9yTWV0aG9kQ29tcGxldGlvbik6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQp
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VVc2VyVGltaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBlcmZvcm1hbmNlVXNlclRpbWluZzo6Y29udmVydE1hcmtUb1RpbWVzdGFtcCBj
b25zdCk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZS5oOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9k
dWxlU3luY2hyb25vdXNseSk6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyLmg6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0UnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Oldvcmtlck9yV29ya2xldFRocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0YXJ0UnVubmluZ0RlYnVnZ2Vy
VGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjpydW5FdmVu
dExvb3ApOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJP
cldvcmtsZXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyT3JXb3JrbGV0VGhyZWFk
OjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6c3VzcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnJlc3VtZSk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9kZVByZWRpY2F0ZTo6
b3BlcmF0b3IoKSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWRpY2F0ZWRSdW5M
b29wOjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRl
ZGljYXRlZFJ1bkxvb3A6On5Xb3JrZXJEZWRpY2F0ZWRSdW5Mb29wKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bkxvb3BTZXR1cDo6UnVuTG9vcFNldHVwKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckRlZGljYXRlZFJ1bkxvb3A6OnJ1bik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWRpY2F0
ZWRSdW5Mb29wOjpydW5JbkRlYnVnZ2VyTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJE
ZWRpY2F0ZWRSdW5Mb29wOjpydW5Jbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVk
aWNhdGVkUnVuTG9vcDo6cnVuQ2xlYW51cFRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckRlZGljYXRlZFJ1bkxvb3A6OnRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJE
ZWRpY2F0ZWRSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6VGFzazo6cGVyZm9ybVRhc2spOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6VGFzazo6VGFzayk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJNYWluUnVuTG9vcDo6V29ya2VyTWFpblJ1bkxvb3ApOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyTWFpblJ1bkxvb3A6OnNldEdsb2JhbFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6Oldvcmtlck1haW5SdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNYWluUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck1haW5SdW5Mb29wOjpydW5Jbk1vZGUpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyUnVuTG9vcC5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6
Y3JlYXRlVW5pcXVlSWQpOgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiB3b3JrZXJzL1dv
cmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJQYXJhbWV0ZXJzOjppc29s
YXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpXb3JrZXJU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpjcmVhdGVUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkOjpldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5
KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5oOgorICAgICAgICAqIHdvcmtlcnMv
V29ya2VyVGhyZWFkTW9kZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZTo6dXBkYXRlRXh0ZW5kZWRFdmVudHNTZXQpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Z2VuZXJhdGVXb3JrZXJQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
U2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0SGVhcnRCZWF0VGltZXIpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OlNXU2VydmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjppbnN0YWxsQ29udGV4dERhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJ1blNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorCiAyMDIxLTA5LTI5ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIExpbmVCb3hC
dWlsZGVyIHNob3VsZCB1c2UgdGhlIGZpcnN0LWxpbmUgc3R5bGUgd2hlbiBhcHBsaWNhYmxlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGQ0YjQ4ZmNkZWU1Y2E5YmZkYTU1YTEzNmRmYjBjZGM1ZDdmODllYmQuLjczOTBj
ZWRlMWMwNjliNzZiMTI5NzQwNzU5Mzc3NTkyZmM3NTBiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NDEgQEAKKzIwMjEtMDktMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc3VwcG9ydCBmb3IgcnVubmluZyBzZXJ2aWNlIHdvcmtlcnMgb24gdGhlIG1haW4g
dGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzA2NDkKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
IEFkZCBzdXBwb3J0IGZvciBydW5uaW5nIHNlcnZpY2Ugd29ya2VycyBvbiB0aGUgbWFpbiB0aHJl
YWQgKG9mZiBieSBkZWZhdWx0KS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9y
U2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6TmV0d29ya1Nlc3Npb24pOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmg6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtTZXNzaW9uOjpzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCBjb25zdCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3Jr
ZXJDb250ZXh0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tOgorICAgICAg
ICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBzaG91bGRSdW5TZXJ2aWNlV29y
a2Vyc09uTWFpblRocmVhZF0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiBzZXRTaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZDpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uOjpjb3B5IGNvbnN0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246
OnNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OnNldFNob3VsZFJ1blNlcnZpY2VX
b3JrZXJzT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbjoKKwogMjAyMS0wOS0yOSAgUGVyIEFybmUgIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgdGVsZW1ldHJ5IHRvIHRoZSBOZXR3b3JraW5nIHByb2Nlc3Mgc2FuZGJveApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKaW5kZXggMWI4ZGEzNjFlYjFkNWYxZjY0M2E2MmRlOGM4OTY3ODBlNDgw
NTFkZi4uY2JhYWZlN2JiNDQ3MWJkODU0NWE2ZGVmNGM5NGZmNjExODZiZGFjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCkBAIC0xNzMwLDYgKzE3MzAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuaAogICAgIHdvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyQ2xpZW50LmgKICAgICB3b3JrZXJzL1dvcmtlclRocmVhZC5o
CisgICAgd29ya2Vycy9Xb3JrZXJUaHJlYWRNb2RlLmgKICAgICB3b3JrZXJzL1dvcmtlclRocmVh
ZFR5cGUuaAogICAgIHdvcmtlcnMvV29ya2VyVHlwZS5oCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9JREJDb25uZWN0aW9uUHJveHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94
eS5jcHAKaW5kZXggMzU2YWIwNTc2MTAzY2JhYmRmYmIyZjEyNDJhZjk1OTQ5ODVmMDEwMi4uNjY3
ODJlY2RlM2U0NzIxZWNiNGIzNGMwZGQyMDM3YzkxNWUyOGRmYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rpb25Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L0lEQkNvbm5lY3Rp
b25Qcm94eS5jcHAKQEAgLTYwOSw4ICs2MDksNiBAQCB2b2lkIHNldE1hdGNoaW5nSXRlbXNDb250
ZXh0U3VzcGVuZGVkKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGN1cnJlbnRDb250ZXh0LCBIYQog
CiB2b2lkIElEQkNvbm5lY3Rpb25Qcm94eTo6Zm9yZ2V0QWN0aXZpdHlGb3JDdXJyZW50VGhyZWFk
KCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLQogICAgIHsKICAgICAgICAgTG9j
a2VyIGxvY2tlciB7IG1fZGF0YWJhc2VDb25uZWN0aW9uTWFwTG9jayB9OwogICAgICAgICByZW1v
dmVJdGVtc01hdGNoaW5nQ3VycmVudFRocmVhZChtX2RhdGFiYXNlQ29ubmVjdGlvbk1hcCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA3NTc1ZWM3NDdh
OGVlMzAzN2JhMzUyNTVkNDVkMjBiNmE2Mzg4NjYyLi45ZmJjOTRlN2NlZjYzZDc0MWIzMWRhYzJl
Yjc4ZGE3ZGI1MDE1NmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTU5MiwxMCArNTkyLDEwIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZTo6d2FpdEZvck1ldGhvZENvbXBsZXRpb24oKQogICAgIGlmICghbV93
b3JrZXJHbG9iYWxTY29wZSkKICAgICAgICAgcmV0dXJuOwogICAgIFdvcmtlclJ1bkxvb3AmIHJ1
bkxvb3AgPSBtX3dvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5ydW5Mb29wKCk7Ci0gICAgTWVz
c2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQgPSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7
CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIucHRy
KCk7Ci0gICAgd2hpbGUgKG1fd29ya2VyR2xvYmFsU2NvcGUgJiYgY2xpZW50V3JhcHBlciAmJiAh
Y2xpZW50V3JhcHBlci0+c3luY01ldGhvZERvbmUoKSAmJiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVl
VGVybWluYXRlZCkgewotICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZShtX3dvcmtl
ckdsb2JhbFNjb3BlLmdldCgpLCBtX3Rhc2tNb2RlKTsgLy8gTWF5IGNhdXNlIHRoaXMgYnJpZGdl
IHRvIGdldCBkaXNjb25uZWN0ZWQsIHdoaWNoIG1ha2VzIG1fd29ya2VyR2xvYmFsU2NvcGUgYmVj
b21lIG51bGwuCisgICAgd2hpbGUgKG1fd29ya2VyR2xvYmFsU2NvcGUgJiYgY2xpZW50V3JhcHBl
ciAmJiAhY2xpZW50V3JhcHBlci0+c3luY01ldGhvZERvbmUoKSAmJiBzdWNjZXNzKSB7CisgICAg
ICAgIHN1Y2Nlc3MgPSBydW5Mb29wLnJ1bkluTW9kZShtX3dvcmtlckdsb2JhbFNjb3BlLmdldCgp
LCBtX3Rhc2tNb2RlKTsgLy8gTWF5IGNhdXNlIHRoaXMgYnJpZGdlIHRvIGdldCBkaXNjb25uZWN0
ZWQsIHdoaWNoIG1ha2VzIG1fd29ya2VyR2xvYmFsU2NvcGUgYmVjb21lIG51bGwuCiAgICAgICAg
IGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIucHRyKCk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDc5N2I3MDMxYzk3YmNlYzU5ZTIzNDJmNGE4MWQyYzY3NzM4MDNiZGEuLmNiMzViNTJkNjRj
ZmI3MDAwMDIzYWRmZDI1NWFiOTRiYjMxMDg1NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMTMsNiArMTMxMyw3IEBACiAJ
CTQ2MkU0QzUwMjYxNkE4MTEwMDNBMkM2NyAvKiBTY3JpcHRCdWZmZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MkU0QzREMjYxNkE4MDEwMDNBMkM2
NyAvKiBTY3JpcHRCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk0NjM1MjFBRDIwODEwOTJBMDBDMjg5MjIgLyogV2luZG93UHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzUyMUFBMjA4
MTA5MEIwMEMyODkyMiAvKiBXaW5kb3dQcm94eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2M0VCNjIzMUI4Nzg5RTAwMDk2RUQ1MSAvKiBUYWdD
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjNFQjYyMTFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5oICovOyB9OworCQk0
NjUwQUQxOTI2RkNDQTY1MDA0N0Y3QUQgLyogV29ya2VyVGhyZWFkTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY1MEFEMTcyNkZDQ0E1QTAwNDdG
N0FEIC8qIFdvcmtlclRocmVhZE1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjUzMDdEMDFEQjZFRTQ4MDBFNDEzN0MgLyogSlNVSUV2ZW50
SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNF
MDQ1RUYxREFBMTA0RjAwQjBEOEI5IC8qIEpTVUlFdmVudEluaXQuaCAqLzsgfTsKIAkJNDY2NThE
QzkxRkEyNEI4NzAwRjdERDU0IC8qIFNXQ29udGV4dE1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzI0MTNCMUZBMjRCMTQwMDg4QkQ2RCAv
KiBTV0NvbnRleHRNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDY2QzJEQUQyNkM3M0FGQzAwNjUxOTMxIC8qIFBvbGljeUNvbnRhaW5l
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY2QzJE
QUIyNkM3M0FGQjAwNjUxOTMxIC8qIFBvbGljeUNvbnRhaW5lci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDUxLDYgKzg0NTIsNyBAQAogCQk0
NjNFQjYyMDFCODc4OUNCMDA5NkVENTEgLyogVGFnQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUYWdDb2xsZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDYzRUI2MjExQjg3ODlDQjAwOTZFRDUxIC8qIFRhZ0NvbGxlY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGFnQ29sbGVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjQyNDA0NTIwRUFGMEVEMDBCMjlGRDIgLyog
RGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhYmFzZU1h
bmFnZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY1MEFEMTcyNkZD
Q0E1QTAwNDdGN0FEIC8qIFdvcmtlclRocmVhZE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV29ya2VyVGhyZWFkTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0NjVBOEU3ODFDOEEyNENFMDBFN0QzRTQgLyogUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tz
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSdW50aW1l
QXBwbGljYXRpb25DaGVja3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY1RUREOUYyMjJGNEVDMzAwQjQ2RTE2IC8qIERldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJt
aXNzaW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlT3Jp
ZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0NjVFRERBMDIyMkY0RUM0MDBCNDZFMTYgLyogRGV2aWNlT3JpZW50YXRpb25Pck1v
dGlvblBlcm1pc3Npb25TdGF0ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRGV2aWNlT3Jp
ZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xOTUwMiw2ICsxOTUwNCw3IEBACiAJCQkJMkVBNzY4MDMwRkU3MTI2NDAwQUI5
QzhBIC8qIFdvcmtlclNjcmlwdExvYWRlckNsaWVudC5oICovLAogCQkJCTJFNDM0NjQyMEY1NDZB
ODIwMEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuY3BwICovLAogCQkJCTJFNDM0NjQzMEY1NDZBODIw
MEIwRjFCQSAvKiBXb3JrZXJUaHJlYWQuaCAqLywKKwkJCQk0NjUwQUQxNzI2RkNDQTVBMDA0N0Y3
QUQgLyogV29ya2VyVGhyZWFkTW9kZS5oICovLAogCQkJCUUzQUZEN0FCMjU1RjUwREMwMEU1RTMw
RSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggKi8sCiAJCQkJNTFGMTc0RkMxRjM1ODk4ODAwQzc0OTUw
IC8qIFdvcmtlclR5cGUuaCAqLywKIAkJCQk1MUYxNzRGQTFGMzU4OEQ3MDBDNzQ5NTAgLyogV29y
a2VyVHlwZS5pZGwgKi8sCkBAIC0zNTk3MSw2ICszNTk3NCw3IEBACiAJCQkJMkU0MzQ2NTUwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEI5MDU2
RjkwRjI2ODVGMzAwOTVGRjZBIC8qIFdvcmtlclRocmVhZGFibGVMb2FkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTk3QUFCRDJEMTRGQTA5RDUwMDc0NTdBRSAvKiBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDY1MEFEMTkyNkZDQ0E2NTAwNDdG
N0FEIC8qIFdvcmtlclRocmVhZE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzQUZEN0FEMjU1
RjUwRUIwMEU1RTMwRSAvKiBXb3JrZXJUaHJlYWRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTRBMEM2ODFEQjgwN0Q5MDAxN0E5MEIgLyogV29ya2VyVG9QYWdlRnJvbnRlbmRDaGFubmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzRGRTFGMzU4OTkyMDBDNzQ5NTAgLyogV29ya2VyVHlw
ZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyRGVidWdnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVn
Z2VyLmNwcAppbmRleCA4YTdhYjhjMjBlMDk0OTBiZTM3ZTVjMDY3NTYyYjJjM2QyNTFiYzU0Li5i
NTIwODhiYzM5ZDZlZmVkNGQ5ODBiM2FkNDJlOTNhMjRkOWU1OGZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlci5jcHAKQEAgLTc5LDkgKzc5LDEzIEBAIHZvaWQg
V29ya2VyRGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKIAogICAgIFRpbWVyQmFz
ZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7CiAKKyAgICAvLyBGSVhNRTogQWRkIHN1
cHBvcnQgZm9yIHBhdXNpbmcgd29ya2VycyBydW5uaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KKyAg
ICBpZiAoIWlzPFdvcmtlckRlZGljYXRlZFJ1bkxvb3A+KG1fZ2xvYmFsU2NvcGUud29ya2VyT3JX
b3JrbGV0VGhyZWFkKCktPnJ1bkxvb3AoKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIE1lc3Nh
Z2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKLSAgICAgICAgcmVzdWx0ID0gbV9n
bG9iYWxTY29wZS53b3JrZXJPcldvcmtsZXRUaHJlYWQoKS0+cnVuTG9vcCgpLnJ1bkluRGVidWdn
ZXJNb2RlKG1fZ2xvYmFsU2NvcGUpOworICAgICAgICByZXN1bHQgPSBkb3duY2FzdDxXb3JrZXJE
ZWRpY2F0ZWRSdW5Mb29wPihtX2dsb2JhbFNjb3BlLndvcmtlck9yV29ya2xldFRocmVhZCgpLT5y
dW5Mb29wKCkpLnJ1bkluRGVidWdnZXJNb2RlKG1fZ2xvYmFsU2NvcGUpOwogICAgIH0gd2hpbGUg
KHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFkb25lUHJvY2Vzc2luZ0RlYnVn
Z2VyRXZlbnRzKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhy
ZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggYzJkYWE1Y2NhY2M5YjNiNDBkYTYxZjc2MjZjODE5ODBl
YWViYWQzYy4uZGZmODk3MDFjOTM5YmM3M2MzNzAzMmFkOWM0MmFkMjA2MzI2YWQ2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAt
NzQsMTEgKzc0LDExIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wCiAgICAgYXV0byBtb2RlID0g
bWFrZVN0cmluZygibG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vZGUiLCBydW5Mb29wLmNyZWF0
ZVVuaXF1ZUlkKCkpOwogCiAgICAgYXV0byBsb2FkZXIgPSBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUod29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIGNsaWVudCwgbW9kZSwgV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucywgU3RyaW5nKCkpOwotICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1
bHQgcmVzdWx0ID0gTWVzc2FnZVF1ZXVlTWVzc2FnZVJlY2VpdmVkOwotICAgIHdoaWxlICghbG9h
ZGVyLT5kb25lKCkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCi0gICAgICAg
IHJlc3VsdCA9IHJ1bkxvb3AucnVuSW5Nb2RlKCZ3b3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSwg
bW9kZSk7CisgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICB3aGlsZSAoIWxvYWRlci0+ZG9u
ZSgpICYmIHN1Y2Nlc3MpCisgICAgICAgIHN1Y2Nlc3MgPSBydW5Mb29wLnJ1bkluTW9kZSgmd29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUsIG1vZGUpOwogCi0gICAgaWYgKCFsb2FkZXItPmRvbmUo
KSAmJiByZXN1bHQgPT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkKKyAgICBpZiAoIWxvYWRlci0+
ZG9uZSgpICYmICFzdWNjZXNzKQogICAgICAgICBsb2FkZXItPmNhbmNlbCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVXNlclRpbWluZy5jcHAKaW5kZXggYTM2ODg3
MjM3NGMxMmY3Y2EzMGUxYmY5YzI5MTAzNTk4ZTNhMDkxNy4uZDFiY2NmYTU5MmJjNTI1MjNlZWJk
NmYwYTAzNTJkZDBmMzE0ZWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVVzZXJUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFu
Y2VVc2VyVGltaW5nLmNwcApAQCAtMTM3LDcgKzEzNyw3IEBAIEV4Y2VwdGlvbk9yPGRvdWJsZT4g
UGVyZm9ybWFuY2VVc2VyVGltaW5nOjpjb252ZXJ0TWFya1RvVGltZXN0YW1wKGNvbnN0IFZhcmlh
bnQ8CiAKIEV4Y2VwdGlvbk9yPGRvdWJsZT4gUGVyZm9ybWFuY2VVc2VyVGltaW5nOjpjb252ZXJ0
TWFya1RvVGltZXN0YW1wKGNvbnN0IFN0cmluZyYgbWFyaykgY29uc3QKIHsKLSAgICBpZiAoIWlz
PERvY3VtZW50PihtX3BlcmZvcm1hbmNlLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpIHsKKyAg
ICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CiAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRNYXJrTmFt
ZU5vbk1haW5UaHJlYWQobWFyaykpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yIH07CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBiOTcwY2RlNDFlN2M1NDExMjEwMjUy
ZTY1YTE4ZTQxYzZiOTM5ZDY4Li4yZjFlMzUyMWYzNDc3MWQ0YWQ1NTU2NjZkOGM3Nzg3Zjg0NDk4
Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRH
bG9iYWxTY29wZS5oCkBAIC00NSw2ICs0NSw5IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2Jh
bFNjb3BlIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHB1YmxpYyBSZWZDb3VuCiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUoKTsKIAorICAg
IHVzaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OndlYWtQdHJGYWN0b3J5OworICAgIHVzaW5n
IFdlYWtWYWx1ZVR5cGUgPSBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpXZWFrVmFsdWVUeXBlOwor
CiAgICAgYm9vbCBpc0Nsb3NpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2luZzsgfQogICAg
IFdvcmtlck9yV29ya2xldFRocmVhZCogd29ya2VyT3JXb3JrbGV0VGhyZWFkKCkgY29uc3QgeyBy
ZXR1cm4gbV90aHJlYWQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYjJlMWYzMGRlNzQ2
MjdhMzQ1MGM0ZWM0MGVhNGI0Zjc0NTE5ZTA0OC4uZmYyN2I2YTZlYjQ0N2Q2ZGE5YWY2NTUyM2Yx
OWI3OGE1YTA2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0yNjcsMTAgKzI2NywxMCBA
QCBKU0M6OkpTVmFsdWUgV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVN
b2R1bGUoSlNDOjpKU01vZHVsZVJlY29yZAogICAgIHJldHVybiBtb2R1bGVSZWNvcmQuZXZhbHVh
dGUoJmdsb2JhbE9iamVjdCwgYXdhaXRlZFZhbHVlLCByZXN1bWVNb2RlKTsKIH0KIAotTWVzc2Fn
ZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250cm9sbGVyOjpsb2FkTW9k
dWxlU3luY2hyb25vdXNseShXb3JrZXJTY3JpcHRGZXRjaGVyJiBzY3JpcHRGZXRjaGVyLCBjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQorYm9vbCBXb3JrZXJPcldvcmtsZXRTY3Jp
cHRDb250cm9sbGVyOjpsb2FkTW9kdWxlU3luY2hyb25vdXNseShXb3JrZXJTY3JpcHRGZXRjaGVy
JiBzY3JpcHRGZXRjaGVyLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewog
ICAgIGlmIChpc0V4ZWN1dGlvbkZvcmJpZGRlbigpKQotICAgICAgICByZXR1cm4gTWVzc2FnZVF1
ZXVlVGVybWluYXRlZDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW5pdFNjcmlwdElm
TmVlZGVkKCk7CiAKQEAgLTM0MCwxNCArMzQwLDE0IEBAIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQg
V29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlcjo6bG9hZE1vZHVsZVN5bmNocm9ub3VzbHko
CiAgICAgLy8gdGFzayBpcyBxdWV1ZWQgaW4gV29ya2VyUnVuTG9vcCBiZWZvcmUgc3RhcnQgcnVu
bmluZyBtb2R1bGUgc2NyaXB0cy4gVGhpcyB0YXNrIHNob3VsZCBub3QgYmUgZGlzY2FyZGVkCiAg
ICAgLy8gaW4gdGhlIGZvbGxvd2luZyBkcml2aW5nIG9mIHRoZSBSdW5Mb29wIHdoaWNoIG1haW5s
eSBhdHRlbXB0IHRvIGNvbGxlY3QgaW5pdGlhbCBsb2FkIG9mIG1vZHVsZSBzY3JpcHRzLgogICAg
IFN0cmluZyB0YXNrTW9kZSA9IFdvcmtlck1vZHVsZVNjcmlwdExvYWRlcjo6dGFza01vZGUoKTsK
LSAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VS
ZWNlaXZlZDsKLSAgICB3aGlsZSAoKCFwcm90ZWN0b3ItPmlzTG9hZGVkKCkgJiYgIXByb3RlY3Rv
ci0+d2FzQ2FuY2VsZWQoKSkgJiYgcmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsK
LSAgICAgICAgcmVzdWx0ID0gcnVuTG9vcC5ydW5Jbk1vZGUobV9nbG9iYWxTY29wZSwgdGFza01v
ZGUpOwotICAgICAgICBpZiAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpCisgICAg
Ym9vbCBzdWNjZXNzID0gdHJ1ZTsKKyAgICB3aGlsZSAoKCFwcm90ZWN0b3ItPmlzTG9hZGVkKCkg
JiYgIXByb3RlY3Rvci0+d2FzQ2FuY2VsZWQoKSkgJiYgc3VjY2VzcykgeworICAgICAgICBzdWNj
ZXNzID0gcnVuTG9vcC5ydW5Jbk1vZGUobV9nbG9iYWxTY29wZSwgdGFza01vZGUpOworICAgICAg
ICBpZiAoc3VjY2VzcykKICAgICAgICAgICAgIG1fZ2xvYmFsU2NvcGUtPmV2ZW50TG9vcCgpLnBl
cmZvcm1NaWNyb3Rhc2tDaGVja3BvaW50KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICByZXR1cm4gc3VjY2VzczsKIH0KIAogdm9pZCBXb3JrZXJPcldvcmtsZXRTY3JpcHRDb250
cm9sbGVyOjpsaW5rQW5kRXZhbHVhdGVNb2R1bGUoV29ya2VyU2NyaXB0RmV0Y2hlciYgc2NyaXB0
RmV0Y2hlciwgY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU3RyaW5nKiByZXR1
cm5lZEV4Y2VwdGlvbk1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDMwNGFjNDAzMzRjMDYy
ZjdlYjRiZmU1OWUzNTg3NjljYjc0Yzk2NmQuLjMzMTM3OWRmZTUyMzdjMDNlYzJmMTRmYzk4YWU3
NzFlYjI0ZmZhZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JX
b3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0U2NyaXB0Q29udHJvbGxlci5oCkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoK
ICAgICBKU0M6OkpTVmFsdWUgZXZhbHVhdGVNb2R1bGUoSlNDOjpKU01vZHVsZVJlY29yZCYsIEpT
Qzo6SlNWYWx1ZSBhd2FpdGVkVmFsdWUsIEpTQzo6SlNWYWx1ZSByZXN1bWVNb2RlKTsKIAogICAg
IHZvaWQgbGlua0FuZEV2YWx1YXRlTW9kdWxlKFdvcmtlclNjcmlwdEZldGNoZXImLCBjb25zdCBT
Y3JpcHRTb3VyY2VDb2RlJiwgU3RyaW5nKiByZXR1cm5lZEV4Y2VwdGlvbk1lc3NhZ2UgPSBudWxs
cHRyKTsKLSAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IGxvYWRNb2R1bGVTeW5jaHJvbm91c2x5
KFdvcmtlclNjcmlwdEZldGNoZXImLCBjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgYm9v
bCBsb2FkTW9kdWxlU3luY2hyb25vdXNseShXb3JrZXJTY3JpcHRGZXRjaGVyJiwgY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYpOwogCiAgICAgdm9pZCBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoY29uc3Qg
VVJMJiBtb2R1bGVVUkwsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+JiYpPiYmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCmluZGV4IGZkNjU5ODQ1
MzBlN2MxODI4ZTkzMzMwMDExNTI5OGViMGVkYWVmMzQuLmEzYmRkYmI0YzkzYTljMzE0MGVkNmVh
YWEzNGRkMGI0MjRjNDQ1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFRocmVhZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXb3JrZXJP
cldvcmtsZXRUaHJlYWQuaCIKIAogI2luY2x1ZGUgIlRocmVhZEdsb2JhbERhdGEuaCIKKyNpbmNs
dWRlICJXb3JrZXJFdmVudExvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJPcldvcmtsZXRHbG9iYWxT
Y29wZS5oIgogI2luY2x1ZGUgIldvcmtlck9yV29ya2xldFNjcmlwdENvbnRyb2xsZXIuaCIKIApA
QCAtNTQsOCArNTUsMjAgQEAgSGFzaFNldDxXb3JrZXJPcldvcmtsZXRUaHJlYWQqPiYgV29ya2Vy
T3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWRzKCkKICAgICByZXR1cm4gd29y
a2VyT3JXb3JrbGV0VGhyZWFkczsKIH0KIAotV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpXb3JrZXJP
cldvcmtsZXRUaHJlYWQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQorc3RhdGljIFVuaXF1ZVJl
ZjxXb3JrZXJSdW5Mb29wPiBjb25zdHJ1Y3RSdW5Mb29wKFdvcmtlclRocmVhZE1vZGUgd29ya2Vy
VGhyZWFkTW9kZSkKK3sKKyAgICBzd2l0Y2ggKHdvcmtlclRocmVhZE1vZGUpIHsKKyAgICBjYXNl
IFdvcmtlclRocmVhZE1vZGU6OlVzZU1haW5UaHJlYWQ6CisgICAgICAgIHJldHVybiBtYWtlVW5p
cXVlUmVmPFdvcmtlck1haW5SdW5Mb29wPigpOworICAgIGNhc2UgV29ya2VyVGhyZWFkTW9kZTo6
Q3JlYXRlTmV3VGhyZWFkOgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWY8V29ya2VyRGVkaWNhdGVkUnVuTG9vcD4oKTsKK30KKworV29ya2VyT3JXb3JrbGV0
VGhyZWFkOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBX
b3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRl
bnRpZmllcikKKyAgICAsIG1fcnVuTG9vcChjb25zdHJ1Y3RSdW5Mb29wKHdvcmtlclRocmVhZE1v
ZGUpKQogewogICAgIExvY2tlciBsb2NrZXIgeyB3b3JrZXJPcldvcmtsZXRUaHJlYWRzTG9jaygp
IH07CiAgICAgd29ya2VyT3JXb3JrbGV0VGhyZWFkcygpLmFkZCh0aGlzKTsKQEAgLTczLDkgKzg2
LDEzIEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpzdGFydFJ1bm5pbmdEZWJ1Z2dlclRh
c2tzKCkKICAgICBBU1NFUlQoIW1fcGF1c2VkRm9yRGVidWdnZXIpOwogICAgIG1fcGF1c2VkRm9y
RGVidWdnZXIgPSB0cnVlOwogCisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBkZWJ1Z2dp
bmcgd29ya2VycyBydW5uaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICBpZiAoIWlzPFdvcmtl
ckRlZGljYXRlZFJ1bkxvb3A+KG1fcnVuTG9vcC5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKLSAgICAgICAgcmVz
dWx0ID0gbV9ydW5Mb29wLnJ1bkluRGVidWdnZXJNb2RlKCptX2dsb2JhbFNjb3BlKTsKKyAgICAg
ICAgcmVzdWx0ID0gZG93bmNhc3Q8V29ya2VyRGVkaWNhdGVkUnVuTG9vcD4obV9ydW5Mb29wLmdl
dCgpKS5ydW5JbkRlYnVnZ2VyTW9kZSgqbV9nbG9iYWxTY29wZSk7CiAgICAgfSB3aGlsZSAocmVz
dWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgJiYgbV9wYXVzZWRGb3JEZWJ1Z2dlcik7CiB9
CiAKQEAgLTg3LDEzICsxMDQsMzEgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0b3BS
dW5uaW5nRGVidWdnZXJUYXNrcygpCiB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6cnVuRXZl
bnRMb29wKCkKIHsKICAgICAvLyBEb2VzIG5vdCByZXR1cm4gdW50aWwgdGVybWluYXRlZC4KLSAg
ICBtX3J1bkxvb3AucnVuKG1fZ2xvYmFsU2NvcGUuZ2V0KCkpOworICAgIGlmIChpczxXb3JrZXJE
ZWRpY2F0ZWRSdW5Mb29wPihtX3J1bkxvb3AuZ2V0KCkpKQorICAgICAgICBkb3duY2FzdDxXb3Jr
ZXJEZWRpY2F0ZWRSdW5Mb29wPihtX3J1bkxvb3AuZ2V0KCkpLnJ1bihtX2dsb2JhbFNjb3BlLmdl
dCgpKTsKIH0KIAogdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRo
cmVhZCgpCiB7CiAgICAgUmVmIHByb3RlY3RlZFRoaXMgeyAqdGhpcyB9OwogCisgICAgaWYgKGlz
TWFpblRocmVhZCgpKSB7CisgICAgICAgIG1fZ2xvYmFsU2NvcGUgPSBjcmVhdGVHbG9iYWxTY29w
ZSgpOworICAgICAgICBpZiAoIW1fZ2xvYmFsU2NvcGUpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgZG93bmNhc3Q8V29ya2VyTWFpblJ1bkxvb3A+KG1fcnVuTG9vcC5nZXQoKSkuc2V0
R2xvYmFsU2NvcGUoKm1fZ2xvYmFsU2NvcGUpOworCisgICAgICAgIFN0cmluZyBleGNlcHRpb25N
ZXNzYWdlOworICAgICAgICBldmFsdWF0ZVNjcmlwdElmTmVjZXNzYXJ5KGV4Y2VwdGlvbk1lc3Nh
Z2UpOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2V2YWx1YXRlQ2FsbGJhY2sgPSBXVEZN
b3ZlKG1fZXZhbHVhdGVDYWxsYmFjayksIG1lc3NhZ2UgPSBXVEZNb3ZlKGV4Y2VwdGlvbk1lc3Nh
Z2UpXSB7CisgICAgICAgICAgICBpZiAoZXZhbHVhdGVDYWxsYmFjaykKKyAgICAgICAgICAgICAg
ICBldmFsdWF0ZUNhbGxiYWNrKG1lc3NhZ2UpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKwogICAgIC8vIFByb3BhZ2F0ZSB0aGUgbWFpblRocmVhZCdzIGZlbnYgdG8gd29y
a2Vycy4KICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIEZsb2F0aW5nUG9pbnRFbnZpcm9u
bWVudDo6c2luZ2xldG9uKCkucHJvcGFnYXRlTWFpblRocmVhZEVudmlyb25tZW50KCk7CkBAIC0x
MjAsNyArMTU1LDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xl
dFRocmVhZCgpCiAKICAgICAgICAgc2NyaXB0Q29udHJvbGxlciA9IG1fZ2xvYmFsU2NvcGUtPnNj
cmlwdCgpOwogCi0gICAgICAgIGlmIChtX3J1bkxvb3AudGVybWluYXRlZCgpKSB7CisgICAgICAg
IGlmIChtX3J1bkxvb3AtPnRlcm1pbmF0ZWQoKSkgewogICAgICAgICAgICAgLy8gVGhlIHdvcmtl
ciB3YXMgdGVybWluYXRlZCBiZWZvcmUgdGhlIHRocmVhZCBoYWQgYSBjaGFuY2UgdG8gcnVuLiBT
aW5jZSB0aGUgY29udGV4dCBkaWRuJ3QgZXhpc3QgeWV0LAogICAgICAgICAgICAgLy8gZm9yYmlk
RXhlY3V0aW9uKCkgY291bGRuJ3QgYmUgY2FsbGVkIGZyb20gc3RvcCgpLgogICAgICAgICAgICAg
c2NyaXB0Q29udHJvbGxlci0+c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpOwpAQCAtMTMy
LDcgKzE2Nyw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRU
aHJlYWQoKQogICAgICAgICBzdGFydFJ1bm5pbmdEZWJ1Z2dlclRhc2tzKCk7CiAKICAgICAgICAg
Ly8gSWYgdGhlIHdvcmtlciB3YXMgc29tZWhvdyB0ZXJtaW5hdGVkIHdoaWxlIHByb2Nlc3Npbmcg
ZGVidWdnZXIgY29tbWFuZHMuCi0gICAgICAgIGlmIChtX3J1bkxvb3AudGVybWluYXRlZCgpKQor
ICAgICAgICBpZiAobV9ydW5Mb29wLT50ZXJtaW5hdGVkKCkpCiAgICAgICAgICAgICBzY3JpcHRD
b250cm9sbGVyLT5mb3JiaWRFeGVjdXRpb24oKTsKICAgICB9CiAKQEAgLTIyOCw3ICsyNjMsMTgg
QEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0b3AoRnVuY3Rpb248dm9pZCgpPiYmIHN0
b3BwZWRDYWxsYmFjaykKICAgICBpZiAoZ2xvYmFsU2NvcGUoKSkgewogICAgICAgICBnbG9iYWxT
Y29wZSgpLT5zY3JpcHQoKS0+c2NoZWR1bGVFeGVjdXRpb25UZXJtaW5hdGlvbigpOwogCi0gICAg
ICAgIG1fcnVuTG9vcC5wb3N0VGFza0FuZFRlcm1pbmF0ZSh7IFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCApIHsKKyAgICAgICAgaWYgKGlzPFdvcmtlck1haW5SdW5Mb29wPihtX3J1bkxvb3AuZ2V0KCkp
KSB7CisgICAgICAgICAgICBhdXRvIGdsb2JhbFNjb3BlID0gc3RkOjpleGNoYW5nZShtX2dsb2Jh
bFNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5wcmVwYXJlRm9yRGVz
dHJ1Y3Rpb24oKTsKKyAgICAgICAgICAgIGdsb2JhbFNjb3BlLT5jbGVhclNjcmlwdCgpOworICAg
ICAgICAgICAgbV9ydW5Mb29wLT50ZXJtaW5hdGUoKTsKKworICAgICAgICAgICAgaWYgKG1fc3Rv
cHBlZENhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoc3RkOjpleGNo
YW5nZShtX3N0b3BwZWRDYWxsYmFjaywgbnVsbHB0cikpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgbV9ydW5Mb29wLT5wb3N0VGFza0FuZFRlcm1pbmF0ZSh7IFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s6OkNsZWFudXBUYXNrLCBbXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCApIHsKICAgICAgICAgICAgIGF1dG8mIGdsb2JhbFNjb3BlID0g
ZG93bmNhc3Q8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpOwogCiAgICAgICAg
ICAgICBnbG9iYWxTY29wZS5wcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKQEAgLTI0NCwxMyArMjkw
LDE2IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpzdG9wKEZ1bmN0aW9uPHZvaWQoKT4m
JiBzdG9wcGVkQ2FsbGJhY2spCiAgICAgICAgIH0gfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgbV9ydW5Mb29wLnRlcm1pbmF0ZSgpOworICAgIG1fcnVuTG9vcC0+dGVybWluYXRlKCk7
CiB9CiAKIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpzdXNwZW5kKCkKIHsKICAgICBtX2lz
U3VzcGVuZGVkID0gdHJ1ZTsKLSAgICBtX3J1bkxvb3AucG9zdFRhc2soWyZdKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKSB7CisgICAgaWYgKGlzPFdvcmtlck1haW5SdW5Mb29wPihtX3J1bkxvb3Au
Z2V0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3J1bkxvb3AtPnBvc3RUYXNrKFsmXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBpZiAoZ2xvYmFsU2NvcGUoKSkKICAg
ICAgICAgICAgIGdsb2JhbFNjb3BlKCktPnN1c3BlbmQoKTsKIApAQCAtMjY1LDYgKzMxNCw5IEBA
IHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpyZXN1bWUoKQogewogICAgIEFTU0VSVChtX2lz
U3VzcGVuZGVkKTsKICAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgaWYgKGlzPFdvcmtl
ck1haW5SdW5Mb29wPihtX3J1bkxvb3AuZ2V0KCkpKQorICAgICAgICByZXR1cm47CisKICAgICBt
X3N1c3BlbnNpb25TZW1hcGhvcmUuc2lnbmFsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5oCmluZGV4IDFlZThhMzRiMjIyMTdkMGIyMDll
OTRjOTk5NTdhODJkYmIwZDA4MTYuLmJiM2JiNzUyZGI0YmEyMGRhZTJlY2ZkZGFhOGJlNTQ5OWQw
MjkzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJl
YWQuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXb3JrZXJS
dW5Mb29wLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkTW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2su
aD4KQEAgLTQwLDcgKzQxLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXb3JrZXJE
ZWJ1Z2dlclByb3h5OwogY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7Ci1jbGFzcyBXb3JrZXJSdW5M
b29wOwogCiBjbGFzcyBXb3JrZXJPcldvcmtsZXRUaHJlYWQgOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8V29ya2VyT3JXb3JrbGV0VGhyZWFkPiB7CiBwdWJsaWM6CkBAIC03MCw3ICs3MCw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlJ
bkFsbFRocmVhZHMoKTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFdvcmtlck9yV29ya2xl
dFRocmVhZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIGV4cGxpY2l0IFdvcmtlck9y
V29ya2xldFRocmVhZChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFdvcmtlclRocmVhZE1vZGUg
PSBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQpOwogICAgIHZvaWQgd29ya2VyT3JX
b3JrbGV0VGhyZWFkKCk7CiAKICAgICAvLyBFeGVjdXRlcyB0aGUgZXZlbnQgbG9vcCBmb3IgdGhl
IHdvcmtlciB0aHJlYWQuIERlcml2ZWQgY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdG8gcGVyZm9ybSBh
Y3Rpb25zIGJlZm9yZS9hZnRlciBlbnRlcmluZyB0aGUgZXZlbnQgbG9vcC4KQEAgLTg4LDcgKzg4
LDcgQEAgcHJpdmF0ZToKICAgICBMb2NrIG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9iYWxTY29wZUxv
Y2s7CiAgICAgUmVmUHRyPFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlPiBtX2dsb2JhbFNjb3Bl
OwogICAgIFJlZlB0cjxXVEY6OlRocmVhZD4gbV90aHJlYWQ7Ci0gICAgV29ya2VyUnVuTG9vcCBt
X3J1bkxvb3A7CisgICAgVW5pcXVlUmVmPFdvcmtlclJ1bkxvb3A+IG1fcnVuTG9vcDsKICAgICBG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiBtX2V2YWx1YXRlQ2FsbGJhY2s7CiAgICAgRnVu
Y3Rpb248dm9pZCgpPiBtX3N0b3BwZWRDYWxsYmFjazsKICAgICBCaW5hcnlTZW1hcGhvcmUgbV9z
dXNwZW5zaW9uU2VtYXBob3JlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5j
cHAKaW5kZXggYzk1NmRmOTU2YjBiNDEzYjZmMzFlNjhiMTI3MDExZTJjMDcyZTY0ZS4uNmJjMTI3
NzdlNDU4OWZhNDcxZGY2MDBmM2MwODgxMTY0NDkzM2ZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX2RlZmF1bHRNb2RlOwogICAgIH0KIAotICAgIGJvb2wgb3BlcmF0b3Io
KShjb25zdCBXb3JrZXJSdW5Mb29wOjpUYXNrJiB0YXNrKSBjb25zdAorICAgIGJvb2wgb3BlcmF0
b3IoKShjb25zdCBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpUYXNrJiB0YXNrKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1fZGVmYXVsdE1vZGUgfHwgbV9tb2RlID09IHRhc2subW9kZSgp
OwogICAgIH0KQEAgLTg2LDEyICs4NiwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kZWZhdWx0
TW9kZTsKIH07CiAKLVdvcmtlclJ1bkxvb3A6OldvcmtlclJ1bkxvb3AoKQorV29ya2VyRGVkaWNh
dGVkUnVuTG9vcDo6V29ya2VyRGVkaWNhdGVkUnVuTG9vcCgpCiAgICAgOiBtX3NoYXJlZFRpbWVy
KG1ha2VVbmlxdWU8V29ya2VyU2hhcmVkVGltZXI+KCkpCiB7CiB9CiAKLVdvcmtlclJ1bkxvb3A6
On5Xb3JrZXJSdW5Mb29wKCkKK1dvcmtlckRlZGljYXRlZFJ1bkxvb3A6On5Xb3JrZXJEZWRpY2F0
ZWRSdW5Mb29wKCkKIHsKICAgICBBU1NFUlQoIW1fbmVzdGVkQ291bnQpOwogfQpAQCAtMTEwLDcg
KzExMCw3IEBAIGNsYXNzIFJ1bkxvb3BTZXR1cCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UnVuTG9vcFNldHVwKTsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIElzRm9yRGVidWdnaW5nIHsg
Tm8sIFllcyB9OwotICAgIFJ1bkxvb3BTZXR1cChXb3JrZXJSdW5Mb29wJiBydW5Mb29wLCBJc0Zv
ckRlYnVnZ2luZyBpc0ZvckRlYnVnZ2luZykKKyAgICBSdW5Mb29wU2V0dXAoV29ya2VyRGVkaWNh
dGVkUnVuTG9vcCYgcnVuTG9vcCwgSXNGb3JEZWJ1Z2dpbmcgaXNGb3JEZWJ1Z2dpbmcpCiAgICAg
ICAgIDogbV9ydW5Mb29wKHJ1bkxvb3ApCiAgICAgICAgICwgbV9pc0ZvckRlYnVnZ2luZyhpc0Zv
ckRlYnVnZ2luZykKICAgICB7CkBAIC0xMzAsMzcgKzEzMCwzNiBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBtX3J1bkxvb3AubV9kZWJ1Z0NvdW50LS07CiAgICAgfQogcHJpdmF0ZToKLSAgICBXb3Jr
ZXJSdW5Mb29wJiBtX3J1bkxvb3A7CisgICAgV29ya2VyRGVkaWNhdGVkUnVuTG9vcCYgbV9ydW5M
b29wOwogICAgIElzRm9yRGVidWdnaW5nIG1faXNGb3JEZWJ1Z2dpbmcgeyBJc0ZvckRlYnVnZ2lu
Zzo6Tm8gfTsKIH07CiAKLXZvaWQgV29ya2VyUnVuTG9vcDo6cnVuKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKiBjb250ZXh0KQordm9pZCBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpydW4oV29y
a2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQpCiB7CiAgICAgUnVuTG9vcFNldHVwIHNl
dHVwKCp0aGlzLCBSdW5Mb29wU2V0dXA6OklzRm9yRGVidWdnaW5nOjpObyk7CiAgICAgTW9kZVBy
ZWRpY2F0ZSBtb2RlUHJlZGljYXRlKGRlZmF1bHRNb2RlKCkpOwogICAgIE1lc3NhZ2VRdWV1ZVdh
aXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKLSAgICAgICAgcmVzdWx0ID0gcnVuSW5Nb2RlKGNv
bnRleHQsIG1vZGVQcmVkaWNhdGUsIFdhaXRGb3JNZXNzYWdlKTsKKyAgICAgICAgcmVzdWx0ID0g
cnVuSW5Nb2RlKGNvbnRleHQsIG1vZGVQcmVkaWNhdGUpOwogICAgIH0gd2hpbGUgKHJlc3VsdCAh
PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKTsKICAgICBydW5DbGVhbnVwVGFza3MoY29udGV4dCk7
CiB9CiAKLU1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5EZWJ1Z2dl
ck1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmIGNvbnRleHQpCitNZXNzYWdlUXVldWVX
YWl0UmVzdWx0IFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnJ1bkluRGVidWdnZXJNb2RlKFdvcmtl
ck9yV29ya2xldEdsb2JhbFNjb3BlJiBjb250ZXh0KQogewogICAgIFJ1bkxvb3BTZXR1cCBzZXR1
cCgqdGhpcywgUnVuTG9vcFNldHVwOjpJc0ZvckRlYnVnZ2luZzo6WWVzKTsKLSAgICByZXR1cm4g
cnVuSW5Nb2RlKCZjb250ZXh0LCBNb2RlUHJlZGljYXRlIHsgZGVidWdnZXJNb2RlKCkgfSwgV2Fp
dEZvck1lc3NhZ2UpOworICAgIHJldHVybiBydW5Jbk1vZGUoJmNvbnRleHQsIE1vZGVQcmVkaWNh
dGUgeyBkZWJ1Z2dlck1vZGUoKSB9KTsKIH0KIAotTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3Jr
ZXJSdW5Mb29wOjpydW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQs
IGNvbnN0IFN0cmluZyYgbW9kZSwgV2FpdE1vZGUgd2FpdE1vZGUpCitib29sIFdvcmtlckRlZGlj
YXRlZFJ1bkxvb3A6OnJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIEFTU0VSVChtb2RlICE9IGRlYnVnZ2VyTW9k
ZSgpKTsKICAgICBSdW5Mb29wU2V0dXAgc2V0dXAoKnRoaXMsIFJ1bkxvb3BTZXR1cDo6SXNGb3JE
ZWJ1Z2dpbmc6Ok5vKTsKICAgICBNb2RlUHJlZGljYXRlIG1vZGVQcmVkaWNhdGUoU3RyaW5nIHsg
bW9kZSB9KTsKLSAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IHJ1bkluTW9kZShj
b250ZXh0LCBtb2RlUHJlZGljYXRlLCB3YWl0TW9kZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gcnVuSW5Nb2RlKGNvbnRleHQsIG1vZGVQcmVkaWNhdGUpICE9IE1lc3NhZ2VRdWV1
ZVdhaXRSZXN1bHQ6Ok1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQ7CiB9CiAKLU1lc3NhZ2VRdWV1ZVdh
aXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNj
b3BlKiBjb250ZXh0LCBjb25zdCBNb2RlUHJlZGljYXRlJiBwcmVkaWNhdGUsIFdhaXRNb2RlIHdh
aXRNb2RlKQorTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpy
dW5Jbk1vZGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQsIGNvbnN0IE1vZGVQ
cmVkaWNhdGUmIHByZWRpY2F0ZSkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJU
KGNvbnRleHQtPndvcmtlck9yV29ya2xldFRocmVhZCgpLT50aHJlYWQoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwpAQCAtMTg1LDcgKzE4NCw3IEBAIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29y
a2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250CiAg
ICAgdGltZW91dERlbGF5ID0gc3RkOjptYXgoMF9zLCBTZWNvbmRzKHRpbWVVbnRpbE5leHRDRlJ1
bkxvb3BUaW1lckluU2Vjb25kcykpOwogI2VuZGlmCiAKLSAgICBpZiAod2FpdE1vZGUgPT0gV2Fp
dEZvck1lc3NhZ2UgJiYgcHJlZGljYXRlLmlzRGVmYXVsdE1vZGUoKSAmJiBtX3NoYXJlZFRpbWVy
LT5pc0FjdGl2ZSgpKQorICAgIGlmIChwcmVkaWNhdGUuaXNEZWZhdWx0TW9kZSgpICYmIG1fc2hh
cmVkVGltZXItPmlzQWN0aXZlKCkpCiAgICAgICAgIHRpbWVvdXREZWxheSA9IHN0ZDo6bWluKHRp
bWVvdXREZWxheSwgbV9zaGFyZWRUaW1lci0+ZmlyZVRpbWVEZWxheSgpKTsKIAogICAgIGlmIChh
dXRvKiBzY3JpcHQgPSBjb250ZXh0LT5zY3JpcHQoKSkgewpAQCAtMjI1LDcgKzIyNCw3IEBAIE1l
c3NhZ2VRdWV1ZVdhaXRSZXN1bHQgV29ya2VyUnVuTG9vcDo6cnVuSW5Nb2RlKFdvcmtlck9yV29y
a2xldEdsb2JhbFNjb3BlKiBjb250CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBXb3Jr
ZXJSdW5Mb29wOjpydW5DbGVhbnVwVGFza3MoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUqIGNv
bnRleHQpCit2b2lkIFdvcmtlckRlZGljYXRlZFJ1bkxvb3A6OnJ1bkNsZWFudXBUYXNrcyhXb3Jr
ZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7
CiAgICAgQVNTRVJUKGNvbnRleHQtPndvcmtlck9yV29ya2xldFRocmVhZCgpLT50aHJlYWQoKSA9
PSAmVGhyZWFkOjpjdXJyZW50KCkpOwpAQCAtMjM5LDcgKzIzOCw3IEBAIHZvaWQgV29ya2VyUnVu
TG9vcDo6cnVuQ2xlYW51cFRhc2tzKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiBjb250ZXh0
KQogICAgIH0KIH0KIAotdm9pZCBXb3JrZXJSdW5Mb29wOjp0ZXJtaW5hdGUoKQordm9pZCBXb3Jr
ZXJEZWRpY2F0ZWRSdW5Mb29wOjp0ZXJtaW5hdGUoKQogewogICAgIG1fbWVzc2FnZVF1ZXVlLmtp
bGwoKTsKIH0KQEAgLTI0OSwxMiArMjQ4LDEyIEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAgICAgcG9zdFRhc2tGb3JN
b2RlKFdURk1vdmUodGFzayksIGRlZmF1bHRNb2RlKCkpOwogfQogCi12b2lkIFdvcmtlclJ1bkxv
b3A6OnBvc3RUYXNrQW5kVGVybWluYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJiB0
YXNrKQordm9pZCBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKIHsKICAgICBtX21lc3NhZ2VRdWV1
ZS5hcHBlbmRBbmRLaWxsKG1ha2VVbmlxdWU8VGFzaz4oV1RGTW92ZSh0YXNrKSwgZGVmYXVsdE1v
ZGUoKSkpOwogfQogCi12b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQordm9pZCBX
b3JrZXJEZWRpY2F0ZWRSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBtX21lc3NhZ2VR
dWV1ZS5hcHBlbmQobWFrZVVuaXF1ZTxUYXNrPihXVEZNb3ZlKHRhc2spLCBtb2RlKSk7CiB9CkBA
IC0yNjQsMTYgKzI2Myw1OCBAQCB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3REZWJ1Z2dlclRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2spCiAgICAgcG9zdFRhc2tGb3JNb2Rl
KFdURk1vdmUodGFzayksIGRlYnVnZ2VyTW9kZSgpKTsKIH0KIAotdm9pZCBXb3JrZXJSdW5Mb29w
OjpUYXNrOjpwZXJmb3JtVGFzayhXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSogY29udGV4dCkK
K3ZvaWQgV29ya2VyRGVkaWNhdGVkUnVuTG9vcDo6VGFzazo6cGVyZm9ybVRhc2soV29ya2VyT3JX
b3JrbGV0R2xvYmFsU2NvcGUqIGNvbnRleHQpCiB7CiAgICAgaWYgKCghY29udGV4dC0+aXNDbG9z
aW5nKCkgJiYgY29udGV4dC0+c2NyaXB0KCkgJiYgIWNvbnRleHQtPnNjcmlwdCgpLT5pc1Rlcm1p
bmF0aW5nRXhlY3V0aW9uKCkpIHx8IG1fdGFzay5pc0NsZWFudXBUYXNrKCkpCiAgICAgICAgIG1f
dGFzay5wZXJmb3JtVGFzaygqY29udGV4dCk7CiB9CiAKLVdvcmtlclJ1bkxvb3A6OlRhc2s6OlRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9k
ZSkKK1dvcmtlckRlZGljYXRlZFJ1bkxvb3A6OlRhc2s6OlRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKICAgICA6IG1fdGFzayhXVEZN
b3ZlKHRhc2spKQogICAgICwgbV9tb2RlKG1vZGUuaXNvbGF0ZWRDb3B5KCkpCiB7CiB9CiAKK1dv
cmtlck1haW5SdW5Mb29wOjpXb3JrZXJNYWluUnVuTG9vcCgpCit7Cit9CisKK3ZvaWQgV29ya2Vy
TWFpblJ1bkxvb3A6OnNldEdsb2JhbFNjb3BlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJiBn
bG9iYWxTY29wZSkKK3sKKyAgICBtX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlID0gbWFrZVdl
YWtQdHIoZ2xvYmFsU2NvcGUpOworfQorCit2b2lkIFdvcmtlck1haW5SdW5Mb29wOjpwb3N0VGFz
a0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYgdGFzaykKK3sKKyAg
ICBpZiAobV90ZXJtaW5hdGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBSdW5Mb29wOjptYWlu
KCkuZGlzcGF0Y2goW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB0YXNrID0gV1RGTW92
ZSh0YXNrKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMt
Pm1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUgfHwgd2Vha1RoaXMtPm1fdGVybWluYXRlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB3ZWFrVGhpcy0+bV90ZXJtaW5hdGVkID0g
dHJ1ZTsKKyAgICAgICAgdGFzay5wZXJmb3JtVGFzaygqd2Vha1RoaXMtPm1fd29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUpOworICAgIH0pOworfQorCit2b2lkIFdvcmtlck1haW5SdW5Mb29wOjpw
b3N0VGFza0Zvck1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmIHRhc2ssIGNvbnN0
IFN0cmluZyYgLyptb2RlKi8pCit7CisgICAgaWYgKG1fdGVybWluYXRlZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgdGFzayA9IFdURk1vdmUodGFzayldKCkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX3dvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlIHx8
IHdlYWtUaGlzLT5tX3Rlcm1pbmF0ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dGFzay5wZXJmb3JtVGFzaygqd2Vha1RoaXMtPm1fd29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUp
OworICAgIH0pOworfQorCitib29sIFdvcmtlck1haW5SdW5Mb29wOjpydW5Jbk1vZGUoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmKQoreworICAgIFJ1bkxvb3A6Om1h
aW4oKS5jeWNsZSgpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oCmluZGV4IDE0NWJlODNjMDc1
MDI2ZTQxZDJlMTkwN2M3MzYwMjYzNmJlMTVhNGYuLjMzZmUyNDE4OWFkMzkwOGM5MjIwMzI5ZmMw
M2I0ZTM0ZGNhNGQ4ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UnVuTG9vcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtNDIsMzAgKzQyLDQ5IEBAIGNsYXNzIFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlOwogY2xh
c3MgV29ya2VyU2hhcmVkVGltZXI7CiAKIGNsYXNzIFdvcmtlclJ1bkxvb3AgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdvcmtlclJ1bkxvb3AoKTsKLSAgICB+
V29ya2VyUnVuTG9vcCgpOworICAgIGVudW0gY2xhc3MgVHlwZSA6IGJvb2wgeyBXb3JrZXJEZWRp
Y2F0ZWRSdW5Mb29wLCBXb3JrZXJNYWluUnVuTG9vcCB9OworCisgICAgdmlydHVhbCB+V29ya2Vy
UnVuTG9vcCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgYm9vbCBydW5Jbk1vZGUoV29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIG1vZGUpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RUYXNrRm9yTW9kZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYgbW9kZSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB0ZXJtaW5hdGUoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHRlcm1pbmF0ZWQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CisKKyAgICB2b2lkIHBv
c3RUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7CisgICAgdm9pZCBwb3N0RGVi
dWdnZXJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRNb2RlKCk7CisKKyAgICB1bnNpZ25lZCBsb25n
IGNyZWF0ZVVuaXF1ZUlkKCkgeyByZXR1cm4gKyttX3VuaXF1ZUlkOyB9CisKK3ByaXZhdGU6Cisg
ICAgdW5zaWduZWQgbG9uZyBtX3VuaXF1ZUlkIHsgMCB9OworfTsKKworY2xhc3MgV29ya2VyRGVk
aWNhdGVkUnVuTG9vcCBmaW5hbCA6IHB1YmxpYyBXb3JrZXJSdW5Mb29wIHsKK3B1YmxpYzoKKyAg
ICBXb3JrZXJEZWRpY2F0ZWRSdW5Mb29wKCk7CisgICAgfldvcmtlckRlZGljYXRlZFJ1bkxvb3Ao
KTsKICAgICAKICAgICAvLyBCbG9ja2luZyBjYWxsLiBXYWl0cyBmb3IgdGFza3MgYW5kIHRpbWVy
cywgaW52b2tlcyB0aGUgY2FsbGJhY2tzLgogICAgIHZvaWQgcnVuKFdvcmtlck9yV29ya2xldEds
b2JhbFNjb3BlKik7CiAKLSAgICBlbnVtIFdhaXRNb2RlIHsgV2FpdEZvck1lc3NhZ2UsIERvbnRX
YWl0Rm9yTWVzc2FnZSB9OwotCiAgICAgLy8gV2FpdHMgZm9yIGEgc2luZ2xlIHRhc2sgYW5kIHJl
dHVybnMuCi0gICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCBydW5Jbk1vZGUoV29ya2VyT3JXb3Jr
bGV0R2xvYmFsU2NvcGUqLCBjb25zdCBTdHJpbmcmIG1vZGUsIFdhaXRNb2RlID0gV2FpdEZvck1l
c3NhZ2UpOworICAgIGJvb2wgcnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlKiwg
Y29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJ1
bkluRGVidWdnZXJNb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJik7CiAKLSAgICB2b2lk
IHRlcm1pbmF0ZSgpOwotICAgIGJvb2wgdGVybWluYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVz
c2FnZVF1ZXVlLmtpbGxlZCgpOyB9CisgICAgdm9pZCB0ZXJtaW5hdGUoKSBmaW5hbDsKKyAgICBi
b29sIHRlcm1pbmF0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX21lc3NhZ2VRdWV1ZS5raWxs
ZWQoKTsgfQorICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6Oldvcmtl
ckRlZGljYXRlZFJ1bkxvb3A7IH0KIAotICAgIHZvaWQgcG9zdFRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6VGFzayYmKTsKLSAgICB2b2lkIHBvc3RUYXNrQW5kVGVybWluYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2smJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0VGFz
a0Zvck1vZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayYmLCBjb25zdCBTdHJpbmcmIG1v
ZGUpOwotICAgIHZvaWQgcG9zdERlYnVnZ2VyVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrJiYpOwotCi0gICAgdW5zaWduZWQgbG9uZyBjcmVhdGVVbmlxdWVJZCgpIHsgcmV0dXJuICsr
bV91bmlxdWVJZDsgfQorICAgIHZvaWQgcG9zdFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayYmKSBmaW5hbDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RU
YXNrRm9yTW9kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrJiYsIGNvbnN0IFN0cmluZyYg
bW9kZSkgZmluYWw7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGRlZmF1bHRN
b2RlKCk7CiAgICAgY2xhc3MgVGFzayB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRh
c2spOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6CkBAIC03OCwxMiArOTcs
MTIgQEAgcHVibGljOgogICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIG1fdGFz
azsKICAgICAgICAgU3RyaW5nIG1fbW9kZTsKIAotICAgICAgICBmcmllbmQgY2xhc3MgV29ya2Vy
UnVuTG9vcDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFdvcmtlckRlZGljYXRlZFJ1bkxvb3A7CiAg
ICAgfTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUnVuTG9vcFNldHVwOwotICAgIE1l
c3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcnVuSW5Nb2RlKFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3Bl
KiwgY29uc3QgTW9kZVByZWRpY2F0ZSYsIFdhaXRNb2RlKTsKKyAgICBNZXNzYWdlUXVldWVXYWl0
UmVzdWx0IHJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSosIGNvbnN0IE1vZGVQ
cmVkaWNhdGUmKTsKIAogICAgIC8vIFJ1bnMgYW55IGNsZWFuIHVwIHRhc2tzIHRoYXQgYXJlIGN1
cnJlbnRseSBpbiB0aGUgcXVldWUgYW5kIHJldHVybnMuCiAgICAgLy8gVGhpcyBzaG91bGQgb25s
eSBiZSBjYWxsZWQgd2hlbiB0aGUgY29udGV4dCBpcyBjbG9zZWQgb3IgbG9vcCBoYXMgYmVlbiB0
ZXJtaW5hdGVkLgpAQCAtOTUsNyArMTE0LDMzIEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdvcmtlclNoYXJlZFRpbWVyPiBtX3NoYXJlZFRpbWVyOwogICAgIGludCBtX25lc3RlZENv
dW50IHsgMCB9OwogICAgIGludCBtX2RlYnVnQ291bnQgeyAwIH07Ci0gICAgdW5zaWduZWQgbG9u
ZyBtX3VuaXF1ZUlkIHsgMCB9OworfTsKKworY2xhc3MgV29ya2VyTWFpblJ1bkxvb3AgZmluYWwg
OiBwdWJsaWMgV29ya2VyUnVuTG9vcCwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdvcmtlck1haW5S
dW5Mb29wPiB7CitwdWJsaWM6CisgICAgV29ya2VyTWFpblJ1bkxvb3AoKTsKKworICAgIHZvaWQg
c2V0R2xvYmFsU2NvcGUoV29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGUmKTsKKworICAgIHZvaWQg
dGVybWluYXRlKCkgZmluYWwgeyBtX3Rlcm1pbmF0ZWQgPSB0cnVlOyB9CisgICAgYm9vbCB0ZXJt
aW5hdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90ZXJtaW5hdGVkOyB9CisKKyAgICBib29s
IHJ1bkluTW9kZShXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSosIGNvbnN0IFN0cmluZyYgbW9k
ZSk7CisgICAgdm9pZCBwb3N0VGFza0FuZFRlcm1pbmF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpUYXNrJiYpIGZpbmFsOworICAgIHZvaWQgcG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2smJiwgY29uc3QgU3RyaW5nJiBtb2RlKSBmaW5hbDsKKyAgICBUeXBlIHR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpXb3JrZXJNYWluUnVuTG9vcDsgfQorCitw
cml2YXRlOgorICAgIFdlYWtQdHI8V29ya2VyT3JXb3JrbGV0R2xvYmFsU2NvcGU+IG1fd29ya2Vy
T3JXb3JrbGV0R2xvYmFsU2NvcGU7CisgICAgYm9vbCBtX3Rlcm1pbmF0ZWQgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OldvcmtlckRlZGljYXRlZFJ1bkxvb3ApCisgICAgc3RhdGljIGJvb2wgaXNU
eXBlKGNvbnN0IFdlYkNvcmU6OldvcmtlclJ1bkxvb3AmIHJ1bkxvb3ApIHsgcmV0dXJuIHJ1bkxv
b3AudHlwZSgpID09IFdlYkNvcmU6OldvcmtlclJ1bkxvb3A6OlR5cGU6OldvcmtlckRlZGljYXRl
ZFJ1bkxvb3A7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXb3JrZXJNYWluUnVuTG9vcCkKKyAgICBzdGF0aWMg
Ym9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6V29ya2VyUnVuTG9vcCYgcnVuTG9vcCkgeyByZXR1
cm4gcnVuTG9vcC50eXBlKCkgPT0gV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6VHlwZTo6V29ya2Vy
TWFpblJ1bkxvb3A7IH0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCBjM2Y1NWViMjFkNTgxODY5M2ZmMDZmODY0
YmEyMDhiZmZkMDFlMzBiLi4zOGUyM2RhODk2ZDUwMzEyMjZjMTJjM2MyNzdjOWRiMTlhODMwNmQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC02MCw3ICs2MCw4
IEBAIFdvcmtlclBhcmFtZXRlcnMgV29ya2VyUGFyYW1ldGVyczo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QKICAgICAgICAgcmVmZXJyZXJQb2xpY3ksCiAgICAgICAgIHdvcmtlclR5cGUsCiAgICAgICAg
IGNyZWRlbnRpYWxzLAotICAgICAgICBzZXR0aW5nc1ZhbHVlcy5pc29sYXRlZENvcHkoKQorICAg
ICAgICBzZXR0aW5nc1ZhbHVlcy5pc29sYXRlZENvcHkoKSwKKyAgICAgICAgd29ya2VyVGhyZWFk
TW9kZQogICAgIH07CiB9CiAKQEAgLTg2LDcgKzg3LDcgQEAgV29ya2VyVGhyZWFkU3RhcnR1cERh
dGE6OldvcmtlclRocmVhZFN0YXJ0dXBEYXRhKGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmIG90aGVy
LAogfQogCiBXb3JrZXJUaHJlYWQ6OldvcmtlclRocmVhZChjb25zdCBXb3JrZXJQYXJhbWV0ZXJz
JiBwYXJhbXMsIGNvbnN0IFNjcmlwdEJ1ZmZlciYgc291cmNlQ29kZSwgV29ya2VyTG9hZGVyUHJv
eHkmIHdvcmtlckxvYWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiB3b3JrZXJEZWJ1Z2dl
clByb3h5LCBXb3JrZXJSZXBvcnRpbmdQcm94eSYgd29ya2VyUmVwb3J0aW5nUHJveHksIFdvcmtl
clRocmVhZFN0YXJ0TW9kZSBzdGFydE1vZGUsIGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmln
aW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiBjb25uZWN0aW9uUHJveHksIFNvY2tl
dFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlciwgSlNDOjpSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdz
KQotICAgIDogV29ya2VyT3JXb3JrbGV0VGhyZWFkKHBhcmFtcy5pZGVudGlmaWVyLmlzb2xhdGVk
Q29weSgpKQorICAgIDogV29ya2VyT3JXb3JrbGV0VGhyZWFkKHBhcmFtcy5pZGVudGlmaWVyLmlz
b2xhdGVkQ29weSgpLCBwYXJhbXMud29ya2VyVGhyZWFkTW9kZSkKICAgICAsIG1fd29ya2VyTG9h
ZGVyUHJveHkod29ya2VyTG9hZGVyUHJveHkpCiAgICAgLCBtX3dvcmtlckRlYnVnZ2VyUHJveHko
d29ya2VyRGVidWdnZXJQcm94eSkKICAgICAsIG1fd29ya2VyUmVwb3J0aW5nUHJveHkod29ya2Vy
UmVwb3J0aW5nUHJveHkpCkBAIC0xMDYsNiArMTA3LDE1IEBAIFdvcmtlclRocmVhZDo6fldvcmtl
clRocmVhZCgpCiAKIFJlZjxUaHJlYWQ+IFdvcmtlclRocmVhZDo6Y3JlYXRlVGhyZWFkKCkKIHsK
KyAgICBpZiAoaXM8V29ya2VyTWFpblJ1bkxvb3A+KHJ1bkxvb3AoKSkpIHsKKyAgICAgICAgLy8g
VGhpcyB3b3JrZXIgc2hvdWxkIHJ1biBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH1dIHsKKyAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPndvcmtlck9yV29ya2xldFRocmVhZCgpOworICAgICAg
ICB9KTsKKyAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgcmV0dXJuIFRo
cmVhZDo6Y3VycmVudCgpOworICAgIH0KKwogICAgIHJldHVybiBUaHJlYWQ6OmNyZWF0ZShpc1Nl
cnZpY2VXb3JrZXJUaHJlYWQoKSA/ICJXZWJDb3JlOiBTZXJ2aWNlIFdvcmtlciIgOiAiV2ViQ29y
ZTogV29ya2VyIiwgW3RoaXNdIHsKICAgICAgICAgd29ya2VyT3JXb3JrbGV0VGhyZWFkKCk7CiAg
ICAgfSwgVGhyZWFkVHlwZTo6SmF2YVNjcmlwdCk7CkBAIC0xMzYsOCArMTQ2LDggQEAgdm9pZCBX
b3JrZXJUaHJlYWQ6OmV2YWx1YXRlU2NyaXB0SWZOZWNlc3NhcnkoU3RyaW5nJiBleGNlcHRpb25N
ZXNzYWdlKQogICAgICAgICBhdXRvIHNjcmlwdEZldGNoZXIgPSBXb3JrZXJTY3JpcHRGZXRjaGVy
OjpjcmVhdGUoZ2xvYmFsU2NvcGUoKS0+Y3JlZGVudGlhbHMoKSwgZ2xvYmFsU2NvcGUoKS0+ZGVz
dGluYXRpb24oKSwgZ2xvYmFsU2NvcGUoKS0+cmVmZXJyZXJQb2xpY3koKSk7CiAgICAgICAgIFNj
cmlwdFNvdXJjZUNvZGUgc291cmNlQ29kZShtX3N0YXJ0dXBEYXRhLT5zb3VyY2VDb2RlLCBVUkwo
bV9zdGFydHVwRGF0YS0+cGFyYW1zLnNjcmlwdFVSTCksIHsgfSwgSlNDOjpTb3VyY2VQcm92aWRl
clNvdXJjZVR5cGU6Ok1vZHVsZSwgc2NyaXB0RmV0Y2hlci5jb3B5UmVmKCkpOwogICAgICAgICBz
b3VyY2VQcm92aWRlciA9IG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PFNjcmlwdEJ1ZmZlclNvdXJj
ZVByb3ZpZGVyJj4oc291cmNlQ29kZS5wcm92aWRlcigpKSk7Ci0gICAgICAgIE1lc3NhZ2VRdWV1
ZVdhaXRSZXN1bHQgcmVzdWx0ID0gZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPmxvYWRNb2R1bGVT
eW5jaHJvbm91c2x5KHNjcmlwdEZldGNoZXIuZ2V0KCksIHNvdXJjZUNvZGUpOwotICAgICAgICBp
ZiAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKKyAgICAgICAgYm9vbCBzdWNj
ZXNzID0gZ2xvYmFsU2NvcGUoKS0+c2NyaXB0KCktPmxvYWRNb2R1bGVTeW5jaHJvbm91c2x5KHNj
cmlwdEZldGNoZXIuZ2V0KCksIHNvdXJjZUNvZGUpOworICAgICAgICBpZiAoc3VjY2Vzcykgewog
ICAgICAgICAgICAgaWYgKHN0ZDo6b3B0aW9uYWw8TG9hZGFibGVTY3JpcHQ6OkVycm9yPiBlcnJv
ciA9IHNjcmlwdEZldGNoZXItPmVycm9yKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc3RkOjpv
cHRpb25hbDxMb2FkYWJsZVNjcmlwdDo6Q29uc29sZU1lc3NhZ2U+IG1lc3NhZ2UgPSBlcnJvci0+
Y29uc29sZU1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbk1lc3NhZ2UgPSBt
ZXNzYWdlLT5tZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXgg
NmU5ZGNlNTkzYjFkMzEzYTVmMDhkMTllOWJhNzRhYTg2MDEyMmZhZS4uMTE4YTUxOThmZTdlNTUw
OGM2NGM5ZmRkYzk5ZWYwYjE4NzUzMDVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRo
cmVhZC5oCkBAIC03Miw2ICs3Miw3IEBAIHB1YmxpYzoKICAgICBXb3JrZXJUeXBlIHdvcmtlclR5
cGU7CiAgICAgRmV0Y2hSZXF1ZXN0Q3JlZGVudGlhbHMgY3JlZGVudGlhbHM7CiAgICAgU2V0dGlu
Z3M6OlZhbHVlcyBzZXR0aW5nc1ZhbHVlczsKKyAgICBXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRo
cmVhZE1vZGUgeyBXb3JrZXJUaHJlYWRNb2RlOjpDcmVhdGVOZXdUaHJlYWQgfTsKIAogICAgIFdv
cmtlclBhcmFtZXRlcnMgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWRNb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlclRocmVhZE1vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTg2NzJmMWRiOTZkMTkxNzE2
MjdkOTMxMjU4ZWVjNDc5MThjYzNhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWRNb2RlLmgKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2VudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2wgeyBVc2VN
YWluVGhyZWFkLCBDcmVhdGVOZXdUaHJlYWQgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApp
bmRleCA4NmM2M2UxNWQwNzZjMjFmZmEyNGI1MDFhNGQyOGZiMTg1NDI2ZjY2Li44NWYzMDg5NGQ3
ZGNkYWE1YWUxNzBmNzExOWFjZmRlM2E1MzlhNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApA
QCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpyZW1vdmVT
ZXJ2aWNlV29ya2VyQ2xpZW50KFNlcnZpY2VXb3JrZXJDbGllbnQmIGNsCiAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vU2VydmljZVdvcmtlci8jdXBkYXRlLXNlcnZpY2Utd29ya2VyLWV4dGVuZGVk
LWV2ZW50cy1zZXQtYWxnb3JpdGhtCiB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6dXBk
YXRlRXh0ZW5kZWRFdmVudHNTZXQoRXh0ZW5kYWJsZUV2ZW50KiBuZXdFdmVudCkKIHsKLSAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNDb250ZXh0VGhyZWFkKCkpOwog
ICAgIEFTU0VSVCghbmV3RXZlbnQgfHwgIW5ld0V2ZW50LT5pc0JlaW5nRGlzcGF0Y2hlZCgpKTsK
ICAgICBib29sIGhhZFBlbmRpbmdFdmVudHMgPSBoYXNQZW5kaW5nRXZlbnRzKCk7CiAgICAgbV9l
eHRlbmRlZEV2ZW50cy5yZW1vdmVBbGxNYXRjaGluZyhbXShhdXRvJiBldmVudCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCA5NjQ4NjI1MzY3Y2MxNmI1ODliZGZkNzBlYTA1YmJh
MWYxNDQ4MDdkLi5lNzE0NjAzZjM1NjQwOTE4YWUwNmE5YWZhOTFmODE5NzdkNTdhMzZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtNzMsOCArNzMsMjggQEAgcHJpdmF0ZToKIC8v
IEZJWE1FOiBVc2UgYSB2YWxpZCBXb3JrZXJPYmplY3RQcm94eQogLy8gRklYTUU6IFVzZSB2YWxp
ZCBydW50aW1lIGZsYWdzCiAKLVNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VXb3JrZXJUaHJl
YWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3JrZXJE
YXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0aW5nczo6VmFs
dWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxvYWRlclByb3h5LCBXb3Jr
ZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Q
cm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciogc29ja2V0UHJvdmlkZXIp
Ci0gICAgOiBXb3JrZXJUaHJlYWQoeyBjb250ZXh0RGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5n
KCksICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3Jl
YXRlSWRlbnRpZmllcigpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygp
LT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLCBjb250ZXh0RGF0YS5jb250ZW50U2VjdXJp
dHlQb2xpY3ksIGZhbHNlLCBjb250ZXh0RGF0YS5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LCBN
b25vdG9uaWNUaW1lOjpub3coKSwgeyB9LCBjb250ZXh0RGF0YS53b3JrZXJUeXBlLCBGZXRjaFJl
cXVlc3RDcmVkZW50aWFsczo6T21pdCwgc2V0dGluZ3NWYWx1ZXMgfSwgY29udGV4dERhdGEuc2Ny
aXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgY29udGV4dERh
dGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBp
ZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3Jl
YXRlQWxsRW5hYmxlZCgpKQorc3RhdGljIFdvcmtlclBhcmFtZXRlcnMgZ2VuZXJhdGVXb3JrZXJQ
YXJhbWV0ZXJzKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgY29udGV4dERhdGEsIFN0
cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBjb25z
dCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcykKK3sKKyAgICByZXR1cm4geworICAg
ICAgICBjb250ZXh0RGF0YS5zY3JpcHRVUkwsCisgICAgICAgIGVtcHR5U3RyaW5nKCksCisgICAg
ICAgICJzZXJ2aWNld29ya2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3Jl
YXRlSWRlbnRpZmllcigpLAorICAgICAgICBXVEZNb3ZlKHVzZXJBZ2VudCksCisgICAgICAgIHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVneSgpLT5pc09uTGluZSgpLAorICAgICAg
ICBjb250ZXh0RGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksCisgICAgICAgIGZhbHNlLAorICAg
ICAgICBjb250ZXh0RGF0YS5jcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LAorICAgICAgICBNb25v
dG9uaWNUaW1lOjpub3coKSwKKyAgICAgICAgeyB9LAorICAgICAgICBjb250ZXh0RGF0YS53b3Jr
ZXJUeXBlLAorICAgICAgICBGZXRjaFJlcXVlc3RDcmVkZW50aWFsczo6T21pdCwKKyAgICAgICAg
c2V0dGluZ3NWYWx1ZXMsCisgICAgICAgIHdvcmtlclRocmVhZE1vZGUKKyAgICB9OworfQorCitT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJDb250
ZXh0RGF0YSYmIGNvbnRleHREYXRhLCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIFN0
cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSB3b3JrZXJUaHJlYWRNb2RlLCBjb25z
dCBTZXR0aW5nczo6VmFsdWVzJiBzZXR0aW5nc1ZhbHVlcywgV29ya2VyTG9hZGVyUHJveHkmIGxv
YWRlclByb3h5LCBXb3JrZXJEZWJ1Z2dlclByb3h5JiBkZWJ1Z2dlclByb3h5LCBJREJDbGllbnQ6
OklEQkNvbm5lY3Rpb25Qcm94eSogaWRiQ29ubmVjdGlvblByb3h5LCBTb2NrZXRQcm92aWRlciog
c29ja2V0UHJvdmlkZXIpCisgICAgOiBXb3JrZXJUaHJlYWQoZ2VuZXJhdGVXb3JrZXJQYXJhbWV0
ZXJzKGNvbnRleHREYXRhLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHdvcmtlclRocmVhZE1vZGUsIHNl
dHRpbmdzVmFsdWVzKSwgY29udGV4dERhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQ
cm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJl
YWRTdGFydE1vZGU6Ok5vcm1hbCwgY29udGV4dERhdGEucmVnaXN0cmF0aW9uLmtleS50b3BPcmln
aW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFBy
b3ZpZGVyLCBKU0M6OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9z
ZXJ2aWNlV29ya2VySWRlbnRpZmllcihjb250ZXh0RGF0YS5zZXJ2aWNlV29ya2VySWRlbnRpZmll
cikKICAgICAsIG1fam9iRGF0YUlkZW50aWZpZXIoY29udGV4dERhdGEuam9iRGF0YUlkZW50aWZp
ZXIpCiAgICAgLCBtX2NvbnRleHREYXRhKGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNvbnRleHRE
YXRhKSkpCkBAIC0xOTQsNyArMjE0LDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1
ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCkKIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpm
aW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChnbG9iYWxTY29wZSgpLT5pc0NvbnRleHRUaHJlYWQoKSk7CiAgICAgbV9k
b2VzSGFuZGxlRmV0Y2ggPSBnbG9iYWxTY29wZSgpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5h
bWVzKCkuZmV0Y2hFdmVudCk7CiB9CiAKQEAgLTIyNiw2ICsyNDYsMTAgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpzdGFydEZldGNoRXZlbnRNb25pdG9yaW5nKCkKIAogdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVhdFRpbWVyKCkKIHsKKyAgICAvLyBXZSBjYW5ub3Qg
ZGV0ZWN0IHJlc3BvbnNpdmVuZXNzIGZvciBzZXJ2aWNlIHdvcmtlcnMgcnVubmluZyBvbiB0aGUg
bWFpbiB0aHJlYWQgYnkgdXNpbmcgYSBtYWluIHRocmVhZCB0aW1lci4KKyAgICBpZiAoaXM8V29y
a2VyTWFpblJ1bkxvb3A+KHJ1bkxvb3AoKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICht
X2hlYXJ0QmVhdFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5oCmluZGV4IGY4MTI5MDlkZjk1NDBmYTcwMWNlMmJjODVkODQwNjA1NzVkYzgy
MWYuLjIxODI5NTU3YzA2NDRiNDcwYWYwYjcxODlhMGQ1ZmJiNDZmODcwZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcnVu
RXZlbnRMb29wKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2Vy
dmljZVdvcmtlclRocmVhZChTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtl
ckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBjb25zdCBTZXR0aW5nczo6VmFsdWVzJiwgV29y
a2VyTG9hZGVyUHJveHkmLCBXb3JrZXJEZWJ1Z2dlclByb3h5JiwgSURCQ2xpZW50OjpJREJDb25u
ZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciopOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZp
Y2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJE
YXRhJiYsIFN0cmluZyYmIHVzZXJBZ2VudCwgV29ya2VyVGhyZWFkTW9kZSwgY29uc3QgU2V0dGlu
Z3M6OlZhbHVlcyYsIFdvcmtlckxvYWRlclByb3h5JiwgV29ya2VyRGVidWdnZXJQcm94eSYsIElE
QkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqKTsKIAogICAgIGJv
b2wgaXNTZXJ2aWNlV29ya2VyVGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZvaWQgZmluaXNoZWRFdmFsdWF0aW5nU2NyaXB0KCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA2YTRiMmE4ZDY3MzFlMTY0OTg1ZDU1ODdjZGU1
MGY4MDY1YTAzZmE4Li40MWI2ZjI1MWY1NDI0NjRiNTVlNGVhNTU4NjU1N2RlMTEwNTUxZGI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTkzLDEzICs5MywxMyBA
QCBzdGF0aWMgSGFzaFNldDxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkqPiYgYWxsU2VydmljZVdv
cmtlclRocmVhZFByb3hpZXMoKQogICAgIHJldHVybiBzZXQ7CiB9CiAKLVNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5KFBhZ2VDb25maWd1cmF0aW9uJiYg
cGFnZUNvbmZpZ3VyYXRpb24sIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmIGNvbnRleHREYXRh
LCBTZXJ2aWNlV29ya2VyRGF0YSYmIHdvcmtlckRhdGEsIFN0cmluZyYmIHVzZXJBZ2VudCwgQ2Fj
aGVTdG9yYWdlUHJvdmlkZXImIGNhY2hlU3RvcmFnZVByb3ZpZGVyLCBTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgc3RvcmFnZUJsb2NraW5nUG9saWN5KQorU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpT
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJh
dGlvbiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYgY29udGV4dERhdGEsIFNlcnZpY2VXb3Jr
ZXJEYXRhJiYgd29ya2VyRGF0YSwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2Rl
IHdvcmtlclRocmVhZE1vZGUsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiBjYWNoZVN0b3JhZ2VQcm92
aWRlciwgU3RvcmFnZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSkKICAgICA6
IG1fcGFnZShjcmVhdGVQYWdlRm9yU2VydmljZVdvcmtlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uKSwgY29udGV4dERhdGEsIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSkpCiAgICAgLCBtX2RvY3Vt
ZW50KCptX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCiAjaWYgRU5BQkxFKFJFTU9URV9J
TlNQRUNUT1IpCiAgICAgLCBtX3JlbW90ZURlYnVnZ2FibGUobWFrZVVuaXF1ZTxTZXJ2aWNlV29y
a2VyRGVidWdnYWJsZT4oKnRoaXMsIGNvbnRleHREYXRhKSkKICNlbmRpZgotICAgICwgbV9zZXJ2
aWNlV29ya2VyVGhyZWFkKFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmNyZWF0ZShXVEZNb3ZlKGNvbnRl
eHREYXRhKSwgV1RGTW92ZSh3b3JrZXJEYXRhKSwgV1RGTW92ZSh1c2VyQWdlbnQpLCBtX2RvY3Vt
ZW50LT5zZXR0aW5nc1ZhbHVlcygpLCAqdGhpcywgKnRoaXMsIGlkYkNvbm5lY3Rpb25Qcm94eSht
X2RvY3VtZW50KSwgbV9kb2N1bWVudC0+c29ja2V0UHJvdmlkZXIoKSkpCisgICAgLCBtX3NlcnZp
Y2VXb3JrZXJUaHJlYWQoU2VydmljZVdvcmtlclRocmVhZDo6Y3JlYXRlKFdURk1vdmUoY29udGV4
dERhdGEpLCBXVEZNb3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKHVzZXJBZ2VudCksIHdvcmtlclRo
cmVhZE1vZGUsIG1fZG9jdW1lbnQtPnNldHRpbmdzVmFsdWVzKCksICp0aGlzLCAqdGhpcywgaWRi
Q29ubmVjdGlvblByb3h5KG1fZG9jdW1lbnQpLCBtX2RvY3VtZW50LT5zb2NrZXRQcm92aWRlcigp
KSkKICAgICAsIG1fY2FjaGVTdG9yYWdlUHJvdmlkZXIoY2FjaGVTdG9yYWdlUHJvdmlkZXIpCiAg
ICAgLCBtX2luc3BlY3RvclByb3h5KCp0aGlzKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkuaAppbmRleCBlMjhkOWU0NzQ2NTQwMzRmYzVjN2FiOWRmMzNmMjYzNmU1OWI5MjAyLi4z
MDQzZGIxM2YwNjc1YjliY2RiNWI2MzgyZjRkODI5OTBjNmUzMzBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBGZXRjaExvYWRlckNs
aWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogY2xhc3MgU2VydmljZVdvcmtlckluc3Bl
Y3RvclByb3h5Owogc3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKK2VudW0gY2xhc3Mg
V29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHk+LCBwdWJsaWMgV29ya2VyTG9hZGVyUHJveHksIHB1YmxpYyBXb3JrZXJEZWJ1Z2dlclBy
b3h5IHsKIHB1YmxpYzoKQEAgLTg1LDcgKzg2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKTsKIAogcHJpdmF0ZToKLSAg
ICBXRUJDT1JFX0VYUE9SVCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoUGFnZUNvbmZpZ3VyYXRp
b24mJiwgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIFN0
cmluZyYmIHVzZXJBZ2VudCwgQ2FjaGVTdG9yYWdlUHJvdmlkZXImLCBTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kpOworICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdl
Q29uZmlndXJhdGlvbiYmLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2VydmljZVdvcmtl
ckRhdGEmJiwgU3RyaW5nJiYgdXNlckFnZW50LCBXb3JrZXJUaHJlYWRNb2RlLCBDYWNoZVN0b3Jh
Z2VQcm92aWRlciYsIFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKGJvb2wgaXNPbkxpbmUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmlu
ZGV4IGNjYjk1YmQyNWJiNDNhOWNmNGE4ZjI4NDIyZjNkMjIwYzJmOTY2MjYuLjNkYTA0NDJkOWYz
ZTBlYTkzNDI1MDczNGFjMDhmZWRkNTU4YTM1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zMjcsMTMgKzMyNywxNCBA
QCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpyZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlcgogICAgIG1fc2VydmVyLnJlbW92ZUNsaWVudFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24oKnRoaXMsIGlkZW50aWZpZXIpOwogfQogCi1TV1NlcnZlcjo6
U1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJv
Y2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFz
ZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudCwgU29mdFVwZGF0ZUNhbGxiYWNrJiYgc29mdFVwZGF0ZUNhbGxiYWNrLCBD
cmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrJiYgY2FsbGJhY2ssIEFwcEJvdW5kRG9tYWlu
c0NhbGxiYWNrJiYgYXBwQm91bmREb21haW5zQ2FsbGJhY2spCitTV1NlcnZlcjo6U1dTZXJ2ZXIo
VW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYgb3JpZ2luU3RvcmUsIGJvb2wgcHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRpb25EYXRhYmFzZURpcmVjdG9y
eSwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJz
T25NYWluVGhyZWFkRm9yVGVzdGluZywgYm9vbCBoYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQs
IFNvZnRVcGRhdGVDYWxsYmFjayYmIHNvZnRVcGRhdGVDYWxsYmFjaywgQ3JlYXRlQ29udGV4dENv
bm5lY3Rpb25DYWxsYmFjayYmIGNhbGxiYWNrLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmIGFw
cEJvdW5kRG9tYWluc0NhbGxiYWNrKQogICAgIDogbV9vcmlnaW5TdG9yZShXVEZNb3ZlKG9yaWdp
blN0b3JlKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1faXNQcm9jZXNz
VGVybWluYXRpb25EZWxheUVuYWJsZWQocHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkKQog
ICAgICwgbV9jcmVhdGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrKFdURk1vdmUoY2FsbGJhY2sp
KQogICAgICwgbV9zb2Z0VXBkYXRlQ2FsbGJhY2soV1RGTW92ZShzb2Z0VXBkYXRlQ2FsbGJhY2sp
KQogICAgICwgbV9hcHBCb3VuZERvbWFpbnNDYWxsYmFjayhXVEZNb3ZlKGFwcEJvdW5kRG9tYWlu
c0NhbGxiYWNrKSkKKyAgICAsIG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRG
b3JUZXN0aW5nKHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZykK
ICAgICAsIG1faGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50KGhhc1NlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudCkKIHsKICAgICBSRUxFQVNFX0xPR19JRihyZWdpc3RyYXRpb25EYXRhYmFzZURpcmVj
dG9yeS5pc0VtcHR5KCksIFNlcnZpY2VXb3JrZXIsICJObyBwYXRoIHRvIHN0b3JlIHRoZSBzZXJ2
aWNlIHdvcmtlciByZWdpc3RyYXRpb25zIik7CkBAIC03MzAsNyArNzMxLDggQEAgdm9pZCBTV1Nl
cnZlcjo6aW5zdGFsbENvbnRleHREYXRhKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYg
ZGF0YSkKICAgICBhdXRvIHJlc3VsdCA9IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLmFk
ZChkYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3b3JrZXIuY29weVJlZigpKTsKICAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCi0gICAgY29ubmVjdGlv
bi0+aW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGRhdGEsIHdvcmtlci0+ZGF0YSgpLCB1c2Vy
QWdlbnQpOworICAgIGF1dG8gd29ya2VyVGhyZWFkTW9kZSA9IG1fc2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nID8gV29ya2VyVGhyZWFkTW9kZTo6VXNlTWFpblRo
cmVhZCA6IFdvcmtlclRocmVhZE1vZGU6OkNyZWF0ZU5ld1RocmVhZDsKKyAgICBjb25uZWN0aW9u
LT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoZGF0YSwgd29ya2VyLT5kYXRhKCksIHVzZXJB
Z2VudCwgd29ya2VyVGhyZWFkTW9kZSk7CiB9CiAKIHZvaWQgU1dTZXJ2ZXI6OnJ1blNlcnZpY2VX
b3JrZXJJZk5lY2Vzc2FyeShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBSdW5T
ZXJ2aWNlV29ya2VyQ2FsbGJhY2smJiBjYWxsYmFjaykKQEAgLTc5OCw3ICs4MDAsOCBAQCBib29s
IFNXU2VydmVyOjpydW5TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIpCiAgICAgYXV0byogY29udGV4dENvbm5lY3Rpb24gPSB3b3JrZXItPmNvbnRleHRDb25u
ZWN0aW9uKCk7CiAgICAgQVNTRVJUKGNvbnRleHRDb25uZWN0aW9uKTsKIAotICAgIGNvbnRleHRD
b25uZWN0aW9uLT5pbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQod29ya2VyLT5jb250ZXh0RGF0
YSgpLCB3b3JrZXItPmRhdGEoKSwgd29ya2VyLT51c2VyQWdlbnQoKSk7CisgICAgYXV0byB3b3Jr
ZXJUaHJlYWRNb2RlID0gbV9zaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRl
c3RpbmcgPyBXb3JrZXJUaHJlYWRNb2RlOjpVc2VNYWluVGhyZWFkIDogV29ya2VyVGhyZWFkTW9k
ZTo6Q3JlYXRlTmV3VGhyZWFkOworICAgIGNvbnRleHRDb25uZWN0aW9uLT5pbnN0YWxsU2Vydmlj
ZVdvcmtlckNvbnRleHQod29ya2VyLT5jb250ZXh0RGF0YSgpLCB3b3JrZXItPmRhdGEoKSwgd29y
a2VyLT51c2VyQWdlbnQoKSwgd29ya2VyVGhyZWFkTW9kZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
aAppbmRleCA5YzY1MzI2YzI2NjNjYTVmYzZjOTFkMDNlNTM1ZDQwNzVmYzc4NzRiLi4yNzU5ZDgy
OTQ0NGZkZjE5MDVlY2Y2M2MyZjUyN2JiNjg5YTQ4ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclR5cGVz
LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkTW9kZS5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkBAIC0xMjgsNyArMTI5LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFNvZnRVcGRhdGVDYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckpvYkRhdGEmJiBqb2JEYXRhLCBib29sIHNo
b3VsZFJlZnJlc2hDYWNoZSwgUmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik+JiYpPjsKICAgICB1c2luZyBDcmVh
dGVDb250ZXh0Q29ubmVjdGlvbkNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+OwogICAg
IHVzaW5nIEFwcEJvdW5kRG9tYWluc0NhbGxiYWNrID0gRnVuY3Rpb248dm9pZChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKT47
Ci0gICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoVW5pcXVlUmVmPFNXT3JpZ2luU3RvcmU+JiYs
IGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiByZWdpc3RyYXRp
b25EYXRhYmFzZURpcmVjdG9yeSwgUEFMOjpTZXNzaW9uSUQsIGJvb2wgaGFzU2VydmljZVdvcmtl
ckVudGl0bGVtZW50LCBTb2Z0VXBkYXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENvbm5lY3Rp
b25DYWxsYmFjayYmLCBBcHBCb3VuZERvbWFpbnNDYWxsYmFjayYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBTV1NlcnZlcihVbmlxdWVSZWY8U1dPcmlnaW5TdG9yZT4mJiwgYm9vbCBwcm9jZXNzVGVy
bWluYXRpb25EZWxheUVuYWJsZWQsIFN0cmluZyYmIHJlZ2lzdHJhdGlvbkRhdGFiYXNlRGlyZWN0
b3J5LCBQQUw6OlNlc3Npb25JRCwgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRo
cmVhZEZvclRlc3RpbmcsIGJvb2wgaGFzU2VydmljZVdvcmtlckVudGl0bGVtZW50LCBTb2Z0VXBk
YXRlQ2FsbGJhY2smJiwgQ3JlYXRlQ29udGV4dENvbm5lY3Rpb25DYWxsYmFjayYmLCBBcHBCb3Vu
ZERvbWFpbnNDYWxsYmFjayYmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwog
CkBAIC0yODEsNiArMjgyLDcgQEAgcHJpdmF0ZToKICAgICBBcHBCb3VuZERvbWFpbnNDYWxsYmFj
ayBtX2FwcEJvdW5kRG9tYWluc0NhbGxiYWNrOwogICAgIAogICAgIEhhc2hTZXQ8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IG1fYXBwQm91bmREb21haW5zOworICAgIGJvb2wgbV9zaG91bGRS
dW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9oYXNTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9o
YXNSZWNlaXZlZEFwcEJvdW5kRG9tYWlucyB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgbV91bmlx
dWVSZWdpc3RyYXRpb25Db3VudCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCmluZGV4IGQ3NGE2OTAwODE5YTYzM2M0NjBhODc1NjQxODBkZGM0MmFkNDk3ZmMuLjkz
YjFkZDUyMTY3MzFjOTg2NjJlZTRlYjFlZGY2MTdiMWE4Y2M1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtNDIsNiArNDIsNyBAQCBzdHJ1Y3QgU2VydmljZVdv
cmtlckNsaWVudERhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBz
dHJ1Y3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhOwogc3RydWN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhSWRlbnRpZmllcjsKK2VudW0gY2xhc3MgV29ya2VyVGhyZWFkTW9kZSA6IGJvb2w7CiAKIGNs
YXNzIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CkBAIC01MSw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25JZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KIAogICAgIC8vIE1lc3NhZ2VzIHRvIHRoZSBTVyBob3N0IHByb2Nlc3MKLSAgICB2aXJ0
dWFsIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zdGFsbFNlcnZpY2VXb3JrZXJDb250ZXh0
KGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYsIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRh
JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggZGMzMTM1MTlhMWMzNzQ4MzFjMzdhZDg5ZDdhMmFjMWE3ZTJmMTZkOS4uMmRiOGNiY2VhY2Rh
ZGQxZDcxYzA5ZDEwMTVlYTg5ODYwM2I5YjYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI0ODYsNyArMjQ4NiwxMCBAQCBTV1Nl
cnZlciYgTmV0d29ya1Byb2Nlc3M6OnN3U2VydmVyRm9yU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICB9
OwogI2VuZGlmCi0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNXU2VydmVyPihtYWtlVW5pcXVl
UmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIGluZm8ucHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFi
bGVkLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQsIHBhcmVudFByb2Nlc3NIYXNTZXJ2aWNlV29y
a2VyRW50aXRsZW1lbnQoKSwgW3RoaXMsIHNlc3Npb25JRF0oYXV0byYmIGpvYkRhdGEsIGJvb2wg
c2hvdWxkUmVmcmVzaENhY2hlLCBhdXRvJiYgcmVxdWVzdCwgYXV0byYmIGNvbXBsZXRpb25IYW5k
bGVyKSBtdXRhYmxlIHsKKyAgICAgICAgYm9vbCBzaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFp
blRocmVhZEZvclRlc3RpbmcgPSBmYWxzZTsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBu
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICAgICAgc2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nID0gc2Vzc2lvbi0+c2hvdWxkUnVuU2VydmljZVdv
cmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nKCk7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNXU2VydmVyPihtYWtlVW5pcXVlUmVmPFdlYlNXT3JpZ2luU3RvcmU+KCksIGluZm8ucHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkLCBXVEZNb3ZlKHBhdGgpLCBzZXNzaW9uSUQsIHNob3Vs
ZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZywgcGFyZW50UHJvY2Vzc0hh
c1NlcnZpY2VXb3JrZXJFbnRpdGxlbWVudCgpLCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiYgam9i
RGF0YSwgYm9vbCBzaG91bGRSZWZyZXNoQ2FjaGUsIGF1dG8mJiByZXF1ZXN0LCBhdXRvJiYgY29t
cGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICAgICAgU2VydmljZVdvcmtlclNvZnRV
cGRhdGVMb2FkZXI6OnN0YXJ0KG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCksIFdURk1vdmUoam9i
RGF0YSksIHNob3VsZFJlZnJlc2hDYWNoZSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9LCBbdGhpcywgc2Vzc2lvbklEXShhdXRvJiByZWdp
c3RyYWJsZURvbWFpbiwgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgICAgICBB
U1NFUlQoIXJlZ2lzdHJhYmxlRG9tYWluLmlzRW1wdHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IGU4YjQ5ZWUwZTUyODQxNDMy
YWNhMWUwMWExY2EyZDVjNDc2NTVjZTQuLmUzYzlkZDczYTAzMWFlMWZiZmVhMzQ0Y2EyNTcyM2U2
MWUxMzUyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCkBAIC0xMTgsNiArMTE4LDcgQEAgTmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNz
aW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3QgTmV0d29ya1Nlc3MKICAg
ICAsIG1fYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KG1ha2VVbmlxdWVSZWY8TmV0d29ya0Jyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeT4oKSkKICAgICAsIG1fdGVzdFNwZWVkTXVsdGlwbGllcihwYXJh
bWV0ZXJzLnRlc3RTcGVlZE11bHRpcGxpZXIpCiAgICAgLCBtX2FsbG93c1NlcnZlclByZWNvbm5l
Y3QocGFyYW1ldGVycy5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQorICAgICwgbV9zaG91bGRSdW5T
ZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcocGFyYW1ldGVycy5zaG91bGRSdW5T
ZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcpCiB7CiAgICAgaWYgKCFtX3Nlc3Np
b25JRC5pc0VwaGVtZXJhbCgpKSB7CiAgICAgICAgIFN0cmluZyBuZXR3b3JrQ2FjaGVEaXJlY3Rv
cnkgPSBwYXJhbWV0ZXJzLm5ldHdvcmtDYWNoZURpcmVjdG9yeTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAppbmRleCA1ZWNlMTQ0Y2ZjYmI5NTE2OTc4
NGQ0YzhlNzI3NGFiZDdiZGJlOTEyLi5lYzk0NjIxNTYwNzgwNDhmYTQ1M2EwMWJlMTgwODczMzM5
NDc2MjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lv
bi5oCkBAIC0xNjMsNiArMTYzLDcgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgdGVzdFNwZWVk
TXVsdGlwbGllcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdFNwZWVkTXVsdGlwbGllcjsgfQogICAg
IGJvb2wgYWxsb3dzU2VydmVyUHJlY29ubmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzU2Vy
dmVyUHJlY29ubmVjdDsgfQorICAgIGJvb2wgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5U
aHJlYWRGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSdW5TZXJ2aWNlV29ya2Vy
c09uTWFpblRocmVhZEZvclRlc3Rpbmc7IH0KIAogICAgIGJvb2wgaXNTdGFsZVdoaWxlUmV2YWxp
ZGF0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3RhbGVXaGlsZVJldmFsaWRhdGVFbmFi
bGVkOyB9CiAKQEAgLTIzOSw2ICsyNDAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgVW5pcXVlUmVmPE5l
dHdvcmtCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+IG1fYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
OwogICAgIHVuc2lnbmVkIG1fdGVzdFNwZWVkTXVsdGlwbGllciB7IDEgfTsKICAgICBib29sIG1f
YWxsb3dzU2VydmVyUHJlY29ubmVjdCB7IHRydWUgfTsKKyAgICBib29sIG1fc2hvdWxkUnVuU2Vy
dmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICBIYXNoU2V0PHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29y
a2VyU29mdFVwZGF0ZUxvYWRlcj4+IG1fc29mdFVwZGF0ZUxvYWRlcnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDllOGFiZmQ5Y2FiZWY5ZGZhNDlmZGFkNGFjNjdkN2U4
NmVkMDJmNjMuLmUxMzIyNDhlZDVkMjBiMDY2YTQ4MzY1Y2JiOTY0NWU2Y2FlMjJjNWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04Myw2ICs4Myw3IEBAIHZvaWQgTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9u
T25TeXN0ZW1DaGFuZ2U7CiAgICAgZW5jb2RlciA8PCBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0Owog
ICAgIGVuY29kZXIgPDwgcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjsKKyAgICBl
bmNvZGVyIDw8IHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZzsK
ICAgICBlbmNvZGVyIDw8IHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb247CiAg
ICAgZW5jb2RlciA8PCBhcHBIYXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Np
b247CiAgICAgZW5jb2RlciA8PCB1c2VOZXR3b3JrTG9hZGVyOwpAQCAtMjc0LDYgKzI3NSwxMSBA
QCBzdGQ6Om9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycwogICAgIGRlY29kZXIgPj4gcmVxdWlyZXNTZWN1cmVI
VFRQU1Byb3h5Q29ubmVjdGlvbjsKICAgICBpZiAoIXJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZzsK
KyAgICBkZWNvZGVyID4+IHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVz
dGluZzsKKyAgICBpZiAoIXNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVz
dGluZykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKICAgICBzdGQ6Om9wdGlv
bmFsPGJvb2w+IHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb247CiAgICAgZGVj
b2RlciA+PiBwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOwpAQCAtMzQ5LDYg
KzM1NSw3IEBAIHN0ZDo6b3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+
IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzCiAgICAgICAgICwgV1RGTW92ZSgqc3Vw
cHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKQogICAgICAgICAsIFdU
Rk1vdmUoKmFsbG93c1NlcnZlclByZWNvbm5lY3QpCiAgICAgICAgICwgV1RGTW92ZSgqcmVxdWly
ZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbikKKyAgICAgICAgLCAqc2hvdWxkUnVuU2Vydmlj
ZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nCiAgICAgICAgICwgV1RGTW92ZSgqcHJldmVu
dHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbikKICAgICAgICAgLCBXVEZNb3ZlKCphcHBI
YXNSZXF1ZXN0ZWRDcm9zc1dlYnNpdGVUcmFja2luZ1Blcm1pc3Npb24pCiAgICAgICAgICwgV1RG
TW92ZSgqdXNlTmV0d29ya0xvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRl
eCA1YjY0ZjZiMjlkNGZlNWVmMjMxZmQ0M2RiOGIzYjdmMTAxNTkyMGYzLi5jNzkyMzAzMThkZjQz
MTdhZjk3MmExN2ZkNzI3OGNmYTgxNDExOTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5oCkBAIC05OCw2ICs5OCw3IEBAIHN0cnVjdCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycyB7CiAgICAgYm9vbCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1D
aGFuZ2UgeyBmYWxzZSB9OwogICAgIGJvb2wgYWxsb3dzU2VydmVyUHJlY29ubmVjdCB7IHRydWUg
fTsKICAgICBib29sIHJlcXVpcmVzU2VjdXJlSFRUUFNQcm94eUNvbm5lY3Rpb24geyBmYWxzZSB9
OworICAgIGJvb2wgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5n
IHsgZmFsc2UgfTsKICAgICBib29sIHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRp
b24geyBmYWxzZSB9OwogICAgIGJvb2wgYXBwSGFzUmVxdWVzdGVkQ3Jvc3NXZWJzaXRlVHJhY2tp
bmdQZXJtaXNzaW9uIHsgZmFsc2UgfTsKICAgICBib29sIHVzZU5ldHdvcmtMb2FkZXIgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmNwcAppbmRleCAwNjAyOGU5MTQzOWE5ZDEzYzAyNjRlYzNiOWYyZWI1YTFmMDZmODVkLi5kOThk
ZWIyZDdlNmM0ZTlhMDQwZjZkOWJmNjg1ODIxZmJkZmFlMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtODcsOSArODcsOSBA
QCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgU2VydgogICAgICAgICBjb25uZWN0aW9uLT5wb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChkZXN0aW5hdGlvbklkZW50aWZpZXIuY29udGV4dElkZW50
aWZpZXIsIG1lc3NhZ2UsIHNvdXJjZUlkZW50aWZpZXIsIHNvdXJjZU9yaWdpbik7CiB9CiAKLXZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlckNv
bnRleHQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBjb250ZXh0RGF0YSwgY29uc3Qg
U2VydmljZVdvcmtlckRhdGEmIHdvcmtlckRhdGEsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQor
dm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Omluc3RhbGxTZXJ2aWNlV29ya2Vy
Q29udGV4dChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGNvbnRleHREYXRhLCBjb25z
dCBTZXJ2aWNlV29ya2VyRGF0YSYgd29ya2VyRGF0YSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQs
IFdvcmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6SW5zdGFsbFNlcnZpY2VXb3JrZXIgeyBj
b250ZXh0RGF0YSwgd29ya2VyRGF0YSwgdXNlckFnZW50IH0pOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpJbnN0YWxsU2VydmljZVdvcmtlciB7IGNv
bnRleHREYXRhLCB3b3JrZXJEYXRhLCB1c2VyQWdlbnQsIHdvcmtlclRocmVhZE1vZGUgfSk7CiB9
CiAKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp1cGRhdGVBcHBJbml0aWF0
ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
V2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKaW5kZXggOTQzM2JmNTNhMzZlNWM4ODI2NmU2NTg0ZTViOTZmOTFhY2Q4MDE4NC4u
NWNkMTZhMDgyNGI4NGRiNWZiODVlOGZkNzI3ZGFlZTY5MTVlMWRmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODUsNyArODUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGRlc3RpbmF0aW9uSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZU9yaWdpbik7CiAKICAgICAvLyBNZXNzYWdlcyB0byB0aGUgU1cgaG9zdCBXZWJQcm9j
ZXNzCi0gICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6
U2VydmljZVdvcmtlckNvbnRleHREYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckRh
dGEmLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CisgICAgdm9pZCBpbnN0YWxsU2Vy
dmljZVdvcmtlckNvbnRleHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRh
JiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGEmLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCwgV2ViQ29yZTo6V29ya2VyVGhyZWFkTW9kZSkgZmluYWw7CiAgICAgdm9pZCB1cGRhdGVB
cHBJbml0aWF0ZWRWYWx1ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29y
ZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpIGZpbmFsOwogICAgIHZvaWQgZmlyZUlu
c3RhbGxFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAgICAg
dm9pZCBmaXJlQWN0aXZhdGVFdmVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCmluZGV4IDA4NTEy
M2QwZDRmYWJlOTljZmYxMTRmMTYxZTY0NDgwZDM0ODkzNWYuLmE2ZDcwMmM0M2JiMTViMTMxNjU1
NjFkOTQ5YmZiNGQ4NjJmM2JjMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oCkBAIC01Miw2ICs1Miw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMyks
IGlvcygxMS4wKSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBudWxsYWJsZSwgY29weSkgTlNTdHJp
bmcgKmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
NS40KSwgaW9zKDEzLjQpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHByZXZlbnRzU3lz
dGVtSFRUUFByb3h5QXV0aGVudGljYXRpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwg
aW9zKDE0LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHJlcXVpcmVzU2VjdXJlSFRU
UFNQcm94eUNvbm5lY3Rpb24gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjAp
KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25N
YWluVGhyZWFkRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogCiAvLyBUaGVzZSBwcm9wZXJ0aWVzIG9ubHkgbWFrZSBzZW5zZSBm
b3IgcGVyc2lzdGVudCBkYXRhIHN0b3JlcywgYW5kIHdpbGwgdGhyb3cKIC8vIGFuIGV4Y2VwdGlv
biBpZiBzZXQgZm9yIG5vbi1wZXJzaXN0ZW50IHN0b3Jlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5tbQppbmRleCA1OTAwNzUyZjdiMDQxNDk2NjBhNTdkZDJlNGI0Mjk2
NjE4NzAwNTA2Li44NzQyMzkxOGZlNjRiMTY3MDY2NmVlZTZhMjRhN2YyOTMyZjRkNWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLm1tCkBAIC00ODYsNiArNDg2LDE2
IEBAIC0gKHZvaWQpc2V0UmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjooQk9PTCly
ZXF1aXJlcwogICAgIF9jb25maWd1cmF0aW9uLT5zZXRSZXF1aXJlc1NlY3VyZUhUVFBTUHJveHlD
b25uZWN0aW9uKHJlcXVpcmVzKTsKIH0KIAorLSAoQk9PTClzaG91bGRSdW5TZXJ2aWNlV29ya2Vy
c09uTWFpblRocmVhZEZvclRlc3RpbmcKK3sKKyAgICByZXR1cm4gX2NvbmZpZ3VyYXRpb24tPnNo
b3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZygpOworfQorCistICh2
b2lkKXNldFNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZzooQk9P
TClzaG91bGRSdW5Pbk1haW5UaHJlYWQKK3sKKyAgICBfY29uZmlndXJhdGlvbi0+c2V0U2hvdWxk
UnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nKHNob3VsZFJ1bk9uTWFpblRo
cmVhZCk7Cit9CisKIC0gKHZvaWQpc2V0UHJveHlDb25maWd1cmF0aW9uOihOU0RpY3Rpb25hcnkg
Kiljb25maWd1cmF0aW9uCiB7CiAgICAgX2NvbmZpZ3VyYXRpb24tPnNldFByb3h5Q29uZmlndXJh
dGlvbigoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKVtjb25maWd1cmF0aW9uIGNvcHldKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKaW5kZXggMjEwY2QwYWY3MjgzMTA1MGM5MWVhZWY4Y2NkOTBhOTM1NDM2ZGIy
YS4uN2I2YTU4ZTc5MmJlNWE2M2JlNzU5NTQ4NzIyYTQzZmI4YjExMzQ2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKQEAgLTIwNTgsNiArMjA1OCw3IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdl
YnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVy
cy5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0ID0gbV9jb25maWd1cmF0aW9uLT5hbGxvd3NTZXJ2ZXJQ
cmVjb25uZWN0KCk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0
YXRpc3RpY3NQYXJhbWV0ZXJzID0gV1RGTW92ZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1l
dGVycyk7CiAgICAgbmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLnJlcXVpcmVzU2VjdXJlSFRUUFNQ
cm94eUNvbm5lY3Rpb24gPSBtX2NvbmZpZ3VyYXRpb24tPnJlcXVpcmVzU2VjdXJlSFRUUFNQcm94
eUNvbm5lY3Rpb24oKTsKKyAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuc2hvdWxkUnVuU2Vy
dmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nID0gbV9jb25maWd1cmF0aW9uLT5zaG91
bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcoKTsKICAgICBuZXR3b3Jr
U2Vzc2lvblBhcmFtZXRlcnMucHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbiA9
IG1fY29uZmlndXJhdGlvbi0+cHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbigp
OwogICAgIG5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5hbGxvd3NIU1RTV2l0aFVudHJ1c3RlZFJv
b3RDZXJ0aWZpY2F0ZSA9IG1fY29uZmlndXJhdGlvbi0+YWxsb3dzSFNUU1dpdGhVbnRydXN0ZWRS
b290Q2VydGlmaWNhdGUoKTsKICAgICBuZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMucGNtTWFjaFNl
cnZpY2VOYW1lID0gbV9jb25maWd1cmF0aW9uLT5wY21NYWNoU2VydmljZU5hbWUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCAyMGNiMTRjMjk2ZjEzY2I3
N2QzOWYxZWM0ZjEyMmEzMWQyNjM0MTUwLi5jYzA4NDc4NTQ0ZDNiYmQ5ZGZkZDg3ODZmOWIwMTVj
YmJkODg5YzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBA
IC05Nyw2ICs5Nyw3IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fc3VwcHJl
c3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlID0gdGhpcy0+bV9zdXBwcmVz
c2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U7CiAgICAgY29weS0+bV9hbGxv
d3NTZXJ2ZXJQcmVjb25uZWN0ID0gdGhpcy0+bV9hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OwogICAg
IGNvcHktPm1fcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbiA9IHRoaXMtPm1fcmVx
dWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjsKKyAgICBjb3B5LT5tX3Nob3VsZFJ1blNl
cnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZyA9IHRoaXMtPm1fc2hvdWxkUnVuU2Vy
dmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nOwogICAgIGNvcHktPm1fcHJldmVudHNT
eXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbiA9IHRoaXMtPm1fcHJldmVudHNTeXN0ZW1IVFRQ
UHJveHlBdXRoZW50aWNhdGlvbjsKICAgICBjb3B5LT5tX3N0YW5kYWxvbmVBcHBsaWNhdGlvblVS
TCA9IHRoaXMtPm1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMOwogICAgIGNvcHktPm1fZW5hYmxl
SW5BcHBCcm93c2VyUHJpdmFjeUZvclRlc3RpbmcgPSB0aGlzLT5tX2VuYWJsZUluQXBwQnJvd3Nl
clByaXZhY3lGb3JUZXN0aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgK
aW5kZXggMzI1NmNkZWMzMTBmNjc0NmJkNWU0YWFlNjVmNWQ5MWQyNWJiZWZhYS4uZjMwNmIwZDY0
NGJmNDkyMGFkMTFmNzA4MGZjM2VjMzQ0YjI5NzZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oCkBAIC0xNzEsNiArMTcxLDkgQEAgcHVibGljOgogICAgIGJvb2wgcmVx
dWlyZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWly
ZXNTZWN1cmVIVFRQU1Byb3h5Q29ubmVjdGlvbjsgfTsKICAgICB2b2lkIHNldFJlcXVpcmVzU2Vj
dXJlSFRUUFNQcm94eUNvbm5lY3Rpb24oYm9vbCByZXF1aXJlcykgeyBtX3JlcXVpcmVzU2VjdXJl
SFRUUFNQcm94eUNvbm5lY3Rpb24gPSByZXF1aXJlczsgfQogCisgICAgYm9vbCBzaG91bGRSdW5T
ZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX3No
b3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZzsgfQorICAgIHZvaWQg
c2V0U2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nKGJvb2wgc2hv
dWxkUnVuT25NYWluVGhyZWFkKSB7IG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJl
YWRGb3JUZXN0aW5nID0gc2hvdWxkUnVuT25NYWluVGhyZWFkOyB9CisKICAgICBjb25zdCBVUkwm
IHN0YW5kYWxvbmVBcHBsaWNhdGlvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhbmRhbG9uZUFw
cGxpY2F0aW9uVVJMOyB9CiAgICAgdm9pZCBzZXRTdGFuZGFsb25lQXBwbGljYXRpb25VUkwoVVJM
JiYgdXJsKSB7IG1fc3RhbmRhbG9uZUFwcGxpY2F0aW9uVVJMID0gV1RGTW92ZSh1cmwpOyB9CiAK
QEAgLTIzMSw2ICsyMzQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbGxvd3NTZXJ2ZXJQcmVj
b25uZWN0IHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhl
bnRpY2F0aW9uIHsgZmFsc2UgfTsKICAgICBib29sIG1fcmVxdWlyZXNTZWN1cmVIVFRQU1Byb3h5
Q29ubmVjdGlvbiB7IGZhbHNlIH07CisgICAgYm9vbCBtX3Nob3VsZFJ1blNlcnZpY2VXb3JrZXJz
T25NYWluVGhyZWFkRm9yVGVzdGluZyB7IGZhbHNlIH07CiAgICAgdW5zaWduZWQgbV90ZXN0U3Bl
ZWRNdWx0aXBsaWVyIHsgMSB9OwogICAgIFVSTCBtX3N0YW5kYWxvbmVBcHBsaWNhdGlvblVSTDsK
ICAgICBib29sIG1fZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeUZvclRlc3RpbmcgeyBmYWxzZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGVjYzk1Mzk4MWI2YzY0
NWRhMWFlN2Q4Y2JlNjIyZDcwNjA2ZTdmNDguLmRlZjk4MTY1OTBlN2MxNzgyZDE0OGJjYjdlNzk5
MjliMGJhN2ZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTE0
MSw3ICsxNDEsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVB
cHBJbml0aWF0ZWRWYWx1ZShTZXJ2aWNlV29ya2VySWRlbnRpZgogICAgICAgICBzZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHktPnNldExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKGxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkID09IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkOjpZZXMpOwogfQogCi12b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpp
bnN0YWxsU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0
YSwgU2VydmljZVdvcmtlckRhdGEmJiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQpCit2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjppbnN0YWxsU2VydmljZVdvcmtlcihT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiBjb250ZXh0RGF0YSwgU2VydmljZVdvcmtlckRhdGEm
JiB3b3JrZXJEYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQsIFdvcmtlclRocmVhZE1vZGUgd29ya2Vy
VGhyZWFkTW9kZSkKIHsKICAgICBhdXRvIHBhZ2VDb25maWd1cmF0aW9uID0gcGFnZUNvbmZpZ3Vy
YXRpb25XaXRoRW1wdHlDbGllbnRzKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlc3Npb25JRCgp
KTsKIApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b246Omluc3RhbGxTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0CiAjZW5kaWYK
ICAgICAKICAgICBhdXRvIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkID0gY29udGV4dERh
dGEubGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7Ci0gICAgYXV0byBzZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNyZWF0ZShXVEZNb3ZlKHBh
Z2VDb25maWd1cmF0aW9uKSwgV1RGTW92ZShjb250ZXh0RGF0YSksIFdURk1vdmUod29ya2VyRGF0
YSksIFdURk1vdmUoZWZmZWN0aXZlVXNlckFnZW50KSwgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
Y2FjaGVTdG9yYWdlUHJvdmlkZXIoKSwgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kpOworICAgIGF1
dG8gc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpj
cmVhdGUoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbiksIFdURk1vdmUoY29udGV4dERhdGEpLCBX
VEZNb3ZlKHdvcmtlckRhdGEpLCBXVEZNb3ZlKGVmZmVjdGl2ZVVzZXJBZ2VudCksIHdvcmtlclRo
cmVhZE1vZGUsIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmNhY2hlU3RvcmFnZVByb3ZpZGVyKCks
IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKIAogICAgIGlmIChsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCkKICAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zZXRMYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZChsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9PSBX
ZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDU5OTZlNmNjYWVkOGFlNzZiNGRiYjA4NDkxOWI4YjRi
ZjAwMTNjYWIuLmRkZDA4ZDI5OGMwNjU0YWFkYTMzM2YwMjE3YmJhYjE3ODY2OGUyZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdHJ1Y3QgRmV0Y2hPcHRpb25zOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owog
c3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKK2VudW0gY2xhc3MgV29ya2VyVGhyZWFk
TW9kZSA6IGJvb2w7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODYsNyArODcsNyBAQCBw
cml2YXRlOgogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFy
dGVkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVy
PiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNo
KSBmaW5hbDsKICAgICB2b2lkIHNlcnZpY2VXb3JrZXJGYWlsZWRUb1N0YXJ0KHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZXhjZXB0aW9uTWVzc2FnZSkgZmlu
YWw7Ci0gICAgdm9pZCBpbnN0YWxsU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q29udGV4dERhdGEmJiwgV2ViQ29yZTo6U2VydmljZVdvcmtlckRhdGEmJiwgU3RyaW5nJiYgdXNl
ckFnZW50KTsKKyAgICB2b2lkIGluc3RhbGxTZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250ZXh0RGF0YSYmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRGF0YSYmLCBTdHJpbmcm
JiB1c2VyQWdlbnQsIFdlYkNvcmU6OldvcmtlclRocmVhZE1vZGUpOwogICAgIHZvaWQgdXBkYXRl
QXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNv
cmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKTsKICAgICB2b2lkIHN0YXJ0RmV0Y2go
V2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYsIFN0cmluZyYmIHJlZmVycmVyKTsKICAgICB2b2lkIGNhbmNlbEZldGNoKFdlYkNvcmU6
OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAyYWY0ODlkNTE2YTRlYzY5NmJhZTBm
YTI1Mjg3OTI3YzRkY2Y0ODI1Li4yNWFjMTM2ODhjNzhkOTM0YzQyZDQzNDhmN2JhYTg0ZjNkYTI1
NmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogbWVzc2Fn
ZXMgLT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7Ci0gICAg
SW5zdGFsbFNlcnZpY2VXb3JrZXIoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0
RGF0YSBjb250ZXh0RGF0YSwgc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhIHdvcmtl
ckRhdGEsIFN0cmluZyB1c2VyQWdlbnQpCisgICAgSW5zdGFsbFNlcnZpY2VXb3JrZXIoc3RydWN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSwgc3RydWN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJEYXRhIHdvcmtlckRhdGEsIFN0cmluZyB1c2VyQWdlbnQsIGVu
dW06Ym9vbCBXZWJDb3JlOjpXb3JrZXJUaHJlYWRNb2RlIHdvcmtlclRocmVhZE1vZGUpCiAgICAg
VXBkYXRlQXBwSW5pdGlhdGVkVmFsdWUoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIGVudW06Ym9vbCBXZWJDb3JlOjpMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCkKICAgICBTdGFy
dEZldGNoKFdlYkNvcmU6OlNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyBvcHRpb25zLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBTdHJp
bmcgcmVmZXJyZXIpCiAgICAgQ2FuY2VsRmV0Y2goV2ViQ29yZTo6U1dTZXJ2ZXJDb25uZWN0aW9u
SWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFdlYkNvcmU6OkZldGNoSWRl
bnRpZmllciBmZXRjaElkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMGUwZDc3N2RkNTA4ZTJiMjM1NTllZDY5ZWEyNjU0ZmQ1Njc2
OWM4ZS4uM2UyOWQyMjIxMWU4YjY1YjEzMDY3MWJiZmM3ZjBhMzZhMjNkMGUxYSAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTA5LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIHJ1bm5pbmcgc2VydmljZSB3b3JrZXJzIG9uIHRoZSBtYWluIHRocmVh
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjQ5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBBZGQg
QVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1NlcnZpY2VXb3JrZXJCYXNpYy5tbToKKwogMjAyMS0wOS0yOSAgQmFzdWtlIFN1enVr
aSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgW1BsYXlTdGF0aW9uXSBNYWtl
IGJ1aWxkLXdlYmtpdCBjb25maWd1cmFibGUgdXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2VydmljZVdv
cmtlckJhc2ljLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2
aWNlV29ya2VyQmFzaWMubW0KaW5kZXggZjc1NjU3NzJjZjk5YzY1ZjU5Yjg5ZjY1ZjdlYTJiNGE2
YzQwMzA2ZS4uMWQzYWVlNzA5ZDQxNDM4Zjc5NzA3YmNmNGExNDc2YjNhNTExY2RiOSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2aWNlV29ya2Vy
QmFzaWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TZXJ2
aWNlV29ya2VyQmFzaWMubW0KQEAgLTQyMCw3ICs0MjAsMTcgQEAgc2VsZi5hZGRFdmVudExpc3Rl
bmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAKIClTV1JFU09VUkNFIjsKIAotVEVTVChTZXJ2
aWNlV29ya2VycywgQmFzaWMpCitlbnVtIGNsYXNzIFNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25N
YWluVGhyZWFkIDogYm9vbCB7IE5vLCBZZXMgfTsKKworc3RhdGljIHZvaWQgc2V0Vmlld0RhdGFT
dG9yZShXS1dlYlZpZXdDb25maWd1cmF0aW9uKiB2aWV3Q29uZmlndXJhdGlvbiwgU2hvdWxkUnVu
U2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5U
aHJlYWQpCit7CisgICAgYXV0byBzdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBbc3RvcmVDb25maWd1cmF0aW9u
IHNldFNob3VsZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZzpzaG91bGRS
dW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZCA9PSBTaG91bGRSdW5TZXJ2aWNlV29ya2Vyc09u
TWFpblRocmVhZDo6WWVzXTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNp
dGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246c3RvcmVDb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgW3ZpZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6
ZGF0YVN0b3JlLmdldCgpXTsKK30KKworc3RhdGljIHZvaWQgcnVuQmFzaWNTV1Rlc3QoU2hvdWxk
UnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQgc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1h
aW5UaHJlYWQpCiB7CiAgICAgU2VydmljZVdvcmtlclRDUFNlcnZlciBzZXJ2ZXIoewogICAgICAg
ICB7ICJ0ZXh0L2h0bWwiLCBtYWluQnl0ZXMgfSwKQEAgLTQyOSwxOCArNDM5LDE5IEBAIFRFU1Qo
U2VydmljZVdvcmtlcnMsIEJhc2ljKQogCiAgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dX
ZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKIAorICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
c2V0Vmlld0RhdGFTdG9yZShjb25maWd1cmF0aW9uLmdldCgpLCBzaG91bGRSdW5TZXJ2aWNlV29y
a2Vyc09uTWFpblRocmVhZCk7CisKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhb
W1NXTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNl
ckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxl
ci5nZXQoKSBuYW1lOkAic3ciXTsKKwogICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBk
YXRhIHN0b3JlCi0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gcmVt
b3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJzaXRlRGF0YVR5cGVzXSBt
b2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7
CisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVz
OltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpb
TlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBkb25l
ID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwog
ICAgIGRvbmUgPSBmYWxzZTsKIAotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0KLSAgICBhdXRvIG1lc3NhZ2VI
YW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKLSAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKLQogICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKQEAgLTQ1MCw3ICs0NjEs
NyBAQCBURVNUKFNlcnZpY2VXb3JrZXJzLCBCYXNpYykKIAogICAgIHdlYlZpZXcgPSBudWxscHRy
OwogCi0gICAgW1tXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0gZmV0Y2hEYXRh
UmVjb3Jkc09mVHlwZXM6W05TU2V0IHNldFdpdGhPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uc10gY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PFdLV2Vi
c2l0ZURhdGFSZWNvcmQgKj4gKndlYnNpdGVEYXRhUmVjb3JkcykgeworICAgIFtbY29uZmlndXJh
dGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBmZXRjaERhdGFSZWNvcmRzT2ZUeXBlczpbTlNTZXQgc2V0
V2l0aE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zXSBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8V0tXZWJzaXRlRGF0YVJlY29yZCAqPiAqd2Vic2l0
ZURhdGFSZWNvcmRzKSB7CiAgICAgICAgIEVYUEVDVF9FUSgxdSwgW3dlYnNpdGVEYXRhUmVjb3Jk
cyBjb3VudF0pOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEod2Vic2l0ZURhdGFSZWNvcmRzWzBd
LmRpc3BsYXlOYW1lLCAiMTI3LjAuMC4xIik7CiAKQEAgLTQ2MSw2ICs0NzIsMTYgQEAgVEVTVChT
ZXJ2aWNlV29ya2VycywgQmFzaWMpCiAgICAgZG9uZSA9IGZhbHNlOwogfQogCitURVNUKFNlcnZp
Y2VXb3JrZXJzLCBCYXNpYykKK3sKKyAgICBydW5CYXNpY1NXVGVzdChTaG91bGRSdW5TZXJ2aWNl
V29ya2Vyc09uTWFpblRocmVhZDo6Tm8pOworfQorCitURVNUKFNlcnZpY2VXb3JrZXJzLCBCYXNp
Y1dpdGhNYWluVGhyZWFkU1cpCit7CisgICAgcnVuQmFzaWNTV1Rlc3QoU2hvdWxkUnVuU2Vydmlj
ZVdvcmtlcnNPbk1haW5UaHJlYWQ6Olllcyk7Cit9CisKIEBpbnRlcmZhY2UgU1dDdXN0b21Vc2Vy
QWdlbnREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gewogICAgIE5T
U3RyaW5nICpfdXNlckFnZW50OwogfQpAQCAtNzY3LDYgKzc4OCw1OCBAQCBURVNUKFNlcnZpY2VX
b3JrZXJzLCBJbnRlcmNlcHRGaXJzdExvYWRBZnRlclJlc3RvcmVGcm9tRGlzaykKICAgICBkb25l
ID0gZmFsc2U7CiB9CiAKK1RFU1QoU2VydmljZVdvcmtlcnMsIE1haW5UaHJlYWRTV0ludGVyY2Vw
dHNMb2FkKQoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNv
cmRzRm9yQWxsT3JpZ2luc107CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIHNldFZpZXdEYXRhU3RvcmUoY29uZmlndXJhdGlvbi5nZXQoKSwgU2hvdWxk
UnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWQ6Olllcyk7CisKKyAgICBSZXRhaW5QdHI8V0tX
ZWJzaXRlRGF0YVN0b3JlPiBkYXRhU3RvcmUgPSBbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0
b3JlXTsKKworICAgIC8vIFN0YXJ0IHdpdGggYSBjbGVhbiBzbGF0ZSBkYXRhIHN0b3JlCisgICAg
W2RhdGFTdG9yZSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNp
dGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlv
bkhhbmRsZXI6XigpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBhdXRv
IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1NXTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRN
ZXNzYWdlIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAInN3Il07CisKKyAgICBTZXJ2aWNlV29ya2VyVENQU2VydmVyIHNlcnZlcih7CisgICAgICAg
IHsgInRleHQvaHRtbCIsIG1haW5Gb3JGaXJzdExvYWRJbnRlcmNlcHRUZXN0Qnl0ZXMgfSwKKyAg
ICAgICAgeyAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsIHNjcmlwdEludGVyY2VwdGluZ0ZpcnN0
TG9hZEJ5dGVzIH0sCisgICAgfSwgeworICAgICAgICB7ICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
Iiwgc2NyaXB0SW50ZXJjZXB0aW5nRmlyc3RMb2FkQnl0ZXMgfSwKKyAgICB9KTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiU2VydmljZSBXb3JrZXIgYWN0aXZhdGVkIjsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKKyAg
ICBjb25maWd1cmF0aW9uID0gbnVsbHB0cjsKKyAgICBtZXNzYWdlSGFuZGxlciA9IG51bGxwdHI7
CisKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZS5nZXQoKV07CisgICAgbWVzc2FnZUhhbmRsZXIg
PSBhZG9wdE5TKFtbU1dNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGlu
aXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3Jp
cHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKKworICAg
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIkludGVyY2VwdGVkIGJ5IHdvcmtlciI7CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30KKwogVEVTVChTZXJ2
aWNlV29ya2VycywgV2FpdEZvclBvbGljeURlbGVnYXRlKQogewogICAgIFtXS1dlYnNpdGVEYXRh
U3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>