<?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>214030</bug_id>
          
          <creation_ts>2020-07-06 20:56:39 -0700</creation_ts>
          <short_desc>Add WebCoreNSURLSession SPI to send HTTP/2 ping</short_desc>
          <delta_ts>2020-07-24 10:52:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          <dependson>214747</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1669319</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-06 20:56:39 -0700</bug_when>
    <thetext>Add WebCoreNSURLSession SPI to send HTTP/2 ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669321</commentid>
    <comment_count>1</comment_count>
      <attachid>403661</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-06 21:04:43 -0700</bug_when>
    <thetext>Created attachment 403661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669322</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-06 21:04:45 -0700</bug_when>
    <thetext>&lt;rdar://problem/64495827&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669325</commentid>
    <comment_count>3</comment_count>
      <attachid>403662</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-06 21:09:29 -0700</bug_when>
    <thetext>Created attachment 403662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669328</commentid>
    <comment_count>4</comment_count>
      <attachid>403664</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-06 21:45:18 -0700</bug_when>
    <thetext>Created attachment 403664
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669393</commentid>
    <comment_count>5</comment_count>
      <attachid>403664</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-07 07:46:14 -0700</bug_when>
    <thetext>Comment on attachment 403664
Patch

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

&gt; Source/WebCore/loader/FrameLoaderClient.h:361
&gt; +    virtual void sendH2Ping(const URL&amp;, CompletionHandler&lt;void(Expected&lt;Seconds, ResourceError&gt;&amp;&amp;)&gt;&amp;&amp;);

This should be pure-virtual. By moving the ASSERT to WebKitLegacy, it will make it clear if it ever gets called that it is WebKitLegacy that has not implemented it.

&gt; Source/WebCore/platform/graphics/PlatformMediaResourceLoader.h:70
&gt; +    virtual void sendH2Ping(const URL&amp;, CompletionHandler&lt;void(Expected&lt;Seconds, ResourceError&gt;&amp;&amp;)&gt;&amp;&amp;);

Same here. This should be pure-virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669411</commentid>
    <comment_count>6</comment_count>
      <attachid>403695</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-07 09:00:19 -0700</bug_when>
    <thetext>Created attachment 403695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669445</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-07 10:05:03 -0700</bug_when>
    <thetext>Committed r264021: &lt;https://trac.webkit.org/changeset/264021&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403695.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403661</attachid>
            <date>2020-07-06 21:04:43 -0700</date>
            <delta_ts>2020-07-06 21:09:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214030-20200706220442.patch</filename>
            <type>text/plain</type>
            <size>52160</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzkxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdlYkNv
cmVOU1VSTFNlc3Npb24gU1BJIHRvIHNlbmQgSFRUUC8yIHBpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDAzMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjQ0OTU4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGxvdHMgb2YgcGx1bWJpbmcsIG1vdmUgaW50ZXJuYWxFcnJvciBmcm9tIFdl
YktpdCB0byBXZWJDb3JlLgorCisgICAgICAgIENvdmVyZWQgYnkgYW4gQVBJIHRlc3QgdGhhdCBy
ZXF1aXJlcyBzb21lIGZ1dHVyZSBDRk5ldHdvcmsgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmludGVybmFsRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb24gc2VuZEgy
UGluZzpwb25nSGFuZGxlcjpdKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbmRIMlBpbmcpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIw
LTA3LTAzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3Jl
L1NvdXJjZXMudHh0OiBSZW1vdmUgI2lmIEVOQUJMRV9FTkNSWVBURURfTUVESUEKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CShyZXZpc2lvbiAyNjM5MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTU0Miw2ICsxNTQyLDcgQEAgbG9hZGVyL0Zvcm1TdGF0ZS5j
cHAKIGxvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKIGxvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNw
cAogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmNwcAog
bG9hZGVyL0ZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcAogbG9hZGVyL0hlYWRlckZpZWxkVG9r
ZW5pemVyLmNwcAogbG9hZGVyL0hUVFBIZWFkZXJGaWVsZC5jcHAKQEAgLTE5NjcsNiArMTk2OCw3
IEBAIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKIHBsYXRmb3JtL2dy
YXBoaWNzL1BhdGhVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAog
cGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcAorcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVn
aW9uLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUmVtb3RlVmlkZW9TYW1wbGUuY3BwCiBwbGF0Zm9y
bS9ncmFwaGljcy9Sb3VuZGVkUmVjdC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MzkxMykKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtOTE3Miw2ICs5MTcyLDggQEAKIAkJNUNFNUQ5QTgxREI4OTlGQzAwQ0U3QThEIC8q
IEpTVGV4dERlY29kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0
RGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0U1RDlBOTFEQjg5OUZD
MDBDRTdBOEQgLyogSlNUZXh0RW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1RleHRFbmNvZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUNFNUQ5QUExREI4OTlGQzAwQ0U3QThEIC8qIEpTVGV4dEVuY29kZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNUZXh0RW5jb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1Q0U4QTIwNTI0QjNFNDQ0MDBCNjY2MDIgLyogUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDRThBMjA4MjRCM0U2MDEwMEI2NjYwMiAvKiBGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZUxvYWRlckNsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDRkIyMEQ2MjJERTgzMDQwMEVEMkI3NiAv
KiBIVE1MRGlhbG9nRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIVE1MRGlhbG9nRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDRkIyMEQ4MjJERTgzMDUwMEVEMkI3NiAvKiBIVE1MRGlhbG9nRWxlbWVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gSFRNTERpYWxvZ0VsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0ZCMjBEOTIyREU4MzA2MDBFRDJCNzYgLyogSFRNTERpYWxvZ0VsZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTERpYWxvZ0VsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1Njg5LDYgKzI1NjkxLDcgQEAKIAkJ
CQk3MkJBQzNBNjIzRTE3MzI4MDA4RDc0MUMgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlci5oICovLAog
CQkJCTU1MDY0MEFEMjQwNzU2REEwMEFBRTA0NSAvKiBQbGF0Zm9ybUltYWdlQnVmZmVyQmFja2Vu
ZC5oICovLAogCQkJCTA1NjJGOTYwMTU3M0Y4OEYwMDMxQ0ExNiAvKiBQbGF0Zm9ybUxheWVyLmgg
Ki8sCisJCQkJNUNFOEEyMDUyNEIzRTQ0NDAwQjY2NjAyIC8qIFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAgKi8sCiAJCQkJQ0VFRkNEN0IxOURCMzNEQzAwMzg3NkQ3IC8qIFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlci5oICovLAogCQkJCTA3Mjg0N0UyMTZFQkM1QjAwMDQzQ0ZBNCAv
KiBQbGF0Zm9ybVRleHRUcmFjay5oICovLAogCQkJCTA3NEU4MkI4MThBNjlGMEUwMDdFRjU0QyAv
KiBQbGF0Zm9ybVRpbWVSYW5nZXMuY3BwICovLApAQCAtMjYyNzMsNiArMjYyNzYsNyBAQAogCQkJ
CTQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5oICovLAogCQkJCTkz
MkUxNjA4MEFGNTc4MzQwMDI1RjQwOCAvKiBGcmFtZUxvYWRlci5jcHAgKi8sCiAJCQkJNjU2RDM3
MjQwQURCQTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyLmggKi8sCisJCQkJNUNFOEEyMDgyNEIz
RTYwMTAwQjY2NjAyIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmNwcCAqLywKIAkJCQk2NTZEMzcyNjBB
REJBNURFMDBBNDU1NEQgLyogRnJhbWVMb2FkZXJDbGllbnQuaCAqLywKIAkJCQlEMDAwRUJBMDEx
QkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuY3BwICovLAogCQkJCUQw
MDBFQkExMTFCREFGRDQwMEM0NzcyNiAvKiBGcmFtZUxvYWRlclN0YXRlTWFjaGluZS5oICovLApA
QCAtMzAwOTMsNiArMzAwOTcsNyBAQAogCQkJCUMzN0NERUJEMTQ5RUYyMDMwMDQyMDkwRCAvKiBD
b2xvckNob29zZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0OEQyQUE1MjE1OTc0MEQw
MEM2NzUyQiAvKiBDb2xvckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0FDNkFGMDI0N0Y0
MTEwMDBFNjFENTkgLyogQ29sb3JDb21wb25lbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzUx
NEUwMzI0QUY4MDVFMDA1MDcxMEYgLyogQ29sb3JDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkzMTAzQjdERjFEQjAxNTY3MDA4QkI4OTAgLyogQ29sb3JIYXNoLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGNTVCM0RCNDEyNTFGMTJEMDAzRUYyNjkgLyogQ29sb3JJbnB1dFR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNFNTE2OUU3MjFGMUI4NDcwMEVBNEY3OCAvKiBDb2xvcklPUy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMzkxOSw3ICszMzkyNCw2IEBACiAJCQkJOTEyNzhENjIyMURFREFG
MDAwQjU3MTg0IC8qIFdvcmtlckF1ZGl0QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQTdE
MzUzMUY0MzhEMTYwMDg5ODhERSAvKiBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNUI4MUNDRDFGQUE0NERFMDAzN0QxRTYgLyogV29ya2VyQ29uc29s
ZUFnZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQk3QzUxNEUwMzI0QUY4MDVFMDA1MDcxMEYgLyog
Q29sb3JDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTU2MzlEMTFDNkYwOUUzMDA4
MDZEOEUgLyogV29ya2VyQ29uc29sZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFD
Q0UxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1MkIzNDlFMUZBNDE3MDMwMDhCNjI0NiAvKiBXb3JrZXJEZWJ1Z2dlclByb3h5Lmgg
aW4gSGVhZGVycyAqLywKQEAgLTM0NDUwLDYgKzM0NDU0LDcgQEAKIAkJCQk1MTVCRTE4RjFENTRG
NUZCMDBERDdDNjggLyogRW1wdHlHYW1lcGFkUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNkU3MkY1NEMyMjlEQ0QwQzAwQjNFMTUxIC8qIEV4dGVuc2lvbnNHTEFOR0xFLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDRTZDQkZEMTg3RjM5NDkwMEQ0NkJGNSAvKiBGb3JtYXRDb252ZXJ0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEzMEYyRjYyNEFFQTYwQTAwRTFEMEEwIC8qIEdh
bWVDb250cm9sbGVyU29mdExpbmsubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE0QkIwQTE5NTRE
NjE2MDBGQTVDMkUgLyogR2FtZXBhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MThGNEZGNjE5
NENBNEU2MDA4MUJBQUUgLyogR2FtZXBhZEJ1dHRvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MTZDNjIyMDE5NTBENDg3MDAzMzdFNzUgLyogR2FtZXBhZEV2ZW50LmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMzQ5MzAsNyArMzQ5MzUsNiBAQAogCQkJCURFNUY4NDMyMUZBMTg2RTkwMDZEQjYzQSAv
KiBVbmlmaWVkU291cmNlMzI5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURFNUY4NDMzMUZBMTg2
RTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzMwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCURF
NUY4NDM0MUZBMTg2RTkwMDZEQjYzQSAvKiBVbmlmaWVkU291cmNlMzMxLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTUxMzBGMkY2MjRBRUE2MEEwMEUxRDBBMCAvKiBHYW1lQ29udHJvbGxlclNvZnRM
aW5rLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0MzUxRkExODZFOTAwNkRCNjNBIC8qIFVu
aWZpZWRTb3VyY2UzMzIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0MzYxRkExODZFOTAw
NkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMzMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg0
MzcxRkExODZFOTAwNkRCNjNBIC8qIFVuaWZpZWRTb3VyY2UzMzQuY3BwIGluIFNvdXJjZXMgKi8s
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURl
ZmVycmVkLmgJKHJldmlzaW9uIDI2MzkxMykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHJlamVjdChSZWplY3RBc0hhbmRsZWQgPSBSZWplY3RBc0hh
bmRsZWQ6Ok5vKTsKICAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCwgUmVqZWN0QXNIYW5k
bGVkID0gUmVqZWN0QXNIYW5kbGVkOjpObyk7Ci0gICAgdm9pZCByZWplY3QoRXhjZXB0aW9uLCBS
ZWplY3RBc0hhbmRsZWQgPSBSZWplY3RBc0hhbmRsZWQ6Ok5vKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlamVjdChFeGNlcHRpb24sIFJlamVjdEFzSGFuZGxlZCA9IFJlamVjdEFzSGFuZGxl
ZDo6Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbkNvZGUsIGNv
bnN0IFN0cmluZyYgPSB7IH0sIFJlamVjdEFzSGFuZGxlZCA9IFJlamVjdEFzSGFuZGxlZDo6Tm8p
OwogICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmLCBSZWplY3RBc0hhbmRs
ZWQgPSBSZWplY3RBc0hhbmRsZWQ6Ok5vKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgRnJhbWVMb2FkZXJD
bGllbnQ6OnNlbmRIMlBpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiAyNjM5MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkxheW91dE1p
bGVzdG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29uLmgiCiAjaW5jbHVkZSAiUGFnZUlkZW50aWZp
ZXIuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9FeHBlY3RlZC5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNTgsNiArMzU4LDcgQEAgcHVibGljOgog
I2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYpOwogCiAgICAg
dmlydHVhbCB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAy
NjM5MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDE1IEBAIHZvaWQgTWVkaWFSZXNvdXJjZUxvYWRl
cjo6Y29udGV4dERlc3Ryb3kKICAgICBtX21lZGlhRWxlbWVudCA9IG51bGxwdHI7CiB9CiAKK3Zv
aWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6c2VuZEgyUGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9jdW1lbnQt
PmZyYW1lKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3Rl
ZChpbnRlcm5hbEVycm9yKHVybCkpKTsKKworICAgIG1fZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRl
cigpLmNsaWVudCgpLnNlbmRIMlBpbmcodXJsLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKKwogUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIExvYWRPcHRpb25z
IG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNjM5MTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5NZWRp
YVJlc291cmNlTG9hZGVyKCk7CiAKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBy
ZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYsIExvYWRPcHRpb25zKSBmaW5hbDsKKyAg
ICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCByZW1v
dmVSZXNvdXJjZShNZWRpYVJlc291cmNlJik7CiAKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSB7
IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxv
YWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXIuaCIKKworI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2b2lkIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6c2VuZEgyUGluZyhjb25zdCBV
UkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJj
ZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChpbnRlcm5hbEVycm9y
KHVybCkpKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgJKHJldmlz
aW9uIDI2MzkxMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3Jt
TWVkaWFSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAK
ICNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5k
bGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFk
U2FmZVJlZkNvdW50ZWQuaD4KQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29uc3QgTmV0d29ya0xv
YWRNZXRyaWNzJikgeyB9CiB9OwogCi1jbGFzcyBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
LCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWlu
PiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVy
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51bSBMb2FkT3B0aW9u
IHsKQEAgLTY2LDYgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlcigpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVmUHRyPFBsYXRmb3Jt
TWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmLCBMb2FkT3B0
aW9ucykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYp
OwogCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgPSBkZWZh
dWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5jcHAJKHJldmlzaW9uIDI2MzkxMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VF
cnJvci5oIgogCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRv
bWFpbldlYktpdEludGVybmFsID0gIldlYktpdEludGVybmFsIjsKQEAgLTg4LDQgKzkxLDEyIEBA
IGJvb2wgUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoY29uc3QgUmUKICAgICByZXR1cm4gUmVz
b3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwogfQogCitSZXNvdXJjZUVycm9yIGlu
dGVybmFsRXJyb3IoY29uc3QgVVJMJiB1cmwpCit7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoTG9h
ZGluZywgIkludGVybmFsIGVycm9yIGNhbGxlZCIpOworICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJB
Q0UoTG9hZGluZyk7CisKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiV2ViS2l0RXJyb3JEb21h
aW4iX3MsIDMwMCwgdXJsLCBXRUJfVUlfU1RSSU5HKCJXZWJLaXQgZW5jb3VudGVyZWQgYW4gaW50
ZXJuYWwgZXJyb3IiLCAiV2ViS2l0RXJyb3JJbnRlcm5hbCBkZXNjcmlwdGlvbiIpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAkocmV2aXNpb24gMjYzOTEzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Niw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVzb3VyY2VF
cnJvciYgYXNSZXNvdXJjZUVycm9yKCkgY29uc3Q7CiB9OwogCitXRUJDT1JFX0VYUE9SVCBSZXNv
dXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgVVJMJik7CisKIGlubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikgeyBy
ZXR1cm4gUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoYSwgYik7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikg
eyByZXR1cm4gIShhID09IGIpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCShyZXZp
c2lvbiAyNjM5MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dl
YkNvcmVOU1VSTFNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwxMCBAQCBX
RUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlCiAtIChOU1VSTFNlc3Npb25E
b3dubG9hZFRhc2sgKilkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1l
RGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKiBsb2NhdGlvbiwgTlNVUkxS
ZXNwb25zZSAqIHJlc3BvbnNlLCBOU0Vycm9yICogZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOwog
QGVuZAogCitAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gKFdlYktpdEF3ZXNvbWVuZXNz
KQorLSAodm9pZClzZW5kSDJQaW5nOihOU1VSTCAqKXVybCBwb25nSGFuZGxlcjoodm9pZCAoXiko
TlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgTlNUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwpKXBvbmdI
YW5kbGVyOworQGVuZAorCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayA6
IE5TT2JqZWN0IHsKICAgICBfX3Vuc2FmZV91bnJldGFpbmVkIFdlYkNvcmVOU1VSTFNlc3Npb24g
Kl9zZXNzaW9uOwogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IF9y
ZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0JKHJldmlzaW9uIDI2MzkxMykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDY2LDYgKzQ2NiwxOSBAQCAtIChOU1VSTFNlc3Np
b25EYXRhVGFzayAqKWRhdGFUYXNrV2l0aFVSCiAgICAgcmV0dXJuIChOU1VSTFNlc3Npb25EYXRh
VGFzayAqKVt0YXNrIGF1dG9yZWxlYXNlXTsKIH0KIAorLSAodm9pZClzZW5kSDJQaW5nOihOU1VS
TCAqKXVybCBwb25nSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqZXJyb3IsIE5TVGltZUludGVy
dmFsIGludGVydmFsKSlwb25nSGFuZGxlcgoreworICAgIGlmIChfaW52YWxpZGF0ZWQpCisgICAg
ICAgIHJldHVybiBwb25nSGFuZGxlcihhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhE
b21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JVbmtub3duIHVzZXJJbmZvOm5p
bF0pLmdldCgpLCAwKTsKKworICAgIHNlbGYubG9hZGVyLnNlbmRIMlBpbmcodXJsLCBbcG9uZ0hh
bmRsZXIgPSBtYWtlQmxvY2tQdHIocG9uZ0hhbmRsZXIpXSAoRXhwZWN0ZWQ8U2Vjb25kcywgUmVz
b3VyY2VFcnJvcj4mJiByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAg
IHBvbmdIYW5kbGVyKG5pbCwgcmVzdWx0LnZhbHVlKCkudmFsdWUoKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHBvbmdIYW5kbGVyKHJlc3VsdC5lcnJvcigpLCAwKTsKKyAgICB9KTsKK30K
KwogLSAoTlNVUkxTZXNzaW9uVXBsb2FkVGFzayAqKXVwbG9hZFRhc2tXaXRoUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcmVxdWVzdCBmcm9tRmlsZTooTlNVUkwgKilmaWxlVVJMCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAkocmV2aXNpb24gMjYzOTEzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzQ5LDYgKzUzNDksMjggQEAgdm9pZCBJbnRlcm5hbHM6
OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlzawogI2VuZGlmCiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpz
ZW5kSDJQaW5nKFN0cmluZyB1cmwsIERPTVByb21pc2VEZWZlcnJlZDxJRExEb3VibGU+JiYgcHJv
bWlzZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlm
ICghZG9jdW1lbnQpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoSW52YWxpZFN0YXRlRXJyb3Ip
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC0+
ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxlKEludmFs
aWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKS5zZW5kSDJQaW5nKFVSTChVUkwoKSwgdXJsKSwgW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpXSAoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQp
IG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAgICAgICAg
cHJvbWlzZS5yZXNvbHZlKHJlc3VsdC52YWx1ZSgpLnZhbHVlKCkpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwcm9taXNlLnNldHRsZShJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgfSk7Cit9
CisKIHZvaWQgSW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9u
KERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAgYXV0byogZG9jdW1l
bnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAkocmV2aXNpb24gMjYzOTEzKQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAkod29ya2luZyBjb3B5KQpAQCAtODAyLDYgKzgwMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGF1
ZGlvU2Vzc2lvbkFjdGl2ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNP
bkRpc2soRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQgc2VuZEgyUGluZyhT
dHJpbmcgdXJsLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRG91YmxlPiYmKTsKIAogICAgIHZvaWQg
Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbihET01Qcm9taXNlRGVmZXJyZWQ8
dm9pZD4mJik7CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNlbnRhdGlvbihET01Q
cm9taXNlRGVmZXJyZWQ8SURMRE9NU3RyaW5nPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwJKHJldmlzaW9uIDI2MzkxMykKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtODExLDYgKzgxMSw3IEBAIGVudW0g
Q29tcG9zaXRpbmdQb2xpY3kgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHByb2Nlc3NJ
ZGVudGlmaWVyOwogICAgIERPTVN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihE
b2N1bWVudCBkb2N1bWVudCk7CiAgICAgUHJvbWlzZTx2b2lkPiBzdG9yZVJlZ2lzdHJhdGlvbnNP
bkRpc2soKTsKKyAgICBQcm9taXNlPGRvdWJsZT4gc2VuZEgyUGluZyhET01TdHJpbmcgdXJsKTsK
IAogICAgIFByb21pc2U8dm9pZD4gY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlv
bigpOwogICAgIFByb21pc2U8RE9NU3RyaW5nPiBjYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNlbnRh
dGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzkxMykKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAtMDctMDYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQg
V2ViQ29yZU5TVVJMU2Vzc2lvbiBTUEkgdG8gc2VuZCBIVFRQLzIgcGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MDMwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82NDQ5NTgyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGUgU1BJIHRvIGRvIHRoaXMgdGhyb3VnaCBDRk5ldHdvcmsgcmVxdWly
ZXMgc2V0dGluZyBhIGJsb2NrIG9uIHRoZSB0YXNrCisgICAgICAgIGJldHdlZW4gY29uc3RydWN0
aW9uIGFuZCByZXN1bXB0aW9uLiAgVG8gYWxsb3cgdGhpcywgSSBtYWRlIFByZWNvbm5lY3RUYXNr
CisgICAgICAgIGFuZCBOZXR3b3JrTG9hZCByZXF1aXJlIGEgc3RhcnQoKSBjYWxsLCBhbmQgSSBh
ZGRlZCBzdGFydCgpIGNhbGxzIGV2ZXJ5d2hlcmUKKyAgICAgICAgdGhleSB3ZXJlIGltcGxpZWQg
d2l0aCBjb25zdHJ1Y3Rpb24gYmVmb3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3du
bG9hZDo6UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZW5kSDJQaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrRGF0YVRhc2s6OnNldEgyUGluZ0NhbGxiYWNrKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpOZXR3b3JrTG9h
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzdGFydCk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtMb2FkOjpzZXRIMlBpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtMb2FkOjppbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlByZWNvbm5lY3RUYXNrOjpzZXRIMlBpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6
OlByZWNvbm5lY3RUYXNrOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNr
Ojp+UHJlY29ubmVjdFRhc2spOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZp
Y2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmspOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxv
YWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZSk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldEgyUGluZ0NhbGxiYWNrKToKKyAgICAgICAg
KiBTaGFyZWQvV2ViRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW50ZXJuYWxFcnJvcik6
IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkVycm9ycy5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxvYWRlclN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJh
dGVMb2FkSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpzZW5kSDJQaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMjAtMDctMDMgIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCAiLVdsaXRlcmFsLWNvbnZlcnNpb24iIHdh
cm5pbmcgdG8gWGNvZGUgYmFzZWQgYnVpbGRzIGFuZCBmaXggdGhlIGlzc3VlcyBpdCBmaW5kcwpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI2MzkxMykKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDIsNiArNTQyLDE0IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnByZWYKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wcmVmZXRjaERO
Uyhob3N0bmFtZSk7CiB9CiAKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNl
bmRIMlBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFVSTCB1cmwgPSBwYXJhbWV0ZXJzLnJlcXVlc3Qu
dXJsKCk7CisgICAgYXV0byogdGFzayA9IG5ldyBQcmVjb25uZWN0VGFzayhuZXR3b3JrUHJvY2Vz
cygpLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW10gKGNvbnN0IFJlc291cmNl
RXJyb3ImKSB7IH0pOworICAgIHRhc2stPnNldEgyUGluZ0NhbGxiYWNrKHVybCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIHRhc2stPnN0YXJ0KCk7Cit9CisKIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyhPcHRpb25hbDx1aW50NjRfdD4g
cHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYg
bG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
cHJlY29ubmVjdFRvOiAocGFyZW50UElEPSVkLCBwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2Vi
UGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBS
SXU2NCAiKSIsIGxvYWRQYXJhbWV0ZXJzLnBhcmVudFBJRCwgbG9hZFBhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMuaWRl
bnRpZmllcik7CkBAIC01NjMsOSArNTcxLDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cHJlYwogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKICAgICBhdXRvKiBz
ZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoc2Vzc2lvbiAmJiBzZXNzaW9uLT5h
bGxvd3NTZXJ2ZXJQcmVjb25uZWN0KCkpIHsKLSAgICAgICAgbmV3IFByZWNvbm5lY3RUYXNrKG5l
dHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgeworICAgICAgICAobmV3IFByZWNvbm5lY3RUYXNrKG5ldHdvcmtQ
cm9jZXNzKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOwotICAg
ICAgICB9KTsKKyAgICAgICAgfSkpLT5zdGFydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjM5MTMpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5
KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6VGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3lu
Y1JlcGx5RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgbG9hZFBpbmcoTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHNlbmRIMlBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+JiYpPiYmKTsKICAgICB2b2lkIHByZWNvbm5lY3RUbyhPcHRpb25hbDx1aW50NjRf
dD4gcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
JiYpOwogCiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlm
aWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjYzOTEzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAgICAg
UGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogICAg
IEJyb3dzaW5nQ29udGV4dFJlbW92ZWQoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciB3ZWJGcmFtZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0
bmFtZSkKKyAgICBTZW5kSDJQaW5nKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMgcGFyYW1ldGVycykgLT4gKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+IHJlc3VsdCkgQXN5bmMKICAgICBQcmVjb25uZWN0VG8oT3B0aW9uYWw8dWludDY0X3Q+IHBy
ZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJv
b2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCShyZXZpc2lv
biAyNjM5MTMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsMTIgQEAgU3RyaW5nIE5ldHdvcmtE
YXRhVGFzazo6ZGVzY3JpcHRpb24oKSBjbwogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQog
Cit2b2lkIE5ldHdvcmtEYXRhVGFzazo6c2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiB1cmws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChpbnRlcm5h
bEVycm9yKHVybCkpKTsKK30KKwogUEFMOjpTZXNzaW9uSUQgTmV0d29ya0RhdGFUYXNrOjpzZXNz
aW9uSUQoKSBjb25zdAogewogICAgIHJldHVybiBtX3Nlc3Npb24tPnNlc3Npb25JRCgpOwpJbmRl
eDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShy
ZXZpc2lvbiAyNjM5MTMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMyLDcgQEAgcHVibGljOgogICAg
IGJvb2wgaXNUb3BMZXZlbE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2RhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlv
bigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRIMlBpbmdDYWxsYmFjayhjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcj4mJik+JiYpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xv
YWQuY3BwCShyZXZpc2lvbiAyNjM5MTMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTcgKzY0LDE2IEBAIE5ldHdv
cmtMb2FkOjpOZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWUKICAgICAsIG1fbG9hZFRocm90dGxl
TGF0ZW5jeShuZXR3b3JrU2Vzc2lvbi5sb2FkVGhyb3R0bGVMYXRlbmN5KCkpCiAgICAgLCBtX2N1
cnJlbnRSZXF1ZXN0KG1fcGFyYW1ldGVycy5yZXF1ZXN0KQogewotICAgIGluaXRpYWxpemUobmV0
d29ya1Nlc3Npb24sIGJsb2JSZWdpc3RyeSk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmluaXRp
YWxpemUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBXZWJDb3JlOjpCbG9iUmVnaXN0
cnlJbXBsKiBibG9iUmVnaXN0cnkpCi17CiAgICAgaWYgKGJsb2JSZWdpc3RyeSAmJiBtX3BhcmFt
ZXRlcnMucmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQogICAgICAgICBtX3Rhc2sgPSBO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpjcmVhdGUobmV0d29ya1Nlc3Npb24sICpibG9iUmVnaXN0cnks
ICp0aGlzLCBtX3BhcmFtZXRlcnMucmVxdWVzdCwgbV9wYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmlu
Z1BvbGljeSwgbV9wYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyk7CiAgICAgZWxzZQogICAg
ICAgICBtX3Rhc2sgPSBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZShuZXR3b3JrU2Vzc2lvbiwgKnRo
aXMsIG1fcGFyYW1ldGVycyk7Cit9CiAKLSAgICBtX3Rhc2stPnJlc3VtZSgpOwordm9pZCBOZXR3
b3JrTG9hZDo6c3RhcnQoKQoreworICAgIGlmIChtX3Rhc2spCisgICAgICAgIG1fdGFzay0+cmVz
dW1lKCk7CiB9CiAKIE5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQoKQpAQCAtMzAwLDQgKzI5OSwx
MiBAQCBTdHJpbmcgTmV0d29ya0xvYWQ6OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIH0KIAordm9pZCBOZXR3b3JrTG9hZDo6c2V0SDJQaW5nQ2FsbGJhY2so
Y29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNv
bmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBpZiAobV90YXNrKQorICAgICAgICBtX3Rhc2stPnNldEgyUGluZ0NhbGxiYWNrKHVybCwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWQuaAkocmV2aXNpb24gMjYzOTEzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHB1Ymxp
YzoKICAgICBOZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWVudCYsIFdlYkNvcmU6OkJsb2JSZWdp
c3RyeUltcGwqLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya1Nlc3Npb24mKTsKICAg
ICB+TmV0d29ya0xvYWQoKTsKIAorICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGNhbmNlbCgp
OwogCiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0OwpA
QCAtNjcsMTAgKzY4LDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWw7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24o
KSBjb25zdDsKKyAgICB2b2lkIHNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yPiYmKT4mJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBpbml0aWFsaXplKE5ldHdvcmtTZXNz
aW9uJiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCopOwotCiAgICAgLy8gTmV0d29ya0RhdGFU
YXNrQ2xpZW50CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENv
bXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBD
aGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjM5MTMp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJl
Y29ubmVjdFRvKFBBTDo6UwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
PSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5l
Y3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKIAotICAgIG5ldyBQcmVjb25uZWN0VGFzaygq
dGhpcywgc2Vzc2lvbklELCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbXShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJikgeyB9KTsKKyAgICAobmV3IFByZWNvbm5lY3RUYXNrKCp0aGlzLCBzZXNz
aW9uSUQsIFdURk1vdmUocGFyYW1ldGVycyksIFtdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKSB7IH0pKS0+c3RhcnQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVybCk7CiAgICAg
VU5VU0VEX1BBUkFNKHVzZXJBZ2VudCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjM5
MTMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNyw2ICszMzcsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92
ZShyZXF1ZXN0KTsKICAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
PSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25ldHdv
cmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+
YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Cisg
ICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InN0YXJ0TmV0d29ya0xvYWQ6IEdvaW5nIHRvIHRoZSBuZXR3b3JrIChkZXNjcmlwdGlvbj0lIiBQ
VUJMSUNfTE9HX1NUUklORyAiKSIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgp
LmRhdGEoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5l
Y3RUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1By
ZWNvbm5lY3RUYXNrLmNwcAkocmV2aXNpb24gMjYzOTEzKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDE0ICs1
NCwyMSBAQCBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29ya1ByCiAKICAgICBB
U1NFUlQocGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6
WWVzKTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMs
IG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0KICAgICBt
X3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiB9CiAKLVByZWNvbm5lY3RUYXNr
Ojp+UHJlY29ubmVjdFRhc2soKQordm9pZCBQcmVjb25uZWN0VGFzazo6c2V0SDJQaW5nQ2FsbGJh
Y2soY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpT
ZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKKyAgICBtX25ldHdvcmtMb2FkLT5zZXRIMlBpbmdDYWxsYmFjayh1cmwsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBQcmVjb25uZWN0VGFzazo6c3RhcnQoKQorewor
ICAgIG1fbmV0d29ya0xvYWQtPnN0YXJ0KCk7Cit9CisKK1ByZWNvbm5lY3RUYXNrOjp+UHJlY29u
bmVjdFRhc2soKSA9IGRlZmF1bHQ7CisKIHZvaWQgUHJlY29ubmVjdFRhc2s6OndpbGxTZW5kUmVk
aXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVzdCYmIHJlZGly
ZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAg
Ly8gSFNUUyByZWRpcmVjdGlvbiBtYXkgaGFwcGVuIGhlcmUuCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCShyZXZpc2lvbiAyNjM5MTMpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQwLDkgKzQwLDEyIEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBQ
cmVjb25uZWN0VGFzayBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CiBwdWJsaWM6
Ci0gICAgUHJlY29ubmVjdFRhc2soTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgTmV0
d29ya0xvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0geyB9KTsKKyAgICBQcmVj
b25uZWN0VGFzayhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBOZXR3b3JrTG9hZFBh
cmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik+JiYpOwogICAgIH5QcmVjb25uZWN0VGFzaygpOwogCisgICAgdm9pZCBzZXRIMlBp
bmdDYWxsYmFjayhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdU
Rjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpOworICAgIHZvaWQgc3Rh
cnQoKTsKKwogcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4KICAgICBib29sIGlz
U3luY2hyb25vdXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5n
RG93bmxvYWQuY3BwCShyZXZpc2lvbiAyNjM5MTMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw2ICs0MCw3IEBAIFBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKElQQzo6Q28KICAg
ICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdp
c3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQogICAgICwgbV9wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbikKIHsKKyAgICBtX25l
dHdvcmtMb2FkLT5zdGFydCgpOwogICAgIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMgPSBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlh
bFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CiAKICAgICBtX25ldHdvcmtMb2Fk
LT5zZXRQZW5kaW5nRG93bmxvYWRJRChkb3dubG9hZElEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAkocmV2aXNpb24gMjYzOTEz
KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw3
IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWQKICAgICBwYXJhbWV0
ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID0gQ29udGVudEVuY29kaW5nU25pZmZp
bmdQb2xpY3k6OlNuaWZmOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVz
dCk7CiAgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBu
dWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2Fk
LT5zdGFydCgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjp3aWxs
U2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgUmVzb3VyY2VSZXNwb25zZSYmKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmNwcAkocmV2aXNpb24gMjYzOTEzKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MSw2ICs2MSw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiAK
ICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKICAgICBwYXJhbWV0
ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOwogICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhp
cywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCku
bmV0d29ya1Nlc3Npb24oY2FjaGUuc2Vzc2lvbklEKCkpKTsKKyAgICBtX25ldHdvcmtMb2FkLT5z
dGFydCgpOwogfQogCiBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVjdWxhdGl2ZUxvYWQoKQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCShyZXZpc2lv
biAyNjM5MTMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjAsNyAr
NDYwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVjb25uZWN0RgogICAgIHBh
cmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOwogICAg
IHBhcmFtZXRlcnMucmVxdWVzdCA9IGNvbnN0cnVjdFJldmFsaWRhdGlvblJlcXVlc3Qoc3VicmVz
b3VyY2VJbmZvLmtleSgpLCBzdWJyZXNvdXJjZUluZm8sIGVudHJ5KTsKICAgICBwYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOwotICAgIG5ldyBQcmVjb25uZWN0VGFzayhtX2NhY2hlLm5ldHdvcmtQcm9jZXNzKCksIG1f
Y2FjaGUuc2Vzc2lvbklEKCksIFdURk1vdmUocGFyYW1ldGVycyksIFtdKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSB7IH0pOworICAgIChuZXcgUHJlY29ubmVjdFRhc2sobV9jYWNoZS5u
ZXR3b3JrUHJvY2VzcygpLCBtX2NhY2hlLnNlc3Npb25JRCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBbXShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9KSktPnN0YXJ0KCk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShzdWJyZXNvdXJjZUluZm8pOwogICAgIFVOVVNFRF9QQVJBTShl
bnRyeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNjM5MTMpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHdv
cmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRlc2Ny
aXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHNldEgyUGluZ0NhbGxiYWNrKGNv
bnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJikgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAg
TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGll
bnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFu
eUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNv
cmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCShyZXZpc2lvbiAyNjM5MTMpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
NzcsNCArNTc3LDI0IEBAIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGVzY3JpcHRpb24K
ICAgICByZXR1cm4gU3RyaW5nKFttX3Rhc2sgZGVzY3JpcHRpb25dKTsKIH0KIAordm9pZCBOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6c2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiB1cmwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBIQVZFKFBSRUNPTk5FQ1Rf
UElORykKKyAgICBBU1NFUlQobV90YXNrLmdldCgpLl9wcmVjb25uZWN0KTsKKyAgICBhdXRvIGhh
bmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8dm9pZChFeHBlY3RlZDxXVEY6
OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPihXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgW3VybF0gKEZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mIGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OmludGVybmFsRXJyb3IodXJs
KSkpOworICAgIH0pOworICAgIFttX3Rhc2sgZ2V0VW5kZXJseWluZ0hUVFBDb25uZWN0aW9uSW5m
b1dpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShoYW5kbGVyKSwgdXJsXSAoX05TSFRUUENvbm5lY3Rpb25JbmZvICpjb25uZWN0aW9u
SW5mbykgbXV0YWJsZSB7CisgICAgICAgIGlmICghY29ubmVjdGlvbkluZm8uaXNWYWxpZCkKKyAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3Jl
OjppbnRlcm5hbEVycm9yKHVybCkpKTsKKyAgICAgICAgW2Nvbm5lY3Rpb25JbmZvIHNlbmRQaW5n
V2l0aFJlY2VpdmVIYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNFcnJvciAqZXJyb3IsIE5TVGltZUludGVydmFsIGlu
dGVydmFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNlY29uZHMo
aW50ZXJ2YWwpKTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0pLmdldCgpXTsKKyNlbHNlCisg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKFdlYkNvcmU6OmludGVybmFsRXJyb3IodXJsKSkpOworI2VuZGlmCit9CisK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmNwcAkocmV2aXNpb24gMjYzOTEzKQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODQsMTQgKzg0LDYgQEAgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKAog
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBsdWdpbkVycm9yRG9t
YWluKCksIEFQSTo6RXJyb3I6OlBsdWdpbjo6UGx1Z0luV2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNl
LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJQbHVnLWluIGhhbmRsZWQgbG9hZCIsICJXZWJLaXRFcnJv
clBsdWdJbldpbGxIYW5kbGVMb2FkIGRlc2NyaXB0aW9uIikpOwogfQogCi1SZXNvdXJjZUVycm9y
IGludGVybmFsRXJyb3IoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgUkVMRUFTRV9MT0dfRVJST1Io
TG9hZGluZywgIkludGVybmFsIGVycm9yIGNhbGxlZCIpOwotICAgIFJFTEVBU0VfTE9HX1NUQUNL
VFJBQ0UoTG9hZGluZyk7Ci0KLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3
ZWJLaXRFcnJvckRvbWFpbigpLCBBUEk6OkVycm9yOjpHZW5lcmFsOjpJbnRlcm5hbCwgdXJsLCBX
RUJfVUlfU1RSSU5HKCJXZWJLaXQgZW5jb3VudGVyZWQgYW4gaW50ZXJuYWwgZXJyb3IiLCAiV2Vi
S2l0RXJyb3JJbnRlcm5hbCBkZXNjcmlwdGlvbiIpKTsKLX0KLQogI2lmICFQTEFURk9STShDT0NP
QSkKIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgJKHJldmlzaW9uIDI2Mzkx
MykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw3ICs0OCw2IEBAIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEYK
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBmaWxlRG9l
c05vdEV4aXN0RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJv
cihjb25zdCBVUkwmKTsKIAogI2lmIFVTRShTT1VQKQogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBk
b3dubG9hZE5ldHdvcmtFcnJvcihjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjYzOTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzMs
NyArNjMzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6YnJvd3NpbmdDb250ZXh0UgogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6QnJvd3NpbmdDb250ZXh0UmVtb3ZlZChwYWdlLndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwg
cGFnZS5pZGVudGlmaWVyKCksIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKS0+ZnJhbWVJ
RCgpKSwgMCk7CiB9CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCkK
K3VpbnQ2NF90IFdlYkxvYWRlclN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCkKIHsK
ICAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CiAgICAgcmV0dXJuICsraWRlbnRp
ZmllcjsKQEAgLTY2Miw3ICs2NjIsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBp
bmdMb2FkKEZyCiAgICAgfQogCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9h
ZFBhcmFtZXRlcnM7Ci0gICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9IGdlbmVyYXRlTG9h
ZElkZW50aWZpZXIoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyID0gV2ViTG9hZGVy
U3RyYXRlZ3k6OmdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICBsb2FkUGFyYW1ldGVycy53
ZWJQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKTsKICAgICBs
b2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlLT5pZGVudGlmaWVyKCk7CiAgICAgbG9h
ZFBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CkBAIC03MjYsNyAr
NzI2LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKFdlYgogewogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBpZiAoY29t
cGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgcHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBnZW5l
cmF0ZUxvYWRJZGVudGlmaWVyKCk7CisgICAgICAgIHByZWNvbm5lY3Rpb25JZGVudGlmaWVyID0g
V2ViTG9hZGVyU3RyYXRlZ3k6OmdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnMuYWRkKCpwcmVjb25u
ZWN0aW9uSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBB
U1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaAkocmV2aXNpb24gMjYzOTEzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtODksNiArODks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVyKEZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0T25MaW5lU3RhdGUoYm9vbCk7
CiAKKyAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVMb2FkSWRlbnRpZmllcigpOworCiBwcml2
YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9I
VFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlciYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiAyNjM5MTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBACiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC01Miw2ICs1Myw3IEBA
CiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJM
b2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCIKICNp
bmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKQEAgLTg0
LDYgKzg2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVja3MuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAg
LTE4NjAsNiArMTg2MywyOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVmZXRjaERO
UyhjCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucHJlZmV0Y2hETlMoaG9zdG5hbWUpOwog
fQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKGNvbnN0IFVSTCYgdXJs
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFJlc291cmNlRXJyb3I+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2Zy
YW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7CisKKyAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRlcnMucmVx
dWVzdCA9IFJlc291cmNlUmVxdWVzdCh1cmwpOworICAgIHBhcmFtZXRlcnMuaWRlbnRpZmllciA9
IFdlYkxvYWRlclN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CisgICAgcGFyYW1l
dGVycy53ZWJQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKTsK
KyAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKKyAgICBw
YXJhbWV0ZXJzLndlYkZyYW1lSUQgPSBtX2ZyYW1lLT5mcmFtZUlEKCk7CisgICAgcGFyYW1ldGVy
cy5wYXJlbnRQSUQgPSBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKKyNpZiBIQVZFKEFVRElU
X1RPS0VOKQorICAgIHBhcmFtZXRlcnMubmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkubmV0d29y
a1Byb2Nlc3NBdWRpdFRva2VuKCk7CisjZW5kaWYKKyAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNv
bm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKKyAgICBwYXJhbWV0ZXJzLm9wdGlvbnMu
ZGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZzsKKyAg
ICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBtX2ZyYW1lLT5pc1Rv
cEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICAKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6U2VuZEgyUGluZyhwYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjYzOTEzKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2Myw2ICsyNjMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2
b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2VuZEgyUGlu
Zyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25k
cywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSBmaW5hbDsKIApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MDA5KQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDctMDYgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQg
V2ViQ29yZU5TVVJMU2Vzc2lvbiBTUEkgdG8gc2VuZCBIVFRQLzIgcGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MDMwCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS82NDQ5NTgyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlY29ubmVj
dC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBBZGQgYSBkaXNh
YmxlZCB0ZXN0IEkgdXNlZCB0byB2ZXJpZnkgdGhpcyB3b3JrcyBjb3JyZWN0bHkuCisKIDIwMjAt
MDctMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIHByb2Nlc3Mgc29tZXRpbWVzIGNyYXNoZXMgd2hlbiB0cmFuc2xhdGluZyBhbiBhcnRpY2xl
IG9uIHNwaWVnZWwuZGUKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJlY29ubmVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1ByZWNvbm5lY3QubW0JKHJldmlzaW9uIDI2MzkxMykKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlY29ubmVjdC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzAsNyArMzAsOSBAQAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNp
bXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKKyNpbXBvcnQg
IldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTcxLDYgKzE3MywzNCBAQCBURVNUKFByZWNvbm5lY3Qs
IERJU0FCTEVEX0gyUGluZykKICAgICBVdGlsOjpzcGluUnVuTG9vcCgxMDApOwogICAgIEVYUEVD
VF9FUShoZWFkZXJzQ291bnQsIDF1KTsKIH0KKworLy8gVGhpcyBzaG91bGQgcmVtYWluIGRpc2Fi
bGVkIHVudGlsIHJkYXI6Ly9wcm9ibGVtLzY1MDU1OTMwIGlzIGludGVncmF0ZWQgYW5kIGJvdHMg
YXJlIHVwZGF0ZWQKK1RFU1QoUHJlY29ubmVjdCwgRElTQUJMRURfSDJQaW5nRnJvbVdlYkNvcmVO
U1VSTFNlc3Npb24pCit7CisgICAgc2l6ZV90IGhlYWRlcnNDb3VudCA9IDA7CisgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoW2hlYWRlcnNDb3VudCA9ICZoZWFkZXJzQ291bnRdIChDb25uZWN0aW9uIHRs
c0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgcGluZ1BvbmcoSDI6OkNvbm5lY3Rpb246OmNyZWF0ZSh0
bHNDb25uZWN0aW9uKSwgaGVhZGVyc0NvdW50KTsKKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cDIpOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9
IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJ
bkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NG
b3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUgbmV3XSk7CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0gZmFsc2U7Cisg
ICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2Vi
VmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5j
YWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRl
bnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9u
U3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2
ZXJUcnVzdCk7CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICAgICAgY2Fs
bGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRl
bnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVy
VHJ1c3RdKTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPHNjcmlwdD5pbnRlcm5hbHMuc2VuZEgyUGluZygnaHR0cHM6Ly8xMjcu
MC4wLjE6JWQvJykudGhlbihmdW5jdGlvbih0KXtpZih0PjApe2FsZXJ0KCdwYXNzJyl9ZWxzZXth
bGVydCgnZmFpbCcpfX0pPC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQoKV0gYmFzZVVSTDpuaWxdOwor
ICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAicGFzcyIp
OworICAgIEVYUEVDVF9GQUxTRShoZWFkZXJzQ291bnQpOworICAgIEVYUEVDVF9UUlVFKHJlY2Vp
dmVkQ2hhbGxlbmdlKTsKK30KKworCisKICNlbmRpZiAvLyBIQVZFKFBSRUNPTk5FQ1RfUElORykK
IAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403662</attachid>
            <date>2020-07-06 21:09:29 -0700</date>
            <delta_ts>2020-07-06 21:45:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214030-20200706220928.patch</filename>
            <type>text/plain</type>
            <size>51072</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdlYkNv
cmVOU1VSTFNlc3Npb24gU1BJIHRvIHNlbmQgSFRUUC8yIHBpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDAzMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjQ0OTU4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGxvdHMgb2YgcGx1bWJpbmcsIG1vdmUgaW50ZXJuYWxFcnJvciBmcm9tIFdl
YktpdCB0byBXZWJDb3JlLgorCisgICAgICAgIENvdmVyZWQgYnkgYW4gQVBJIHRlc3QgdGhhdCBy
ZXF1aXJlcyBzb21lIGZ1dHVyZSBDRk5ldHdvcmsgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmludGVybmFsRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb24gc2VuZEgy
UGluZzpwb25nSGFuZGxlcjpdKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbmRIMlBpbmcpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIw
LTA3LTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEhpZ2ggQ1BVIHVzYWdlIG9uIFN0YXNoIHNlYXJjaCByZXN1bHRzIHBhZ2VzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NzIsNiArMTQ3Miw3IEBAIGxvYWRlci9Gb3JtU3RhdGUuY3Bw
CiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCiBsb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAK
IGxvYWRlci9GcmFtZUxvYWRlci5jcHAKK2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5jcHAKIGxv
YWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAKIGxvYWRlci9IVFRQSGVhZGVyRmllbGQu
Y3BwCiBsb2FkZXIvSGVhZGVyRmllbGRUb2tlbml6ZXIuY3BwCkBAIC0xODgyLDYgKzE4ODMsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTkxNzMsNiArOTE3Myw4IEBACiAJCTVDRTVEOUE4MURCODk5RkMwMENFN0E4RCAvKiBK
U1RleHREZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4dERl
Y29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFNUQ5QTkxREI4OTlGQzAw
Q0U3QThEIC8qIEpTVGV4dEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNUZXh0RW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDRTVEOUFBMURCODk5RkMwMENFN0E4RCAvKiBKU1RleHRFbmNvZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4dEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNFOEEyMDUyNEIzRTQ0NDAwQjY2NjAyIC8qIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0U4QTIwODI0QjNFNjAxMDBCNjY2MDIgLyogRnJhbWVMb2FkZXJDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ZCMjBENjIyREU4MzA0MDBFRDJCNzYgLyog
SFRNTERpYWxvZ0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSFRNTERpYWxvZ0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0ZCMjBEODIyREU4MzA1MDBFRDJCNzYgLyogSFRNTERpYWxvZ0VsZW1lbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEhUTUxEaWFsb2dFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUNGQjIwRDkyMkRFODMwNjAwRUQyQjc2IC8qIEhUTUxEaWFsb2dFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxEaWFsb2dFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY4OSw2ICsyNTY5MSw3IEBACiAJCQkJ
NzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywKIAkJ
CQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQu
aCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICov
LAorCQkJCTVDRThBMjA1MjRCM0U0NDQwMEI2NjYwMiAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyog
UGxhdGZvcm1UZXh0VHJhY2suaCAqLywKIAkJCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyog
UGxhdGZvcm1UaW1lUmFuZ2VzLmNwcCAqLywKQEAgLTI2MjcyLDYgKzI2Mjc1LDcgQEAKIAkJCQk0
MTg4NUI5MTExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCAqLywKIAkJCQk5MzJF
MTYwODBBRjU3ODM0MDAyNUY0MDggLyogRnJhbWVMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzI0
MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlci5oICovLAorCQkJCTVDRThBMjA4MjRCM0U2
MDEwMEI2NjYwMiAvKiBGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJNjU2RDM3MjYwQURC
QTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJRDAwMEVCQTAxMUJE
QUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcCAqLywKIAkJCQlEMDAw
RUJBMTExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCAqLywKQEAg
LTMwMDk3LDYgKzMwMTAxLDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29s
b3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3NDBEMDBD
Njc1MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRjAyNDdGNDEx
MDAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M1MTRF
MDMyNEFGODA1RTAwNTA3MTBGIC8qIENvbG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzEwM0I3REYxREIwMTU2NzAwOEJCODkwIC8qIENvbG9ySGFzaC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzM5MjMsNyArMzM5MjgsNiBAQAogCQkJCTkxMjc4RDYyMjFERURBRjAw
MEI1NzE4NCAvKiBXb3JrZXJBdWRpdEFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUE3RDM1
MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVCODFDQ0QxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlckNvbnNvbGVB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M1MTRFMDMyNEFGODA1RTAwNTA3MTBGIC8qIENv
bG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1NjM5RDExQzZGMDlFMzAwODA2
RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0NF
MUZBQTQ0REUwMDM3RDFFNiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTJCMzQ5RTFGQTQxNzAzMDA4QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21p
c2VEZWZlcnJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmgJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Myw3ICsxMjMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlamVjdChSZWplY3RBc0hhbmRsZWQg
PSBSZWplY3RBc0hhbmRsZWQ6Ok5vKTsKICAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCwg
UmVqZWN0QXNIYW5kbGVkID0gUmVqZWN0QXNIYW5kbGVkOjpObyk7Ci0gICAgdm9pZCByZWplY3Qo
RXhjZXB0aW9uLCBSZWplY3RBc0hhbmRsZWQgPSBSZWplY3RBc0hhbmRsZWQ6Ok5vKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlamVjdChFeGNlcHRpb24sIFJlamVjdEFzSGFuZGxlZCA9IFJl
amVjdEFzSGFuZGxlZDo6Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2Vw
dGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0sIFJlamVjdEFzSGFuZGxlZCA9IFJlamVjdEFz
SGFuZGxlZDo6Tm8pOwogICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmLCBS
ZWplY3RBc0hhbmRsZWQgPSBSZWplY3RBc0hhbmRsZWQ6Ok5vKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OnNlbmRIMlBpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgIkxheW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29uLmgiCiAjaW5jbHVkZSAi
UGFnZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNTgsNiArMzU4LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hETlMoY29uc3Qg
U3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+
JiYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDE1IEBAIHZvaWQgTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6Y29udGV4dERlc3Ryb3kKICAgICBtX21lZGlhRWxlbWVudCA9IG51bGxw
dHI7CiB9CiAKK3ZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6c2VuZEgyUGluZyhjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVy
cm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwg
IW1fZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChpbnRlcm5hbEVycm9yKHVybCkpKTsKKworICAgIG1fZG9jdW1lbnQtPmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnNlbmRIMlBpbmcodXJsLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKKwogUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IExvYWRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNjQw
MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5NZWRpYVJlc291cmNlTG9hZGVyKCk7CiAKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYsIExvYWRPcHRpb25z
KSBmaW5hbDsKKyAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAg
ICAgdm9pZCByZW1vdmVSZXNvdXJjZShNZWRpYVJlc291cmNlJik7CiAKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCIKKworI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit2b2lkIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6c2VuZEgy
UGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNv
bmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChp
bnRlcm5hbEVycm9yKHVybCkpKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmgJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiB9OwogCi1jbGFzcyBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLCBXVEY6OkRlc3RydWN0aW9u
VGhyZWFkOjpNYWluPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51
bSBMb2FkT3B0aW9uIHsKQEAgLTY2LDYgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcigpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVz
dCYmLCBMb2FkT3B0aW9ucykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kSDJQaW5nKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VF
cnJvcj4mJik+JiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyKCkgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgogCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBj
b25zdCBlcnJvckRvbWFpbldlYktpdEludGVybmFsID0gIldlYktpdEludGVybmFsIjsKQEAgLTg4
LDQgKzkxLDEyIEBAIGJvb2wgUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoY29uc3QgUmUKICAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwogfQogCitSZXNv
dXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgVVJMJiB1cmwpCit7CisgICAgUkVMRUFTRV9M
T0dfRVJST1IoTG9hZGluZywgIkludGVybmFsIGVycm9yIGNhbGxlZCIpOworICAgIFJFTEVBU0Vf
TE9HX1NUQUNLVFJBQ0UoTG9hZGluZyk7CisKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiV2Vi
S2l0RXJyb3JEb21haW4iX3MsIDMwMCwgdXJsLCBXRUJfVUlfU1RSSU5HKCJXZWJLaXQgZW5jb3Vu
dGVyZWQgYW4gaW50ZXJuYWwgZXJyb3IiLCAiV2ViS2l0RXJyb3JJbnRlcm5hbCBkZXNjcmlwdGlv
biIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAkocmV2aXNpb24g
MjY0MDA5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgUmVzb3VyY2VFcnJvciYgYXNSZXNvdXJjZUVycm9yKCkgY29uc3Q7CiB9OwogCitXRUJDT1JF
X0VYUE9SVCBSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgVVJMJik7CisKIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VF
cnJvciYgYikgeyByZXR1cm4gUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoYSwgYik7IH0KIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYg
KzEwNSwxMCBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlCiAtIChO
U1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKilkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YTooTlNE
YXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKiBsb2Nh
dGlvbiwgTlNVUkxSZXNwb25zZSAqIHJlc3BvbnNlLCBOU0Vycm9yICogZXJyb3IpKWNvbXBsZXRp
b25IYW5kbGVyOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gKFdlYktp
dEF3ZXNvbWVuZXNzKQorLSAodm9pZClzZW5kSDJQaW5nOihOU1VSTCAqKXVybCBwb25nSGFuZGxl
cjoodm9pZCAoXikoTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgTlNUaW1lSW50ZXJ2YWwgaW50
ZXJ2YWwpKXBvbmdIYW5kbGVyOworQGVuZAorCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayA6IE5TT2JqZWN0IHsKICAgICBfX3Vuc2FmZV91bnJldGFpbmVkIFdlYkNvcmVO
U1VSTFNlc3Npb24gKl9zZXNzaW9uOwogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2U+IF9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0JKHJldmlz
aW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDY2LDYgKzQ2NiwxOSBAQCAt
IChOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGFUYXNrV2l0aFVSCiAgICAgcmV0dXJuIChOU1VS
TFNlc3Npb25EYXRhVGFzayAqKVt0YXNrIGF1dG9yZWxlYXNlXTsKIH0KIAorLSAodm9pZClzZW5k
SDJQaW5nOihOU1VSTCAqKXVybCBwb25nSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqZXJyb3Is
IE5TVGltZUludGVydmFsIGludGVydmFsKSlwb25nSGFuZGxlcgoreworICAgIGlmIChfaW52YWxp
ZGF0ZWQpCisgICAgICAgIHJldHVybiBwb25nSGFuZGxlcihhZG9wdE5TKFtbTlNFcnJvciBhbGxv
Y10gaW5pdFdpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JVbmtub3du
IHVzZXJJbmZvOm5pbF0pLmdldCgpLCAwKTsKKworICAgIHNlbGYubG9hZGVyLnNlbmRIMlBpbmco
dXJsLCBbcG9uZ0hhbmRsZXIgPSBtYWtlQmxvY2tQdHIocG9uZ0hhbmRsZXIpXSAoRXhwZWN0ZWQ8
U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgICAgIHBvbmdIYW5kbGVyKG5pbCwgcmVzdWx0LnZhbHVlKCkudmFsdWUoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvbmdIYW5kbGVyKHJlc3VsdC5lcnJvcigpLCAwKTsK
KyAgICB9KTsKK30KKwogLSAoTlNVUkxTZXNzaW9uVXBsb2FkVGFzayAqKXVwbG9hZFRhc2tXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBmcm9tRmlsZTooTlNVUkwgKilmaWxlVVJM
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzQ5LDYgKzUzNDksMjggQEAgdm9p
ZCBJbnRlcm5hbHM6OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlzawogI2VuZGlmCiB9CiAKK3ZvaWQg
SW50ZXJuYWxzOjpzZW5kSDJQaW5nKFN0cmluZyB1cmwsIERPTVByb21pc2VEZWZlcnJlZDxJRExE
b3VibGU+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVu
dCgpOworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoSW52YWxp
ZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogZnJhbWUg
PSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIHByb21pc2Uu
c2V0dGxlKEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zZW5kSDJQaW5nKFVSTChVUkwoKSwgdXJsKSwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJv
cj4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQor
ICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3VsdC52YWx1ZSgpLnZhbHVlKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwcm9taXNlLnNldHRsZShJbnZhbGlkU3RhdGVFcnJvcik7
CisgICAgfSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJl
cHJlc2VudGF0aW9uKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAg
YXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtODAyLDYgKzgwMiw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGF1ZGlvU2Vzc2lvbkFjdGl2ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzdG9yZVJl
Z2lzdHJhdGlvbnNPbkRpc2soRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQg
c2VuZEgyUGluZyhTdHJpbmcgdXJsLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRG91YmxlPiYmKTsK
IAogICAgIHZvaWQgY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbihET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNl
bnRhdGlvbihET01Qcm9taXNlRGVmZXJyZWQ8SURMRE9NU3RyaW5nPiYmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtODExLDYgKzgx
MSw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIHByb2Nlc3NJZGVudGlmaWVyOwogICAgIERPTVN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAgICAgUHJvbWlzZTx2b2lkPiBzdG9yZVJl
Z2lzdHJhdGlvbnNPbkRpc2soKTsKKyAgICBQcm9taXNlPGRvdWJsZT4gc2VuZEgyUGluZyhET01T
dHJpbmcgdXJsKTsKIAogICAgIFByb21pc2U8dm9pZD4gY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlS
ZXByZXNlbnRhdGlvbigpOwogICAgIFByb21pc2U8RE9NU3RyaW5nPiBjYWNoZVN0b3JhZ2VFbmdp
bmVSZXByZXNlbnRhdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjMgQEAKKzIw
MjAtMDctMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgV2ViQ29yZU5TVVJMU2Vzc2lvbiBTUEkgdG8gc2VuZCBIVFRQLzIgcGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MDMwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDQ5NTgyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgU1BJIHRvIGRvIHRoaXMgdGhyb3VnaCBDRk5l
dHdvcmsgcmVxdWlyZXMgc2V0dGluZyBhIGJsb2NrIG9uIHRoZSB0YXNrCisgICAgICAgIGJldHdl
ZW4gY29uc3RydWN0aW9uIGFuZCByZXN1bXB0aW9uLiAgVG8gYWxsb3cgdGhpcywgSSBtYWRlIFBy
ZWNvbm5lY3RUYXNrCisgICAgICAgIGFuZCBOZXR3b3JrTG9hZCByZXF1aXJlIGEgc3RhcnQoKSBj
YWxsLCBhbmQgSSBhZGRlZCBzdGFydCgpIGNhbGxzIGV2ZXJ5d2hlcmUKKyAgICAgICAgdGhleSB3
ZXJlIGltcGxpZWQgd2l0aCBjb25zdHJ1Y3Rpb24gYmVmb3JlLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZW5kSDJQaW5nKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OnNldEgyUGluZ0NhbGxiYWNrKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
OjpOZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzdGFydCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzZXRIMlBpbmdDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjppbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZWNv
bm5lY3RUbyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdv
cmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpzZXRIMlBpbmdDYWxsYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlBy
ZWNvbm5lY3RUYXNrOjp+UHJlY29ubmVjdFRhc2spOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmspOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldEgyUGluZ0NhbGxiYWNr
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW50
ZXJuYWxFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkVycm9ycy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKFdl
YktpdDo6Z2VuZXJhdGVMb2FkSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMjAtMDctMDYgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSGlnaCBDUFUg
dXNhZ2Ugb24gU3Rhc2ggc2VhcmNoIHJlc3VsdHMgcGFnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQyLDYgKzU0MiwxNCBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpw
cmVmCiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cHJlZmV0Y2hETlMoaG9zdG5hbWUpOwogfQogCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZW5kSDJQaW5nKE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBVUkwgdXJsID0gcGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpOworICAgIGF1dG8qIHRh
c2sgPSBuZXcgUHJlY29ubmVjdFRhc2sobmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKCksIFdU
Rk1vdmUocGFyYW1ldGVycyksIFtdIChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9KTsKKyAgICB0
YXNrLT5zZXRIMlBpbmdDYWxsYmFjayh1cmwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICB0YXNrLT5zdGFydCgpOworfQorCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpwcmVjb25uZWN0VG8oT3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewog
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInByZWNvbm5lY3RUbzogKHBhcmVu
dFBJRD0lZCwgcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIsIHdlYlBhZ2VJRD0lIiBQUkl1NjQgIiwg
ZnJhbWVJRD0lIiBQUkl1NjQgIiwgcmVzb3VyY2VJRD0lIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1l
dGVycy5wYXJlbnRQSUQsIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELnRvVUludDY0KCks
IGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJG
cmFtZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwpAQCAtNTYzLDkg
KzU3MSw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWMKICNpZiBF
TkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCiAgICAgYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNz
aW9uKCk7CiAgICAgaWYgKHNlc3Npb24gJiYgc2Vzc2lvbi0+YWxsb3dzU2VydmVyUHJlY29ubmVj
dCgpKSB7Ci0gICAgICAgIG5ldyBQcmVjb25uZWN0VGFzayhuZXR3b3JrUHJvY2VzcygpLCBzZXNz
aW9uSUQoKSwgV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsK
KyAgICAgICAgKG5ldyBQcmVjb25uZWN0VGFzayhuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQo
KSwgV1RGTW92ZShsb2FkUGFyYW1ldGVycyksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGVycm9yKTsKLSAgICAgICAgfSk7CisgICAgICAgIH0p
KS0+c3RhcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTcsNiArMTk3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRlc3RQcm9jZXNzSW5jb21p
bmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlRlc3RQcm9jZXNz
SW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseURlbGF5ZWRSZXBseSYm
KTsKICAgICB2b2lkIGxvYWRQaW5nKE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYpOwog
ICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZW5kSDJQaW5n
KE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJik7CiAg
ICAgdm9pZCBwcmVjb25uZWN0VG8oT3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVt
b3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2NDAwOSkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2NlcwogICAgIFBhZ2VMb2FkQ29tcGxldGVkKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKICAgICBCcm93c2luZ0NvbnRleHRSZW1v
dmVkKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQYWdlUHJveHlJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgd2Vi
RnJhbWVJRCkKICAgICBQcmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCisgICAgU2VuZEgyUGlu
ZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpIC0+IChF
eHBlY3RlZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiByZXN1bHQpIEFzeW5jCiAg
ICAgUHJlY29ubmVjdFRvKE9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycyk7
CiAKICAgICBTdGFydERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IFN0cmluZyBzdWdnZXN0ZWROYW1lKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDcsNiArMTQ3LDEyIEBAIFN0cmluZyBOZXR3b3JrRGF0YVRhc2s6OmRlc2NyaXB0aW9u
KCkgY28KICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAordm9pZCBOZXR3b3JrRGF0YVRh
c2s6OnNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7Cit9CisK
IFBBTDo6U2Vzc2lvbklEIE5ldHdvcmtEYXRhVGFzazo6c2Vzc2lvbklEKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9zZXNzaW9uLT5zZXNzaW9uSUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjY0MDA5KQorKysg
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzVG9wTGV2ZWxOYXZp
Z2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlv
bjsgfQogCiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYm
KTsKIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjY0
MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDE3ICs2NCwxNiBAQCBOZXR3b3JrTG9hZDo6TmV0d29ya0xvYWQo
TmV0d29ya0xvYWRDbGllCiAgICAgLCBtX2xvYWRUaHJvdHRsZUxhdGVuY3kobmV0d29ya1Nlc3Np
b24ubG9hZFRocm90dGxlTGF0ZW5jeSgpKQogICAgICwgbV9jdXJyZW50UmVxdWVzdChtX3BhcmFt
ZXRlcnMucmVxdWVzdCkKIHsKLSAgICBpbml0aWFsaXplKG5ldHdvcmtTZXNzaW9uLCBibG9iUmVn
aXN0cnkpOwotfQotCi12b2lkIE5ldHdvcmtMb2FkOjppbml0aWFsaXplKE5ldHdvcmtTZXNzaW9u
JiBuZXR3b3JrU2Vzc2lvbiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCogYmxvYlJlZ2lzdHJ5
KQotewogICAgIGlmIChibG9iUmVnaXN0cnkgJiYgbV9wYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCku
cHJvdG9jb2xJc0Jsb2IoKSkKICAgICAgICAgbV90YXNrID0gTmV0d29ya0RhdGFUYXNrQmxvYjo6
Y3JlYXRlKG5ldHdvcmtTZXNzaW9uLCAqYmxvYlJlZ2lzdHJ5LCAqdGhpcywgbV9wYXJhbWV0ZXJz
LnJlcXVlc3QsIG1fcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIG1fcGFyYW1ldGVy
cy5ibG9iRmlsZVJlZmVyZW5jZXMpOwogICAgIGVsc2UKICAgICAgICAgbV90YXNrID0gTmV0d29y
a0RhdGFUYXNrOjpjcmVhdGUobmV0d29ya1Nlc3Npb24sICp0aGlzLCBtX3BhcmFtZXRlcnMpOwor
fQogCi0gICAgbV90YXNrLT5yZXN1bWUoKTsKK3ZvaWQgTmV0d29ya0xvYWQ6OnN0YXJ0KCkKK3sK
KyAgICBpZiAobV90YXNrKQorICAgICAgICBtX3Rhc2stPnJlc3VtZSgpOwogfQogCiBOZXR3b3Jr
TG9hZDo6fk5ldHdvcmtMb2FkKCkKQEAgLTMwMCw0ICsyOTksMTIgQEAgU3RyaW5nIE5ldHdvcmtM
b2FkOjpkZXNjcmlwdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAK
K3ZvaWQgTmV0d29ya0xvYWQ6OnNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYgdXJsLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKG1fdGFzaykKKyAg
ICAgICAgbV90YXNrLT5zZXRIMlBpbmdDYWxsYmFjayh1cmwsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKGludGVybmFsRXJyb3IodXJsKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9u
IDI2NDAwOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgTmV0d29ya0xvYWQo
TmV0d29ya0xvYWRDbGllbnQmLCBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsKiwgTmV0d29ya0xv
YWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtTZXNzaW9uJik7CiAgICAgfk5ldHdvcmtMb2FkKCk7CiAK
KyAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCBjYW5jZWwoKTsKIAogICAgIGJvb2wgaXNBbGxv
d2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSBjb25zdDsKQEAgLTY3LDEwICs2OCw5IEBAIHB1
YmxpYzoKICAgICBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpIGNv
bnN0IGZpbmFsOwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRIMlBpbmdDYWxsYmFjayhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgaW5pdGlhbGl6ZShOZXR3b3JrU2Vzc2lvbiYsIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeUltcGwqKTsKLQogICAgIC8vIE5ldHdvcmtEYXRhVGFza0NsaWVudAogICAgIHZvaWQg
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciYmKSBm
aW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXImJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MjEs
NyArMTQyMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlMKICAg
ICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RP
bmx5OjpZZXM7CiAKLSAgICBuZXcgUHJlY29ubmVjdFRhc2soKnRoaXMsIHNlc3Npb25JRCwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgW10oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfSk7
CisgICAgKG5ldyBQcmVjb25uZWN0VGFzaygqdGhpcywgc2Vzc2lvbklELCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbXShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9KSktPnN0YXJ0KCk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh1cmwpOwogICAgIFVOVVNFRF9QQVJBTSh1c2VyQWdl
bnQpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzcsNiArMzM3LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29yawogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CiAgICAgcGFy
YW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gbV9wYXJhbWV0ZXJzLmlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8
TmV0d29ya0xvYWQ+KCp0aGlzLCAmbmV0d29ya1Nlc3Npb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOworICAgIG1fbmV0d29ya0xvYWQtPnN0
YXJ0KCk7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBH
b2luZyB0byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249JSIgUFVCTElDX0xPR19TVFJJTkcgIiki
LCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQpJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAJKHJl
dmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJlY29ubmVj
dFRhc2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxNCArNTQsMjEgQEAgUHJlY29ubmVjdFRh
c2s6OlByZWNvbm5lY3RUYXNrKE5ldHdvcmtQcgogCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMuc2hv
dWxkUHJlY29ubmVjdE9ubHkgPT0gUHJlY29ubmVjdE9ubHk6Olllcyk7CiAgICAgbV9uZXR3b3Jr
TG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBh
cmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwotCiAgICAgbV90aW1lb3V0VGltZXIuc3RhcnRP
bmVTaG90KDYwMDAwX3MpOwogfQogCi1QcmVjb25uZWN0VGFzazo6flByZWNvbm5lY3RUYXNrKCkK
K3ZvaWQgUHJlY29ubmVjdFRhc2s6OnNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgbV9uZXR3b3JrTG9h
ZC0+c2V0SDJQaW5nQ2FsbGJhY2sodXJsLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKK3ZvaWQgUHJlY29ubmVjdFRhc2s6OnN0YXJ0KCkKK3sKKyAgICBtX25ldHdvcmtMb2FkLT5z
dGFydCgpOworfQorCitQcmVjb25uZWN0VGFzazo6flByZWNvbm5lY3RUYXNrKCkgPSBkZWZhdWx0
OworCiB2b2lkIFByZWNvbm5lY3RUYXNrOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIFJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlKQogewogICAgIC8vIEhTVFMgcmVkaXJlY3Rpb24g
bWF5IGhhcHBlbiBoZXJlLgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVj
b25uZWN0VGFzay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
UHJlY29ubmVjdFRhc2suaAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw5ICs0MCwx
MiBAQCBjbGFzcyBOZXR3b3JrUHJvY2VzczsKIAogY2xhc3MgUHJlY29ubmVjdFRhc2sgZmluYWwg
OiBwdWJsaWMgTmV0d29ya0xvYWRDbGllbnQgewogcHVibGljOgotICAgIFByZWNvbm5lY3RUYXNr
KE5ldHdvcmtQcm9jZXNzJiwgUEFMOjpTZXNzaW9uSUQsIE5ldHdvcmtMb2FkUGFyYW1ldGVycyYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKT4m
JiBjb21wbGV0aW9uSGFuZGxlciA9IHsgfSk7CisgICAgUHJlY29ubmVjdFRhc2soTmV0d29ya1By
b2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmKTsKICAgICB+
UHJlY29ubmVjdFRhc2soKTsKIAorICAgIHZvaWQgc2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3I+JiYpPiYmKTsKKyAgICB2b2lkIHN0YXJ0KCk7CisKIHByaXZhdGU6CiAg
ICAgLy8gTmV0d29ya0xvYWRDbGllbnQuCiAgICAgYm9vbCBpc1N5bmNocm9ub3VzKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAkocmV2aXNp
b24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVu
ZGluZ0Rvd25sb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQCBQZW5kaW5n
RG93bmxvYWQ6OlBlbmRpbmdEb3dubG9hZChJUEM6OkNvCiAgICAgOiBtX25ldHdvcmtMb2FkKG1h
a2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBibG9iUmVnaXN0cnksIFdURk1vdmUocGFyYW1l
dGVycyksIG5ldHdvcmtTZXNzaW9uKSkKICAgICAsIG1fcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24pCiB7CisgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsK
ICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gcGFyYW1ldGVycy5jbGll
bnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVu
dEZvckNyZWRlbnRpYWxzOwogCiAgICAgbV9uZXR3b3JrTG9hZC0+c2V0UGVuZGluZ0Rvd25sb2Fk
SUQoZG93bmxvYWRJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkCiAgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKICAg
ICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIG1fbmV0d29ya0xv
YWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgc2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVzcG9uc2Um
JikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAJKHJldmlzaW9uIDI2
NDAwOSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBTcGVj
dWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgCiAgICAgcGFyYW1ldGVycy5yZXF1
ZXN0ID0gbV9vcmlnaW5hbFJlcXVlc3Q7CiAgICAgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25ldHdv
cmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUo
cGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQo
KTsKIH0KIAogU3BlY3VsYXRpdmVMb2FkOjp+U3BlY3VsYXRpdmVMb2FkKCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjY0
MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYzLDcgKzQ2Myw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlY29ubmVjdEYKICAgICBwYXJhbWV0
ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKICAgICBwYXJh
bWV0ZXJzLnJlcXVlc3QgPSBjb25zdHJ1Y3RSZXZhbGlkYXRpb25SZXF1ZXN0KHN1YnJlc291cmNl
SW5mby5rZXkoKSwgc3VicmVzb3VyY2VJbmZvLCBlbnRyeSk7CiAgICAgcGFyYW1ldGVycy5pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsK
LSAgICBuZXcgUHJlY29ubmVjdFRhc2sobV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLCBtX2NhY2hl
LnNlc3Npb25JRCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbXShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJikgeyB9KTsKKyAgICAobmV3IFByZWNvbm5lY3RUYXNrKG1fY2FjaGUubmV0d29y
a1Byb2Nlc3MoKSwgbV9jYWNoZS5zZXNzaW9uSUQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW10o
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfSkpLT5zdGFydCgpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc3VicmVzb3VyY2VJbmZvKTsKICAgICBVTlVTRURfUEFSQU0oZW50cnkp
OwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCSh3b3JraW5n
IGNvcHkpCkBAIC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBkZXNjcmlwdGlv
bigpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgdm9pZCBzZXRIMlBpbmdDYWxsYmFjayhjb25zdCBV
UkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIE5ldHdv
cmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmln
YXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFt
ZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4sIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXZWJDb3JlOjpT
aG91bGRSZWxheFRoaXJkUGFydHlDb29raWVCbG9ja2luZyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTc3LDQg
KzU3NywyNCBAQCBTdHJpbmcgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRlc2NyaXB0aW9uCiAgICAg
cmV0dXJuIFN0cmluZyhbbV90YXNrIGRlc2NyaXB0aW9uXSk7CiB9CiAKK3ZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OnNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgSEFWRShQUkVDT05ORUNUX1BJTkcp
CisgICAgQVNTRVJUKG1fdGFzay5nZXQoKS5fcHJlY29ubmVjdCk7CisgICAgYXV0byBoYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXJXaXRoRmluYWxpemVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNv
bmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIFt1cmxdIChGdW5jdGlvbjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcj4mJik+JiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjppbnRlcm5hbEVycm9yKHVybCkpKTsK
KyAgICB9KTsKKyAgICBbbV90YXNrIGdldFVuZGVybHlpbmdIVFRQQ29ubmVjdGlvbkluZm9XaXRo
Q29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoaGFuZGxlciksIHVybF0gKF9OU0hUVFBDb25uZWN0aW9uSW5mbyAqY29ubmVjdGlvbkluZm8p
IG11dGFibGUgeworICAgICAgICBpZiAoIWNvbm5lY3Rpb25JbmZvLmlzVmFsaWQpCisgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6aW50
ZXJuYWxFcnJvcih1cmwpKSk7CisgICAgICAgIFtjb25uZWN0aW9uSW5mbyBzZW5kUGluZ1dpdGhS
ZWNlaXZlSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKE5TRXJyb3IgKmVycm9yLCBOU1RpbWVJbnRlcnZhbCBpbnRlcnZh
bCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTZWNvbmRzKGludGVy
dmFsKSk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9KS5nZXQoKV07CisjZWxzZQorICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChXZWJDb3JlOjppbnRlcm5hbEVycm9yKHVybCkpKTsKKyNlbmRpZgorfQorCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5jcHAJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDE0
ICs4NCw2IEBAIFJlc291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcigKICAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRQbHVnaW5FcnJvckRvbWFpbigp
LCBBUEk6OkVycm9yOjpQbHVnaW46OlBsdWdJbldpbGxIYW5kbGVMb2FkLCByZXNwb25zZS51cmwo
KSwgV0VCX1VJX1NUUklORygiUGx1Zy1pbiBoYW5kbGVkIGxvYWQiLCAiV2ViS2l0RXJyb3JQbHVn
SW5XaWxsSGFuZGxlTG9hZCBkZXNjcmlwdGlvbiIpKTsKIH0KIAotUmVzb3VyY2VFcnJvciBpbnRl
cm5hbEVycm9yKGNvbnN0IFVSTCYgdXJsKQotewotICAgIFJFTEVBU0VfTE9HX0VSUk9SKExvYWRp
bmcsICJJbnRlcm5hbCBlcnJvciBjYWxsZWQiKTsKLSAgICBSRUxFQVNFX0xPR19TVEFDS1RSQUNF
KExvYWRpbmcpOwotCi0gICAgcmV0dXJuIFJlc291cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0
RXJyb3JEb21haW4oKSwgQVBJOjpFcnJvcjo6R2VuZXJhbDo6SW50ZXJuYWwsIHVybCwgV0VCX1VJ
X1NUUklORygiV2ViS2l0IGVuY291bnRlcmVkIGFuIGludGVybmFsIGVycm9yIiwgIldlYktpdEVy
cm9ySW50ZXJuYWwgZGVzY3JpcHRpb24iKSk7Ci19Ci0KICNpZiAhUExBVEZPUk0oQ09DT0EpCiBS
ZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oCShyZXZpc2lvbiAyNjQwMDkpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNiBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRGCiBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dNSU1FVHlwZUVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZmlsZURvZXNOb3RF
eGlzdEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgcGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7Ci1XZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29u
c3QgVVJMJik7CiAKICNpZiBVU0UoU09VUCkKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZG93bmxv
YWROZXR3b3JrRXJyb3IoY29uc3QgVVJMJiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMzLDcgKzYz
Myw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmJyb3dzaW5nQ29udGV4dFIKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJy
b3dzaW5nQ29udGV4dFJlbW92ZWQocGFnZS53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCksIHBhZ2Uu
aWRlbnRpZmllcigpLCBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSktPmZyYW1lSUQoKSks
IDApOwogfQogCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVMb2FkSWRlbnRpZmllcigpCit1aW50
NjRfdCBXZWJMb2FkZXJTdHJhdGVneTo6Z2VuZXJhdGVMb2FkSWRlbnRpZmllcigpCiB7CiAgICAg
c3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSAwOwogICAgIHJldHVybiArK2lkZW50aWZpZXI7
CkBAIC02NjIsNyArNjYyLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9h
ZChGcgogICAgIH0KIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJh
bWV0ZXJzOwotICAgIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBnZW5lcmF0ZUxvYWRJZGVu
dGlmaWVyKCk7CisgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9IFdlYkxvYWRlclN0cmF0
ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAgbG9hZFBhcmFtZXRlcnMud2ViUGFn
ZVByb3h5SUQgPSB3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCk7CiAgICAgbG9hZFBh
cmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFnZS0+aWRlbnRpZmllcigpOwogICAgIGxvYWRQYXJh
bWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOwpAQCAtNzI2LDcgKzcyNiw3
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhXZWIKIHsKICAgICBPcHRp
b25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklkZW50aWZpZXI7CiAgICAgaWYgKGNvbXBsZXRp
b25IYW5kbGVyKSB7Ci0gICAgICAgIHByZWNvbm5lY3Rpb25JZGVudGlmaWVyID0gZ2VuZXJhdGVM
b2FkSWRlbnRpZmllcigpOworICAgICAgICBwcmVjb25uZWN0aW9uSWRlbnRpZmllciA9IFdlYkxv
YWRlclN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CiAgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9wcmVjb25uZWN0Q29tcGxldGlvbkhhbmRsZXJzLmFkZCgqcHJlY29ubmVjdGlv
bklkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmgJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDggQEAg
cHVibGljOgogICAgIHZvaWQgYWRkT25saW5lU3RhdGVDaGFuZ2VMaXN0ZW5lcihGdW5jdGlvbjx2
b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNldE9uTGluZVN0YXRlKGJvb2wpOwogCisg
ICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKKwogcHJpdmF0ZToK
ICAgICB2b2lkIHNjaGVkdWxlTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlKiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0KTsKICAgICB2b2lkIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXImKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
cmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJVc2VyRGF0YS5oIgpAQCAtNTIsNiArNTMsNyBAQAogI2lu
Y2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViTG9hZGVy
U3RyYXRlZ3kuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCkBAIC04NCw2ICs4
Niw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9ncmVzc1RyYWNrZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVz
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC0xODYw
LDYgKzE4NjMsMjkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJlZmV0Y2hETlMoYwog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnByZWZldGNoRE5TKGhvc3RuYW1lKTsKIH0KIAor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2VuZEgyUGluZyhjb25zdCBVUkwmIHVybCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+
cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKGludGVybmFsRXJyb3IodXJsKSkpOworCisgICAgTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICBwYXJhbWV0ZXJzLnJlcXVlc3Qg
PSBSZXNvdXJjZVJlcXVlc3QodXJsKTsKKyAgICBwYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBXZWJM
b2FkZXJTdHJhdGVneTo6Z2VuZXJhdGVMb2FkSWRlbnRpZmllcigpOworICAgIHBhcmFtZXRlcnMu
d2ViUGFnZVByb3h5SUQgPSB3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlmaWVyKCk7CisgICAg
cGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlLT5pZGVudGlmaWVyKCk7CisgICAgcGFyYW1l
dGVycy53ZWJGcmFtZUlEID0gbV9mcmFtZS0+ZnJhbWVJRCgpOworICAgIHBhcmFtZXRlcnMucGFy
ZW50UElEID0gcHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7CisjaWYgSEFWRShBVURJVF9UT0tF
TikKKyAgICBwYXJhbWV0ZXJzLm5ldHdvcmtQcm9jZXNzQXVkaXRUb2tlbiA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLm5ldHdvcmtQcm9j
ZXNzQXVkaXRUb2tlbigpOworI2VuZGlmCisgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0
T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CisgICAgcGFyYW1ldGVycy5vcHRpb25zLmRlc3Rp
bmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6RW1wdHlTdHJpbmc7CisgICAgcGFy
YW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gbV9mcmFtZS0+aXNUb3BGcmFt
ZU5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CisgICAgCisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OlNlbmRIMlBpbmcocGFyYW1ldGVycyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30K
Kwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkK
IHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjMsNiArMjYzLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHNlbmRIMlBpbmcoY29u
c3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCkgZmluYWw7CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAwOSkKKysrIFRvb2xzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdlYkNv
cmVOU1VSTFNlc3Npb24gU1BJIHRvIHNlbmQgSFRUUC8yIHBpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDAzMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjQ0OTU4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByZWNvbm5lY3QubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgQWRkIGEgZGlzYWJsZWQg
dGVzdCBJIHVzZWQgdG8gdmVyaWZ5IHRoaXMgd29ya3MgY29ycmVjdGx5LgorCiAyMDIwLTA3LTA2
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBw
cm9jZXNzIHNvbWV0aW1lcyBjcmFzaGVzIHdoZW4gdHJhbnNsYXRpbmcgYW4gYXJ0aWNsZSBvbiBz
cGllZ2VsLmRlCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1By
ZWNvbm5lY3QubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QcmVjb25uZWN0Lm1tCShyZXZpc2lvbiAyNjQwMDkpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByZWNvbm5lY3QubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDkgQEAKICNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0
ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXS1dl
YlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KQEAgLTE3MSw2ICsxNzMsMzQgQEAgVEVTVChQcmVjb25uZWN0LCBESVNB
QkxFRF9IMlBpbmcpCiAgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTAwKTsKICAgICBFWFBFQ1RfRVEo
aGVhZGVyc0NvdW50LCAxdSk7CiB9CisKKy8vIFRoaXMgc2hvdWxkIHJlbWFpbiBkaXNhYmxlZCB1
bnRpbCByZGFyOi8vcHJvYmxlbS82NTA1NTkzMCBpcyBpbnRlZ3JhdGVkIGFuZCBib3RzIGFyZSB1
cGRhdGVkCitURVNUKFByZWNvbm5lY3QsIERJU0FCTEVEX0gyUGluZ0Zyb21XZWJDb3JlTlNVUkxT
ZXNzaW9uKQoreworICAgIHNpemVfdCBoZWFkZXJzQ291bnQgPSAwOworICAgIEhUVFBTZXJ2ZXIg
c2VydmVyKFtoZWFkZXJzQ291bnQgPSAmaGVhZGVyc0NvdW50XSAoQ29ubmVjdGlvbiB0bHNDb25u
ZWN0aW9uKSB7CisgICAgICAgIHBpbmdQb25nKEgyOjpDb25uZWN0aW9uOjpjcmVhdGUodGxzQ29u
bmVjdGlvbiksIGhlYWRlcnNDb3VudCk7CisgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0
dHAyKTsKKworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFz
c05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVz
dGluZzpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5l
d10pOworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAgIFtk
ZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcg
KiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJh
Y2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFs
ICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1
c3QpOworICAgICAgICByZWNlaXZlZENoYWxsZW5nZSA9IHRydWU7CisgICAgICAgIGNhbGxiYWNr
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFs
IGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0
XSk7CisgICAgfV07CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIjxzY3JpcHQ+aW50ZXJuYWxzLnNlbmRIMlBpbmcoJ2h0dHBzOi8vMTI3LjAuMC4x
OiVkLycpLnRoZW4oZnVuY3Rpb24odCl7aWYodD4wKXthbGVydCgncGFzcycpfWVsc2V7YWxlcnQo
J2ZhaWwnKX19KTwvc2NyaXB0PiIsIHNlcnZlci5wb3J0KCldIGJhc2VVUkw6bmlsXTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcgX3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInBhc3MiKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoaGVhZGVyc0NvdW50KTsKKyAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZENo
YWxsZW5nZSk7Cit9CisKKworCiAjZW5kaWYgLy8gSEFWRShQUkVDT05ORUNUX1BJTkcpCiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403664</attachid>
            <date>2020-07-06 21:45:18 -0700</date>
            <delta_ts>2020-07-07 09:00:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214030-20200706224517.patch</filename>
            <type>text/plain</type>
            <size>51539</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTA2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdlYkNv
cmVOU1VSTFNlc3Npb24gU1BJIHRvIHNlbmQgSFRUUC8yIHBpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDAzMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjQ0OTU4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGxvdHMgb2YgcGx1bWJpbmcsIG1vdmUgaW50ZXJuYWxFcnJvciBmcm9tIFdl
YktpdCB0byBXZWJDb3JlLgorCisgICAgICAgIENvdmVyZWQgYnkgYW4gQVBJIHRlc3QgdGhhdCBy
ZXF1aXJlcyBzb21lIGZ1dHVyZSBDRk5ldHdvcmsgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmludGVybmFsRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb24gc2VuZEgy
UGluZzpwb25nSGFuZGxlcjpdKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbmRIMlBpbmcpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIw
LTA3LTA2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEhpZ2ggQ1BVIHVzYWdlIG9uIFN0YXNoIHNlYXJjaCByZXN1bHRzIHBhZ2VzCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NzIsNiArMTQ3Miw3IEBAIGxvYWRlci9Gb3JtU3RhdGUuY3Bw
CiBsb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCiBsb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAK
IGxvYWRlci9GcmFtZUxvYWRlci5jcHAKK2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5jcHAKIGxv
YWRlci9GcmFtZUxvYWRlclN0YXRlTWFjaGluZS5jcHAKIGxvYWRlci9IVFRQSGVhZGVyRmllbGQu
Y3BwCiBsb2FkZXIvSGVhZGVyRmllbGRUb2tlbml6ZXIuY3BwCkBAIC0xODgyLDYgKzE4ODMsNyBA
QCBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCiBwbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVXRpbGl0aWVzLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKIHBs
YXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtVGltZVJhbmdlcy5jcHAKK3BsYXRmb3JtL2dyYXBoaWNz
L1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lv
bi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL1JlbW90ZVZpZGVvU2FtcGxlLmNwcAogcGxhdGZvcm0v
Z3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTkxNzMsNiArOTE3Myw4IEBACiAJCTVDRTVEOUE4MURCODk5RkMwMENFN0E4RCAvKiBK
U1RleHREZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4dERl
Y29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNFNUQ5QTkxREI4OTlGQzAw
Q0U3QThEIC8qIEpTVGV4dEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNUZXh0RW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDRTVEOUFBMURCODk5RkMwMENFN0E4RCAvKiBKU1RleHRFbmNvZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVGV4dEVuY29kZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUNFOEEyMDUyNEIzRTQ0NDAwQjY2NjAyIC8qIFBsYXRmb3JtTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0
Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0U4QTIwODI0QjNFNjAxMDBCNjY2MDIgLyogRnJhbWVMb2FkZXJDbGllbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVMb2FkZXJDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0ZCMjBENjIyREU4MzA0MDBFRDJCNzYgLyog
SFRNTERpYWxvZ0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSFRNTERpYWxvZ0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Q0ZCMjBEODIyREU4MzA1MDBFRDJCNzYgLyogSFRNTERpYWxvZ0VsZW1lbnQuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEhUTUxEaWFsb2dFbGVtZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUNGQjIwRDkyMkRFODMwNjAwRUQyQjc2IC8qIEhUTUxEaWFsb2dFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxEaWFsb2dFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTY4OSw2ICsyNTY5MSw3IEBACiAJCQkJ
NzJCQUMzQTYyM0UxNzMyODAwOEQ3NDFDIC8qIFBsYXRmb3JtSW1hZ2VCdWZmZXIuaCAqLywKIAkJ
CQk1NTA2NDBBRDI0MDc1NkRBMDBBQUUwNDUgLyogUGxhdGZvcm1JbWFnZUJ1ZmZlckJhY2tlbmQu
aCAqLywKIAkJCQkwNTYyRjk2MDE1NzNGODhGMDAzMUNBMTYgLyogUGxhdGZvcm1MYXllci5oICov
LAorCQkJCTVDRThBMjA1MjRCM0U0NDQwMEI2NjYwMiAvKiBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwICovLAogCQkJCUNFRUZDRDdCMTlEQjMzREMwMDM4NzZENyAvKiBQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2VMb2FkZXIuaCAqLywKIAkJCQkwNzI4NDdFMjE2RUJDNUIwMDA0M0NGQTQgLyog
UGxhdGZvcm1UZXh0VHJhY2suaCAqLywKIAkJCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyog
UGxhdGZvcm1UaW1lUmFuZ2VzLmNwcCAqLywKQEAgLTI2MjcyLDYgKzI2Mjc1LDcgQEAKIAkJCQk0
MTg4NUI5MTExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCAqLywKIAkJCQk5MzJF
MTYwODBBRjU3ODM0MDAyNUY0MDggLyogRnJhbWVMb2FkZXIuY3BwICovLAogCQkJCTY1NkQzNzI0
MEFEQkE1REUwMEE0NTU0RCAvKiBGcmFtZUxvYWRlci5oICovLAorCQkJCTVDRThBMjA4MjRCM0U2
MDEwMEI2NjYwMiAvKiBGcmFtZUxvYWRlckNsaWVudC5jcHAgKi8sCiAJCQkJNjU2RDM3MjYwQURC
QTVERTAwQTQ1NTREIC8qIEZyYW1lTG9hZGVyQ2xpZW50LmggKi8sCiAJCQkJRDAwMEVCQTAxMUJE
QUZENDAwQzQ3NzI2IC8qIEZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmNwcCAqLywKIAkJCQlEMDAw
RUJBMTExQkRBRkQ0MDBDNDc3MjYgLyogRnJhbWVMb2FkZXJTdGF0ZU1hY2hpbmUuaCAqLywKQEAg
LTMwMDk3LDYgKzMwMTAxLDcgQEAKIAkJCQlDMzdDREVCRDE0OUVGMjAzMDA0MjA5MEQgLyogQ29s
b3JDaG9vc2VyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDhEMkFBNTIxNTk3NDBEMDBD
Njc1MkIgLyogQ29sb3JDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRjAyNDdGNDEx
MDAwRTYxRDU5IC8qIENvbG9yQ29tcG9uZW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0M1MTRF
MDMyNEFGODA1RTAwNTA3MTBGIC8qIENvbG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzEwM0I3REYxREIwMTU2NzAwOEJCODkwIC8qIENvbG9ySGFzaC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRjU1QjNEQjQxMjUxRjEyRDAwM0VGMjY5IC8qIENvbG9ySW5wdXRUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRTUxNjlFNzIxRjFCODQ3MDBFQTRGNzggLyogQ29sb3JJT1MuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzM5MjMsNyArMzM5MjgsNiBAQAogCQkJCTkxMjc4RDYyMjFERURBRjAw
MEI1NzE4NCAvKiBXb3JrZXJBdWRpdEFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUE3RDM1
MzFGNDM4RDE2MDA4OTg4REUgLyogV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVCODFDQ0QxRkFBNDRERTAwMzdEMUU2IC8qIFdvcmtlckNvbnNvbGVB
Z2VudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJN0M1MTRFMDMyNEFGODA1RTAwNTA3MTBGIC8qIENv
bG9yQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU1NjM5RDExQzZGMDlFMzAwODA2
RDhFIC8qIFdvcmtlckNvbnNvbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0NF
MUZBQTQ0REUwMDM3RDFFNiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNTJCMzQ5RTFGQTQxNzAzMDA4QjYyNDYgLyogV29ya2VyRGVidWdnZXJQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21p
c2VEZWZlcnJlZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NUHJvbWlzZURlZmVycmVkLmgJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZURlZmVycmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
Myw3ICsxMjMsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlamVjdChSZWplY3RBc0hhbmRsZWQg
PSBSZWplY3RBc0hhbmRsZWQ6Ok5vKTsKICAgICB2b2lkIHJlamVjdChzdGQ6Om51bGxwdHJfdCwg
UmVqZWN0QXNIYW5kbGVkID0gUmVqZWN0QXNIYW5kbGVkOjpObyk7Ci0gICAgdm9pZCByZWplY3Qo
RXhjZXB0aW9uLCBSZWplY3RBc0hhbmRsZWQgPSBSZWplY3RBc0hhbmRsZWQ6Ok5vKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlamVjdChFeGNlcHRpb24sIFJlamVjdEFzSGFuZGxlZCA9IFJl
amVjdEFzSGFuZGxlZDo6Tm8pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2Vw
dGlvbkNvZGUsIGNvbnN0IFN0cmluZyYgPSB7IH0sIFJlamVjdEFzSGFuZGxlZCA9IFJlamVjdEFz
SGFuZGxlZDo6Tm8pOwogICAgIHZvaWQgcmVqZWN0KGNvbnN0IEpTQzo6UHJpdmF0ZU5hbWUmLCBS
ZWplY3RBc0hhbmRsZWQgPSBSZWplY3RBc0hhbmRsZWQ6Ok5vKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OnNlbmRIMlBpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY29tcGxldGlv
bkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgIkxheW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29uLmgiCiAjaW5jbHVkZSAi
UGFnZUlkZW50aWZpZXIuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zNTgsNiArMzU4LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgcHJlZmV0Y2hETlMoY29uc3Qg
U3RyaW5nJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+
JiYpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJj
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDE1IEBAIHZvaWQgTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6Y29udGV4dERlc3Ryb3kKICAgICBtX21lZGlhRWxlbWVudCA9IG51bGxw
dHI7CiB9CiAKK3ZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6c2VuZEgyUGluZyhjb25zdCBVUkwm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVy
cm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwg
IW1fZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlciht
YWtlVW5leHBlY3RlZChpbnRlcm5hbEVycm9yKHVybCkpKTsKKworICAgIG1fZG9jdW1lbnQtPmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnNlbmRIMlBpbmcodXJsLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKKwogUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IExvYWRPcHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50KQpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNjQw
MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5NZWRpYVJlc291cmNlTG9hZGVyKCk7CiAKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRp
YVJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYsIExvYWRPcHRpb25z
KSBmaW5hbDsKKyAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAg
ICAgdm9pZCByZW1vdmVSZXNvdXJjZShNZWRpYVJlc291cmNlJik7CiAKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXIuaCIKKworI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCit2b2lkIFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6c2VuZEgy
UGluZyhjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNv
bmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChp
bnRlcm5hbEVycm9yKHVybCkpKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyLmgJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAKICNpbmNsdWRlICJQb2xpY3lDaGVja2VyLmgiCiAjaW5jbHVkZSA8d3RmL0Nv
bXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+CiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkRmluaXNoZWQoUGxhdGZvcm1NZWRpYVJlc291cmNlJiwgY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJikgeyB9CiB9OwogCi1jbGFzcyBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyLCBXVEY6OkRlc3RydWN0aW9uVGhyZWFkOjpNYWluPiB7CitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLCBXVEY6OkRlc3RydWN0aW9u
VGhyZWFkOjpNYWluPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGxhdGZvcm1NZWRpYVJl
c291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgZW51
bSBMb2FkT3B0aW9uIHsKQEAgLTY2LDYgKzY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcigpID0gZGVmYXVsdDsKIAogICAgIHZpcnR1YWwgUmVm
UHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVz
dCYmLCBMb2FkT3B0aW9ucykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZW5kSDJQaW5nKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VF
cnJvcj4mJik+JiYpOwogCiBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1NZWRpYVJlc291cmNlTG9h
ZGVyKCkgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9S
ZXNvdXJjZUVycm9yQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VFcnJvci5oIgogCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBj
b25zdCBlcnJvckRvbWFpbldlYktpdEludGVybmFsID0gIldlYktpdEludGVybmFsIjsKQEAgLTg4
LDQgKzkxLDEyIEBAIGJvb2wgUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoY29uc3QgUmUKICAg
ICByZXR1cm4gUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKGEsIGIpOwogfQogCitSZXNv
dXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgVVJMJiB1cmwpCit7CisgICAgUkVMRUFTRV9M
T0dfRVJST1IoTG9hZGluZywgIkludGVybmFsIGVycm9yIGNhbGxlZCIpOworICAgIFJFTEVBU0Vf
TE9HX1NUQUNLVFJBQ0UoTG9hZGluZyk7CisKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcigiV2Vi
S2l0RXJyb3JEb21haW4iX3MsIDMwMCwgdXJsLCBXRUJfVUlfU1RSSU5HKCJXZWJLaXQgZW5jb3Vu
dGVyZWQgYW4gaW50ZXJuYWwgZXJyb3IiLCAiV2ViS2l0RXJyb3JJbnRlcm5hbCBkZXNjcmlwdGlv
biIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAkocmV2aXNpb24g
MjY0MDA5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9y
QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgY29u
c3QgUmVzb3VyY2VFcnJvciYgYXNSZXNvdXJjZUVycm9yKCkgY29uc3Q7CiB9OwogCitXRUJDT1JF
X0VYUE9SVCBSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgVVJMJik7CisKIGlubGlu
ZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VF
cnJvciYgYikgeyByZXR1cm4gUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoYSwgYik7IH0KIGlu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vz
c2lvbi5oCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYg
KzEwNSwxMCBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlCiAtIChO
U1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKilkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YTooTlNE
YXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKiBsb2Nh
dGlvbiwgTlNVUkxSZXNwb25zZSAqIHJlc3BvbnNlLCBOU0Vycm9yICogZXJyb3IpKWNvbXBsZXRp
b25IYW5kbGVyOwogQGVuZAogCitAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gKFdlYktp
dEF3ZXNvbWVuZXNzKQorLSAodm9pZClzZW5kSDJQaW5nOihOU1VSTCAqKXVybCBwb25nSGFuZGxl
cjoodm9pZCAoXikoTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvciwgTlNUaW1lSW50ZXJ2YWwgaW50
ZXJ2YWwpKXBvbmdIYW5kbGVyOworQGVuZAorCiBAaW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFzayA6IE5TT2JqZWN0IHsKICAgICBfX3Vuc2FmZV91bnJldGFpbmVkIFdlYkNvcmVO
U1VSTFNlc3Npb24gKl9zZXNzaW9uOwogICAgIFJlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2U+IF9yZXNvdXJjZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW0JKHJldmlz
aW9uIDI2NDAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2Vi
Q29yZU5TVVJMU2Vzc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDY2LDYgKzQ2NiwxOSBAQCAt
IChOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGFUYXNrV2l0aFVSCiAgICAgcmV0dXJuIChOU1VS
TFNlc3Npb25EYXRhVGFzayAqKVt0YXNrIGF1dG9yZWxlYXNlXTsKIH0KIAorLSAodm9pZClzZW5k
SDJQaW5nOihOU1VSTCAqKXVybCBwb25nSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqZXJyb3Is
IE5TVGltZUludGVydmFsIGludGVydmFsKSlwb25nSGFuZGxlcgoreworICAgIGlmIChfaW52YWxp
ZGF0ZWQpCisgICAgICAgIHJldHVybiBwb25nSGFuZGxlcihhZG9wdE5TKFtbTlNFcnJvciBhbGxv
Y10gaW5pdFdpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JVbmtub3du
IHVzZXJJbmZvOm5pbF0pLmdldCgpLCAwKTsKKworICAgIHNlbGYubG9hZGVyLnNlbmRIMlBpbmco
dXJsLCBbcG9uZ0hhbmRsZXIgPSBtYWtlQmxvY2tQdHIocG9uZ0hhbmRsZXIpXSAoRXhwZWN0ZWQ8
U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCkK
KyAgICAgICAgICAgIHBvbmdIYW5kbGVyKG5pbCwgcmVzdWx0LnZhbHVlKCkudmFsdWUoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvbmdIYW5kbGVyKHJlc3VsdC5lcnJvcigpLCAwKTsK
KyAgICB9KTsKK30KKwogLSAoTlNVUkxTZXNzaW9uVXBsb2FkVGFzayAqKXVwbG9hZFRhc2tXaXRo
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBmcm9tRmlsZTooTlNVUkwgKilmaWxlVVJM
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzQ5LDYgKzUzNDksMjggQEAgdm9p
ZCBJbnRlcm5hbHM6OnN0b3JlUmVnaXN0cmF0aW9uc09uRGlzawogI2VuZGlmCiB9CiAKK3ZvaWQg
SW50ZXJuYWxzOjpzZW5kSDJQaW5nKFN0cmluZyB1cmwsIERPTVByb21pc2VEZWZlcnJlZDxJRExE
b3VibGU+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVu
dCgpOworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAgICAgcHJvbWlzZS5zZXR0bGUoSW52YWxp
ZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogZnJhbWUg
PSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKSB7CisgICAgICAgIHByb21pc2Uu
c2V0dGxlKEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zZW5kSDJQaW5nKFVSTChVUkwoKSwgdXJsKSwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJv
cj4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBpZiAocmVzdWx0Lmhhc192YWx1ZSgpKQor
ICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3VsdC52YWx1ZSgpLnZhbHVlKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwcm9taXNlLnNldHRsZShJbnZhbGlkU3RhdGVFcnJvcik7
CisgICAgfSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpjbGVhckNhY2hlU3RvcmFnZU1lbW9yeVJl
cHJlc2VudGF0aW9uKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmIHByb21pc2UpCiB7CiAgICAg
YXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtODAyLDYgKzgwMiw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGF1ZGlvU2Vzc2lvbkFjdGl2ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBzdG9yZVJl
Z2lzdHJhdGlvbnNPbkRpc2soRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOworICAgIHZvaWQg
c2VuZEgyUGluZyhTdHJpbmcgdXJsLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMRG91YmxlPiYmKTsK
IAogICAgIHZvaWQgY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbihET01Qcm9t
aXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNl
bnRhdGlvbihET01Qcm9taXNlRGVmZXJyZWQ8SURMRE9NU3RyaW5nPiYmKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtODExLDYgKzgx
MSw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIHByb2Nlc3NJZGVudGlmaWVyOwogICAgIERPTVN0cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50
SWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAgICAgUHJvbWlzZTx2b2lkPiBzdG9yZVJl
Z2lzdHJhdGlvbnNPbkRpc2soKTsKKyAgICBQcm9taXNlPGRvdWJsZT4gc2VuZEgyUGluZyhET01T
dHJpbmcgdXJsKTsKIAogICAgIFByb21pc2U8dm9pZD4gY2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlS
ZXByZXNlbnRhdGlvbigpOwogICAgIFByb21pc2U8RE9NU3RyaW5nPiBjYWNoZVN0b3JhZ2VFbmdp
bmVSZXByZXNlbnRhdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAwOSkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjMgQEAKKzIw
MjAtMDctMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgV2ViQ29yZU5TVVJMU2Vzc2lvbiBTUEkgdG8gc2VuZCBIVFRQLzIgcGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MDMwCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDQ5NTgyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgU1BJIHRvIGRvIHRoaXMgdGhyb3VnaCBDRk5l
dHdvcmsgcmVxdWlyZXMgc2V0dGluZyBhIGJsb2NrIG9uIHRoZSB0YXNrCisgICAgICAgIGJldHdl
ZW4gY29uc3RydWN0aW9uIGFuZCByZXN1bXB0aW9uLiAgVG8gYWxsb3cgdGhpcywgSSBtYWRlIFBy
ZWNvbm5lY3RUYXNrCisgICAgICAgIGFuZCBOZXR3b3JrTG9hZCByZXF1aXJlIGEgc3RhcnQoKSBj
YWxsLCBhbmQgSSBhZGRlZCBzdGFydCgpIGNhbGxzIGV2ZXJ5d2hlcmUKKyAgICAgICAgdGhleSB3
ZXJlIGltcGxpZWQgd2l0aCBjb25zdHJ1Y3Rpb24gYmVmb3JlLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZW5kSDJQaW5nKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OnNldEgyUGluZ0NhbGxiYWNrKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2Fk
OjpOZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzdGFydCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzZXRIMlBpbmdDYWxsYmFjayk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjppbml0aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZWNv
bm5lY3RUbyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdv
cmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpzZXRIMlBpbmdDYWxsYmFjayk6CisgICAg
ICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6OlBy
ZWNvbm5lY3RUYXNrOjp+UHJlY29ubmVjdFRhc2spOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjpsb2FkRnJvbU5ldHdvcmspOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpT
cGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZSk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OnNldEgyUGluZ0NhbGxiYWNr
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6aW50
ZXJuYWxFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL1dlYkVycm9ycy5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKFdl
YktpdDo6Z2VuZXJhdGVMb2FkSWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMjAtMDctMDYgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgSGlnaCBDUFUg
dXNhZ2Ugb24gU3Rhc2ggc2VhcmNoIHJlc3VsdHMgcGFnZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2llQWNjZXB0UG9saWN5Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTU0Miw2ICs1NDMsMTkgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlZgogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBy
ZWZldGNoRE5TKGhvc3RuYW1lKTsKIH0KIAordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2VuZEgyUGluZyhOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJv
cj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisjaWYgRU5BQkxFKFNFUlZFUl9QUkVDT05O
RUNUKQorICAgIFVSTCB1cmwgPSBwYXJhbWV0ZXJzLnJlcXVlc3QudXJsKCk7CisgICAgYXV0byog
dGFzayA9IG5ldyBQcmVjb25uZWN0VGFzayhuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQoKSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgW10gKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0pOworICAg
IHRhc2stPnNldEgyUGluZ0NhbGxiYWNrKHVybCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworICAgIHRhc2stPnN0YXJ0KCk7CisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGludGVybmFsRXJyb3IocGFyYW1l
dGVycy5yZXF1ZXN0LnVybCgpKSkpOworI2VuZGlmCit9CisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyhPcHRpb25hbDx1aW50NjRfdD4gcHJlY29ubmVj
dGlvbklkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFt
ZXRlcnMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicHJlY29ubmVj
dFRvOiAocGFyZW50UElEPSVkLCBwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUi
IFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCByZXNvdXJjZUlEPSUiIFBSSXU2NCAiKSIs
IGxvYWRQYXJhbWV0ZXJzLnBhcmVudFBJRCwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQu
dG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJh
bWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7
CkBAIC01NjMsOSArNTc3LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cHJlYwogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKICAgICBhdXRvKiBzZXNzaW9uID0g
bmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoc2Vzc2lvbiAmJiBzZXNzaW9uLT5hbGxvd3NTZXJ2
ZXJQcmVjb25uZWN0KCkpIHsKLSAgICAgICAgbmV3IFByZWNvbm5lY3RUYXNrKG5ldHdvcmtQcm9j
ZXNzKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgW2NvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikgeworICAgICAgICAobmV3IFByZWNvbm5lY3RUYXNrKG5ldHdvcmtQcm9jZXNzKCks
IHNlc3Npb25JRCgpLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzKSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXJyb3IpOwotICAgICAgICB9KTsK
KyAgICAgICAgfSkpLT5zdGFydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdGVzdFBy
b2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQ
cm94eUlkZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
VGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgbG9hZFBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMmJik7CiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNlbmRIMlBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+
JiYpPiYmKTsKICAgICB2b2lkIHByZWNvbm5lY3RUbyhPcHRpb25hbDx1aW50NjRfdD4gcHJlY29u
bmVjdGlvbklkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiYpOwogCiAg
ICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24g
MjY0MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAgICAgUGFnZUxvYWRD
b21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIEJyb3dzaW5n
Q29udGV4dFJlbW92ZWQoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94
eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciB3ZWJGcmFtZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkKKyAg
ICBTZW5kSDJQaW5nKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1l
dGVycykgLT4gKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IHJlc3Vs
dCkgQXN5bmMKICAgICBQcmVjb25uZWN0VG8oT3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rp
b25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQ
YXJhbWV0ZXJzKTsKIAogICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9u
YWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCShyZXZpc2lvbiAyNjQwMDkp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsMTIgQEAgU3RyaW5nIE5ldHdvcmtEYXRhVGFzazo6
ZGVzY3JpcHRpb24oKSBjbwogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCit2b2lkIE5l
dHdvcmtEYXRhVGFzazo6c2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiB1cmwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChpbnRlcm5hbEVycm9yKHVy
bCkpKTsKK30KKwogUEFMOjpTZXNzaW9uSUQgTmV0d29ya0RhdGFUYXNrOjpzZXNzaW9uSUQoKSBj
b25zdAogewogICAgIHJldHVybiBtX3Nlc3Npb24tPnNlc3Npb25JRCgpOwpJbmRleDogU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCShyZXZpc2lvbiAy
NjQwMDkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMyLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNU
b3BMZXZlbE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2RhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uOyB9CiAKICAgICB2aXJ0dWFsIFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0
OworICAgIHZpcnR1YWwgdm9pZCBzZXRIMlBpbmdDYWxsYmFjayhjb25zdCBVUkwmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4mJik+JiYpOwogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCShy
ZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTcgKzY0LDE2IEBAIE5ldHdvcmtMb2FkOjpO
ZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWUKICAgICAsIG1fbG9hZFRocm90dGxlTGF0ZW5jeShu
ZXR3b3JrU2Vzc2lvbi5sb2FkVGhyb3R0bGVMYXRlbmN5KCkpCiAgICAgLCBtX2N1cnJlbnRSZXF1
ZXN0KG1fcGFyYW1ldGVycy5yZXF1ZXN0KQogewotICAgIGluaXRpYWxpemUobmV0d29ya1Nlc3Np
b24sIGJsb2JSZWdpc3RyeSk7Ci19Ci0KLXZvaWQgTmV0d29ya0xvYWQ6OmluaXRpYWxpemUoTmV0
d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsKiBi
bG9iUmVnaXN0cnkpCi17CiAgICAgaWYgKGJsb2JSZWdpc3RyeSAmJiBtX3BhcmFtZXRlcnMucmVx
dWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQogICAgICAgICBtX3Rhc2sgPSBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpjcmVhdGUobmV0d29ya1Nlc3Npb24sICpibG9iUmVnaXN0cnksICp0aGlzLCBt
X3BhcmFtZXRlcnMucmVxdWVzdCwgbV9wYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSwg
bV9wYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyk7CiAgICAgZWxzZQogICAgICAgICBtX3Rh
c2sgPSBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZShuZXR3b3JrU2Vzc2lvbiwgKnRoaXMsIG1fcGFy
YW1ldGVycyk7Cit9CiAKLSAgICBtX3Rhc2stPnJlc3VtZSgpOwordm9pZCBOZXR3b3JrTG9hZDo6
c3RhcnQoKQoreworICAgIGlmIChtX3Rhc2spCisgICAgICAgIG1fdGFzay0+cmVzdW1lKCk7CiB9
CiAKIE5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQoKQpAQCAtMzAwLDQgKzI5OSwxMiBAQCBTdHJp
bmcgTmV0d29ya0xvYWQ6OmRlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKIH0KIAordm9pZCBOZXR3b3JrTG9hZDo6c2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJM
JiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
bV90YXNrKQorICAgICAgICBtX3Rhc2stPnNldEgyUGluZ0NhbGxiYWNrKHVybCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQu
aAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBO
ZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWVudCYsIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwq
LCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya1Nlc3Npb24mKTsKICAgICB+TmV0d29y
a0xvYWQoKTsKIAorICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCiAgICAg
Ym9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpIGNvbnN0OwpAQCAtNjcsMTAg
KzY4LDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRN
ZXRyaWNzKCkgY29uc3QgZmluYWw7CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdDsK
KyAgICB2b2lkIHNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4m
Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBpbml0aWFsaXplKE5ldHdvcmtTZXNzaW9uJiwgV2Vi
Q29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCopOwotCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50
CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25I
YW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRv
KFBBTDo6UwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRD
cmVkZW50aWFsc1BvbGljeTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0g
UHJlY29ubmVjdE9ubHk6OlllczsKIAotICAgIG5ldyBQcmVjb25uZWN0VGFzaygqdGhpcywgc2Vz
c2lvbklELCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbXShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJikgeyB9KTsKKyAgICAobmV3IFByZWNvbm5lY3RUYXNrKCp0aGlzLCBzZXNzaW9uSUQsIFdU
Rk1vdmUocGFyYW1ldGVycyksIFtdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0p
KS0+c3RhcnQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHVybCk7CiAgICAgVU5VU0VEX1BB
UkFNKHVzZXJBZ2VudCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAyNjQwMDkpCisrKyBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzNyw2ICszMzcsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnROZXR3b3JrCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KTsKICAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBtX3BhcmFt
ZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25ldHdvcmtMb2FkID0g
bWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lz
dHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3
b3JrTG9hZC0+c3RhcnQoKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0
d29ya0xvYWQ6IEdvaW5nIHRvIHRoZSBuZXR3b3JrIChkZXNjcmlwdGlvbj0lIiBQVUJMSUNfTE9H
X1NUUklORyAiKSIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmNwcAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDE0ICs1NCwyMSBAQCBQ
cmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0d29ya1ByCiAKICAgICBBU1NFUlQocGFy
YW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKTsKICAg
ICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIs
IFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7Ci0KICAgICBtX3RpbWVvdXRU
aW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiB9CiAKLVByZWNvbm5lY3RUYXNrOjp+UHJlY29u
bmVjdFRhc2soKQordm9pZCBQcmVjb25uZWN0VGFzazo6c2V0SDJQaW5nQ2FsbGJhY2soY29uc3Qg
VVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBt
X25ldHdvcmtMb2FkLT5zZXRIMlBpbmdDYWxsYmFjayh1cmwsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAordm9pZCBQcmVjb25uZWN0VGFzazo6c3RhcnQoKQoreworICAgIG1fbmV0
d29ya0xvYWQtPnN0YXJ0KCk7Cit9CisKK1ByZWNvbm5lY3RUYXNrOjp+UHJlY29ubmVjdFRhc2so
KSA9IGRlZmF1bHQ7CisKIHZvaWQgUHJlY29ubmVjdFRhc2s6OndpbGxTZW5kUmVkaXJlY3RlZFJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UpCiB7CiAgICAgLy8gSFNUUyBy
ZWRpcmVjdGlvbiBtYXkgaGFwcGVuIGhlcmUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQwLDkgKzQwLDEyIEBAIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogCiBjbGFzcyBQcmVjb25uZWN0
VGFzayBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CiBwdWJsaWM6Ci0gICAgUHJl
Y29ubmVjdFRhc2soTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0geyB9KTsKKyAgICBQcmVjb25uZWN0VGFz
ayhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklELCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik+
JiYpOwogICAgIH5QcmVjb25uZWN0VGFzaygpOwogCisgICAgdm9pZCBzZXRIMlBpbmdDYWxsYmFj
ayhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25k
cywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpOworICAgIHZvaWQgc3RhcnQoKTsKKwog
cHJpdmF0ZToKICAgICAvLyBOZXR3b3JrTG9hZENsaWVudC4KICAgICBib29sIGlzU3luY2hyb25v
dXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpJbmRleDogU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rvd25sb2FkLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQu
Y3BwCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3
IEBAIFBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKElQQzo6Q28KICAgICA6IG1fbmV0
d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24pKQogICAgICwgbV9wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbikKIHsKKyAgICBtX25ldHdvcmtMb2Fk
LT5zdGFydCgpOwogICAgIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgPSBwYXJh
bWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6
TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CiAKICAgICBtX25ldHdvcmtMb2FkLT5zZXRQZW5k
aW5nRG93bmxvYWRJRChkb3dubG9hZElEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1Nl
cnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAkocmV2aXNpb24gMjY0MDA5KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0
VXBkYXRlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw3IEBAIHZvaWQg
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OmxvYWQKICAgICBwYXJhbWV0ZXJzLmNvbnRl
bnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6
OlNuaWZmOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CiAgICAg
bV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRyLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBzZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2FkLT5zdGFydCgp
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyOjp3aWxsU2VuZFJlZGly
ZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3Vy
Y2VSZXNwb25zZSYmKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAko
cmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2
OSw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiAKICAgICBwYXJh
bWV0ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKICAgICBwYXJhbWV0ZXJzLmlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwog
ICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0
ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKKyAgICBtX25ldHdvcmtM
b2FkLT5zdGFydCgpOwogfQogCiBTcGVjdWxhdGl2ZUxvYWQ6On5TcGVjdWxhdGl2ZUxvYWQoKQpJ
bmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVj
dWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCShy
ZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NjMsNyArNDYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVjb25uZWN0Rgog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVz
OwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IGNvbnN0cnVjdFJldmFsaWRhdGlvblJlcXVlc3Qo
c3VicmVzb3VyY2VJbmZvLmtleSgpLCBzdWJyZXNvdXJjZUluZm8sIGVudHJ5KTsKICAgICBwYXJh
bWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOwotICAgIG5ldyBQcmVjb25uZWN0VGFzayhtX2NhY2hlLm5ldHdvcmtQcm9jZXNz
KCksIG1fY2FjaGUuc2Vzc2lvbklEKCksIFdURk1vdmUocGFyYW1ldGVycyksIFtdKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0pOworICAgIChuZXcgUHJlY29ubmVjdFRhc2sobV9j
YWNoZS5uZXR3b3JrUHJvY2VzcygpLCBtX2NhY2hlLnNlc3Npb25JRCgpLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBbXShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9KSktPnN0YXJ0KCk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdWJyZXNvdXJjZUluZm8pOwogICAgIFVOVVNFRF9Q
QVJBTShlbnRyeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNjQwMDkpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHNldEgyUGluZ0NhbGxi
YWNrKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNv
bmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJikgb3ZlcnJpZGU7CisKIHByaXZhdGU6
CiAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRh
c2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpD
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlv
bkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC01NzcsNCArNTc3LDI0IEBAIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGVzY3Jp
cHRpb24KICAgICByZXR1cm4gU3RyaW5nKFttX3Rhc2sgZGVzY3JpcHRpb25dKTsKIH0KIAordm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiB1cmws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyNpZiBIQVZFKFBSRUNP
Tk5FQ1RfUElORykKKyAgICBBU1NFUlQobV90YXNrLmdldCgpLl9wcmVjb25uZWN0KTsKKyAgICBh
dXRvIGhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcldpdGhGaW5hbGl6ZXI8dm9pZChFeHBlY3Rl
ZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPihXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgW3VybF0gKEZ1bmN0aW9uPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRz
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mIGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OmludGVybmFsRXJy
b3IodXJsKSkpOworICAgIH0pOworICAgIFttX3Rhc2sgZ2V0VW5kZXJseWluZ0hUVFBDb25uZWN0
aW9uSW5mb1dpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShoYW5kbGVyKSwgdXJsXSAoX05TSFRUUENvbm5lY3Rpb25JbmZvICpjb25u
ZWN0aW9uSW5mbykgbXV0YWJsZSB7CisgICAgICAgIGlmICghY29ubmVjdGlvbkluZm8uaXNWYWxp
ZCkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChX
ZWJDb3JlOjppbnRlcm5hbEVycm9yKHVybCkpKTsKKyAgICAgICAgW2Nvbm5lY3Rpb25JbmZvIHNl
bmRQaW5nV2l0aFJlY2VpdmVIYW5kbGVyOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNFcnJvciAqZXJyb3IsIE5TVGltZUludGVy
dmFsIGludGVydmFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFNl
Y29uZHMoaW50ZXJ2YWwpKTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0pLmdldCgpXTsKKyNl
bHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OmludGVybmFsRXJyb3IodXJsKSkpOworI2VuZGlm
Cit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmNwcAkocmV2aXNpb24gMjY0
MDA5KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODQsMTQgKzg0LDYgQEAgUmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVy
cm9yKAogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBsdWdpbkVy
cm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlBsdWdpbjo6UGx1Z0luV2lsbEhhbmRsZUxvYWQsIHJl
c3BvbnNlLnVybCgpLCBXRUJfVUlfU1RSSU5HKCJQbHVnLWluIGhhbmRsZWQgbG9hZCIsICJXZWJL
aXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkIGRlc2NyaXB0aW9uIikpOwogfQogCi1SZXNvdXJj
ZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgUkVMRUFTRV9MT0df
RVJST1IoTG9hZGluZywgIkludGVybmFsIGVycm9yIGNhbGxlZCIpOwotICAgIFJFTEVBU0VfTE9H
X1NUQUNLVFJBQ0UoTG9hZGluZyk7Ci0KLSAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihBUEk6OkVy
cm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBBUEk6OkVycm9yOjpHZW5lcmFsOjpJbnRlcm5hbCwg
dXJsLCBXRUJfVUlfU1RSSU5HKCJXZWJLaXQgZW5jb3VudGVyZWQgYW4gaW50ZXJuYWwgZXJyb3Ii
LCAiV2ViS2l0RXJyb3JJbnRlcm5hbCBkZXNjcmlwdGlvbiIpKTsKLX0KLQogI2lmICFQTEFURk9S
TShDT0NPQSkKIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0KQogewpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgJKHJldmlzaW9u
IDI2NDAwOSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw2IEBAIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEJ5Q29u
dGVudEYKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd01JTUVUeXBlRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBm
aWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwog
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLVdlYkNvcmU6OlJlc291cmNlRXJyb3IgaW50ZXJu
YWxFcnJvcihjb25zdCBVUkwmKTsKIAogI2lmIFVTRShTT1VQKQogV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBkb3dubG9hZE5ldHdvcmtFcnJvcihjb25zdCBVUkwmLCBjb25zdCBXVEY6OlN0cmluZyYp
OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRl
Z3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MzMsNyArNjMzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6YnJvd3NpbmdDb250ZXh0
UgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6QnJvd3NpbmdDb250ZXh0UmVtb3ZlZChwYWdlLndlYlBhZ2VQcm94eUlkZW50aWZp
ZXIoKSwgcGFnZS5pZGVudGlmaWVyKCksIFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKGZyYW1lKS0+
ZnJhbWVJRCgpKSwgMCk7CiB9CiAKLXN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxvYWRJZGVudGlm
aWVyKCkKK3VpbnQ2NF90IFdlYkxvYWRlclN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVy
KCkKIHsKICAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IDA7CiAgICAgcmV0dXJuICsr
aWRlbnRpZmllcjsKQEAgLTY2Miw3ICs2NjIsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
dGFydFBpbmdMb2FkKEZyCiAgICAgfQogCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMgbG9hZFBhcmFtZXRlcnM7Ci0gICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciA9IGdlbmVy
YXRlTG9hZElkZW50aWZpZXIoKTsKKyAgICBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyID0gV2Vi
TG9hZGVyU3RyYXRlZ3k6OmdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKTsK
ICAgICBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlLT5pZGVudGlmaWVyKCk7CiAg
ICAgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CkBAIC03
MjYsNyArNzI2LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKFdlYgog
ewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwcmVjb25uZWN0aW9uSWRlbnRpZmllcjsKICAgICBp
ZiAoY29tcGxldGlvbkhhbmRsZXIpIHsKLSAgICAgICAgcHJlY29ubmVjdGlvbklkZW50aWZpZXIg
PSBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CisgICAgICAgIHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyID0gV2ViTG9hZGVyU3RyYXRlZ3k6OmdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKICAgICAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3ByZWNvbm5lY3RDb21wbGV0aW9uSGFuZGxlcnMuYWRkKCpw
cmVjb25uZWN0aW9uSWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaAkocmV2aXNpb24gMjY0MDA5KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtODks
NiArODksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRPbmxpbmVTdGF0ZUNoYW5nZUxpc3RlbmVy
KEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0T25MaW5lU3RhdGUo
Ym9vbCk7CiAKKyAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVMb2FkSWRlbnRpZmllcigpOwor
CiBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
JiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UqLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QpOwogICAgIHZvaWQgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9h
ZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCShyZXZpc2lvbiAyNjQwMDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbmNs
dWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVkZSAiU2hhcmVk
QnVmZmVyRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCkBAIC01Miw2ICs1
Myw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKICNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXIuaCIKKyNpbmNsdWRl
ICJXZWJMb2FkZXJTdHJhdGVneS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRhU3RvcmUu
aCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIK
QEAgLTg0LDYgKzg2LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lQXBwbGljYXRpb25DaGVj
a3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KQEAgLTE4NjAsNiArMTg2MywyOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwcmVm
ZXRjaEROUyhjCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucHJlZmV0Y2hETlMoaG9zdG5h
bWUpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKGNvbnN0IFVS
TCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFJlc291cmNl
RXJyb3I+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7CisKKyAg
ICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIHBhcmFtZXRl
cnMucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCh1cmwpOworICAgIHBhcmFtZXRlcnMuaWRlbnRp
ZmllciA9IFdlYkxvYWRlclN0cmF0ZWd5OjpnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CisgICAg
cGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCA9IHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZp
ZXIoKTsKKyAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsK
KyAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSBtX2ZyYW1lLT5mcmFtZUlEKCk7CisgICAgcGFy
YW1ldGVycy5wYXJlbnRQSUQgPSBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKKyNpZiBIQVZF
KEFVRElUX1RPS0VOKQorICAgIHBhcmFtZXRlcnMubmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
bmV0d29ya1Byb2Nlc3NBdWRpdFRva2VuKCk7CisjZW5kaWYKKyAgICBwYXJhbWV0ZXJzLnNob3Vs
ZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKKyAgICBwYXJhbWV0ZXJzLm9w
dGlvbnMuZGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmlu
ZzsKKyAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBtX2ZyYW1l
LT5pc1RvcEZyYW1lTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICAKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6U2VuZEgyUGluZyhwYXJhbWV0ZXJzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oKQogewogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjY0MDA5KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw2ICsyNjMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZvaWQgc2Vu
ZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6
U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9p
ZCBkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSBmaW5hbDsKIApJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY0MDA5KQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDct
MDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBBZGQgV2ViQ29yZU5TVVJMU2Vzc2lvbiBTUEkgdG8gc2VuZCBIVFRQLzIgcGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0MDMwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS82NDQ5NTgyNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJl
Y29ubmVjdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBBZGQg
YSBkaXNhYmxlZCB0ZXN0IEkgdXNlZCB0byB2ZXJpZnkgdGhpcyB3b3JrcyBjb3JyZWN0bHkuCisK
IDIwMjAtMDctMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIHByb2Nlc3Mgc29tZXRpbWVzIGNyYXNoZXMgd2hlbiB0cmFuc2xhdGluZyBhbiBh
cnRpY2xlIG9uIHNwaWVnZWwuZGUKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJlY29ubmVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1ByZWNvbm5lY3QubW0JKHJldmlzaW9uIDI2NDAwOSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJlY29ubmVjdC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNyArMzAsOSBAQAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9y
dCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUu
aCIKKyNpbXBvcnQgIlRlc3RVSURlbGVnYXRlLmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKKyNp
bXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIKICNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTcxLDYgKzE3MywzNCBAQCBURVNUKFByZWNv
bm5lY3QsIERJU0FCTEVEX0gyUGluZykKICAgICBVdGlsOjpzcGluUnVuTG9vcCgxMDApOwogICAg
IEVYUEVDVF9FUShoZWFkZXJzQ291bnQsIDF1KTsKIH0KKworLy8gVGhpcyBzaG91bGQgcmVtYWlu
IGRpc2FibGVkIHVudGlsIHJkYXI6Ly9wcm9ibGVtLzY1MDU1OTMwIGlzIGludGVncmF0ZWQgYW5k
IGJvdHMgYXJlIHVwZGF0ZWQKK1RFU1QoUHJlY29ubmVjdCwgRElTQUJMRURfSDJQaW5nRnJvbVdl
YkNvcmVOU1VSTFNlc3Npb24pCit7CisgICAgc2l6ZV90IGhlYWRlcnNDb3VudCA9IDA7CisgICAg
SFRUUFNlcnZlciBzZXJ2ZXIoW2hlYWRlcnNDb3VudCA9ICZoZWFkZXJzQ291bnRdIChDb25uZWN0
aW9uIHRsc0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgcGluZ1BvbmcoSDI6OkNvbm5lY3Rpb246OmNy
ZWF0ZSh0bHNDb25uZWN0aW9uKSwgaGVhZGVyc0NvdW50KTsKKyAgICB9LCBIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cDIpOworCisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJh
dGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVz
dFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1
cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbl0pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgbmV3XSk7CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0gZmFs
c2U7CisgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpe
KFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZv
aWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRo
b2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICAg
ICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VS
TENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
c2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiPHNjcmlwdD5pbnRlcm5hbHMuc2VuZEgyUGluZygnaHR0cHM6
Ly8xMjcuMC4wLjE6JWQvJykudGhlbihmdW5jdGlvbih0KXtpZih0PjApe2FsZXJ0KCdwYXNzJyl9
ZWxzZXthbGVydCgnZmFpbCcpfX0pPC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQoKV0gYmFzZVVSTDpu
aWxdOworICAgIEVYUEVDVF9XS19TVFJFUShbd2ViVmlldyBfdGVzdF93YWl0Rm9yQWxlcnRdLCAi
cGFzcyIpOworICAgIEVYUEVDVF9GQUxTRShoZWFkZXJzQ291bnQpOworICAgIEVYUEVDVF9UUlVF
KHJlY2VpdmVkQ2hhbGxlbmdlKTsKK30KKworCisKICNlbmRpZiAvLyBIQVZFKFBSRUNPTk5FQ1Rf
UElORykKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403695</attachid>
            <date>2020-07-07 09:00:19 -0700</date>
            <delta_ts>2020-07-07 10:05:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214030-20200707100018.patch</filename>
            <type>text/plain</type>
            <size>52530</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdlYkNv
cmVOU1VSTFNlc3Npb24gU1BJIHRvIHNlbmQgSFRUUC8yIHBpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDAzMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNjQ0OTU4Mjc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGxvdHMgb2YgcGx1bWJpbmcsIG1vdmUgaW50ZXJuYWxFcnJvciBmcm9tIFdl
YktpdCB0byBXZWJDb3JlLgorCisgICAgICAgIENvdmVyZWQgYnkgYW4gQVBJIHRlc3QgdGhhdCBy
ZXF1aXJlcyBzb21lIGZ1dHVyZSBDRk5ldHdvcmsgYmVoYXZpb3IuCisKKyAgICAgICAgKiBTb3Vy
Y2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKToKKyAgICAg
ICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1BsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyOjpzZW5kSDJQaW5nKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmludGVybmFsRXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb24gc2VuZEgy
UGluZzpwb25nSGFuZGxlcjpdKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNlbmRIMlBpbmcpOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaWRsOgorCiAyMDIw
LTA3LTA3ICBUb21va2kgSW1haSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgogCiAgICAgICAgIFtX
aW5dIEltcGxlbWVudCBQYXN0ZWJvYXJkOjp3cml0ZUN1c3RvbURhdGEgZm9yIFdlYiBJbnNwZWN0
b3IgQ29uc29sZSB0YWIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZURlZmVycmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlRGVmZXJyZWQuaAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIzLDcgKzEyMyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVqZWN0KFJlamVjdEFzSGFuZGxl
ZCA9IFJlamVjdEFzSGFuZGxlZDo6Tm8pOwogICAgIHZvaWQgcmVqZWN0KHN0ZDo6bnVsbHB0cl90
LCBSZWplY3RBc0hhbmRsZWQgPSBSZWplY3RBc0hhbmRsZWQ6Ok5vKTsKLSAgICB2b2lkIHJlamVj
dChFeGNlcHRpb24sIFJlamVjdEFzSGFuZGxlZCA9IFJlamVjdEFzSGFuZGxlZDo6Tm8pOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVqZWN0KEV4Y2VwdGlvbiwgUmVqZWN0QXNIYW5kbGVkID0g
UmVqZWN0QXNIYW5kbGVkOjpObyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWplY3QoRXhj
ZXB0aW9uQ29kZSwgY29uc3QgU3RyaW5nJiA9IHsgfSwgUmVqZWN0QXNIYW5kbGVkID0gUmVqZWN0
QXNIYW5kbGVkOjpObyk7CiAgICAgdm9pZCByZWplY3QoY29uc3QgSlNDOjpQcml2YXRlTmFtZSYs
IFJlamVjdEFzSGFuZGxlZCA9IFJlamVjdEFzSGFuZGxlZDo6Tm8pOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0Niw2
ICs1NDYsMTIgQEAgUmVmPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEVtcHR5RnJhbWVMbwogICAg
IHJldHVybiBFbXB0eUZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZSgpOwogfQogCit2b2lk
IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNlbmRIMlBpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwpKSk7Cit9CisK
IHZvaWQgRW1wdHlFZGl0b3JDbGllbnQ6OkVtcHR5VGV4dENoZWNrZXJDbGllbnQ6OnJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFRleHRDaGVja2luZ1JlcXVlc3QmLCBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJikKIHsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDYgKzE5Niw3
IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2FkZXJDbGkKIAogICAgIGJvb2wg
aXNFbXB0eUZyYW1lTG9hZGVyQ2xpZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZvaWQgcHJlZmV0Y2hETlMoY29uc3QgU3RyaW5nJikgZmluYWwgeyB9CisgICAgdm9pZCBz
ZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8U2Vj
b25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYpIGZpbmFsOwogCiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgUmVmUHRyPExlZ2FjeVByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZVByZXZpZXdMb2Fk
ZXJDbGllbnQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgZmluYWwgeyByZXR1cm4gbnVs
bHB0cjsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJ
KHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiTGF5b3V0
TWlsZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0ljb24uaCIKICNpbmNsdWRlICJQYWdlSWRlbnRp
Zmllci5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM1OCw2ICszNTgsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJikgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHsgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZp
c2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDE1IEBAIHZvaWQgTWVkaWFSZXNvdXJj
ZUxvYWRlcjo6Y29udGV4dERlc3Ryb3kKICAgICBtX21lZGlhRWxlbWVudCA9IG51bGxwdHI7CiB9
CiAKK3ZvaWQgTWVkaWFSZXNvdXJjZUxvYWRlcjo6c2VuZEgyUGluZyhjb25zdCBVUkwmIHVybCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYm
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fZG9jdW1lbnQgfHwgIW1fZG9j
dW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChpbnRlcm5hbEVycm9yKHVybCkpKTsKKworICAgIG1fZG9jdW1lbnQtPmZyYW1lKCkt
PmxvYWRlcigpLmNsaWVudCgpLnNlbmRIMlBpbmcodXJsLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKKwogUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIExvYWRP
cHRpb25zIG9wdGlvbnMpCiB7CiAgICAgaWYgKCFtX2RvY3VtZW50KQpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCShyZXZpc2lvbiAyNjQwMTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5NZWRpYVJlc291cmNlTG9hZGVyKCk7CiAKICAgICBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291
cmNlPiByZXF1ZXN0UmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYsIExvYWRPcHRpb25zKSBmaW5h
bDsKKyAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CiAgICAgdm9p
ZCByZW1vdmVSZXNvdXJjZShNZWRpYVJlc291cmNlJik7CiAKICAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSB7IHJldHVybiBtX2RvY3VtZW50LmdldCgpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2VMb2FkZXIuaAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIlBvbGljeUNoZWNrZXIuaCIKICNpbmNsdWRlIDx3
dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvRXhwZWN0ZWQuaD4KICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtNjYsNiArNjcsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgPSBkZWZhdWx0
OwogCiAgICAgdmlydHVhbCBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiByZXF1ZXN0UmVz
b3VyY2UoUmVzb3VyY2VSZXF1ZXN0JiYsIExvYWRPcHRpb25zKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxTZWNvbmRzLCBSZXNvdXJjZUVycm9yPiYmKT4mJikgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAg
UGxhdGZvcm1NZWRpYVJlc291cmNlTG9hZGVyKCkgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5jcHAJ
KHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VFcnJvckJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogCisjaW5jbHVkZSAi
TG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjb25zdCBjaGFyKiBjb25zdCBlcnJvckRvbWFpbldlYktpdEludGVybmFsID0g
IldlYktpdEludGVybmFsIjsKQEAgLTg4LDQgKzkxLDEyIEBAIGJvb2wgUmVzb3VyY2VFcnJvckJh
c2U6OmNvbXBhcmUoY29uc3QgUmUKICAgICByZXR1cm4gUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1D
b21wYXJlKGEsIGIpOwogfQogCitSZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgVVJM
JiB1cmwpCit7CisgICAgUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgIkludGVybmFsIGVycm9y
IGNhbGxlZCIpOworICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJBQ0UoTG9hZGluZyk7CisKKyAgICBy
ZXR1cm4gUmVzb3VyY2VFcnJvcigiV2ViS2l0RXJyb3JEb21haW4iX3MsIDMwMCwgdXJsLCBXRUJf
VUlfU1RSSU5HKCJXZWJLaXQgZW5jb3VudGVyZWQgYW4gaW50ZXJuYWwgZXJyb3IiLCAiV2ViS2l0
RXJyb3JJbnRlcm5hbCBkZXNjcmlwdGlvbiIpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VFcnJvckJhc2UuaAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5
Niw4IEBAIHByaXZhdGU6CiAgICAgY29uc3QgUmVzb3VyY2VFcnJvciYgYXNSZXNvdXJjZUVycm9y
KCkgY29uc3Q7CiB9OwogCitXRUJDT1JFX0VYUE9SVCBSZXNvdXJjZUVycm9yIGludGVybmFsRXJy
b3IoY29uc3QgVVJMJik7CisKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VF
cnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikgeyByZXR1cm4gUmVzb3VyY2VFcnJvckJh
c2U6OmNvbXBhcmUoYSwgYik7IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgUmVzb3Vy
Y2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikgeyByZXR1cm4gIShhID09IGIpOyB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5T
VVJMU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNvcmVOU1VSTFNlc3Npb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwxMCBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJm
YWNlIFdlYkNvcmVOU1VSTFNlCiAtIChOU1VSTFNlc3Npb25Eb3dubG9hZFRhc2sgKilkb3dubG9h
ZFRhc2tXaXRoUmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNVUkwgKiBsb2NhdGlvbiwgTlNVUkxSZXNwb25zZSAqIHJlc3BvbnNlLCBO
U0Vycm9yICogZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOwogQGVuZAogCitAaW50ZXJmYWNlIFdl
YkNvcmVOU1VSTFNlc3Npb24gKFdlYktpdEF3ZXNvbWVuZXNzKQorLSAodm9pZClzZW5kSDJQaW5n
OihOU1VSTCAqKXVybCBwb25nSGFuZGxlcjoodm9pZCAoXikoTlNFcnJvciAqIF9OdWxsYWJsZSBl
cnJvciwgTlNUaW1lSW50ZXJ2YWwgaW50ZXJ2YWwpKXBvbmdIYW5kbGVyOworQGVuZAorCiBAaW50
ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayA6IE5TT2JqZWN0IHsKICAgICBfX3Vu
c2FmZV91bnJldGFpbmVkIFdlYkNvcmVOU1VSTFNlc3Npb24gKl9zZXNzaW9uOwogICAgIFJlZlB0
cjxXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IF9yZXNvdXJjZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1dlYkNv
cmVOU1VSTFNlc3Npb24ubW0JKHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDY2LDYgKzQ2NiwxOSBAQCAtIChOU1VSTFNlc3Npb25EYXRhVGFzayAqKWRhdGFUYXNr
V2l0aFVSCiAgICAgcmV0dXJuIChOU1VSTFNlc3Npb25EYXRhVGFzayAqKVt0YXNrIGF1dG9yZWxl
YXNlXTsKIH0KIAorLSAodm9pZClzZW5kSDJQaW5nOihOU1VSTCAqKXVybCBwb25nSGFuZGxlcjoo
dm9pZCAoXikoTlNFcnJvciAqZXJyb3IsIE5TVGltZUludGVydmFsIGludGVydmFsKSlwb25nSGFu
ZGxlcgoreworICAgIGlmIChfaW52YWxpZGF0ZWQpCisgICAgICAgIHJldHVybiBwb25nSGFuZGxl
cihhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46TlNVUkxFcnJvckRvbWFp
biBjb2RlOk5TVVJMRXJyb3JVbmtub3duIHVzZXJJbmZvOm5pbF0pLmdldCgpLCAwKTsKKworICAg
IHNlbGYubG9hZGVyLnNlbmRIMlBpbmcodXJsLCBbcG9uZ0hhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
cG9uZ0hhbmRsZXIpXSAoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQp
IHsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIHBvbmdIYW5kbGVyKG5pbCwgcmVz
dWx0LnZhbHVlKCkudmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBvbmdIYW5k
bGVyKHJlc3VsdC5lcnJvcigpLCAwKTsKKyAgICB9KTsKK30KKwogLSAoTlNVUkxTZXNzaW9uVXBs
b2FkVGFzayAqKXVwbG9hZFRhc2tXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBm
cm9tRmlsZTooTlNVUkwgKilmaWxlVVJMCiB7CiAgICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMjY0MDE2KQor
KysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MzQ5LDYgKzUzNDksMjggQEAgdm9pZCBJbnRlcm5hbHM6OnN0b3JlUmVnaXN0cmF0aW9uc09u
RGlzawogI2VuZGlmCiB9CiAKK3ZvaWQgSW50ZXJuYWxzOjpzZW5kSDJQaW5nKFN0cmluZyB1cmws
IERPTVByb21pc2VEZWZlcnJlZDxJRExEb3VibGU+JiYgcHJvbWlzZSkKK3sKKyAgICBhdXRvKiBk
b2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpIHsKKyAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoSW52YWxpZFN0YXRlRXJyb3IpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgYXV0byogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBpZiAoIWZy
YW1lKSB7CisgICAgICAgIHByb21pc2Uuc2V0dGxlKEludmFsaWRTdGF0ZUVycm9yKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zZW5kSDJQ
aW5nKFVSTChVUkwoKSwgdXJsKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoRXhwZWN0
ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBp
ZiAocmVzdWx0Lmhhc192YWx1ZSgpKQorICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3Vs
dC52YWx1ZSgpLnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcm9taXNlLnNl
dHRsZShJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgfSk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpj
bGVhckNhY2hlU3RvcmFnZU1lbW9yeVJlcHJlc2VudGF0aW9uKERPTVByb21pc2VEZWZlcnJlZDx2
b2lkPiYmIHByb21pc2UpCiB7CiAgICAgYXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMjY0MDE2KQor
KysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAt
ODAyLDYgKzgwMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGF1ZGlvU2Vzc2lvbkFjdGl2ZSgpIGNv
bnN0OwogCiAgICAgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soRE9NUHJvbWlzZURlZmVy
cmVkPHZvaWQ+JiYpOworICAgIHZvaWQgc2VuZEgyUGluZyhTdHJpbmcgdXJsLCBET01Qcm9taXNl
RGVmZXJyZWQ8SURMRG91YmxlPiYmKTsKIAogICAgIHZvaWQgY2xlYXJDYWNoZVN0b3JhZ2VNZW1v
cnlSZXByZXNlbnRhdGlvbihET01Qcm9taXNlRGVmZXJyZWQ8dm9pZD4mJik7CiAgICAgdm9pZCBj
YWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNlbnRhdGlvbihET01Qcm9taXNlRGVmZXJyZWQ8SURMRE9N
U3RyaW5nPiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlz
aW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtODExLDYgKzgxMSw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHByb2Nlc3NJZGVudGlmaWVyOwogICAgIERPTVN0
cmluZyBzZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcihEb2N1bWVudCBkb2N1bWVudCk7CiAg
ICAgUHJvbWlzZTx2b2lkPiBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2soKTsKKyAgICBQcm9taXNl
PGRvdWJsZT4gc2VuZEgyUGluZyhET01TdHJpbmcgdXJsKTsKIAogICAgIFByb21pc2U8dm9pZD4g
Y2xlYXJDYWNoZVN0b3JhZ2VNZW1vcnlSZXByZXNlbnRhdGlvbigpOwogICAgIFByb21pc2U8RE9N
U3RyaW5nPiBjYWNoZVN0b3JhZ2VFbmdpbmVSZXByZXNlbnRhdGlvbigpOwpJbmRleDogU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNjMgQEAKKzIwMjAtMDctMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgV2ViQ29yZU5TVVJMU2Vzc2lvbiBT
UEkgdG8gc2VuZCBIVFRQLzIgcGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE0MDMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDQ5NTgyNz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgU1BJ
IHRvIGRvIHRoaXMgdGhyb3VnaCBDRk5ldHdvcmsgcmVxdWlyZXMgc2V0dGluZyBhIGJsb2NrIG9u
IHRoZSB0YXNrCisgICAgICAgIGJldHdlZW4gY29uc3RydWN0aW9uIGFuZCByZXN1bXB0aW9uLiAg
VG8gYWxsb3cgdGhpcywgSSBtYWRlIFByZWNvbm5lY3RUYXNrCisgICAgICAgIGFuZCBOZXR3b3Jr
TG9hZCByZXF1aXJlIGEgc3RhcnQoKSBjYWxsLCBhbmQgSSBhZGRlZCBzdGFydCgpIGNhbGxzIGV2
ZXJ5d2hlcmUKKyAgICAgICAgdGhleSB3ZXJlIGltcGxpZWQgd2l0aCBjb25zdHJ1Y3Rpb24gYmVm
b3JlLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL1BlbmRpbmdEb3dubG9h
ZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
ZW5kSDJQaW5nKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2suY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6
OnNldEgyUGluZ0NhbGxiYWNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpOZXR3b3JrTG9hZCk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtMb2FkOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjpzZXRI
MlBpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtMb2FkOjppbml0aWFsaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9QcmVjb25uZWN0VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpz
ZXRIMlBpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjpzdGFy
dCk6CisgICAgICAgIChXZWJLaXQ6OlByZWNvbm5lY3RUYXNrOjp+UHJlY29ubmVjdFRhc2spOiBE
ZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyOjpsb2FkRnJvbU5ldHdvcmspOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnBy
ZWNvbm5lY3RGb3JTdWJyZXNvdXJjZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
Q29jb2E6OnNldEgyUGluZ0NhbGxiYWNrKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6aW50ZXJuYWxFcnJvcik6IERlbGV0ZWQuCisgICAgICAgICog
U2hhcmVkL1dlYkVycm9ycy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpnZW5l
cmF0ZUxvYWRJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6
OnN0YXJ0UGluZ0xvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6cHJl
Y29ubmVjdFRvKToKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVMb2FkSWRlbnRpZmllcik6IERl
bGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5n
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisKIDIwMjAtMDctMDcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2MjY4MCk6IFtHVEtdIENyYXNoIGluIFdl
YktpdDo6RHJvcFRhcmdldDo6ZGlkUGVyZm9ybUFjdGlvbgpJbmRleDogU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNiArMjM4LDEx
IEBAIFJlZjxQbGF0Zm9ybU1lZGlhUmVzb3VyY2U+IFJlbW90ZU1lZGlhUGwKICAgICByZXR1cm4g
cmVtb3RlTWVkaWFSZXNvdXJjZTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpz
ZW5kSDJQaW5nKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OlNlbmRIMlBpbmcodXJsKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faWQpOworfQorCiB2b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6OnJlbW92ZVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyIHJl
bW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKQogewogICAgIG1fd2ViUHJvY2Vzc0Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6UmVtb3ZlUmVzb3Vy
Y2UocmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIpLCBtX2lkKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHdvdWxkVGFpbnRPcmlnaW4oc3RydWN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxib29sPik+
JiYpOwogCiAgICAgUmVmPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJl
c291cmNlKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlh
UmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zKTsKKyAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKFJlbW90
ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVyKTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVBs
YXllcj4gbWVkaWFQbGF5ZXIoKSB7IHJldHVybiBtX3BsYXllcjsgfQpJbmRleDogU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw2ICs1MSwxNCBAQCBSZWZQdHI8UGxhdGZvcm1NZWRpYVJlc291cmNlPiBSZW1vdGVNZWRp
CiAgICAgcmV0dXJuIG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eS0+cmVxdWVzdFJlc291cmNlKFdU
Rk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOwogfQogCit2b2lkIFJlbW90ZU1lZGlhUmVzb3VyY2VM
b2FkZXI6OnNlbmRIMlBpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKCFtX3JlbW90ZU1lZGlhUGxheWVyUHJveHkpCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChpbnRlcm5hbEVycm9yKHVybCkpKTsKKyAg
ICAKKyAgICBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHktPnNlbmRIMlBpbmcodXJsLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVJlc291
cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUmVzb3VyY2VMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgUmVm
UHRyPFdlYkNvcmU6OlBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBMb2FkT3B0aW9ucykgZmluYWw7CisgICAgdm9pZCBzZW5k
SDJQaW5nKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpT
ZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJikgZmluYWw7CisKICAgICBXZWFr
UHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAyNjQwMTYpCisr
KyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQQ29va2ll
QWNjZXB0UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlTG9hZE9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KQEAgLTU0
Miw2ICs1NDMsMTkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlZgog
ICAgIG1fbmV0d29ya1Byb2Nlc3MtPnByZWZldGNoRE5TKGhvc3RuYW1lKTsKIH0KIAordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2VuZEgyUGluZyhOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisj
aWYgRU5BQkxFKFNFUlZFUl9QUkVDT05ORUNUKQorICAgIFVSTCB1cmwgPSBwYXJhbWV0ZXJzLnJl
cXVlc3QudXJsKCk7CisgICAgYXV0byogdGFzayA9IG5ldyBQcmVjb25uZWN0VGFzayhuZXR3b3Jr
UHJvY2VzcygpLCBzZXNzaW9uSUQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW10gKGNvbnN0IFJl
c291cmNlRXJyb3ImKSB7IH0pOworICAgIHRhc2stPnNldEgyUGluZ0NhbGxiYWNrKHVybCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHRhc2stPnN0YXJ0KCk7CisjZWxzZQorICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKGludGVybmFsRXJyb3IocGFyYW1ldGVycy5yZXF1ZXN0LnVybCgpKSkpOworI2VuZGlmCit9
CisKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnByZWNvbm5lY3RUbyhPcHRp
b25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAicHJlY29ubmVjdFRvOiAocGFyZW50UElEPSVkLCBwYWdlUHJveHlJRD0l
IiBQUkl1NjQgIiwgd2ViUGFnZUlEPSUiIFBSSXU2NCAiLCBmcmFtZUlEPSUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEPSUiIFBSSXU2NCAiKSIsIGxvYWRQYXJhbWV0ZXJzLnBhcmVudFBJRCwgbG9hZFBh
cmFtZXRlcnMud2ViUGFnZVByb3h5SUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFn
ZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQudG9VSW50NjQoKSwgbG9h
ZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CkBAIC01NjMsOSArNTc3LDkgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cHJlYwogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVD
VCkKICAgICBhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oKTsKICAgICBpZiAoc2Vzc2lv
biAmJiBzZXNzaW9uLT5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KCkpIHsKLSAgICAgICAgbmV3IFBy
ZWNvbm5lY3RUYXNrKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKGxvYWRQ
YXJhbWV0ZXJzKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildIChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgeworICAgICAgICAobmV3IFByZWNvbm5l
Y3RUYXNrKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCgpLCBXVEZNb3ZlKGxvYWRQYXJhbWV0
ZXJzKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXJyb3IpOwotICAgICAgICB9KTsKKyAgICAgICAgfSkpLT5zdGFydCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCShyZXZp
c2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0
aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1do
ZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgbG9hZFBpbmco
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBwcmVmZXRjaEROUyhj
b25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNlbmRIMlBpbmcoTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKTsKICAgICB2b2lkIHByZWNvbm5lY3RUbyhP
cHRpb25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihSZXNv
dXJjZUxvYWRJZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzCiAgICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlEKQogICAgIEJyb3dzaW5nQ29udGV4dFJlbW92ZWQoV2ViS2l0OjpXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciB3ZWJGcmFtZUlEKQogICAgIFByZWZldGNo
RE5TKFN0cmluZyBob3N0bmFtZSkKKyAgICBTZW5kSDJQaW5nKFdlYktpdDo6TmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVycykgLT4gKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3I+IHJlc3VsdCkgQXN5bmMKICAgICBQcmVjb25uZWN0VG8oT3B0aW9u
YWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIFN0YXJ0RG93bmxvYWQo
V2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2suY3BwCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsMTIgQEAg
U3RyaW5nIE5ldHdvcmtEYXRhVGFzazo6ZGVzY3JpcHRpb24oKSBjbwogICAgIHJldHVybiBlbXB0
eVN0cmluZygpOwogfQogCit2b2lkIE5ldHdvcmtEYXRhVGFzazo6c2V0SDJQaW5nQ2FsbGJhY2so
Y29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNv
bmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5l
eHBlY3RlZChpbnRlcm5hbEVycm9yKHVybCkpKTsKK30KKwogUEFMOjpTZXNzaW9uSUQgTmV0d29y
a0RhdGFUYXNrOjpzZXNzaW9uSUQoKSBjb25zdAogewogICAgIHJldHVybiBtX3Nlc3Npb24tPnNl
c3Npb25JRCgpOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtEYXRhVGFzay5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtEYXRhVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMyLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNUb3BMZXZlbE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2RhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uOyB9CiAKICAgICB2aXJ0dWFsIFN0
cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRIMlBpbmdDYWxs
YmFjayhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vj
b25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYpOwogCiAgICAgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWQuY3BwCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsMTcg
KzY0LDE2IEBAIE5ldHdvcmtMb2FkOjpOZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWUKICAgICAs
IG1fbG9hZFRocm90dGxlTGF0ZW5jeShuZXR3b3JrU2Vzc2lvbi5sb2FkVGhyb3R0bGVMYXRlbmN5
KCkpCiAgICAgLCBtX2N1cnJlbnRSZXF1ZXN0KG1fcGFyYW1ldGVycy5yZXF1ZXN0KQogewotICAg
IGluaXRpYWxpemUobmV0d29ya1Nlc3Npb24sIGJsb2JSZWdpc3RyeSk7Ci19Ci0KLXZvaWQgTmV0
d29ya0xvYWQ6OmluaXRpYWxpemUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBXZWJD
b3JlOjpCbG9iUmVnaXN0cnlJbXBsKiBibG9iUmVnaXN0cnkpCi17CiAgICAgaWYgKGJsb2JSZWdp
c3RyeSAmJiBtX3BhcmFtZXRlcnMucmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKQogICAg
ICAgICBtX3Rhc2sgPSBOZXR3b3JrRGF0YVRhc2tCbG9iOjpjcmVhdGUobmV0d29ya1Nlc3Npb24s
ICpibG9iUmVnaXN0cnksICp0aGlzLCBtX3BhcmFtZXRlcnMucmVxdWVzdCwgbV9wYXJhbWV0ZXJz
LmNvbnRlbnRTbmlmZmluZ1BvbGljeSwgbV9wYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyk7
CiAgICAgZWxzZQogICAgICAgICBtX3Rhc2sgPSBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZShuZXR3
b3JrU2Vzc2lvbiwgKnRoaXMsIG1fcGFyYW1ldGVycyk7Cit9CiAKLSAgICBtX3Rhc2stPnJlc3Vt
ZSgpOwordm9pZCBOZXR3b3JrTG9hZDo6c3RhcnQoKQoreworICAgIGlmIChtX3Rhc2spCisgICAg
ICAgIG1fdGFzay0+cmVzdW1lKCk7CiB9CiAKIE5ldHdvcmtMb2FkOjp+TmV0d29ya0xvYWQoKQpA
QCAtMzAwLDQgKzI5OSwxMiBAQCBTdHJpbmcgTmV0d29ya0xvYWQ6OmRlc2NyaXB0aW9uKCkgY29u
c3QKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAordm9pZCBOZXR3b3JrTG9hZDo6c2V0
SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBpZiAobV90YXNrKQorICAgICAgICBtX3Rhc2stPnNldEgyUGlu
Z0NhbGxiYWNrKHVybCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGVsc2UKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoaW50ZXJuYWxFcnJvcih1cmwp
KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBOZXR3b3JrTG9hZChOZXR3b3JrTG9hZENsaWVudCYsIFdl
YkNvcmU6OkJsb2JSZWdpc3RyeUltcGwqLCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29y
a1Nlc3Npb24mKTsKICAgICB+TmV0d29ya0xvYWQoKTsKIAorICAgIHZvaWQgc3RhcnQoKTsKICAg
ICB2b2lkIGNhbmNlbCgpOwogCiAgICAgYm9vbCBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50
aWFscygpIGNvbnN0OwpAQCAtNjcsMTAgKzY4LDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkgY29uc3QgZmluYWw7CiAKICAgICBTdHJp
bmcgZGVzY3JpcHRpb24oKSBjb25zdDsKKyAgICB2b2lkIHNldEgyUGluZ0NhbGxiYWNrKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBpbml0aWFs
aXplKE5ldHdvcmtTZXNzaW9uJiwgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbCopOwotCiAgICAg
Ly8gTmV0d29ya0RhdGFUYXNrQ2xpZW50CiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlh
dGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCShy
ZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQyMSw3ICsxNDIxLDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6UwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBwYXJhbWV0ZXJz
LnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKIAotICAgIG5ldyBQ
cmVjb25uZWN0VGFzaygqdGhpcywgc2Vzc2lvbklELCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbXShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9KTsKKyAgICAobmV3IFByZWNvbm5lY3RU
YXNrKCp0aGlzLCBzZXNzaW9uSUQsIFdURk1vdmUocGFyYW1ldGVycyksIFtdKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImKSB7IH0pKS0+c3RhcnQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BB
UkFNKHVybCk7CiAgICAgVU5VU0VEX1BBUkFNKHVzZXJBZ2VudCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNyw2ICszMzcsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrCiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gPSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZu
ZXR3b3JrU2Vzc2lvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3
b3JrU2Vzc2lvbik7CisgICAgbV9uZXR3b3JrTG9hZC0+c3RhcnQoKTsKIAogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEdvaW5nIHRvIHRoZSBuZXR3b3JrIChk
ZXNjcmlwdGlvbj0lIiBQVUJMSUNfTE9HX1NUUklORyAiKSIsIG1fbmV0d29ya0xvYWQtPmRlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcAkocmV2aXNpb24gMjY0MDE2KQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDE0ICs1NCwyMSBAQCBQcmVjb25uZWN0VGFzazo6UHJlY29ubmVjdFRhc2soTmV0
d29ya1ByCiAKICAgICBBU1NFUlQocGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9PSBQ
cmVjb25uZWN0T25seTo6WWVzKTsKICAgICBtX25ldHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3
b3JrTG9hZD4oKnRoaXMsIG51bGxwdHIsIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vz
c2lvbik7Ci0KICAgICBtX3RpbWVvdXRUaW1lci5zdGFydE9uZVNob3QoNjAwMDBfcyk7CiB9CiAK
LVByZWNvbm5lY3RUYXNrOjp+UHJlY29ubmVjdFRhc2soKQordm9pZCBQcmVjb25uZWN0VGFzazo6
c2V0SDJQaW5nQ2FsbGJhY2soY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKKyAgICBtX25ldHdvcmtMb2FkLT5zZXRIMlBpbmdDYWxsYmFjayh1
cmwsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordm9pZCBQcmVjb25uZWN0VGFz
azo6c3RhcnQoKQoreworICAgIG1fbmV0d29ya0xvYWQtPnN0YXJ0KCk7Cit9CisKK1ByZWNvbm5l
Y3RUYXNrOjp+UHJlY29ubmVjdFRhc2soKSA9IGRlZmF1bHQ7CisKIHZvaWQgUHJlY29ubmVjdFRh
c2s6OndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYsIFJlc291cmNl
UmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UpCiB7CiAgICAgLy8gSFNUUyByZWRpcmVjdGlvbiBtYXkgaGFwcGVuIGhlcmUuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QcmVjb25uZWN0VGFzay5oCShyZXZp
c2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RU
YXNrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDkgKzQwLDEyIEBAIGNsYXNzIE5ldHdvcmtQcm9j
ZXNzOwogCiBjbGFzcyBQcmVjb25uZWN0VGFzayBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENs
aWVudCB7CiBwdWJsaWM6Ci0gICAgUHJlY29ubmVjdFRhc2soTmV0d29ya1Byb2Nlc3MmLCBQQUw6
OlNlc3Npb25JRCwgTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0g
eyB9KTsKKyAgICBQcmVjb25uZWN0VGFzayhOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vzc2lvbklE
LCBOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJik+JiYpOwogICAgIH5QcmVjb25uZWN0VGFzaygpOwogCisg
ICAgdm9pZCBzZXRIMlBpbmdDYWxsYmFjayhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYp
OworICAgIHZvaWQgc3RhcnQoKTsKKwogcHJpdmF0ZToKICAgICAvLyBOZXR3b3JrTG9hZENsaWVu
dC4KICAgICBib29sIGlzU3luY2hyb25vdXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvUGVuZGluZ0Rv
d25sb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIFBlbmRpbmdEb3dubG9hZDo6UGVuZGluZ0Rvd25s
b2FkKElQQzo6Q28KICAgICA6IG1fbmV0d29ya0xvYWQobWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4o
KnRoaXMsIGJsb2JSZWdpc3RyeSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgbmV0d29ya1Nlc3Npb24p
KQogICAgICwgbV9wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbihwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bikKIHsKKyAgICBtX25ldHdvcmtMb2FkLT5zdGFydCgpOwogICAgIG1faXNBbGxvd2VkVG9Bc2tV
c2VyRm9yQ3JlZGVudGlhbHMgPSBwYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0g
Q2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7CiAKICAg
ICBtX25ldHdvcmtMb2FkLT5zZXRQZW5kaW5nRG93bmxvYWRJRChkb3dubG9hZElEKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2Vy
U29mdFVwZGF0ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAko
cmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI3LDYgKzEyNyw3IEBAIHZvaWQgU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6Omxv
YWQKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5ID0gQ29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9
IFdURk1vdmUocmVxdWVzdCk7CiAgICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29y
a0xvYWQ+KCp0aGlzLCBudWxscHRyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBzZXNzaW9uKTsKKyAg
ICBtX25ldHdvcmtMb2FkLT5zdGFydCgpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJTb2Z0VXBk
YXRlTG9hZGVyOjp3aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBS
ZXNvdXJjZVJlcXVlc3QmJiwgUmVzb3VyY2VSZXNwb25zZSYmKQpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlU3BlY3VsYXRpdmVMb2FkLmNwcAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIFNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRp
dmVMb2FkKENhY2hlJiAKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVz
dDsKICAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5l
dHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtT
ZXNzaW9uKTsKKyAgICBtX25ldHdvcmtMb2FkLT5zdGFydCgpOwogfQogCiBTcGVjdWxhdGl2ZUxv
YWQ6On5TcGVjdWxhdGl2ZUxvYWQoKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNyArNDYzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxv
YWRNYW5hZ2VyOjpwcmVjb25uZWN0RgogICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9u
bHkgPSBQcmVjb25uZWN0T25seTo6WWVzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IGNvbnN0
cnVjdFJldmFsaWRhdGlvblJlcXVlc3Qoc3VicmVzb3VyY2VJbmZvLmtleSgpLCBzdWJyZXNvdXJj
ZUluZm8sIGVudHJ5KTsKICAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwotICAgIG5ldyBQcmVjb25uZWN0VGFz
ayhtX2NhY2hlLm5ldHdvcmtQcm9jZXNzKCksIG1fY2FjaGUuc2Vzc2lvbklEKCksIFdURk1vdmUo
cGFyYW1ldGVycyksIFtdKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0pOworICAg
IChuZXcgUHJlY29ubmVjdFRhc2sobV9jYWNoZS5uZXR3b3JrUHJvY2VzcygpLCBtX2NhY2hlLnNl
c3Npb25JRCgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBbXShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgeyB9KSktPnN0YXJ0KCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShzdWJyZXNv
dXJjZUluZm8pOwogICAgIFVOVVNFRF9QQVJBTShlbnRyeSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDgg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAK
KyAgICB2b2lkIHNldEgyUGluZ0NhbGxiYWNrKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4m
Jikgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29y
a1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNu
aWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25s
eSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNob3VsZFJlbGF4VGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCShyZXZpc2lvbiAyNjQw
MTYpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFz
a0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NzcsNCArNTc3LDI0IEBAIFN0cmluZyBOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6ZGVzY3JpcHRpb24KICAgICByZXR1cm4gU3RyaW5nKFttX3Rhc2sg
ZGVzY3JpcHRpb25dKTsKIH0KIAordm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6c2V0SDJQaW5n
Q2FsbGJhY2soY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyNpZiBIQVZFKFBSRUNPTk5FQ1RfUElORykKKyAgICBBU1NFUlQobV90YXNrLmdl
dCgpLl9wcmVjb25uZWN0KTsKKyAgICBhdXRvIGhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcldp
dGhGaW5hbGl6ZXI8dm9pZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+JiYpPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgW3VybF0gKEZ1bmN0aW9uPHZv
aWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4mIGNv
bXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVj
dGVkKFdlYkNvcmU6OmludGVybmFsRXJyb3IodXJsKSkpOworICAgIH0pOworICAgIFttX3Rhc2sg
Z2V0VW5kZXJseWluZ0hUVFBDb25uZWN0aW9uSW5mb1dpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKSwgdXJsXSAoX05T
SFRUUENvbm5lY3Rpb25JbmZvICpjb25uZWN0aW9uSW5mbykgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghY29ubmVjdGlvbkluZm8uaXNWYWxpZCkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjppbnRlcm5hbEVycm9yKHVybCkpKTsKKyAg
ICAgICAgW2Nvbm5lY3Rpb25JbmZvIHNlbmRQaW5nV2l0aFJlY2VpdmVIYW5kbGVyOm1ha2VCbG9j
a1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oTlNF
cnJvciAqZXJyb3IsIE5TVGltZUludGVydmFsIGludGVydmFsKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFNlY29uZHMoaW50ZXJ2YWwpKTsKKyAgICAgICAgfSkuZ2V0
KCldOworICAgIH0pLmdldCgpXTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OmludGVy
bmFsRXJyb3IodXJsKSkpOworI2VuZGlmCit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkVycm9ycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
RXJyb3JzLmNwcAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
RXJyb3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsMTQgKzg0LDYgQEAgUmVzb3VyY2VFcnJv
ciBwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKAogICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQ
STo6RXJyb3I6OndlYktpdFBsdWdpbkVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6OlBsdWdpbjo6
UGx1Z0luV2lsbEhhbmRsZUxvYWQsIHJlc3BvbnNlLnVybCgpLCBXRUJfVUlfU1RSSU5HKCJQbHVn
LWluIGhhbmRsZWQgbG9hZCIsICJXZWJLaXRFcnJvclBsdWdJbldpbGxIYW5kbGVMb2FkIGRlc2Ny
aXB0aW9uIikpOwogfQogCi1SZXNvdXJjZUVycm9yIGludGVybmFsRXJyb3IoY29uc3QgVVJMJiB1
cmwpCi17Ci0gICAgUkVMRUFTRV9MT0dfRVJST1IoTG9hZGluZywgIkludGVybmFsIGVycm9yIGNh
bGxlZCIpOwotICAgIFJFTEVBU0VfTE9HX1NUQUNLVFJBQ0UoTG9hZGluZyk7Ci0KLSAgICByZXR1
cm4gUmVzb3VyY2VFcnJvcihBUEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpLCBBUEk6OkVy
cm9yOjpHZW5lcmFsOjpJbnRlcm5hbCwgdXJsLCBXRUJfVUlfU1RSSU5HKCJXZWJLaXQgZW5jb3Vu
dGVyZWQgYW4gaW50ZXJuYWwgZXJyb3IiLCAiV2ViS2l0RXJyb3JJbnRlcm5hbCBkZXNjcmlwdGlv
biIpKTsKLX0KLQogI2lmICFQTEFURk9STShDT0NPQSkKIFJlc291cmNlRXJyb3IgY2FuY2VsbGVk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewpJbmRleDogU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViRXJyb3JzLmgJKHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkVycm9ycy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgYmxvY2tlZEJ5Q29udGVudEYKIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fu
bm90U2hvd01JTUVUeXBlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwog
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBmaWxlRG9lc05vdEV4aXN0RXJyb3IoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBwbHVnaW5XaWxs
SGFuZGxlTG9hZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKLVdlYkNv
cmU6OlJlc291cmNlRXJyb3IgaW50ZXJuYWxFcnJvcihjb25zdCBVUkwmKTsKIAogI2lmIFVTRShT
T1VQKQogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBkb3dubG9hZE5ldHdvcmtFcnJvcihjb25zdCBV
UkwmLCBjb25zdCBXVEY6OlN0cmluZyYpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2
ICs0Nyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1MYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1l
UmFuZ2VzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTWFjaFNlbmRSaWdodC5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xMTA2LDYgKzExMDcsMTEgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnJlcXVlc3RSZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAK
K3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZW5kSDJQaW5nKGNvbnN0IFVSTCYgdXJs
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPFdURjo6U2Vjb25kcywgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgbV9tZWRpYVJl
c291cmNlTG9hZGVyLT5zZW5kSDJQaW5nKHVybCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQorCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlUmVzb3VyY2UoUmVt
b3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIgcmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIp
CiB7CiAgICAgLy8gVGhlIGNsaWVudChSZW1vdGVNZWRpYVJlc291cmNlUHJveHkpIHdpbGwgYmUg
ZGVzdHJveWVkIGFzIHdlbGwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuaAkocmV2aXNp
b24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgcmVxdWVzdFJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6UGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHJlbW92ZVJlc291cmNlKFJlbW90ZU1lZGlhUmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxXVEY6OlNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKTsK
ICAgICB2b2lkIHJlc291cmNlTm90U3VwcG9ydGVkKCk7CiAKICAgICB2b2lkIGVuZ2luZVVwZGF0
ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
NjcsNiArNjcsNyBAQCBtZXNzYWdlcyAtPiBNZWRpYVBsYXllclByaXZhdGVSZW1vdGUgTm90CiAK
ICAgICBSZXF1ZXN0UmVzb3VyY2UoV2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmll
ciByZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIGVudW06dWludDhfdCBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2Fk
ZXI6OkxvYWRPcHRpb25zIG9wdGlvbnMpIC0+ICgpIEFzeW5jCiAgICAgUmVtb3ZlUmVzb3VyY2Uo
V2ViS2l0OjpSZW1vdGVNZWRpYVJlc291cmNlSWRlbnRpZmllciByZW1vdGVNZWRpYVJlc291cmNl
SWRlbnRpZmllcikKKyAgICBTZW5kSDJQaW5nKFVSTCB1cmwpIC0+IChFeHBlY3RlZDxTZWNvbmRz
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiByZXN1bHQpIEFzeW5jCiAgICAgUmVzb3VyY2VOb3RT
dXBwb3J0ZWQoKQogCiAgICAgRW5naW5lVXBkYXRlZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCShyZXZp
c2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5Ojpicm93c2luZ0NvbnRleHRSCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCcm93c2luZ0NvbnRleHRS
ZW1vdmVkKHBhZ2Uud2ViUGFnZVByb3h5SWRlbnRpZmllcigpLCBwYWdlLmlkZW50aWZpZXIoKSwg
V2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpLT5mcmFtZUlEKCkpLCAwKTsKIH0KIAotc3Rh
dGljIHVpbnQ2NF90IGdlbmVyYXRlTG9hZElkZW50aWZpZXIoKQordWludDY0X3QgV2ViTG9hZGVy
U3RyYXRlZ3k6OmdlbmVyYXRlTG9hZElkZW50aWZpZXIoKQogewogICAgIHN0YXRpYyB1aW50NjRf
dCBpZGVudGlmaWVyID0gMDsKICAgICByZXR1cm4gKytpZGVudGlmaWVyOwpAQCAtNjYyLDcgKzY2
Miw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnIKICAgICB9CiAK
ICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVyczsKLSAgICBs
b2FkUGFyYW1ldGVycy5pZGVudGlmaWVyID0gZ2VuZXJhdGVMb2FkSWRlbnRpZmllcigpOworICAg
IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIgPSBXZWJMb2FkZXJTdHJhdGVneTo6Z2VuZXJhdGVM
b2FkSWRlbnRpZmllcigpOwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlEID0gd2Vi
UGFnZS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpOwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYlBh
Z2VJRCA9IHdlYlBhZ2UtPmlkZW50aWZpZXIoKTsKICAgICBsb2FkUGFyYW1ldGVycy53ZWJGcmFt
ZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKQEAgLTcyNiw3ICs3MjYsNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyOwogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikgewot
ICAgICAgICBwcmVjb25uZWN0aW9uSWRlbnRpZmllciA9IGdlbmVyYXRlTG9hZElkZW50aWZpZXIo
KTsKKyAgICAgICAgcHJlY29ubmVjdGlvbklkZW50aWZpZXIgPSBXZWJMb2FkZXJTdHJhdGVneTo6
Z2VuZXJhdGVMb2FkSWRlbnRpZmllcigpOwogICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcHJl
Y29ubmVjdENvbXBsZXRpb25IYW5kbGVycy5hZGQoKnByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCShyZXZpc2lv
biAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2ICs4OSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFkZE9ubGluZVN0YXRlQ2hhbmdlTGlzdGVuZXIoRnVuY3Rpb248dm9pZChib29sKT4mJikg
ZmluYWw7CiAgICAgdm9pZCBzZXRPbkxpbmVTdGF0ZShib29sKTsKIAorICAgIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZUxvYWRJZGVudGlmaWVyKCk7CisKIHByaXZhdGU6CiAgICAgdm9pZCBzY2hl
ZHVsZUxvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZSosIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCk7CiAgICAg
dm9pZCBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI2NDAx
NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
IlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiVXNlckRhdGEuaCIKQEAgLTUyLDYgKzUzLDcgQEAKICNpbmNsdWRlICJXZWJGcmFt
ZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJX
ZWJGdWxsU2NyZWVuTWFuYWdlci5oIgorI2luY2x1ZGUgIldlYkxvYWRlclN0cmF0ZWd5LmgiCiAj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlR3JvdXBQcm94eS5oIgpAQCAtODQsNiArODYsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUHJvZ3Jlc3NUcmFja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2NyaXB0Q29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMTg2MCw2ICsxODYzLDI5IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByZWZldGNoRE5TKGMKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wcmVmZXRjaEROUyhob3N0bmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnNlbmRIMlBpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgUmVzb3VyY2VFcnJvcj4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKKyAgICBp
ZiAoIXdlYlBhZ2UpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBl
Y3RlZChpbnRlcm5hbEVycm9yKHVybCkpKTsKKworICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1
ZXN0KHVybCk7CisgICAgcGFyYW1ldGVycy5pZGVudGlmaWVyID0gV2ViTG9hZGVyU3RyYXRlZ3k6
OmdlbmVyYXRlTG9hZElkZW50aWZpZXIoKTsKKyAgICBwYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlE
ID0gd2ViUGFnZS0+d2ViUGFnZVByb3h5SWRlbnRpZmllcigpOworICAgIHBhcmFtZXRlcnMud2Vi
UGFnZUlEID0gd2ViUGFnZS0+aWRlbnRpZmllcigpOworICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJ
RCA9IG1fZnJhbWUtPmZyYW1lSUQoKTsKKyAgICBwYXJhbWV0ZXJzLnBhcmVudFBJRCA9IHByZXNl
bnRpbmdBcHBsaWNhdGlvblBJRCgpOworI2lmIEhBVkUoQVVESVRfVE9LRU4pCisgICAgcGFyYW1l
dGVycy5uZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5uZXR3b3JrUHJvY2Vzc0F1ZGl0VG9rZW4o
KTsKKyNlbmRpZgorICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25u
ZWN0T25seTo6WWVzOworICAgIHBhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNo
T3B0aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nOworICAgIHBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IG1fZnJhbWUtPmlzVG9wRnJhbWVOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpOworICAgIAorICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZW5kSDJQaW5nKHBh
cmFtZXRlcnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7CiAgICAgV2ViUGFn
ZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYz
LDYgKzI2Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZvaWQgcHJlZmV0Y2hETlMoY29u
c3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCBzZW5kSDJQaW5nKGNvbnN0IFVSTCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8V1RGOjpTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpIGZpbmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI2
NDAxNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Niw2ICsyNDYsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICAgICB2b2lkIHByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYpIGZpbmFsOwor
ICAgIHZvaWQgc2VuZEgyUGluZyhjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmKSBmaW5hbDsKIAog
ICAgIHZvaWQgZ2V0TG9hZERlY2lzaW9uRm9ySWNvbnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxX
ZWJDb3JlOjpMaW5rSWNvbiYsIHVpbnQ2NF90Pj4mKSBmaW5hbDsKICAgICB2b2lkIGZpbmlzaGVk
TG9hZGluZ0ljb24odWludDY0X3QsIFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciopIGZpbmFsOwpJbmRl
eDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDkyLDYgKzIwOTIsMTIgQEAgUmVmUHRyPFdlYkNvcmU6Oldp
ZGdldD4gV2ViRnJhbWVMb2FkZXJDbAogICAgIHJldHVybiAwOwogfQogCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpzZW5kSDJQaW5nKGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4cGVjdGVkPFNlY29uZHMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OmludGVybmFsRXJyb3IodXJsKSkp
OworfQorCiBTdHJpbmcgV2ViRnJhbWVMb2FkZXJDbGllbnQ6Om92ZXJyaWRlTWVkaWFUeXBlKCkg
Y29uc3QKIHsKICAgICBOU1N0cmluZyogb3ZlcnJpZGVUeXBlID0gW2dldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSkgbWVkaWFTdHlsZV07CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyODQs
MyArMTI4NCw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnByZWZldGNoRE5TKGMKIHsK
ICAgICBXZWJDb3JlOjpwcmVmZXRjaEROUyhob3N0bmFtZSk7CiB9CisKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnNlbmRIMlBpbmcoY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8U2Vjb25kcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6aW50ZXJuYWxFcnJvcih1cmwpKSk7
Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDI2NDAxNikKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2ICsxOTIsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzaG91bGRBbHdheXNVc2VQbHVnaW5Eb2N1bWVudChjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5
cGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcm
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbmRIMlBpbmcoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeHBlY3RlZDxTZWNvbmRzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiYmKT4m
JikgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgV2ViSGlzdG9yeSogd2ViSGlzdG9yeSgpIGNvbnN0
OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMjY0MDE2KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjAtMDctMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgV2ViQ29yZU5TVVJMU2Vzc2lvbiBTUEkgdG8gc2Vu
ZCBIVFRQLzIgcGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0MDMwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NDQ5NTgyNz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJlY29ubmVjdC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICBBZGQgYSBkaXNhYmxlZCB0ZXN0IEkgdXNlZCB0byB2ZXJpZnkgdGhp
cyB3b3JrcyBjb3JyZWN0bHkuCisKIDIwMjAtMDctMDcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdIE9HVi9WUDggdmlkZW8gbm90
IHBsYXlpbmcgb24gbWluaWJyb3dzZXIgKG5laXRoZXIgZXBpcGhhbnkpCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1ByZWNvbm5lY3QubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QcmVjb25uZWN0Lm1tCShy
ZXZpc2lvbiAyNjQwMTYpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1ByZWNvbm5lY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDkgQEAKICNpbXBvcnQg
IkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0VUlEZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFz
LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8cGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTE3MSw2
ICsxNzMsMzQgQEAgVEVTVChQcmVjb25uZWN0LCBESVNBQkxFRF9IMlBpbmcpCiAgICAgVXRpbDo6
c3BpblJ1bkxvb3AoMTAwKTsKICAgICBFWFBFQ1RfRVEoaGVhZGVyc0NvdW50LCAxdSk7CiB9CisK
Ky8vIFRoaXMgc2hvdWxkIHJlbWFpbiBkaXNhYmxlZCB1bnRpbCByZGFyOi8vcHJvYmxlbS82NTA1
NTkzMCBpcyBpbnRlZ3JhdGVkIGFuZCBib3RzIGFyZSB1cGRhdGVkCitURVNUKFByZWNvbm5lY3Qs
IERJU0FCTEVEX0gyUGluZ0Zyb21XZWJDb3JlTlNVUkxTZXNzaW9uKQoreworICAgIHNpemVfdCBo
ZWFkZXJzQ291bnQgPSAwOworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtoZWFkZXJzQ291bnQgPSAm
aGVhZGVyc0NvdW50XSAoQ29ubmVjdGlvbiB0bHNDb25uZWN0aW9uKSB7CisgICAgICAgIHBpbmdQ
b25nKEgyOjpDb25uZWN0aW9uOjpjcmVhdGUodGxzQ29ubmVjdGlvbiksIGhlYWRlcnNDb3VudCk7
CisgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHAyKTsKKworICAgIFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVz
dF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0lu
V2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVy
byBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIF9fYmxvY2sgYm9vbCBy
ZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBO
U1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICByZWNlaXZlZENo
YWxsZW5nZSA9IHRydWU7CisgICAgICAgIGNhbGxiYWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgfV07CisgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxzY3JpcHQ+aW50ZXJu
YWxzLnNlbmRIMlBpbmcoJ2h0dHBzOi8vMTI3LjAuMC4xOiVkLycpLnRoZW4oZnVuY3Rpb24odCl7
aWYodD4wKXthbGVydCgncGFzcycpfWVsc2V7YWxlcnQoJ2ZhaWwnKX19KTwvc2NyaXB0PiIsIHNl
cnZlci5wb3J0KCldIGJhc2VVUkw6bmlsXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoW3dlYlZpZXcg
X3Rlc3Rfd2FpdEZvckFsZXJ0XSwgInBhc3MiKTsKKyAgICBFWFBFQ1RfRkFMU0UoaGVhZGVyc0Nv
dW50KTsKKyAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZENoYWxsZW5nZSk7Cit9CisKKworCiAjZW5k
aWYgLy8gSEFWRShQUkVDT05ORUNUX1BJTkcpCiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>